0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 12:02:16 +02:00

Move dev options visibility configuration to the Preferences activity

Ideally, one fragment should call other fragments by the common parent activity, not directly.

This reduces the code duplication and organizes better the classes' responsibilities.
This commit is contained in:
Brayan Oliveira 2022-08-12 14:59:01 -03:00 committed by lukstbit
parent b7fa500f7b
commit 8c84ef6cbb
3 changed files with 20 additions and 23 deletions

View File

@ -28,6 +28,7 @@ import android.view.MenuItem
import androidx.annotation.VisibleForTesting
import androidx.annotation.XmlRes
import androidx.appcompat.app.ActionBar
import androidx.core.content.edit
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.commit
@ -227,6 +228,21 @@ class Preferences : AnkiActivity(), SearchPreferenceResultListener {
// Class methods
// ----------------------------------------------------------------------------
/**
* Enables and sets the visibility of the "Developer options" header on [HeaderFragment]
*/
fun setDevOptionsEnabled(isEnabled: Boolean) {
// Update the "devOptionsEnabledByUser" pref value
AnkiDroidApp.getSharedPrefs(this).edit {
putBoolean(getString(R.string.dev_options_enabled_by_user_key), isEnabled)
}
// Show/hide the header
val headerFragment = supportFragmentManager.findFragmentByTag(HeaderFragment::class.java.name)
if (headerFragment is HeaderFragment) {
headerFragment.setDevOptionsVisibility(isEnabled)
}
}
/** Sets the hour that the collection rolls over to the next day */
@VisibleForTesting
fun setDayOffset(hours: Int) {

View File

@ -30,7 +30,6 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.core.text.parseAsHtml
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import com.afollestad.materialdialogs.MaterialDialog
import com.ichi2.anki.*
import com.ichi2.anki.servicelayer.DebugInfoService
@ -51,7 +50,7 @@ class AboutFragment : Fragment() {
// Logo secret
layoutView.findViewById<ImageView>(R.id.about_app_logo)
.setOnClickListener(DevOptionsSecretClickListener(parentFragmentManager))
.setOnClickListener(DevOptionsSecretClickListener(requireActivity() as Preferences))
// Contributors text
val contributorsLink = getString(R.string.link_contributors)
@ -116,7 +115,7 @@ class AboutFragment : Fragment() {
* Click listener which enables developer options on release builds
* if the user clicks it a minimum number of times
*/
private class DevOptionsSecretClickListener(val fragmentManager: FragmentManager) : View.OnClickListener {
private class DevOptionsSecretClickListener(val preferencesActivity: Preferences) : View.OnClickListener {
private var clickCount = 0
private val clickLimit = 6
@ -150,16 +149,9 @@ class AboutFragment : Fragment() {
* Enables developer options for the user and shows it on [HeaderFragment]
*/
fun enableDevOptions(context: Context) {
DevOptionsFragment.setDevOptionsEnabledByUser(context, true)
val message = context.getString(R.string.dev_options_enabled_msg)
UIUtils.showThemedToast(context, message, true)
// Make developer options visible on headers fragment if it is open
val headersFragment = fragmentManager.findFragmentByTag(HeaderFragment::class.java.name)
if (headersFragment is HeaderFragment) {
headersFragment.setDevOptionsVisibility(true)
}
preferencesActivity.setDevOptionsEnabled(true)
}
}
}

View File

@ -16,7 +16,6 @@
package com.ichi2.anki.preferences
import android.content.Context
import androidx.core.content.edit
import androidx.preference.Preference
import androidx.preference.SwitchPreference
import com.afollestad.materialdialogs.MaterialDialog
@ -105,12 +104,8 @@ class DevOptionsFragment : SettingsFragment() {
* Destroys the fragment and hides developer options on [HeaderFragment]
*/
private fun disableDevOptions() {
val fragment = parentFragmentManager.findFragmentByTag(HeaderFragment::class.java.name)
if (fragment is HeaderFragment) {
fragment.setDevOptionsVisibility(false)
}
(requireActivity() as Preferences).setDevOptionsEnabled(false)
parentFragmentManager.popBackStack()
setDevOptionsEnabledByUser(requireContext(), false)
}
companion object {
@ -123,11 +118,5 @@ class DevOptionsFragment : SettingsFragment() {
return BuildConfig.DEBUG || AnkiDroidApp.getSharedPrefs(context)
.getBoolean(context.getString(R.string.dev_options_enabled_by_user_key), false)
}
fun setDevOptionsEnabledByUser(context: Context, isEnabled: Boolean) {
AnkiDroidApp.getSharedPrefs(context).edit {
putBoolean(context.getString(R.string.dev_options_enabled_by_user_key), isEnabled)
}
}
}
}