diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/AdvancedPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/AdvancedPreference.kt index e78dd606d..509d898a4 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/AdvancedPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/AdvancedPreference.kt @@ -1,11 +1,23 @@ package com.aurora.store.view.ui.preferences import android.os.Bundle +import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceFragmentCompat import com.aurora.store.R class AdvancedPreference : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_advanced, rootKey) } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.title_advanced) + setNavigationOnClickListener { findNavController().navigateUp() } + } + } } diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/DownloadPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/DownloadPreference.kt index 814a8ad9a..ddfee9501 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/DownloadPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/DownloadPreference.kt @@ -21,6 +21,8 @@ package com.aurora.store.view.ui.preferences import android.os.Bundle import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreferenceCompat @@ -36,6 +38,11 @@ class DownloadPreference : PreferenceFragmentCompat() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.pref_app_download) + setNavigationOnClickListener { findNavController().navigateUp() } + } + val downloadExternalPreference: SwitchPreferenceCompat? = findPreference(Preferences.PREFERENCE_DOWNLOAD_EXTERNAL) diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/FilterPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/FilterPreference.kt index 827234e2f..a38a20d9d 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/FilterPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/FilterPreference.kt @@ -20,11 +20,23 @@ package com.aurora.store.view.ui.preferences import android.os.Bundle +import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceFragmentCompat import com.aurora.store.R class FilterPreference : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_filter, rootKey) } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.action_filter) + setNavigationOnClickListener { findNavController().navigateUp() } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt index c3c45506a..bb2fcb89c 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt @@ -22,6 +22,8 @@ package com.aurora.store.view.ui.preferences import android.content.pm.PackageManager import android.os.Bundle import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.aurora.extensions.isOAndAbove @@ -75,6 +77,11 @@ class InstallationPreference : PreferenceFragmentCompat() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.title_installation) + setNavigationOnClickListener { findNavController().navigateUp() } + } + if (AppInstaller.hasShizuku(requireContext()) && isOAndAbove()) { Shizuku.addBinderReceivedListenerSticky(shizukuAliveListener) Shizuku.addBinderDeadListener(shizukuDeadListener) diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/MainPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/MainPreference.kt deleted file mode 100644 index 640584b4b..000000000 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/MainPreference.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Aurora Store - * Copyright (C) 2021, Rahul Kumar Patel - * - * Aurora Store is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * Aurora Store is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Aurora Store. If not, see . - * - */ - -package com.aurora.store.view.ui.preferences - -import android.os.Bundle -import androidx.preference.PreferenceFragmentCompat -import com.aurora.store.R - - -class MainPreference : PreferenceFragmentCompat() { - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - setPreferencesFromResource(R.xml.preferences_main, rootKey) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt index d3526a853..980badaca 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt @@ -20,6 +20,9 @@ package com.aurora.store.view.ui.preferences import android.os.Bundle +import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.aurora.extensions.runOnUiThread @@ -29,6 +32,7 @@ import com.aurora.store.util.CommonUtil import com.aurora.store.util.Preferences class NetworkPreference : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_network, rootKey) @@ -45,4 +49,12 @@ class NetworkPreference : PreferenceFragmentCompat() { } } } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.pref_network_title) + setNavigationOnClickListener { findNavController().navigateUp() } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt index ae85167bc..640571efd 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt @@ -19,111 +19,54 @@ package com.aurora.store.view.ui.preferences -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment +import androidx.appcompat.widget.Toolbar import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat -import com.aurora.extensions.getStyledAttributeColor -import com.aurora.extensions.restartApp import com.aurora.store.R -import com.aurora.store.databinding.FragmentSettingBinding -import com.google.android.material.dialog.MaterialAlertDialogBuilder -class SettingsFragment : Fragment(R.layout.fragment_setting), - PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { +class SettingsFragment : PreferenceFragmentCompat() { - private var _binding: FragmentSettingBinding? = null - private val binding: FragmentSettingBinding - get() = _binding!! + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.preferences_settings, rootKey) - companion object { - var shouldRestart = false - const val titleTag = "titleTag" + findPreference("pref_filter")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.filterPreference) + true + } + findPreference("pref_install")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.installationPreference) + true + } + findPreference("pref_ui")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.UIPreference) + true + } + findPreference("pref_download")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.downloadPreference) + true + } + findPreference("pref_network")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.networkPreference) + true + } + findPreference("pref_updates")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.updatesPreference) + true + } + findPreference("pref_advanced")?.setOnPreferenceClickListener { + findNavController().navigate(R.id.advancedPreference) + true + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - - _binding = FragmentSettingBinding.bind(view) - - if (savedInstanceState == null) { - childFragmentManager - .beginTransaction() - .replace(R.id.settings, MainPreference()) - .commit() - } else { - binding.layoutToolbarAction.toolbar.title = savedInstanceState.getCharSequence(titleTag) - } - - childFragmentManager.addOnBackStackChangedListener { - if (childFragmentManager.backStackEntryCount == 0) { - binding.layoutToolbarAction.toolbar.title = getString(R.string.title_settings) - if (shouldRestart) askRestart() - } - } - - // Toolbar - binding.layoutToolbarAction.toolbar.apply { - elevation = 0f + view.findViewById(R.id.toolbar)?.apply { title = getString(R.string.title_settings) - navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back) setNavigationOnClickListener { findNavController().navigateUp() } } } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - - override fun onSaveInstanceState(outState: Bundle) { - super.onSaveInstanceState(outState) - outState.putCharSequence(titleTag, binding.layoutToolbarAction.toolbar.title) - } - - override fun onPreferenceStartFragment( - caller: PreferenceFragmentCompat, - preference: Preference - ): Boolean { - with(childFragmentManager) { - val args = preference.extras - - val fragment = fragmentFactory.instantiate( - this@SettingsFragment.javaClass.classLoader!!, - preference.fragment.toString() - ).apply { - arguments = args - setTargetFragment(caller, 0) - } - - beginTransaction() - .replace(R.id.settings, fragment) - .addToBackStack(preference.key) - .commit() - - binding.layoutToolbarAction.toolbar.title = preference.title - } - - return true - } - - private fun askRestart() { - val builder = MaterialAlertDialogBuilder(requireContext()) - .setTitle(getString(R.string.action_restart)) - .setMessage(getString(R.string.pref_dialog_to_apply_restart)) - .setPositiveButton(getString(R.string.action_restart)) { _, _ -> - shouldRestart = false - requireContext().restartApp() - } - .setNegativeButton(getString(R.string.action_later)) { dialog, _ -> dialog.dismiss() } - val backGroundColor = - requireContext().getStyledAttributeColor(android.R.attr.colorBackground) - builder.background = ColorDrawable(backGroundColor) - builder.create() - builder.show() - } } diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/UIPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/UIPreference.kt index 6c3030049..d9ffd15e1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/UIPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/UIPreference.kt @@ -21,6 +21,8 @@ package com.aurora.store.view.ui.preferences import android.os.Bundle import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.ListPreference import androidx.preference.PreferenceFragmentCompat import com.aurora.store.R @@ -30,6 +32,7 @@ import com.aurora.store.util.save class UIPreference : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_ui, rootKey) } @@ -37,20 +40,18 @@ class UIPreference : PreferenceFragmentCompat() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.pref_ui_title) + setNavigationOnClickListener { findNavController().navigateUp() } + } + val themePreference: ListPreference? = findPreference(Preferences.PREFERENCE_THEME_TYPE) themePreference?.let { it.setOnPreferenceChangeListener { _, newValue -> val themeId = Integer.parseInt(newValue.toString()) - val accentId = Preferences.getInteger( - requireContext(), - Preferences.PREFERENCE_THEME_ACCENT - ) save(Preferences.PREFERENCE_THEME_TYPE, themeId) - applyTheme(themeId, shouldApplyTransition = false) - - SettingsFragment.shouldRestart = true true } } @@ -65,10 +66,7 @@ class UIPreference : PreferenceFragmentCompat() { val accentId = Integer.parseInt(newValue.toString()) save(Preferences.PREFERENCE_THEME_ACCENT, accentId) - applyTheme(themeId, shouldApplyTransition = false) - - SettingsFragment.shouldRestart = true true } } diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt index 148e95b83..40074eb34 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt @@ -20,6 +20,9 @@ package com.aurora.store.view.ui.preferences import android.os.Bundle +import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreferenceCompat import com.aurora.store.R @@ -28,6 +31,7 @@ import com.aurora.store.util.Log import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK class UpdatesPreference : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_updates, rootKey) @@ -41,4 +45,12 @@ class UpdatesPreference : PreferenceFragmentCompat() { true } } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + view.findViewById(R.id.toolbar)?.apply { + title = getString(R.string.title_updates) + setNavigationOnClickListener { findNavController().navigateUp() } + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml index 92f1719a5..a94d1872a 100644 --- a/app/src/main/res/layout/fragment_setting.xml +++ b/app/src/main/res/layout/fragment_setting.xml @@ -1,5 +1,4 @@ - - - - + android:layout_height="wrap_content" + app:navigationIcon="@drawable/ic_arrow_back" /> + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index c9527f956..10bcc8694 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -77,6 +77,41 @@ android:name="com.aurora.store.view.ui.preferences.SettingsFragment" android:label="@string/title_settings" tools:layout="@layout/fragment_setting" /> + + + + + + + diff --git a/app/src/main/res/xml/preferences_main.xml b/app/src/main/res/xml/preferences_settings.xml similarity index 75% rename from app/src/main/res/xml/preferences_main.xml rename to app/src/main/res/xml/preferences_settings.xml index 5effd6be2..07864ca62 100644 --- a/app/src/main/res/xml/preferences_main.xml +++ b/app/src/main/res/xml/preferences_settings.xml @@ -17,17 +17,14 @@ ~ --> - +