From 26887f202554449603dd5e18847ef8766e3a5dd3 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Thu, 14 Mar 2024 17:28:32 +0200 Subject: [PATCH] Add filter quick menu access --- .../timeline/TimelineDialogFragment.kt | 3 +++ .../feature/timeline/TimelineNavigator.kt | 6 ++++++ .../res/navigation/timeline_nav_graph.xml | 14 +++++++++++++- core/src/main/res/menu/timeline_menu.xml | 7 +++++++ .../navigation/filter_timelines_nav_graph.xml | 19 +++++++++++++++++++ .../navigation/timeline_options_nav_graph.xml | 13 ++----------- 6 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 core/src/main/res/navigation/filter_timelines_nav_graph.xml diff --git a/app/src/main/java/org/futo/circles/feature/timeline/TimelineDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/timeline/TimelineDialogFragment.kt index 709b03c0a..85459f36f 100644 --- a/app/src/main/java/org/futo/circles/feature/timeline/TimelineDialogFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/timeline/TimelineDialogFragment.kt @@ -143,9 +143,12 @@ class TimelineDialogFragment : BaseFullscreenDialogFragment(DialogFragmentTimeli private fun setupMenuClickListener() { binding.toolbar.apply { setOnClickListener { navigateToTimelineOptions() } + menu.findItem(org.futo.circles.core.R.id.filter).isVisible = + args.timelineId != null && !isThread setOnMenuItemClickListener { item -> when (item.itemId) { org.futo.circles.core.R.id.settings -> navigateToTimelineOptions() + org.futo.circles.core.R.id.filter -> navigator.navigateToTimelinesFilter(args.roomId) } return@setOnMenuItemClickListener true } diff --git a/app/src/main/java/org/futo/circles/feature/timeline/TimelineNavigator.kt b/app/src/main/java/org/futo/circles/feature/timeline/TimelineNavigator.kt index c50ed998b..ffb3eb139 100644 --- a/app/src/main/java/org/futo/circles/feature/timeline/TimelineNavigator.kt +++ b/app/src/main/java/org/futo/circles/feature/timeline/TimelineNavigator.kt @@ -21,6 +21,12 @@ class TimelineNavigator(private val fragment: TimelineDialogFragment) { ) } + fun navigateToTimelinesFilter(roomId: String) { + fragment.findNavController().navigateSafe( + TimelineDialogFragmentDirections.toFilterTimelinesDialogFragment(roomId) + ) + } + fun navigateToCreatePoll(roomId: String) { fragment.findNavController().navigateSafe( TimelineDialogFragmentDirections.toCreatePoll(roomId, null) diff --git a/app/src/main/res/navigation/timeline_nav_graph.xml b/app/src/main/res/navigation/timeline_nav_graph.xml index d202290c3..fd75cf9a0 100644 --- a/app/src/main/res/navigation/timeline_nav_graph.xml +++ b/app/src/main/res/navigation/timeline_nav_graph.xml @@ -28,6 +28,17 @@ app:argType="string" app:nullable="true" /> + <action + android:id="@+id/to_filterTimelinesDialogFragment" + app:destination="@id/filter_timelines_nav_graph"> + + <argument + android:name="circleId" + app:argType="string" + app:nullable="false" /> + + </action> + <action android:id="@+id/to_createPostBottomSheet" app:destination="@id/createPostBottomSheet"> @@ -419,7 +430,8 @@ app:nullable="true" /> </action> + </dialog> + <include app:graph="@navigation/filter_timelines_nav_graph" /> - </dialog> </navigation> \ No newline at end of file diff --git a/core/src/main/res/menu/timeline_menu.xml b/core/src/main/res/menu/timeline_menu.xml index e90ba6ffb..9e90a3ac8 100644 --- a/core/src/main/res/menu/timeline_menu.xml +++ b/core/src/main/res/menu/timeline_menu.xml @@ -2,6 +2,13 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/filter" + android:icon="@drawable/ic_filter" + android:title="@string/filter_timelines" + android:visible="false" + app:showAsAction="ifRoom" /> + <item android:id="@+id/settings" android:icon="@drawable/ic_settings" diff --git a/core/src/main/res/navigation/filter_timelines_nav_graph.xml b/core/src/main/res/navigation/filter_timelines_nav_graph.xml new file mode 100644 index 000000000..0c24962c5 --- /dev/null +++ b/core/src/main/res/navigation/filter_timelines_nav_graph.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<navigation xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/filter_timelines_nav_graph" + app:startDestination="@id/filterTimelinesDialogFragment"> + + <dialog + android:id="@+id/filterTimelinesDialogFragment" + android:name="org.futo.circles.core.feature.circles.filter.FilterTimelinesDialogFragment" + tools:layout="@layout/dialog_fragment_filter_timeline"> + + <argument + android:name="circleId" + app:argType="string" + app:nullable="false" /> + + </dialog> +</navigation> \ No newline at end of file diff --git a/core/src/main/res/navigation/timeline_options_nav_graph.xml b/core/src/main/res/navigation/timeline_options_nav_graph.xml index f8f290a78..6ddca8828 100644 --- a/core/src/main/res/navigation/timeline_options_nav_graph.xml +++ b/core/src/main/res/navigation/timeline_options_nav_graph.xml @@ -116,7 +116,7 @@ </action> <action android:id="@+id/to_filterTimelinesDialogFragment" - app:destination="@id/filterTimelinesDialogFragment"> + app:destination="@id/filter_timelines_nav_graph"> <argument android:name="circleId" @@ -263,16 +263,7 @@ android:id="@+id/userDialogFragment" android:name="org.futo.circles.core.feature.user.UserDialogFragment" tools:layout="@layout/dialog_fragment_user" /> - <dialog - android:id="@+id/filterTimelinesDialogFragment" - android:name="org.futo.circles.core.feature.circles.filter.FilterTimelinesDialogFragment" - tools:layout="@layout/dialog_fragment_filter_timeline"> - - <argument - android:name="circleId" - app:argType="string" - app:nullable="false" /> - </dialog> + <include app:graph="@navigation/filter_timelines_nav_graph" /> </navigation> -- GitLab