Small UI tweaks for edit reactions.

fork-5.53.8
Cody Henthorne 2021-05-27 20:07:14 -04:00
rodzic 4598387187
commit 0314db0b58
16 zmienionych plików z 137 dodań i 49 usunięć

Wyświetl plik

@ -40,8 +40,6 @@ import org.thoughtcrime.securesms.reactions.edit.EditReactionsActivity;
import org.thoughtcrime.securesms.util.ThemeUtil;
import org.thoughtcrime.securesms.util.ViewUtil;
import static org.thoughtcrime.securesms.R.layout.react_with_any_emoji_tab;
public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomSheetDialogFragment
implements EmojiKeyboardProvider.EmojiEventListener,
EmojiPageViewGridAdapter.VariationSelectorListener
@ -65,7 +63,7 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
private SparseArray<ReactWithAnyEmojiAdapter.ScrollableChild> pageArray = new SparseArray<>();
private Callback callback;
private ReactionsLoader reactionsLoader;
private View editReactions;
private View customizeReactions;
private boolean showEditReactions;
public static DialogFragment createForMessageRecord(@NonNull MessageRecord messageRecord, int startingPage) {
@ -183,12 +181,8 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
categoryLabel = view.findViewById(R.id.category_label);
categoryPager = view.findViewById(R.id.category_pager);
editReactions = view.findViewById(R.id.edit_reactions);
showEditReactions = requireArguments().getBoolean(ARG_EDIT, false);
if (showEditReactions) {
editReactions.setOnClickListener(v -> startActivity(new Intent(requireContext(), EditReactionsActivity.class)));
}
adapter = new ReactWithAnyEmojiAdapter(this, this, (position, pageView) -> {
pageArray.put(position, pageView);
@ -220,10 +214,16 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
super.onActivityCreated(savedInstanceState);
if (savedInstanceState == null) {
FrameLayout container = requireDialog().findViewById(R.id.container);
LayoutInflater layoutInflater = LayoutInflater.from(requireContext());
TabLayout categoryTabs = (TabLayout) layoutInflater.inflate(R.layout.react_with_any_emoji_tabs, container, false);
FrameLayout container = requireDialog().findViewById(R.id.container);
LayoutInflater layoutInflater = LayoutInflater.from(requireContext());
View tabBar = layoutInflater.inflate(R.layout.react_with_any_emoji_tabs, container, false);
TabLayout categoryTabs = tabBar.findViewById(R.id.category_tabs);
customizeReactions = tabBar.findViewById(R.id.customize_reactions_frame);
if (showEditReactions) {
customizeReactions.setVisibility(View.VISIBLE);
tabBar.findViewById(R.id.customize_reactions).setOnClickListener(v -> startActivity(new Intent(requireContext(), EditReactionsActivity.class)));
}
if (!requireArguments().getBoolean(ARG_SHADOWS)) {
View statusBarShader = layoutInflater.inflate(R.layout.react_with_any_emoji_status_fade, container, false);
@ -233,11 +233,11 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
container.addView(statusBarShader, 0);
}
container.addView(categoryTabs);
container.addView(tabBar);
ViewCompat.setOnApplyWindowInsetsListener(container, (v, insets) -> insets.consumeSystemWindowInsets());
new TabLayoutMediator(categoryTabs, categoryPager, (tab, position) -> {
tab.setCustomView(react_with_any_emoji_tab)
tab.setCustomView(R.layout.react_with_any_emoji_tab)
.setIcon(ThemeUtil.getThemedDrawable(requireContext(), adapter.getItem(position).getIconAttr()));
}).attach();
}
@ -294,7 +294,6 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
}
categoryLabel.setText(getString(adapter.getItem(position).getLabel()));
editReactions.setVisibility(showEditReactions && position == 0 ? View.VISIBLE : View.GONE);
}
private int getStartingPage(boolean firstPageHasContent) {

Wyświetl plik

@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.database.MessageDatabase;
import org.thoughtcrime.securesms.database.NoSuchMessageException;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.ReactionRecord;
import org.thoughtcrime.securesms.emoji.EmojiCategory;
import org.thoughtcrime.securesms.emoji.EmojiSource;
import org.thoughtcrime.securesms.reactions.ReactionDetails;
import org.thoughtcrime.securesms.recipients.Recipient;
@ -43,9 +44,9 @@ final class ReactWithAnyEmojiRepository {
this.emojiPages = new LinkedList<>();
emojiPages.addAll(Stream.of(EmojiSource.getLatest().getDisplayPages())
.filterNot(p -> p.getIconAttr() == EmojiCategory.EMOTICONS.getIcon())
.map(page -> new ReactWithAnyEmojiPage(Collections.singletonList(new ReactWithAnyEmojiPageBlock(getCategoryLabel(page.getIconAttr()), page))))
.toList());
emojiPages.remove(emojiPages.size() - 1);
}
List<ReactWithAnyEmojiPage> getEmojiPageModels(@NonNull List<ReactionDetails> thisMessagesReactions) {

Wyświetl plik

@ -40,7 +40,7 @@ class EditReactionsFragment : LoggingFragment(R.layout.edit_reactions_fragment),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
toolbar = view.findViewById(R.id.toolbar)
toolbar.setTitle(R.string.EditReactionsFragment__edit_reactions)
toolbar.setTitle(R.string.EditReactionsFragment__customize_reactions)
toolbar.setNavigationOnClickListener {
requireActivity().onBackPressed()
}

Wyświetl plik

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/signal_icon_tint_tab_selected" android:state_selected="true" />
<item android:color="@color/signal_icon_tint_tab_unselected" />
</selector>

Wyświetl plik

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M22.92,10.68A1,1 0,0 0,22 9.83l-1.84,-0.15a8.3,8.3 0,0 0,-0.75 -1.82l1.19,-1.41a1,1 0,0 0,0.05 -1.24,11.09 11.09,0 0,0 -1.88,-1.87 1,1 0,0 0,-1.23 0.05L16.14,4.58a8.3,8.3 0,0 0,-1.82 -0.75L14.17,2a1,1 0,0 0,-0.85 -0.91,10.6 10.6,0 0,0 -2.64,0A1,1 0,0 0,9.83 2L9.68,3.83a8.3,8.3 0,0 0,-1.82 0.75L6.45,3.39a1,1 0,0 0,-1.24 -0.05A11.09,11.09 0,0 0,3.34 5.22a1,1 0,0 0,0.05 1.23L4.58,7.86a8.3,8.3 0,0 0,-0.75 1.82L2,9.83a1,1 0,0 0,-0.91 0.85,10.6 10.6,0 0,0 0,2.64 1,1 0,0 0,0.91 0.85l1.84,0.15a8.3,8.3 0,0 0,0.75 1.82L3.39,17.55a1,1 0,0 0,-0.05 1.24,11.09 11.09,0 0,0 1.88,1.87 1,1 0,0 0,1.23 -0.05l1.41,-1.19a8.3,8.3 0,0 0,1.82 0.75L9.83,22a1,1 0,0 0,0.85 0.91,11.1 11.1,0 0,0 2.64,0 1,1 0,0 0,0.85 -0.91l0.15,-1.84a8.3,8.3 0,0 0,1.82 -0.75l1.41,1.19a1,1 0,0 0,1.24 0.05,11.09 11.09,0 0,0 1.87,-1.88 1,1 0,0 0,-0.05 -1.23l-1.19,-1.41a8.3,8.3 0,0 0,0.75 -1.82L22,14.17a1,1 0,0 0,0.91 -0.85A10.6,10.6 0,0 0,22.92 10.68ZM12,17a5,5 0,1 1,5 -5A5,5 0,0 1,12 17Z"/>
</vector>

Wyświetl plik

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="@color/keyboard_pager_fragment_selected" />
<corners android:radius="8dp" />
</shape>
</item>
</selector>

Wyświetl plik

@ -56,7 +56,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_settings_outline_24"
app:srcCompat="@drawable/ic_settings_24"
app:tint="@color/signal_icon_tint_primary" />
<View

Wyświetl plik

@ -20,7 +20,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/EditReactionsFragment__reset_emoji"
android:text="@string/EditReactionsFragment__reset"
app:layout_constraintBottom_toBottomOf="@+id/edit_reactions_fragment_save"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/edit_reactions_fragment_save" />

Wyświetl plik

@ -6,18 +6,28 @@
android:layout_height="match_parent"
android:minHeight="@dimen/react_with_any_emoji_bottom_sheet_dialog_fragment_min_height">
<View
android:id="@+id/react_with_any_emoji_pull_bar"
android:layout_width="48dp"
android:layout_height="2dp"
android:background="@color/signal_text_primary_disabled"
android:layout_marginTop="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextSwitcher
android:id="@+id/category_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="12dp"
android:layout_marginTop="18dp"
android:layout_marginEnd="10dp"
android:inAnimation="@anim/fade_in"
android:outAnimation="@anim/fade_out"
app:layout_constraintEnd_toStartOf="@+id/edit_reactions"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toBottomOf="@+id/react_with_any_emoji_pull_bar">
<TextView
android:layout_width="match_parent"
@ -33,19 +43,6 @@
android:textColor="@color/signal_icon_tint_primary" />
</TextSwitcher>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/edit_reactions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/EditReactionsFragment__edit_reactions"
android:foreground="?attr/selectableItemBackgroundBorderless"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_settings_outline_24"
app:tint="@color/signal_icon_tint_primary"
tools:ignore="UnusedAttribute" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/category_pager"
android:layout_width="match_parent"

Wyświetl plik

@ -2,8 +2,10 @@
<androidx.appcompat.widget.AppCompatImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/icon"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/keyboard_pager_fragment_selected"
android:padding="8dp"
android:scaleType="centerInside"
tools:src="@drawable/ic_recent_20" />
android:tint="@color/icon_tab_selector"
tools:src="@drawable/ic_recent_20" />

Wyświetl plik

@ -1,15 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.tabs.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/category_tabs"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/react_with_any_emoji_bottom_sheet_dialog_fragment_tabs_height"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/signal_background_secondary"
app:layout_constraintTop_toTopOf="parent"
app:tabIndicatorColor="@color/core_ultramarine"
app:tabPadding="0dp"
app:tabPaddingBottom="0dp"
app:tabPaddingEnd="0dp"
app:tabPaddingStart="0dp"
app:tabPaddingTop="0dp" />
android:background="@color/signal_background_dialog">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/signal_inverse_transparent_05"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/customize_reactions_frame"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_margin="4dp"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/signal_background_dialog"
android:clipChildren="false"
android:elevation="4dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="UnusedAttribute"
tools:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/customize_reactions"
android:layout_width="24dp"
android:layout_height="24dp"
android:padding="4dp"
android:layout_gravity="center"
android:contentDescription="@string/EditReactionsFragment__customize_reactions"
android:foreground="?attr/selectableItemBackgroundBorderless"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_settings_24"
app:tint="@color/icon_tab_selector"
tools:ignore="UnusedAttribute" />
</FrameLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/category_tabs"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_marginStart="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/customize_reactions_frame"
app:layout_constraintTop_toTopOf="parent"
app:tabIndicatorColor="@color/transparent"
app:tabMaxWidth="48dp"
app:tabMode="scrollable"
app:tabPadding="0dp"
app:tabPaddingBottom="0dp"
app:tabPaddingEnd="0dp"
app:tabPaddingStart="0dp"
app:tabPaddingTop="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

Wyświetl plik

@ -26,6 +26,9 @@
<color name="signal_icon_tint_primary">@color/core_grey_15</color>
<color name="signal_icon_tint_secondary">@color/core_grey_25</color>
<color name="signal_icon_tint_tab_selected">@color/core_grey_10</color>
<color name="signal_icon_tint_tab_unselected">@color/core_grey_45</color>
<color name="signal_button_primary">@color/core_ultramarine_light</color>
<color name="signal_button_primary_ripple">@color/transparent_black_15</color>
<color name="signal_button_primary_text">@color/core_white</color>
@ -136,4 +139,6 @@
<color name="quote_view_background">@color/transparent_black_40</color>
<color name="conversation_item_outgoing_footer_fg">@color/transparent_white_60</color>
<color name="quote_preview_background">@color/core_grey_80</color>
<color name="keyboard_pager_fragment_selected">@color/core_grey_80</color>
</resources>

Wyświetl plik

@ -26,6 +26,9 @@
<color name="signal_icon_tint_primary">@color/core_grey_75</color>
<color name="signal_icon_tint_secondary">@color/core_grey_60</color>
<color name="signal_icon_tint_tab_selected">@color/core_grey_80</color>
<color name="signal_icon_tint_tab_unselected">@color/core_grey_45</color>
<color name="signal_button_primary">@color/core_ultramarine</color>
<color name="signal_button_primary_ripple">@color/transparent_black_15</color>
<color name="signal_button_primary_text">@color/core_white</color>
@ -136,4 +139,6 @@
<color name="quote_view_background">@color/transparent_white_60</color>
<color name="conversation_item_outgoing_footer_fg">@color/transparent_white_80</color>
<color name="quote_preview_background">@color/core_grey_15</color>
<color name="keyboard_pager_fragment_selected">@color/core_grey_10</color>
</resources>

Wyświetl plik

@ -7,6 +7,7 @@
<item name="android:textAllCaps">false</item>
<item name="android:textColor">@color/signal_button_primary_text_selector</item>
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:letterSpacing" tools:ignore="NewApi">0.035</item>
<item name="iconGravity">textEnd</item>
<item name="backgroundTint">@color/signal_button_primary</item>
<item name="iconTint">@color/signal_button_primary_text_selector</item>
@ -66,6 +67,7 @@
<item name="android:insetBottom">0dp</item>
<item name="android:textAllCaps">false</item>
<item name="android:textColor">@color/signal_button_secondary_text_selector</item>
<item name="android:letterSpacing" tools:ignore="NewApi">0.035</item>
<item name="iconGravity">textEnd</item>
<item name="iconTint">@color/signal_button_secondary_text_selector</item>
<item name="strokeColor">@color/signal_button_secondary_stroke</item>

Wyświetl plik

@ -3503,9 +3503,9 @@
<string name="ChatColorGradientTool_bottom_edge_selector">Bottom edge selector</string>
<!-- EditReactionsFragment -->
<string name="EditReactionsFragment__edit_reactions">Edit Reactions</string>
<string name="EditReactionsFragment__customize_reactions">Customize reactions</string>
<string name="EditReactionsFragment__tap_to_replace_an_emoji">Tap to replace an emoji</string>
<string name="EditReactionsFragment__reset_emoji">Reset emoji</string>
<string name="EditReactionsFragment__reset">Reset</string>
<string name="EditReactionsFragment_save">Save</string>
<!-- EOF -->