From 2c700c7e0e26b58373c1f005bb4851fe405b04ae Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 28 Jun 2022 15:20:19 -0400 Subject: [PATCH] Fix broken Material3 changes on Android 6. --- .../org/thoughtcrime/securesms/MainActivity.java | 4 ++-- .../conversation/ConversationParentFragment.java | 4 ++-- .../conversation/ConversationReactionOverlay.java | 4 ++-- .../model/GroupsV2UpdateMessageProducer.java | 3 ++- .../securesms/keyboard/KeyboardPagerFragment.kt | 4 ++-- .../ReactionsBottomSheetDialogFragment.java | 2 +- .../thoughtcrime/securesms/util/WindowUtil.java | 15 ++++++++++++--- 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java index 5d4ba83bfe..e06c025b94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java @@ -125,10 +125,10 @@ public class MainActivity extends PassphraseRequiredActivity implements VoiceNot private void updateTabVisibility() { if (Stories.isFeatureEnabled()) { findViewById(R.id.conversation_list_tabs).setVisibility(View.VISIBLE); - WindowUtil.setNavigationBarColor(getWindow(), ContextCompat.getColor(this, R.color.signal_colorSurface2)); + WindowUtil.setNavigationBarColor(this, ContextCompat.getColor(this, R.color.signal_colorSurface2)); } else { findViewById(R.id.conversation_list_tabs).setVisibility(View.GONE); - WindowUtil.setNavigationBarColor(getWindow(), ContextCompat.getColor(this, R.color.signal_colorBackground)); + WindowUtil.setNavigationBarColor(this, ContextCompat.getColor(this, R.color.signal_colorBackground)); conversationListTabsViewModel.onChatsSelected(); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java index 2e309d80c2..0abda3086c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -2279,7 +2279,7 @@ public class ConversationParentFragment extends Fragment int toolbarTextAndIconColor = getResources().getColor(R.color.signal_colorNeutralInverse); toolbar.setTitleTextColor(toolbarTextAndIconColor); setToolbarActionItemTint(toolbar, toolbarTextAndIconColor); - WindowUtil.setNavigationBarColor(requireActivity().getWindow(), getResources().getColor(R.color.conversation_navigation_wallpaper)); + WindowUtil.setNavigationBarColor(requireActivity(), getResources().getColor(R.color.conversation_navigation_wallpaper)); } else { wallpaper.setImageDrawable(null); wallpaperDim.setVisibility(View.GONE); @@ -2292,7 +2292,7 @@ public class ConversationParentFragment extends Fragment int toolbarTextAndIconColor = getResources().getColor(R.color.signal_colorOnSurface); toolbar.setTitleTextColor(toolbarTextAndIconColor); setToolbarActionItemTint(toolbar, toolbarTextAndIconColor); - WindowUtil.setNavigationBarColor(requireActivity().getWindow(), getResources().getColor(R.color.signal_colorBackground)); + WindowUtil.setNavigationBarColor(requireActivity(), getResources().getColor(R.color.signal_colorBackground)); } fragment.onWallpaperChanged(chatWallpaper); messageRequestBottomView.setWallpaperEnabled(chatWallpaper != null); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java index 1eacc36cf8..d69f614373 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java @@ -443,7 +443,7 @@ public final class ConversationReactionOverlay extends FrameLayout { WindowUtil.setStatusBarColor(window, barColor); originalNavigationBarColor = window.getNavigationBarColor(); - WindowUtil.setNavigationBarColor(window, barColor); + WindowUtil.setNavigationBarColor(activity, barColor); if (!ThemeUtil.isDarkTheme(getContext())) { WindowUtil.clearLightStatusBar(window); @@ -915,7 +915,7 @@ public final class ConversationReactionOverlay extends FrameLayout { ValueAnimator navigationBarAnim = ValueAnimator.ofArgb(activity.getWindow().getStatusBarColor(), originalNavigationBarColor); navigationBarAnim.setDuration(duration); navigationBarAnim.addUpdateListener(animation -> { - WindowUtil.setNavigationBarColor(activity.getWindow(), (int) animation.getAnimatedValue()); + WindowUtil.setNavigationBarColor(activity, (int) animation.getAnimatedValue()); }); animators.add(navigationBarAnim); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java index b56840ce0a..06f3fcde03 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java @@ -10,6 +10,7 @@ import androidx.annotation.Nullable; import androidx.annotation.PluralsRes; import androidx.annotation.StringRes; import androidx.annotation.VisibleForTesting; +import androidx.core.content.ContextCompat; import com.google.protobuf.ByteString; @@ -896,7 +897,7 @@ final class GroupsV2UpdateMessageProducer { String beforeChunk = template.substring(startIndex, nearestPosition); builder.append(beforeChunk); - builder.append(SpanUtil.clickable(Recipient.resolved(recipientId).getDisplayName(context), 0, v -> { + builder.append(SpanUtil.clickable(Recipient.resolved(recipientId).getDisplayName(context), ContextCompat.getColor(context, R.color.conversation_item_update_text_color), v -> { if (!recipientId.isUnknown() && clickHandler != null) { clickHandler.accept(recipientId); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerFragment.kt index 3a03181a59..e33fd04613 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerFragment.kt @@ -62,9 +62,9 @@ class KeyboardPagerFragment : Fragment() { } if (hidden) { - WindowUtil.setNavigationBarColor(requireActivity().window, ThemeUtil.getThemedColor(requireContext(), android.R.attr.navigationBarColor)) + WindowUtil.setNavigationBarColor(requireActivity(), ThemeUtil.getThemedColor(requireContext(), android.R.attr.navigationBarColor)) } else { - WindowUtil.setNavigationBarColor(requireActivity().window, ThemeUtil.getThemedColor(requireContext(), R.attr.mediaKeyboardBottomBarBackgroundColor)) + WindowUtil.setNavigationBarColor(requireActivity(), ThemeUtil.getThemedColor(requireContext(), R.attr.mediaKeyboardBottomBarBackgroundColor)) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java index 4b91419879..c48af8bddb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java @@ -79,7 +79,7 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF Dialog dialog = super.onCreateDialog(savedInstanceState); FullscreenHelper.showSystemUI(dialog.getWindow()); - WindowUtil.setNavigationBarColor(dialog.getWindow(), ContextCompat.getColor(requireContext(), R.color.signal_colorSurface1)); + WindowUtil.setNavigationBarColor(requireContext(), dialog.getWindow(), ContextCompat.getColor(requireContext(), R.color.signal_colorSurface1)); return dialog; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java index 5c36921b6b..2ebbf6b0ce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/WindowUtil.java @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.util; import android.app.Activity; +import android.content.Context; import android.graphics.Rect; import android.os.Build; import android.view.View; @@ -35,10 +36,18 @@ public final class WindowUtil { setSystemUiFlags(window, View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR); } - public static void setNavigationBarColor(@NonNull Window window, @ColorInt int color) { - if (Build.VERSION.SDK_INT < 21) return; + public static void setNavigationBarColor(@NonNull Activity activity, @ColorInt int color) { + setNavigationBarColor(activity, activity.getWindow(), color); + } - window.setNavigationBarColor(color); + public static void setNavigationBarColor(@NonNull Context context, @NonNull Window window, @ColorInt int color) { + if (Build.VERSION.SDK_INT < 21) { + return; + } else if (Build.VERSION.SDK_INT < 27) { + window.setNavigationBarColor(ThemeUtil.getThemedColor(context, android.R.attr.navigationBarColor)); + } else { + window.setNavigationBarColor(color); + } } public static void setLightStatusBarFromTheme(@NonNull Activity activity) {