From 05e29c5140ce9c3297a07aa59717f36d573ab3bc Mon Sep 17 00:00:00 2001 From: ottoptj Date: Sat, 31 Aug 2024 00:15:26 +0300 Subject: [PATCH] Added an action bar to launcher settings --- .../yamlauncher/settings/AboutFragment.kt | 6 ++- .../settings/AppMenuSettingsFragment.kt | 6 ++- .../settings/GestureAppsFragment.kt | 6 ++- .../settings/HiddenAppsFragment.kt | 7 ++- .../settings/HomeSettingsFragment.kt | 6 ++- .../yamlauncher/settings/LocationFragment.kt | 7 +-- .../yamlauncher/settings/SettingsActivity.kt | 43 +++++++++++++++---- .../yamlauncher/settings/SettingsFragment.kt | 6 ++- .../yamlauncher/settings/TitleProvider.kt | 5 +++ app/src/main/res/layout/activity_settings.xml | 2 +- .../main/res/layout/fragment_gesture_apps.xml | 18 -------- .../main/res/layout/fragment_hidden_apps.xml | 19 -------- app/src/main/res/layout/fragment_location.xml | 19 -------- app/src/main/res/values/themes.xml | 11 ++++- 14 files changed, 83 insertions(+), 78 deletions(-) create mode 100644 app/src/main/java/eu/ottop/yamlauncher/settings/TitleProvider.kt diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/AboutFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/AboutFragment.kt index 51d8e4b..78c9368 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/AboutFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/AboutFragment.kt @@ -12,7 +12,7 @@ import androidx.fragment.app.Fragment import eu.ottop.yamlauncher.R import eu.ottop.yamlauncher.utils.StringUtils -class AboutFragment : Fragment() { +class AboutFragment : Fragment(), TitleProvider { private val stringUtils = StringUtils() @@ -41,4 +41,8 @@ class AboutFragment : Fragment() { startActivity(intent) } } + + override fun getTitle(): String { + return "About YAM Launcher" + } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/AppMenuSettingsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/AppMenuSettingsFragment.kt index 7d596f8..e76ca66 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/AppMenuSettingsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/AppMenuSettingsFragment.kt @@ -4,9 +4,13 @@ import android.os.Bundle import androidx.preference.PreferenceFragmentCompat import eu.ottop.yamlauncher.R -class AppMenuSettingsFragment : PreferenceFragmentCompat() { +class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.app_menu_preferences, rootKey) } + + override fun getTitle(): String { + return "App Menu Settings" + } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/GestureAppsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/GestureAppsFragment.kt index 699eb19..d84c81e 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/GestureAppsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/GestureAppsFragment.kt @@ -23,7 +23,7 @@ import eu.ottop.yamlauncher.utils.UIUtils import kotlinx.coroutines.launch class GestureAppsFragment(private val direction: String) : Fragment(), - GestureAppsAdapter.OnItemClickListener { + GestureAppsAdapter.OnItemClickListener, TitleProvider { private var adapter: GestureAppsAdapter? = null private lateinit var sharedPreferenceManager: SharedPreferenceManager @@ -64,7 +64,6 @@ class GestureAppsFragment(private val direction: String) : Fragment(), val searchView = view.findViewById(R.id.gestureAppSearch) - uiUtils.setMenuTitleAlignment(view.findViewById(R.id.gestureMenuTitle)) uiUtils.setSearchAlignment(searchView) uiUtils.setSearchSize(searchView) @@ -165,5 +164,8 @@ class GestureAppsFragment(private val direction: String) : Fragment(), ).toString(), profile) } + override fun getTitle(): String { + return "Select an App" + } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/HiddenAppsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/HiddenAppsFragment.kt index 89dbd8e..12841e6 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/HiddenAppsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/HiddenAppsFragment.kt @@ -23,7 +23,7 @@ import eu.ottop.yamlauncher.utils.StringUtils import eu.ottop.yamlauncher.utils.UIUtils import kotlinx.coroutines.launch -class HiddenAppsFragment : Fragment(), HiddenAppsAdapter.OnItemClickListener { +class HiddenAppsFragment : Fragment(), HiddenAppsAdapter.OnItemClickListener, TitleProvider { private lateinit var sharedPreferenceManager: SharedPreferenceManager private var adapter: HiddenAppsAdapter? = null @@ -62,7 +62,6 @@ class HiddenAppsFragment : Fragment(), HiddenAppsAdapter.OnItemClickListener { val searchView = view.findViewById(R.id.hiddenAppSearch) - uiUtils.setMenuTitleAlignment(view.findViewById(R.id.hiddenMenuTitle)) uiUtils.setSearchAlignment(searchView) uiUtils.setSearchSize(searchView) @@ -162,4 +161,8 @@ class HiddenAppsFragment : Fragment(), HiddenAppsAdapter.OnItemClickListener { ).toString(), profile) } + override fun getTitle(): String { + return "Hidden Apps" + } + } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/HomeSettingsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/HomeSettingsFragment.kt index c160249..d255bcb 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/HomeSettingsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/HomeSettingsFragment.kt @@ -6,7 +6,7 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import eu.ottop.yamlauncher.R -class HomeSettingsFragment : PreferenceFragmentCompat() { +class HomeSettingsFragment : PreferenceFragmentCompat(), TitleProvider { private lateinit var sharedPreferenceManager: SharedPreferenceManager @@ -73,4 +73,8 @@ class HomeSettingsFragment : PreferenceFragmentCompat() { rightSwipePref?.summary = sharedPreferenceManager.getGestureName("right") } + + override fun getTitle(): String { + return "Home Screen Settings" + } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/LocationFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/LocationFragment.kt index fe4cd03..0d8d914 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/LocationFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/LocationFragment.kt @@ -22,7 +22,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class LocationFragment : Fragment(), LocationListAdapter.OnItemClickListener { +class LocationFragment : Fragment(), LocationListAdapter.OnItemClickListener, TitleProvider { private var adapter: LocationListAdapter? = null private lateinit var weatherSystem: WeatherSystem @@ -58,7 +58,6 @@ class LocationFragment : Fragment(), LocationListAdapter.OnItemClickListener { adapter = LocationListAdapter(requireContext(), locationList, this) val recyclerView = view.findViewById(R.id.locationRecycler) val appMenuEdgeFactory = AppMenuEdgeFactory(requireActivity()) - uiUtils.setMenuTitleAlignment(view.findViewById(R.id.locationMenuTitle)) uiUtils.setSearchAlignment(searchView) uiUtils.setSearchSize(searchView) @@ -130,6 +129,8 @@ class LocationFragment : Fragment(), LocationListAdapter.OnItemClickListener { showConfirmationDialog(name, latitude, longitude) } - + override fun getTitle(): String { + return "Search for Your City" + } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsActivity.kt index b8a4868..b2935a0 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsActivity.kt @@ -9,14 +9,41 @@ class SettingsActivity : AppCompatActivity() { private lateinit var binding: ActivitySettingsBinding - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivitySettingsBinding.inflate(layoutInflater) - setContentView(binding.root) - supportFragmentManager - .beginTransaction() - .replace(R.id.settingsLayout, SettingsFragment()) - .commit() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySettingsBinding.inflate(layoutInflater) + setContentView(binding.root) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.title = "Launcher Settings" + supportActionBar?.setDisplayShowTitleEnabled(true) + + supportFragmentManager + .beginTransaction() + .replace(R.id.settingsLayout, SettingsFragment()) + .commit() + + supportFragmentManager.addOnBackStackChangedListener { + updateActionBarTitle() } + } + + override fun onSupportNavigateUp(): Boolean { + // Handle the back arrow button in the ActionBar + if (supportFragmentManager.backStackEntryCount > 0) { + supportFragmentManager.popBackStack() + } else { + onBackPressedDispatcher.onBackPressed() + } + return true + } + + private fun updateActionBarTitle() { + val fragment = supportFragmentManager.findFragmentById(R.id.settingsLayout) + if (fragment is TitleProvider) { + supportActionBar?.title = fragment.getTitle() + } + } + + } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsFragment.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsFragment.kt index a9fca48..80f1ae9 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsFragment.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/SettingsFragment.kt @@ -8,7 +8,7 @@ import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import eu.ottop.yamlauncher.R -class SettingsFragment : PreferenceFragmentCompat() { +class SettingsFragment : PreferenceFragmentCompat(), TitleProvider { private lateinit var sharedPreferenceManager: SharedPreferenceManager @@ -73,4 +73,8 @@ class SettingsFragment : PreferenceFragmentCompat() { } + + override fun getTitle(): String { + return "Launcher Settings" + } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/TitleProvider.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/TitleProvider.kt new file mode 100644 index 0000000..3ad7f1c --- /dev/null +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/TitleProvider.kt @@ -0,0 +1,5 @@ +package eu.ottop.yamlauncher.settings + +interface TitleProvider { + fun getTitle(): String +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index aac9402..a01a4d2 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -12,7 +12,7 @@ android:id="@+id/settingsLayout" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingTop="40dp"> + android:paddingTop="5dp"> diff --git a/app/src/main/res/layout/fragment_gesture_apps.xml b/app/src/main/res/layout/fragment_gesture_apps.xml index 5b78158..96f4e1e 100644 --- a/app/src/main/res/layout/fragment_gesture_apps.xml +++ b/app/src/main/res/layout/fragment_gesture_apps.xml @@ -8,24 +8,6 @@ android:gravity="bottom" android:orientation="vertical" android:visibility="visible"> - - - - - - - - - - - + - + +