From a71e2dd28956b3ea1e714f8a1bbb64096e285438 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 17 May 2024 10:31:15 +0300 Subject: [PATCH] Update settings ui and fix crash --- .../koitharu/kotatsu/core/ui/BaseActivity.kt | 3 +- .../kotatsu/settings/SettingsActivity.kt | 39 +++---------------- app/src/main/res/layout/activity_settings.xml | 18 ++------- app/src/main/res/values/constants.xml | 1 + 4 files changed, 12 insertions(+), 49 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt index 5f44be8d6..3ebd55d8d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt @@ -92,8 +92,7 @@ abstract class BaseActivity : } override fun onSupportNavigateUp(): Boolean { - if (supportFragmentManager.backStackEntryCount > 0) { - supportFragmentManager.popBackStack() + if (supportFragmentManager.popBackStackImmediate()) { return false } dispatchNavigateUp() diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt index 7848a1a71..7a1f07c9f 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt @@ -11,7 +11,6 @@ import androidx.core.graphics.Insets import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.commit import androidx.preference.Preference @@ -21,9 +20,7 @@ import dagger.hilt.android.AndroidEntryPoint import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.ui.BaseActivity -import org.koitharu.kotatsu.core.ui.util.RecyclerViewOwner import org.koitharu.kotatsu.core.util.ext.getSerializableExtraCompat -import org.koitharu.kotatsu.core.util.ext.isScrolledToTop import org.koitharu.kotatsu.core.util.ext.textAndVisible import org.koitharu.kotatsu.databinding.ActivitySettingsBinding import org.koitharu.kotatsu.main.ui.owners.AppBarOwner @@ -39,17 +36,18 @@ import org.koitharu.kotatsu.settings.userdata.UserDataSettingsFragment class SettingsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, - AppBarOwner, - FragmentManager.OnBackStackChangedListener { + AppBarOwner { override val appBar: AppBarLayout get() = viewBinding.appbar + private val isMasterDetails + get() = viewBinding.containerMaster != null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(ActivitySettingsBinding.inflate(layoutInflater)) supportActionBar?.setDisplayHomeAsUpEnabled(true) - val isMasterDetails = viewBinding.containerMaster != null val fm = supportFragmentManager val currentFragment = fm.findFragmentById(R.id.container) if (currentFragment == null || (isMasterDetails && currentFragment is RootSettingsFragment)) { @@ -63,21 +61,6 @@ class SettingsActivity : } } - override fun onTitleChanged(title: CharSequence?, color: Int) { - super.onTitleChanged(title, color) - viewBinding.collapsingToolbarLayout?.title = title - } - - override fun onStart() { - super.onStart() - supportFragmentManager.addOnBackStackChangedListener(this) - } - - override fun onStop() { - supportFragmentManager.removeOnBackStackChangedListener(this) - super.onStop() - } - override fun onCreateOptionsMenu(menu: Menu): Boolean { super.onCreateOptionsMenu(menu) menuInflater.inflate(R.menu.opt_settings, menu) @@ -110,14 +93,6 @@ class SettingsActivity : else -> super.onOptionsItemSelected(item) } - override fun onBackStackChanged() { - val fragment = supportFragmentManager.findFragmentById(R.id.container) as? RecyclerViewOwner ?: return - val recyclerView = fragment.recyclerView - recyclerView.post { - viewBinding.appbar.setExpanded(recyclerView.isScrolledToTop, false) - } - } - override fun onPreferenceStartFragment( caller: PreferenceFragmentCompat, pref: Preference, @@ -147,19 +122,17 @@ class SettingsActivity : fun openFragment(fragment: Fragment, isFromRoot: Boolean) { val hasFragment = supportFragmentManager.findFragmentById(R.id.container) != null - val isMasterDetail = viewBinding.containerMaster != null supportFragmentManager.commit { setReorderingAllowed(true) replace(R.id.container, fragment) setTransition(FragmentTransaction.TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN) - if (!isMasterDetail || (hasFragment && !isFromRoot)) { + if (!isMasterDetails || (hasFragment && !isFromRoot)) { addToBackStack(null) } } } private fun openDefaultFragment() { - val hasMaster = viewBinding.containerMaster != null val fragment = when (intent?.action) { ACTION_READER -> ReaderSettingsFragment() ACTION_SUGGESTIONS -> SuggestionsSettingsFragment() @@ -181,7 +154,7 @@ class SettingsActivity : } else -> null - } ?: if (hasMaster) AppearanceSettingsFragment() else RootSettingsFragment() + } ?: if (isMasterDetails) AppearanceSettingsFragment() else RootSettingsFragment() supportFragmentManager.commit { setReorderingAllowed(true) replace(R.id.container, fragment) diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 459c2008f..b8698c566 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -11,21 +11,11 @@ android:layout_height="wrap_content" android:fitsSystemWindows="true"> - - - - - + android:layout_height="?attr/actionBarSize" + app:layout_collapseMode="pin" /> diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index 472185d7f..7ef06238f 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -42,6 +42,7 @@ @string/sync_host_default + moe.shirizu.org 86.57.183.214:8081