From 5290a2d475332ff97e68071526f96dd918bcfb0d Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Sun, 2 Jul 2023 23:03:53 +0200 Subject: [PATCH] bug fix, layout fixes --- .../twidda/backend/image/ImageCache.java | 2 +- .../twidda/backend/utils/ErrorUtils.java | 2 + .../twidda/config/GlobalSettings.java | 2 +- .../twidda/ui/activities/ProfileActivity.java | 12 +++++- .../ui/activities/SettingsActivity.java | 4 +- .../twidda/ui/adapter/EmojiAdapter.java | 7 +++ .../twidda/ui/dialogs/AudioPlayerDialog.java | 4 +- .../twidda/ui/dialogs/EmojiPicker.java | 13 +++++- app/src/main/res/layout/dialog_connection.xml | 43 +++++++++++-------- app/src/main/res/layout/dialog_filter.xml | 2 +- app/src/main/res/layout/dialog_push.xml | 2 +- app/src/main/res/values-de-rDE/strings.xml | 6 +-- app/src/main/res/values-es/strings.xml | 3 +- app/src/main/res/values/dimens.xml | 6 ++- app/src/main/res/values/strings.xml | 4 +- app/src/main/res/values/styles.xml | 2 +- 16 files changed, 74 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/image/ImageCache.java b/app/src/main/java/org/nuclearfog/twidda/backend/image/ImageCache.java index 05f3687c..b09de199 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/image/ImageCache.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/image/ImageCache.java @@ -112,7 +112,7 @@ public class ImageCache { if (!files.containsKey(key)) { try { File file = new File(imageFolder, key); - if (file.createNewFile()) { + if ((file.exists() && file.canWrite()) || file.createNewFile()) { FileOutputStream output = new FileOutputStream(file); image.compress(Bitmap.CompressFormat.PNG, 1, output); output.close(); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/utils/ErrorUtils.java b/app/src/main/java/org/nuclearfog/twidda/backend/utils/ErrorUtils.java index 40375f28..677e0687 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/utils/ErrorUtils.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/utils/ErrorUtils.java @@ -3,6 +3,7 @@ package org.nuclearfog.twidda.backend.utils; import android.content.Context; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.nuclearfog.twidda.R; @@ -40,6 +41,7 @@ public class ErrorUtils { * @param exception connection exception * @return message string */ + @NonNull public static String getErrorMessage(Context context, @Nullable ConnectionException exception) { if (exception != null) { switch (exception.getErrorCode()) { diff --git a/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java b/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java index a6b817a9..33efbd82 100644 --- a/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java @@ -1094,7 +1094,7 @@ public class GlobalSettings { String pushPublicKey = settings.getString(PUSH_PUBLIC_KEY, ""); String pushPrivateKey = settings.getString(PUSH_PRIVATE_KEY, ""); String pushAuthKey = settings.getString(PUSH_AUTH_KEY, ""); - boolean mentions = settings.getBoolean(PUSH_ALERT_MENTION, false); + boolean mentions = settings.getBoolean(PUSH_ALERT_MENTION, true); boolean reposts = settings.getBoolean(PUSH_ALERT_REPOST, false); boolean favorits = settings.getBoolean(PUSH_ALERT_FAVORITE, false); boolean following = settings.getBoolean(PUSH_ALERT_FOLLOWING, false); diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java index 7960e778..d5e3114f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java @@ -4,6 +4,8 @@ import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.text.Spannable; @@ -123,6 +125,8 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult */ private static final int SCROLL_THRESHOLD = 10; + private static final int IMAGE_PLACEHOLDER_COLOR = 0x2F000000; + private ActivityResultLauncher activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), this); private AsyncCallback domainCallback = this::setDomainResult; private AsyncCallback relationCallback = this::setRelationResult; @@ -828,6 +832,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult if (settings.imagesEnabled()) { String bannerImageUrl = user.getBannerImageThumbnailUrl(); String profileImageUrl = user.getProfileImageThumbnailUrl(); + Drawable placeholder = new ColorDrawable(IMAGE_PLACEHOLDER_COLOR); if (!bannerImageUrl.isEmpty()) { picasso.load(bannerImageUrl).error(R.drawable.no_banner).into(bannerImage, this); } else { @@ -836,10 +841,13 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult } if (!profileImageUrl.isEmpty()) { Transformation roundCorner = new RoundedCornersTransformation(5, 0); - picasso.load(profileImageUrl).transform(roundCorner).error(R.drawable.no_image).into(profileImage); + picasso.load(profileImageUrl).transform(roundCorner).placeholder(placeholder).error(R.drawable.no_image).into(profileImage); } else { - profileImage.setImageResource(0); + profileImage.setImageDrawable(placeholder); } + } else { + Drawable placeholder = new ColorDrawable(IMAGE_PLACEHOLDER_COLOR); + profileImage.setImageDrawable(placeholder); } // initialize emoji loading for username/description if (settings.imagesEnabled() && user.getEmojis().length > 0) { diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java index 921fe8bd..728d7fc7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java @@ -427,7 +427,9 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen } // show push configuration dialog else if (v.getId() == R.id.settings_enable_push_descr) { - pushDialog.show(); + if (enablePush.isChecked()) { + pushDialog.show(); + } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/adapter/EmojiAdapter.java b/app/src/main/java/org/nuclearfog/twidda/ui/adapter/EmojiAdapter.java index 53708b82..9d496f09 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/adapter/EmojiAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/adapter/EmojiAdapter.java @@ -110,6 +110,13 @@ public class EmojiAdapter extends Adapter implements OnHolderClickL notifyDataSetChanged(); } + /** + * @return true if adapter is empty + */ + public boolean isEmpty() { + return items.isEmpty(); + } + /** * Listener used to send emoji information on click */ diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/AudioPlayerDialog.java b/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/AudioPlayerDialog.java index e67d5ea1..4b9a419b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/AudioPlayerDialog.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/AudioPlayerDialog.java @@ -116,7 +116,9 @@ public class AudioPlayerDialog extends Dialog implements OnClickListener, Closea @Override protected void onStop() { super.onStop(); - player.pause(); + if (player.isPlaying()) { + player.pause(); + } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/EmojiPicker.java b/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/EmojiPicker.java index 4485d65c..3e02b24a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/EmojiPicker.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/dialogs/EmojiPicker.java @@ -69,14 +69,23 @@ public class EmojiPicker extends BottomSheetDialog implements AsyncCallback emojis) { - adapter.replaceItems(emojis); + if (!emojis.isEmpty()) { + adapter.replaceItems(emojis); + } } diff --git a/app/src/main/res/layout/dialog_connection.xml b/app/src/main/res/layout/dialog_connection.xml index a1e08b57..2b276da4 100644 --- a/app/src/main/res/layout/dialog_connection.xml +++ b/app/src/main/res/layout/dialog_connection.xml @@ -6,7 +6,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/dialog_connection_root_padding" - tools:ignore="UseSwitchCompatOrMaterialXml"> + tools:ignore="UseSwitchCompatOrMaterialXml" + tools:context=".ui.dialogs.ConnectionDialog"> @@ -49,8 +51,9 @@ android:layout_weight="1" android:layout_margin="@dimen/dialog_connection_layout_margin" android:visibility="invisible" + android:textSize="@dimen/dialog_connection_textsize_label" app:layout_constraintStart_toEndOf="@id/dialog_connection_use_v2" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintTop_toTopOf="@id/dialog_connection_use_v2" app:layout_constraintBottom_toBottomOf="@id/dialog_connection_use_v2" app:layout_constraintEnd_toEndOf="parent" /> @@ -66,6 +69,7 @@ android:visibility="invisible" android:inputType="textPassword" android:importantForAutofill="no" + android:textSize="@dimen/dialog_connection_textsize_input" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/dialog_connection_custom_api" app:layout_constraintEnd_toStartOf="@id/dialog_connection_api2" /> @@ -82,6 +86,7 @@ android:visibility="invisible" android:inputType="textPassword" android:importantForAutofill="no" + android:textSize="@dimen/dialog_connection_textsize_input" app:layout_constraintStart_toEndOf="@id/dialog_connection_api1" app:layout_constraintTop_toBottomOf="@id/dialog_connection_custom_api" app:layout_constraintEnd_toEndOf="parent" /> @@ -103,6 +108,7 @@ android:lines="1" android:layout_weight="1" android:layout_margin="@dimen/dialog_connection_layout_margin" + android:textSize="@dimen/dialog_connection_textsize_label" app:layout_constraintStart_toEndOf="@id/dialog_connection_custom_host" app:layout_constraintTop_toTopOf="@id/dialog_connection_custom_host" app:layout_constraintBottom_toBottomOf="@id/dialog_connection_custom_host" @@ -120,24 +126,11 @@ android:visibility="invisible" android:inputType="textUri" android:importantForAutofill="no" + android:textSize="@dimen/dialog_connection_textsize_input" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/dialog_connection_custom_host" app:layout_constraintEnd_toEndOf="parent" /> -