From 56a2b27745da555bcb46bb83373f511f215bafac Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 10 Jun 2022 10:18:07 -0300 Subject: [PATCH] Refactor reactions dialog to match Material3 spec. --- .../ReactionsBottomSheetDialogFragment.java | 43 ++++++++----------- .../securesms/util/FullscreenHelper.java | 10 +++-- .../reactions_bottom_sheet_tab_indicator.xml | 12 ++++++ .../react_with_any_emoji_status_fade.xml | 7 --- ...reactions_bottom_sheet_dialog_fragment.xml | 30 ++++++++++++- ...ottom_sheet_dialog_fragment_emoji_item.xml | 16 ++++--- ...ions_bottom_sheet_dialog_fragment_tabs.xml | 18 -------- app/src/main/res/values/dimens.xml | 1 - app/src/main/res/values/themes.xml | 18 +------- 9 files changed, 78 insertions(+), 77 deletions(-) create mode 100644 app/src/main/res/drawable/reactions_bottom_sheet_tab_indicator.xml delete mode 100644 app/src/main/res/layout/react_with_any_emoji_status_fade.xml delete mode 100644 app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment_tabs.xml 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 edc529c3d..4b9141987 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsBottomSheetDialogFragment.java @@ -1,17 +1,18 @@ package org.thoughtcrime.securesms.reactions; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.FrameLayout; +import android.view.WindowManager; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.view.ViewCompat; +import androidx.core.content.ContextCompat; import androidx.fragment.app.DialogFragment; import androidx.lifecycle.ViewModelProvider; import androidx.viewpager2.widget.ViewPager2; @@ -23,9 +24,9 @@ import com.google.android.material.tabs.TabLayoutMediator; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.emoji.EmojiImageView; import org.thoughtcrime.securesms.database.model.MessageId; +import org.thoughtcrime.securesms.util.FullscreenHelper; import org.thoughtcrime.securesms.util.LifecycleDisposable; -import org.thoughtcrime.securesms.util.ThemeUtil; -import org.thoughtcrime.securesms.util.ViewUtil; +import org.thoughtcrime.securesms.util.WindowUtil; import java.util.Objects; @@ -68,15 +69,21 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF @Override public void onCreate(@Nullable Bundle savedInstanceState) { - if (ThemeUtil.isDarkTheme(requireContext())) { - setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Signal_BottomSheetDialog_Fixed_ReactWithAny); - } else { - setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Signal_Light_BottomSheetDialog_Fixed_ReactWithAny); - } + setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Signal_BottomSheetDialog_Fixed_ReactWithAny); super.onCreate(savedInstanceState); } + @Override + public @NonNull Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + Dialog dialog = super.onCreateDialog(savedInstanceState); + + FullscreenHelper.showSystemUI(dialog.getWindow()); + WindowUtil.setNavigationBarColor(dialog.getWindow(), ContextCompat.getColor(requireContext(), R.color.signal_colorSurface1)); + + return dialog; + } + @Override public @Nullable View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @@ -92,7 +99,7 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF disposables.bindTo(getViewLifecycleOwner()); setUpRecipientsRecyclerView(); - setUpTabMediator(savedInstanceState); + setUpTabMediator(view, savedInstanceState); MessageId messageId = new MessageId(requireArguments().getLong(ARGS_MESSAGE_ID), requireArguments().getBoolean(ARGS_IS_MMS)); setUpViewModel(messageId); @@ -105,21 +112,9 @@ public final class ReactionsBottomSheetDialogFragment extends BottomSheetDialogF callback.onReactionsDialogDismissed(); } - private void setUpTabMediator(@Nullable Bundle savedInstanceState) { + private void setUpTabMediator(@NonNull View view, @Nullable Bundle savedInstanceState) { if (savedInstanceState == null) { - FrameLayout container = requireDialog().findViewById(R.id.container); - LayoutInflater layoutInflater = LayoutInflater.from(requireContext()); - View statusBarShader = layoutInflater.inflate(R.layout.react_with_any_emoji_status_fade, container, false); - TabLayout emojiTabs = (TabLayout) layoutInflater.inflate(R.layout.reactions_bottom_sheet_dialog_fragment_tabs, container, false); - - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewUtil.getStatusBarHeight(container)); - - statusBarShader.setLayoutParams(params); - - container.addView(statusBarShader, 0); - container.addView(emojiTabs); - - ViewCompat.setOnApplyWindowInsetsListener(container, (v, insets) -> insets.consumeSystemWindowInsets()); + TabLayout emojiTabs = view.findViewById(R.id.emoji_tabs); new TabLayoutMediator(emojiTabs, recipientPagerView, (tab, position) -> { tab.setCustomView(R.layout.reactions_bottom_sheet_dialog_fragment_emoji_item); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java b/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java index 1657003b9..b27ae7147 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java @@ -161,8 +161,12 @@ public final class FullscreenHelper { } public void showSystemUI() { - activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | - View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | - View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + showSystemUI(activity.getWindow()); + } + + public static void showSystemUI(@NonNull Window window) { + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } } diff --git a/app/src/main/res/drawable/reactions_bottom_sheet_tab_indicator.xml b/app/src/main/res/drawable/reactions_bottom_sheet_tab_indicator.xml new file mode 100644 index 000000000..092a6d19e --- /dev/null +++ b/app/src/main/res/drawable/reactions_bottom_sheet_tab_indicator.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/react_with_any_emoji_status_fade.xml b/app/src/main/res/layout/react_with_any_emoji_status_fade.xml deleted file mode 100644 index f2b9378c6..000000000 --- a/app/src/main/res/layout/react_with_any_emoji_status_fade.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment.xml b/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment.xml index 5107dad75..6a89fc3db 100644 --- a/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment.xml +++ b/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment.xml @@ -1,11 +1,37 @@ + android:orientation="vertical"> + + + + + android:minHeight="32dp" + android:orientation="horizontal" + android:paddingStart="8dp" + android:paddingTop="6dp" + android:paddingEnd="8dp" + android:paddingBottom="6dp"> diff --git a/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment_tabs.xml b/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment_tabs.xml deleted file mode 100644 index f8de734e8..000000000 --- a/app/src/main/res/layout/reactions_bottom_sheet_dialog_fragment_tabs.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index d59ab053a..c3a9cced0 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -168,7 +168,6 @@ 160dp 340dp - 40dp 12dp 52dp diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d24246524..7782f48bf 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -426,16 +426,6 @@ false - - - - @@ -444,16 +434,12 @@ @style/FakeBottomSheet - - -