diff --git a/app/src/main/java/org/futo/circles/feature/circles/CirclesFragment.kt b/app/src/main/java/org/futo/circles/feature/circles/CirclesFragment.kt index 2498b2e8707ee2ac3588fceba1d6ae42f5a9303f..73b29c4ea8e9facb97a8f06075c495499b31900e 100644 --- a/app/src/main/java/org/futo/circles/feature/circles/CirclesFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/circles/CirclesFragment.kt @@ -1,7 +1,13 @@ package org.futo.circles.feature.circles +import android.annotation.SuppressLint import android.os.Bundle +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import android.view.View +import androidx.appcompat.view.menu.MenuBuilder +import androidx.core.view.MenuProvider import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController @@ -25,7 +31,7 @@ import org.futo.circles.feature.circles.list.CirclesListAdapter import org.futo.circles.model.CircleListItem @AndroidEntryPoint -class CirclesFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms) { +class CirclesFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms), MenuProvider { private val viewModel by viewModels<CirclesViewModel>() private val binding by viewBinding(FragmentRoomsBinding::bind) @@ -37,6 +43,7 @@ class CirclesFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms) super.onViewCreated(view, savedInstanceState) setupViews() setupObservers() + activity?.addMenuProvider(this, viewLifecycleOwner) } override fun onCreate(savedInstanceState: Bundle?) { @@ -50,6 +57,20 @@ class CirclesFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms) listAdapter = null } + @SuppressLint("RestrictedApi") + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { + (menu as? MenuBuilder)?.setOptionalIconsVisible(true) + menu.clear() + inflater.inflate(R.menu.circles_tab_menu, menu) + } + + override fun onMenuItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.help -> CirclesExplanationDialog(requireContext(), CircleRoomTypeArg.Circle).show() + } + return true + } + private fun setupViews() { binding.rvRooms.apply { setEmptyView(EmptyTabPlaceholderView(requireContext()).apply { diff --git a/app/src/main/java/org/futo/circles/feature/groups/GroupsFragment.kt b/app/src/main/java/org/futo/circles/feature/groups/GroupsFragment.kt index 3981c199f751afb67e3e71ab5cdca5dc51f5ef55..ed39a488783d78c188cc36d0fc6967310992ceeb 100644 --- a/app/src/main/java/org/futo/circles/feature/groups/GroupsFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/groups/GroupsFragment.kt @@ -1,7 +1,13 @@ package org.futo.circles.feature.groups +import android.annotation.SuppressLint import android.os.Bundle +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import android.view.View +import androidx.appcompat.view.menu.MenuBuilder +import androidx.core.view.MenuProvider import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController @@ -24,7 +30,7 @@ import org.futo.circles.feature.groups.list.GroupsListAdapter import org.futo.circles.model.GroupListItem @AndroidEntryPoint -class GroupsFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms) { +class GroupsFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms), MenuProvider { private val viewModel by viewModels<GroupsViewModel>() private val binding by viewBinding(FragmentRoomsBinding::bind) @@ -42,6 +48,7 @@ class GroupsFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms) { super.onViewCreated(view, savedInstanceState) setupViews() setupObservers() + activity?.addMenuProvider(this, viewLifecycleOwner) } override fun onCreate(savedInstanceState: Bundle?) { @@ -50,6 +57,20 @@ class GroupsFragment : Fragment(org.futo.circles.core.R.layout.fragment_rooms) { CirclesExplanationDialog(requireContext(), CircleRoomTypeArg.Group).show() } + @SuppressLint("RestrictedApi") + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { + (menu as? MenuBuilder)?.setOptionalIconsVisible(true) + menu.clear() + inflater.inflate(R.menu.circles_tab_menu, menu) + } + + override fun onMenuItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.help -> CirclesExplanationDialog(requireContext(), CircleRoomTypeArg.Group).show() + } + return true + } + private fun setupViews() { binding.rvRooms.apply { setEmptyView(EmptyTabPlaceholderView(requireContext()).apply { diff --git a/app/src/main/res/drawable/ic_help.xml b/app/src/main/res/drawable/ic_help.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a62f12cf45bbf90da16ff2a380e0109bfca9cf9 --- /dev/null +++ b/app/src/main/res/drawable/ic_help.xml @@ -0,0 +1,11 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:autoMirrored="true" + android:tint="@color/menu_icon_color" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M11,18h2v-2h-2v2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM12,6c-2.21,0 -4,1.79 -4,4h2c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,2 -3,1.75 -3,5h2c0,-2.25 3,-2.5 3,-5 0,-2.21 -1.79,-4 -4,-4z" /> +</vector> diff --git a/app/src/main/res/menu/circles_tab_menu.xml b/app/src/main/res/menu/circles_tab_menu.xml new file mode 100644 index 0000000000000000000000000000000000000000..8660e4395c97cb72769e263408ae8dc7fc0e0c4c --- /dev/null +++ b/app/src/main/res/menu/circles_tab_menu.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <item + android:id="@+id/help" + android:icon="@drawable/ic_help" + android:title="@string/help" + app:showAsAction="ifRoom" /> + +</menu> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 14f4de12a8219f438fb85de7527902fe517f188e..d0d68d4f01dbfdd37dd8c4f22349ce493d78014b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -210,6 +210,7 @@ <string name="creating_timeline">Creating timeline</string> <string name="group_topic_optional">Group topic (optional)</string> <string name="session">Session</string> + <string name="help">Help</string> <string-array name="report_categories"> <item>@string/crude_language</item>