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:
parent
b7fa500f7b
commit
8c84ef6cbb
@ -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) {
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user