diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 28fd8af03..cf36bc70a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -155,7 +155,6 @@ - diff --git a/app/src/main/java/com/aurora/store/MainActivity.kt b/app/src/main/java/com/aurora/store/MainActivity.kt index 3072045d0..403f8eba6 100644 --- a/app/src/main/java/com/aurora/store/MainActivity.kt +++ b/app/src/main/java/com/aurora/store/MainActivity.kt @@ -53,10 +53,8 @@ import com.aurora.store.databinding.ActivityMainBinding import com.aurora.store.util.CertUtil.isFDroidApp import com.aurora.store.util.Log import com.aurora.store.util.Preferences -import com.aurora.store.view.ui.account.AccountFragment import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.downloads.DownloadActivity -import com.aurora.store.view.ui.preferences.SettingsActivity import com.aurora.store.view.ui.search.SearchSuggestionActivity import com.aurora.store.view.ui.sheets.SelfUpdateSheet import com.bumptech.glide.load.resource.bitmap.RoundedCorners @@ -263,7 +261,8 @@ class MainActivity : BaseActivity() { B.drawerLayout.close() } R.id.menu_settings -> { - open(SettingsActivity::class.java) + navController.navigate(R.id.settingsFragment) + B.drawerLayout.close() } R.id.menu_about -> { navController.navigate(R.id.aboutFragment) diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsActivity.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt similarity index 54% rename from app/src/main/java/com/aurora/store/view/ui/preferences/SettingsActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt index 343eb864a..ae85167bc 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/SettingsFragment.kt @@ -19,103 +19,81 @@ package com.aurora.store.view.ui.preferences +import android.graphics.drawable.ColorDrawable import android.os.Bundle -import android.view.MenuItem +import android.view.View +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +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.ActivitySettingBinding -import com.aurora.store.view.ui.commons.BaseActivity +import com.aurora.store.databinding.FragmentSettingBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder -class SettingsActivity : BaseActivity(), +class SettingsFragment : Fragment(R.layout.fragment_setting), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { - private lateinit var B: ActivitySettingBinding + private var _binding: FragmentSettingBinding? = null + private val binding: FragmentSettingBinding + get() = _binding!! companion object { var shouldRestart = false const val titleTag = "titleTag" } - override fun onConnected() { - } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) - override fun onDisconnected() { - } - - override fun onReconnected() { - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - B = ActivitySettingBinding.inflate(layoutInflater) - setContentView(B.root) + _binding = FragmentSettingBinding.bind(view) if (savedInstanceState == null) { - supportFragmentManager + childFragmentManager .beginTransaction() .replace(R.id.settings, MainPreference()) .commit() } else { - title = savedInstanceState.getCharSequence(titleTag) + binding.layoutToolbarAction.toolbar.title = savedInstanceState.getCharSequence(titleTag) } - supportFragmentManager.addOnBackStackChangedListener { - if (supportFragmentManager.backStackEntryCount == 0) { - B.layoutToolbarAction.toolbar.setTitle(R.string.title_settings) - if (shouldRestart) - askRestart() + childFragmentManager.addOnBackStackChangedListener { + if (childFragmentManager.backStackEntryCount == 0) { + binding.layoutToolbarAction.toolbar.title = getString(R.string.title_settings) + if (shouldRestart) askRestart() } } - attachToolbar() + // Toolbar + binding.layoutToolbarAction.toolbar.apply { + elevation = 0f + title = getString(R.string.title_settings) + navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back) + setNavigationOnClickListener { findNavController().navigateUp() } + } } - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - android.R.id.home -> { - onBackPressedDispatcher.onBackPressed() - return true - } - } - return super.onOptionsItemSelected(item) - } - - private fun attachToolbar() { - setSupportActionBar(B.layoutToolbarAction.toolbar) - val actionBar = supportActionBar - if (actionBar != null) { - actionBar.setDisplayShowCustomEnabled(true) - actionBar.setDisplayHomeAsUpEnabled(true) - actionBar.elevation = 0f - actionBar.setTitle(R.string.title_settings) - } + override fun onDestroyView() { + super.onDestroyView() + _binding = null } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - outState.putCharSequence(titleTag, title) - } - - override fun onSupportNavigateUp(): Boolean { - if (supportFragmentManager.popBackStackImmediate()) { - return true - } - return super.onSupportNavigateUp() + outState.putCharSequence(titleTag, binding.layoutToolbarAction.toolbar.title) } override fun onPreferenceStartFragment( caller: PreferenceFragmentCompat, preference: Preference ): Boolean { - with(supportFragmentManager) { + with(childFragmentManager) { val args = preference.extras val fragment = fragmentFactory.instantiate( - classLoader, + this@SettingsFragment.javaClass.classLoader!!, preference.fragment.toString() ).apply { arguments = args @@ -124,24 +102,27 @@ class SettingsActivity : BaseActivity(), beginTransaction() .replace(R.id.settings, fragment) - .addToBackStack(null) + .addToBackStack(preference.key) .commit() - B.layoutToolbarAction.toolbar.title = preference.title + binding.layoutToolbarAction.toolbar.title = preference.title } return true } private fun askRestart() { - val builder = MaterialAlertDialogBuilder(this) + 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 - restartApp() + 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 7eff05b4b..6c3030049 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 @@ -50,7 +50,7 @@ class UIPreference : PreferenceFragmentCompat() { applyTheme(themeId, shouldApplyTransition = false) - SettingsActivity.shouldRestart = true + SettingsFragment.shouldRestart = true true } } @@ -68,7 +68,7 @@ class UIPreference : PreferenceFragmentCompat() { applyTheme(themeId, shouldApplyTransition = false) - SettingsActivity.shouldRestart = true + SettingsFragment.shouldRestart = true true } } diff --git a/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionActivity.kt b/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt similarity index 100% rename from app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt diff --git a/app/src/main/res/layout/activity_search_suggestion.xml b/app/src/main/res/layout/fragment_search_suggestion.xml similarity index 100% rename from app/src/main/res/layout/activity_search_suggestion.xml rename to app/src/main/res/layout/fragment_search_suggestion.xml diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/fragment_setting.xml similarity index 88% rename from app/src/main/res/layout/activity_setting.xml rename to app/src/main/res/layout/fragment_setting.xml index 4e8e84859..92f1719a5 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/fragment_setting.xml @@ -20,9 +20,11 @@ --> + android:orientation="vertical" + tools:context=".view.ui.preferences.SettingsFragment"> + \ No newline at end of file