DO NOT MERGE: Migrate SettingsActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -155,7 +155,6 @@
|
|||||||
<activity android:name=".view.ui.account.GoogleActivity" />
|
<activity android:name=".view.ui.account.GoogleActivity" />
|
||||||
<activity android:name=".view.ui.details.DetailsExodusActivity" />
|
<activity android:name=".view.ui.details.DetailsExodusActivity" />
|
||||||
<activity android:name=".view.ui.details.DevAppsActivity" />
|
<activity android:name=".view.ui.details.DevAppsActivity" />
|
||||||
<activity android:name=".view.ui.preferences.SettingsActivity" />
|
|
||||||
<activity android:name=".view.ui.commons.ExpandedStreamBrowseActivity" />
|
<activity android:name=".view.ui.commons.ExpandedStreamBrowseActivity" />
|
||||||
<activity android:name=".view.ui.commons.EditorStreamBrowseActivity" />
|
<activity android:name=".view.ui.commons.EditorStreamBrowseActivity" />
|
||||||
|
|
||||||
|
|||||||
@@ -53,10 +53,8 @@ import com.aurora.store.databinding.ActivityMainBinding
|
|||||||
import com.aurora.store.util.CertUtil.isFDroidApp
|
import com.aurora.store.util.CertUtil.isFDroidApp
|
||||||
import com.aurora.store.util.Log
|
import com.aurora.store.util.Log
|
||||||
import com.aurora.store.util.Preferences
|
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.commons.BaseActivity
|
||||||
import com.aurora.store.view.ui.downloads.DownloadActivity
|
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.search.SearchSuggestionActivity
|
||||||
import com.aurora.store.view.ui.sheets.SelfUpdateSheet
|
import com.aurora.store.view.ui.sheets.SelfUpdateSheet
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
@@ -263,7 +261,8 @@ class MainActivity : BaseActivity() {
|
|||||||
B.drawerLayout.close()
|
B.drawerLayout.close()
|
||||||
}
|
}
|
||||||
R.id.menu_settings -> {
|
R.id.menu_settings -> {
|
||||||
open(SettingsActivity::class.java)
|
navController.navigate(R.id.settingsFragment)
|
||||||
|
B.drawerLayout.close()
|
||||||
}
|
}
|
||||||
R.id.menu_about -> {
|
R.id.menu_about -> {
|
||||||
navController.navigate(R.id.aboutFragment)
|
navController.navigate(R.id.aboutFragment)
|
||||||
|
|||||||
@@ -19,103 +19,81 @@
|
|||||||
|
|
||||||
package com.aurora.store.view.ui.preferences
|
package com.aurora.store.view.ui.preferences
|
||||||
|
|
||||||
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
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.Preference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
|
import com.aurora.extensions.getStyledAttributeColor
|
||||||
import com.aurora.extensions.restartApp
|
import com.aurora.extensions.restartApp
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.ActivitySettingBinding
|
import com.aurora.store.databinding.FragmentSettingBinding
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class SettingsActivity : BaseActivity(),
|
class SettingsFragment : Fragment(R.layout.fragment_setting),
|
||||||
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
|
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
|
||||||
|
|
||||||
private lateinit var B: ActivitySettingBinding
|
private var _binding: FragmentSettingBinding? = null
|
||||||
|
private val binding: FragmentSettingBinding
|
||||||
|
get() = _binding!!
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
var shouldRestart = false
|
var shouldRestart = false
|
||||||
const val titleTag = "titleTag"
|
const val titleTag = "titleTag"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onConnected() {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
}
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
override fun onDisconnected() {
|
_binding = FragmentSettingBinding.bind(view)
|
||||||
}
|
|
||||||
|
|
||||||
override fun onReconnected() {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
|
|
||||||
B = ActivitySettingBinding.inflate(layoutInflater)
|
|
||||||
setContentView(B.root)
|
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
supportFragmentManager
|
childFragmentManager
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
.replace(R.id.settings, MainPreference())
|
.replace(R.id.settings, MainPreference())
|
||||||
.commit()
|
.commit()
|
||||||
} else {
|
} else {
|
||||||
title = savedInstanceState.getCharSequence(titleTag)
|
binding.layoutToolbarAction.toolbar.title = savedInstanceState.getCharSequence(titleTag)
|
||||||
}
|
}
|
||||||
|
|
||||||
supportFragmentManager.addOnBackStackChangedListener {
|
childFragmentManager.addOnBackStackChangedListener {
|
||||||
if (supportFragmentManager.backStackEntryCount == 0) {
|
if (childFragmentManager.backStackEntryCount == 0) {
|
||||||
B.layoutToolbarAction.toolbar.setTitle(R.string.title_settings)
|
binding.layoutToolbarAction.toolbar.title = getString(R.string.title_settings)
|
||||||
if (shouldRestart)
|
if (shouldRestart) askRestart()
|
||||||
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 {
|
override fun onDestroyView() {
|
||||||
when (item.itemId) {
|
super.onDestroyView()
|
||||||
android.R.id.home -> {
|
_binding = null
|
||||||
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 onSaveInstanceState(outState: Bundle) {
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
super.onSaveInstanceState(outState)
|
super.onSaveInstanceState(outState)
|
||||||
outState.putCharSequence(titleTag, title)
|
outState.putCharSequence(titleTag, binding.layoutToolbarAction.toolbar.title)
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSupportNavigateUp(): Boolean {
|
|
||||||
if (supportFragmentManager.popBackStackImmediate()) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return super.onSupportNavigateUp()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPreferenceStartFragment(
|
override fun onPreferenceStartFragment(
|
||||||
caller: PreferenceFragmentCompat,
|
caller: PreferenceFragmentCompat,
|
||||||
preference: Preference
|
preference: Preference
|
||||||
): Boolean {
|
): Boolean {
|
||||||
with(supportFragmentManager) {
|
with(childFragmentManager) {
|
||||||
val args = preference.extras
|
val args = preference.extras
|
||||||
|
|
||||||
val fragment = fragmentFactory.instantiate(
|
val fragment = fragmentFactory.instantiate(
|
||||||
classLoader,
|
this@SettingsFragment.javaClass.classLoader!!,
|
||||||
preference.fragment.toString()
|
preference.fragment.toString()
|
||||||
).apply {
|
).apply {
|
||||||
arguments = args
|
arguments = args
|
||||||
@@ -124,24 +102,27 @@ class SettingsActivity : BaseActivity(),
|
|||||||
|
|
||||||
beginTransaction()
|
beginTransaction()
|
||||||
.replace(R.id.settings, fragment)
|
.replace(R.id.settings, fragment)
|
||||||
.addToBackStack(null)
|
.addToBackStack(preference.key)
|
||||||
.commit()
|
.commit()
|
||||||
|
|
||||||
B.layoutToolbarAction.toolbar.title = preference.title
|
binding.layoutToolbarAction.toolbar.title = preference.title
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun askRestart() {
|
private fun askRestart() {
|
||||||
val builder = MaterialAlertDialogBuilder(this)
|
val builder = MaterialAlertDialogBuilder(requireContext())
|
||||||
.setTitle(getString(R.string.action_restart))
|
.setTitle(getString(R.string.action_restart))
|
||||||
.setMessage(getString(R.string.pref_dialog_to_apply_restart))
|
.setMessage(getString(R.string.pref_dialog_to_apply_restart))
|
||||||
.setPositiveButton(getString(R.string.action_restart)) { _, _ ->
|
.setPositiveButton(getString(R.string.action_restart)) { _, _ ->
|
||||||
shouldRestart = false
|
shouldRestart = false
|
||||||
restartApp()
|
requireContext().restartApp()
|
||||||
}
|
}
|
||||||
.setNegativeButton(getString(R.string.action_later)) { dialog, _ -> dialog.dismiss() }
|
.setNegativeButton(getString(R.string.action_later)) { dialog, _ -> dialog.dismiss() }
|
||||||
|
val backGroundColor =
|
||||||
|
requireContext().getStyledAttributeColor(android.R.attr.colorBackground)
|
||||||
|
builder.background = ColorDrawable(backGroundColor)
|
||||||
builder.create()
|
builder.create()
|
||||||
builder.show()
|
builder.show()
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ class UIPreference : PreferenceFragmentCompat() {
|
|||||||
|
|
||||||
applyTheme(themeId, shouldApplyTransition = false)
|
applyTheme(themeId, shouldApplyTransition = false)
|
||||||
|
|
||||||
SettingsActivity.shouldRestart = true
|
SettingsFragment.shouldRestart = true
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ class UIPreference : PreferenceFragmentCompat() {
|
|||||||
|
|
||||||
applyTheme(themeId, shouldApplyTransition = false)
|
applyTheme(themeId, shouldApplyTransition = false)
|
||||||
|
|
||||||
SettingsActivity.shouldRestart = true
|
SettingsFragment.shouldRestart = true
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,11 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
tools:context=".view.ui.preferences.SettingsFragment">
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/layout_toolbar_action"
|
android:id="@+id/layout_toolbar_action"
|
||||||
@@ -70,4 +70,9 @@
|
|||||||
android:name="com.aurora.store.view.ui.account.AccountFragment"
|
android:name="com.aurora.store.view.ui.account.AccountFragment"
|
||||||
android:label="@string/title_account_manager"
|
android:label="@string/title_account_manager"
|
||||||
tools:layout="@layout/fragment_account" />
|
tools:layout="@layout/fragment_account" />
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/settingsFragment"
|
||||||
|
android:name="com.aurora.store.view.ui.preferences.SettingsFragment"
|
||||||
|
android:label="@string/title_settings"
|
||||||
|
tools:layout="@layout/fragment_setting" />
|
||||||
</navigation>
|
</navigation>
|
||||||
Reference in New Issue
Block a user