From adf55dc04bb6f32772876850fae23b17405e5c00 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 18:24:39 +0530 Subject: [PATCH 01/12] stop using custom layout in preferences --- app/src/main/res/xml/settings_preferences.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index 2672c00a1..864168de1 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -33,7 +33,6 @@ android:entries="@array/update_interval_names" android:entryValues="@array/update_interval_values" android:key="@string/update_check_intervals" - android:layout="@layout/layout_custom_checkbox_preference" android:summary="%s" android:title="@string/preference_update_interval_title" app:iconSpaceReserved="false" /> @@ -41,7 +40,6 @@ @@ -49,7 +47,6 @@ @@ -57,7 +54,6 @@ @@ -70,7 +66,6 @@ @@ -78,7 +73,6 @@ @@ -86,7 +80,6 @@ -- GitLab From 270bb2a545502946a2e5da689f09b8361f5256ed Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 18:25:25 +0530 Subject: [PATCH 02/12] delete custom layout file --- .../layout_custom_checkbox_preference.xml | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 app/src/main/res/layout/layout_custom_checkbox_preference.xml diff --git a/app/src/main/res/layout/layout_custom_checkbox_preference.xml b/app/src/main/res/layout/layout_custom_checkbox_preference.xml deleted file mode 100644 index 257ccf860..000000000 --- a/app/src/main/res/layout/layout_custom_checkbox_preference.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file -- GitLab From 3bee4f3f913558157882ade8416caba39f9c3d1e Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 18:28:21 +0530 Subject: [PATCH 03/12] add singleLineTitle="false" in all items --- app/src/main/res/xml/settings_preferences.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index 864168de1..c69f967b4 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -35,6 +35,7 @@ android:key="@string/update_check_intervals" android:summary="%s" android:title="@string/preference_update_interval_title" + app:singleLineTitle="false" app:iconSpaceReserved="false" /> @@ -93,6 +97,7 @@ -- GitLab From 0011a0ac2123fdb161300cead6dfc83113215046 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 19:36:28 +0530 Subject: [PATCH 04/12] add dependency on xml --- app/src/main/res/xml/settings_preferences.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index c69f967b4..b8420cafc 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -59,6 +59,7 @@ android:key="@string/only_unmetered_network" android:summary="@string/preference_update_wifi_only_description" android:title="@string/preference_update_wifi_only_title" + app:dependency="@string/auto_install_enabled" app:singleLineTitle="false" app:iconSpaceReserved="false" /> -- GitLab From 4e6152d3ad19ddf7aa5758fe163c2ab397723fe9 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 20:04:05 +0530 Subject: [PATCH 05/12] uncheck "unmetered network" if auto update is turned off --- .../foundation/e/apps/settings/SettingsFragment.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 2642d20f3..10b536972 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -29,6 +29,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.findNavController import androidx.preference.CheckBoxPreference import androidx.preference.Preference +import androidx.preference.Preference.OnPreferenceChangeListener import androidx.preference.PreferenceFragmentCompat import androidx.work.ExistingPeriodicWorkPolicy import coil.load @@ -160,6 +161,17 @@ class SettingsFragment : PreferenceFragmentCompat() { super.onViewCreated(view, savedInstanceState) + val autoInstallUpdate = findPreference(getString(R.string.auto_install_enabled)) + val onlyUnmeteredNetwork = findPreference(getString(R.string.only_unmetered_network)) + + autoInstallUpdate?.onPreferenceChangeListener = + OnPreferenceChangeListener { preference, newValue -> + if (newValue == false) { + onlyUnmeteredNetwork?.isChecked = false + } + true + } + mainActivityViewModel.gPlayAuthData.let { authData -> mainActivityViewModel.getUser().name.let { user -> when (user) { -- GitLab From 33e057a0d5d4116f49d806c1fdfd00a98a0fc356 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 20:23:31 +0530 Subject: [PATCH 06/12] disableDependentCheckboxOnStart --- .../e/apps/settings/SettingsFragment.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 10b536972..f5f58fb12 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -172,6 +172,9 @@ class SettingsFragment : PreferenceFragmentCompat() { true } + // This is useful if an user from older App Lounge updates to this version + disableDependentCheckboxOnStart(onlyUnmeteredNetwork, autoInstallUpdate) + mainActivityViewModel.gPlayAuthData.let { authData -> mainActivityViewModel.getUser().name.let { user -> when (user) { @@ -250,6 +253,18 @@ class SettingsFragment : PreferenceFragmentCompat() { } } + private fun disableDependentCheckboxOnStart( + checkBox: CheckBoxPreference?, + parentCheckBox: CheckBoxPreference? + ) { + checkBox?.apply { + if (parentCheckBox?.isChecked == false) { + this.isChecked = false + this.isEnabled = false + } + } + } + override fun onDestroyView() { if (sourcesChangedFlag) { UpdatesDao.addItemsForUpdate(emptyList()) -- GitLab From e10aa5ebfb880d571d9b1c5520a4d0c1d1f06c09 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Wed, 15 Mar 2023 21:38:40 +0530 Subject: [PATCH 07/12] move dependency code to a function --- .../e/apps/settings/SettingsFragment.kt | 24 +++++++++++++------ app/src/main/res/xml/settings_preferences.xml | 1 - 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index f5f58fb12..034571be8 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -164,13 +164,7 @@ class SettingsFragment : PreferenceFragmentCompat() { val autoInstallUpdate = findPreference(getString(R.string.auto_install_enabled)) val onlyUnmeteredNetwork = findPreference(getString(R.string.only_unmetered_network)) - autoInstallUpdate?.onPreferenceChangeListener = - OnPreferenceChangeListener { preference, newValue -> - if (newValue == false) { - onlyUnmeteredNetwork?.isChecked = false - } - true - } + setCheckboxDependency(onlyUnmeteredNetwork, autoInstallUpdate) // This is useful if an user from older App Lounge updates to this version disableDependentCheckboxOnStart(onlyUnmeteredNetwork, autoInstallUpdate) @@ -265,6 +259,22 @@ class SettingsFragment : PreferenceFragmentCompat() { } } + private fun setCheckboxDependency( + checkBox: CheckBoxPreference?, + parentCheckBox: CheckBoxPreference?, + parentCheckBoxPreferenceChangeListener: OnPreferenceChangeListener? = null, + ) { + checkBox?.dependency = parentCheckBox?.key + parentCheckBox?.onPreferenceChangeListener = + OnPreferenceChangeListener { preference, newValue -> + if (newValue == false) { + checkBox?.isChecked = false + } + parentCheckBoxPreferenceChangeListener?.onPreferenceChange(preference, newValue) + ?: true + } + } + override fun onDestroyView() { if (sourcesChangedFlag) { UpdatesDao.addItemsForUpdate(emptyList()) diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index b8420cafc..c69f967b4 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -59,7 +59,6 @@ android:key="@string/only_unmetered_network" android:summary="@string/preference_update_wifi_only_description" android:title="@string/preference_update_wifi_only_title" - app:dependency="@string/auto_install_enabled" app:singleLineTitle="false" app:iconSpaceReserved="false" /> -- GitLab From 15e72decae8e034961f6f47bd51b532414f47fbf Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 17 Mar 2023 13:48:05 +0000 Subject: [PATCH 08/12] grammatical mistake correction --- .../main/java/foundation/e/apps/settings/SettingsFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 034571be8..0c63e0cad 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -166,7 +166,7 @@ class SettingsFragment : PreferenceFragmentCompat() { setCheckboxDependency(onlyUnmeteredNetwork, autoInstallUpdate) - // This is useful if an user from older App Lounge updates to this version + // This is useful if a user from older App Lounge updates to this version disableDependentCheckboxOnStart(onlyUnmeteredNetwork, autoInstallUpdate) mainActivityViewModel.gPlayAuthData.let { authData -> -- GitLab From 3e93a7abb1591268971742e236b5de44ad2720c4 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 20 Mar 2023 15:04:26 +0530 Subject: [PATCH 09/12] rename disableDependentCheckboxOnStart() -> disableDependentCheckbox() --- .../main/java/foundation/e/apps/settings/SettingsFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 0c63e0cad..f31e53831 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -167,7 +167,7 @@ class SettingsFragment : PreferenceFragmentCompat() { setCheckboxDependency(onlyUnmeteredNetwork, autoInstallUpdate) // This is useful if a user from older App Lounge updates to this version - disableDependentCheckboxOnStart(onlyUnmeteredNetwork, autoInstallUpdate) + disableDependentCheckbox(onlyUnmeteredNetwork, autoInstallUpdate) mainActivityViewModel.gPlayAuthData.let { authData -> mainActivityViewModel.getUser().name.let { user -> @@ -247,7 +247,7 @@ class SettingsFragment : PreferenceFragmentCompat() { } } - private fun disableDependentCheckboxOnStart( + private fun disableDependentCheckbox( checkBox: CheckBoxPreference?, parentCheckBox: CheckBoxPreference? ) { -- GitLab From a40f1e308109156af847d618b806364f47ba789d Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 20 Mar 2023 15:25:53 +0530 Subject: [PATCH 10/12] fetchPreference() --- .../java/foundation/e/apps/settings/SettingsFragment.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index f31e53831..89c4856c9 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -161,8 +161,8 @@ class SettingsFragment : PreferenceFragmentCompat() { super.onViewCreated(view, savedInstanceState) - val autoInstallUpdate = findPreference(getString(R.string.auto_install_enabled)) - val onlyUnmeteredNetwork = findPreference(getString(R.string.only_unmetered_network)) + val autoInstallUpdate = fetchPreference(getString(R.string.auto_install_enabled)) + val onlyUnmeteredNetwork = fetchPreference(getString(R.string.only_unmetered_network)) setCheckboxDependency(onlyUnmeteredNetwork, autoInstallUpdate) @@ -235,6 +235,10 @@ class SettingsFragment : PreferenceFragmentCompat() { } } + private fun fetchPreference(key: String): T? { + return findPreference(key) + } + fun isAnyAppSourceSelected() = showAllApplications?.isChecked == true || showFOSSApplications?.isChecked == true || showPWAApplications?.isChecked == true -- GitLab From e0fcc77e51155da96fced3da2e59b2ee16003ad0 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 20 Mar 2023 15:43:14 +0530 Subject: [PATCH 11/12] fetchCheckboxPreference() --- .../java/foundation/e/apps/settings/SettingsFragment.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 89c4856c9..51664518e 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -161,8 +161,8 @@ class SettingsFragment : PreferenceFragmentCompat() { super.onViewCreated(view, savedInstanceState) - val autoInstallUpdate = fetchPreference(getString(R.string.auto_install_enabled)) - val onlyUnmeteredNetwork = fetchPreference(getString(R.string.only_unmetered_network)) + val autoInstallUpdate = fetchCheckboxPreference(getString(R.string.auto_install_enabled)) + val onlyUnmeteredNetwork = fetchCheckboxPreference(getString(R.string.only_unmetered_network)) setCheckboxDependency(onlyUnmeteredNetwork, autoInstallUpdate) @@ -235,7 +235,7 @@ class SettingsFragment : PreferenceFragmentCompat() { } } - private fun fetchPreference(key: String): T? { + private fun fetchCheckboxPreference(key: String): CheckBoxPreference? { return findPreference(key) } -- GitLab From e0a165ecb75b144090d3f2c3f1feb093bd5dd2fd Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 20 Mar 2023 15:45:45 +0530 Subject: [PATCH 12/12] use int id in fetchCheckboxPreference --- .../java/foundation/e/apps/settings/SettingsFragment.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 51664518e..3fead6e10 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -161,8 +161,8 @@ class SettingsFragment : PreferenceFragmentCompat() { super.onViewCreated(view, savedInstanceState) - val autoInstallUpdate = fetchCheckboxPreference(getString(R.string.auto_install_enabled)) - val onlyUnmeteredNetwork = fetchCheckboxPreference(getString(R.string.only_unmetered_network)) + val autoInstallUpdate = fetchCheckboxPreference(R.string.auto_install_enabled) + val onlyUnmeteredNetwork = fetchCheckboxPreference(R.string.only_unmetered_network) setCheckboxDependency(onlyUnmeteredNetwork, autoInstallUpdate) @@ -235,8 +235,8 @@ class SettingsFragment : PreferenceFragmentCompat() { } } - private fun fetchCheckboxPreference(key: String): CheckBoxPreference? { - return findPreference(key) + private fun fetchCheckboxPreference(id: Int): CheckBoxPreference? { + return findPreference(getString(id)) } fun isAnyAppSourceSelected() = -- GitLab