From b3e53bc48d091960813437336ca612342d858d7c Mon Sep 17 00:00:00 2001 From: Grishka Date: Sat, 24 Feb 2024 03:57:43 +0300 Subject: [PATCH] AND-133 --- .../settings/FilterWordsFragment.java | 14 +++--- .../settings/SettingsFiltersFragment.java | 31 +++++++++---- .../recycler_fragment_with_text_fab.xml | 43 +++++++++++++++++++ mastodon/src/main/res/values/strings.xml | 1 + 4 files changed, 72 insertions(+), 17 deletions(-) create mode 100644 mastodon/src/main/res/layout/recycler_fragment_with_text_fab.xml diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java index fb689ef6b..0dec195b8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java @@ -37,14 +37,14 @@ import me.grishka.appkit.fragments.OnBackPressedListener; import me.grishka.appkit.utils.V; public class FilterWordsFragment extends BaseSettingsFragment implements OnBackPressedListener{ - private ImageButton fab; + private Button fab; private ActionMode actionMode; private ArrayList> selectedItems=new ArrayList<>(); private ArrayList deletedItemIDs=new ArrayList<>(); private MenuItem deleteItem; public FilterWordsFragment(){ - setListLayoutId(R.layout.recycler_fragment_with_fab); + setListLayoutId(R.layout.recycler_fragment_with_text_fab); } @Override @@ -92,18 +92,14 @@ public class FilterWordsFragment extends BaseSettingsFragment imp public void onViewCreated(View view, Bundle savedInstanceState){ super.onViewCreated(view, savedInstanceState); fab=view.findViewById(R.id.fab); - fab.setImageResource(R.drawable.ic_add_24px); - fab.setContentDescription(getString(R.string.add_muted_word)); + fab.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_add_24px, 0, 0, 0); + fab.setText(R.string.add_muted_word_short); fab.setOnClickListener(v->onFabClick()); } @Override public void onApplyWindowInsets(WindowInsets insets){ - int fabInset=0; - if(Build.VERSION.SDK_INT>=29 && insets.getTappableElementInsets().bottom==0){ - fabInset=insets.getSystemWindowInsetBottom(); - } - ((ViewGroup.MarginLayoutParams) fab.getLayoutParams()).bottomMargin=V.dp(16)+fabInset; + UiUtils.applyBottomInsetToFAB(fab, insets); super.onApplyWindowInsets(insets); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java index 4fa9b3f31..16d806d7f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java @@ -1,6 +1,9 @@ package org.joinmastodon.android.fragments.settings; import android.os.Bundle; +import android.view.View; +import android.view.WindowInsets; +import android.widget.Button; import com.squareup.otto.Subscribe; @@ -12,6 +15,7 @@ import org.joinmastodon.android.events.SettingsFilterDeletedEvent; import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.viewmodel.ListItem; import org.joinmastodon.android.ui.adapters.GenericListItemsAdapter; +import org.joinmastodon.android.ui.utils.UiUtils; import org.parceler.Parcels; import java.util.Collections; @@ -24,6 +28,12 @@ import me.grishka.appkit.api.SimpleCallback; import me.grishka.appkit.utils.MergeRecyclerAdapter; public class SettingsFiltersFragment extends BaseSettingsFragment{ + private Button fab; + + public SettingsFiltersFragment(){ + setListLayoutId(R.layout.recycler_fragment_with_text_fab); + } + @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); @@ -53,13 +63,12 @@ public class SettingsFiltersFragment extends BaseSettingsFragment{ } @Override - protected RecyclerView.Adapter getAdapter(){ - MergeRecyclerAdapter adapter=new MergeRecyclerAdapter(); - adapter.addAdapter(super.getAdapter()); - adapter.addAdapter(new GenericListItemsAdapter<>(Collections.singletonList( - new ListItem(R.string.settings_add_filter, 0, R.drawable.ic_add_24px, this::onAddFilterClick) - ))); - return adapter; + public void onViewCreated(View view, Bundle savedInstanceState){ + super.onViewCreated(view, savedInstanceState); + fab=view.findViewById(R.id.fab); + fab.setText(R.string.settings_add_filter); + fab.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_add_24px, 0, 0, 0); + fab.setOnClickListener(v->onAddFilterClick()); } private void onFilterClick(ListItem filter){ @@ -69,7 +78,7 @@ public class SettingsFiltersFragment extends BaseSettingsFragment{ Nav.go(getActivity(), EditFilterFragment.class, args); } - private void onAddFilterClick(ListItem item){ + private void onAddFilterClick(){ Bundle args=new Bundle(); args.putString("account", accountID); Nav.go(getActivity(), EditFilterFragment.class, args); @@ -109,4 +118,10 @@ public class SettingsFiltersFragment extends BaseSettingsFragment{ data.add(makeListItem(ev.filter)); itemsAdapter.notifyItemInserted(data.size()-1); } + + @Override + public void onApplyWindowInsets(WindowInsets insets){ + UiUtils.applyBottomInsetToFAB(fab, insets); + super.onApplyWindowInsets(insets); + } } diff --git a/mastodon/src/main/res/layout/recycler_fragment_with_text_fab.xml b/mastodon/src/main/res/layout/recycler_fragment_with_text_fab.xml new file mode 100644 index 000000000..2dc00d217 --- /dev/null +++ b/mastodon/src/main/res/layout/recycler_fragment_with_text_fab.xml @@ -0,0 +1,43 @@ + + + + + + + + +