11package de.christinecoenen.code.zapp.utils.system
22
3+ import android.widget.Toast
34import androidx.appcompat.app.AppCompatDelegate
45import androidx.core.os.LocaleListCompat
6+ import androidx.fragment.app.setFragmentResultListener
57import androidx.lifecycle.DefaultLifecycleObserver
68import androidx.lifecycle.LifecycleOwner
79import androidx.preference.ListPreference
@@ -11,14 +13,20 @@ import androidx.preference.PreferenceFragmentCompat
1113import androidx.preference.SwitchPreferenceCompat
1214import com.google.android.material.color.DynamicColors
1315import com.jakewharton.processphoenix.ProcessPhoenix
16+ import de.christinecoenen.code.zapp.R
17+ import de.christinecoenen.code.zapp.app.mediathek.ui.dialogs.ConfirmDeleteDownloadDialog
1418import de.christinecoenen.code.zapp.app.settings.helper.ShortcutPreference
1519import de.christinecoenen.code.zapp.app.settings.repository.SettingsRepository
20+ import de.christinecoenen.code.zapp.app.settings.ui.ConfirmResetPlaybackPositionsDialog
21+ import de.christinecoenen.code.zapp.repositories.MediathekRepository
22+ import de.christinecoenen.code.zapp.utils.system.LifecycleOwnerHelper.launchOnCreated
1623import java.util.Timer
1724import kotlin.concurrent.schedule
1825
1926class PreferenceFragmentHelper (
2027 private val preferenceFragment : PreferenceFragmentCompat ,
2128 private val settingsRepository : SettingsRepository ,
29+ private val mediathekRepository : MediathekRepository ,
2230) : DefaultLifecycleObserver {
2331
2432 companion object {
@@ -28,6 +36,7 @@ class PreferenceFragmentHelper(
2836 private const val PREF_UI_MODE = " pref_ui_mode"
2937 private const val PREF_LANGUAGE = " pref_key_language"
3038 private const val PREF_CHANNEL_SELECTION = " pref_key_channel_selection"
39+ private const val PREF_DELETE_STARTED_SHOWS = " pref_key_delete_started_shows"
3140
3241 }
3342
@@ -36,9 +45,30 @@ class PreferenceFragmentHelper(
3645 private var uiModePreference: ListPreference ? = null
3746 private var languagePreference: ListPreference ? = null
3847 private var channelSelectionPreference: Preference ? = null
48+ private var deleteStartedShowsPreference: Preference ? = null
3949
4050 private var channelSelectionClickListener: OnPreferenceClickListener ? = null
4151
52+ private var deleteStartedShowsClickListener: OnPreferenceClickListener ? =
53+ OnPreferenceClickListener {
54+ val dialog = ConfirmResetPlaybackPositionsDialog ()
55+
56+ preferenceFragment.setFragmentResultListener(ConfirmDeleteDownloadDialog .REQUEST_KEY_CONFIRMED ) { _, _ ->
57+ preferenceFragment.launchOnCreated {
58+ mediathekRepository.resetAllPlaybackPositions()
59+ Toast .makeText(
60+ preferenceFragment.requireContext(),
61+ R .string.pref_dialog_confirm_reset_playback_position_success_toast,
62+ Toast .LENGTH_SHORT
63+ ).show()
64+ }
65+ }
66+
67+ dialog.show(preferenceFragment.parentFragmentManager, null )
68+
69+ true
70+ }
71+
4272 private val dynamicColorChangeListener = Preference .OnPreferenceChangeListener { _, _ ->
4373 // Delay to wait for pereferences to be persisted (on very fast devices)
4474 // before killing the app - there is no listener that fires *after* persisting.
@@ -73,6 +103,7 @@ class PreferenceFragmentHelper(
73103 uiModePreference = preferenceScreen.findPreference(PREF_UI_MODE )
74104 languagePreference = preferenceScreen.findPreference(PREF_LANGUAGE )
75105 channelSelectionPreference = preferenceScreen.findPreference(PREF_CHANNEL_SELECTION )
106+ deleteStartedShowsPreference = preferenceScreen.findPreference(PREF_DELETE_STARTED_SHOWS )
76107
77108 languagePreference?.let {
78109 val languages =
@@ -102,6 +133,7 @@ class PreferenceFragmentHelper(
102133 uiModePreference?.onPreferenceChangeListener = uiModeChangeListener
103134 languagePreference?.onPreferenceChangeListener = languageChangeListener
104135 channelSelectionPreference?.onPreferenceClickListener = channelSelectionClickListener
136+ deleteStartedShowsPreference?.onPreferenceClickListener = deleteStartedShowsClickListener
105137 }
106138
107139 override fun onDestroy (owner : LifecycleOwner ) {
@@ -112,5 +144,6 @@ class PreferenceFragmentHelper(
112144 uiModePreference?.onPreferenceChangeListener = null
113145 languagePreference?.onPreferenceChangeListener = null
114146 channelSelectionPreference?.onPreferenceClickListener = null
147+ deleteStartedShowsPreference?.onPreferenceClickListener = null
115148 }
116149}
0 commit comments