add custom break reminder time

This commit is contained in:
Bnyro 2022-08-23 15:51:00 +02:00
parent 1f13c0a67f
commit 95b91e60d9
9 changed files with 75 additions and 30 deletions

View File

@ -162,11 +162,16 @@ class MainActivity : BaseActivity() {
* Show a break reminder when watched too long
*/
private fun setupBreakReminder() {
if (!PreferenceHelper.getBoolean(
PreferenceKeys.BREAK_REMINDER_TOGGLE,
false
)
) return
val breakReminderPref = PreferenceHelper.getString(
PreferenceKeys.BREAK_REMINDER,
"disabled"
"0"
)
if (breakReminderPref == "disabled") return
if (!breakReminderPref.all { Character.isDigit(it) }) return
Handler(Looper.getMainLooper()).postDelayed(
{
try {

View File

@ -1,6 +1,7 @@
package com.github.libretube.preferences
import android.os.Bundle
import androidx.preference.EditTextPreference
import androidx.preference.ListPreference
import androidx.preference.SwitchPreferenceCompat
import com.github.libretube.R
@ -37,10 +38,15 @@ class GeneralSettings : MaterialPreferenceFragment() {
true
}
val breakReminder = findPreference<ListPreference>(PreferenceKeys.BREAK_REMINDER)
breakReminder?.setOnPreferenceChangeListener { _, _ ->
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, RequireRestartDialog::class.java.name)
val breakReminder = findPreference<SwitchPreferenceCompat>(PreferenceKeys.BREAK_REMINDER_TOGGLE)
val breakReminderTime = findPreference<EditTextPreference>(PreferenceKeys.BREAK_REMINDER)
breakReminderTime?.isEnabled = PreferenceHelper.getBoolean(
PreferenceKeys.BREAK_REMINDER_TOGGLE,
false
)
breakReminder?.setOnPreferenceChangeListener { _, newValue ->
breakReminderTime?.isEnabled = newValue as Boolean
true
}
}

View File

@ -31,6 +31,10 @@ object PreferenceHelper {
authEditor = authSettings.edit()
}
fun putString(key: String?, value: String) {
editor.putString(key, value)
}
fun getString(key: String?, defValue: String?): String {
return settings.getString(key, defValue)!!
}

View File

@ -17,6 +17,7 @@ object PreferenceKeys {
const val LANGUAGE = "language"
const val REGION = "region"
const val AUTO_ROTATION = "auto_rotation"
const val BREAK_REMINDER_TOGGLE = "break_reminder_toggle"
const val BREAK_REMINDER = "break_reminder"
/**
@ -92,7 +93,7 @@ object PreferenceKeys {
* Advanced
*/
const val DATA_SAVER_MODE = "data_saver_mode"
const val MAX_IMAGE_CACHE = ""
const val MAX_IMAGE_CACHE = "image_cache_size"
const val RESET_SETTINGS = "reset_settings"
const val CLEAR_SEARCH_HISTORY = "clear_search_history"
const val CLEAR_WATCH_HISTORY = "clear_watch_history"

View File

@ -1,10 +1,15 @@
package com.github.libretube.views
import android.os.Bundle
import android.util.Log
import androidx.preference.EditTextPreference
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import com.github.libretube.R
import com.github.libretube.databinding.DialogTextPreferenceBinding
import com.github.libretube.extensions.TAG
import com.github.libretube.preferences.PreferenceHelper
import com.google.android.material.dialog.MaterialAlertDialogBuilder
/**
@ -38,6 +43,24 @@ open class MaterialPreferenceFragment : PreferenceFragmentCompat() {
.setNegativeButton(R.string.cancel, null)
.show()
}
is EditTextPreference -> {
val binding = DialogTextPreferenceBinding.inflate(layoutInflater)
binding.input.setText(
PreferenceHelper.getString(
preference.key,
""
)
)
MaterialAlertDialogBuilder(requireContext())
.setTitle(preference.title)
.setView(binding.root)
.setPositiveButton(R.string.okay) { _, _ ->
// save the new value
preference.text = binding.input.text.toString()
}
.setNegativeButton(R.string.cancel, null)
.show()
}
/**
* Otherwise show the normal dialog, dialogs for other preference types are not supported yet
*/

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/inputLayout"
style="@style/CustomDialogTextInputLayout"
android:layout_marginTop="10dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>

View File

@ -828,24 +828,6 @@
<item>unlimited</item>
</string-array>
<string-array name="breakReminder">
<item>@string/disabled</item>
<item>15 min</item>
<item>30 min</item>
<item>60 min</item>
<item>90 min</item>
<item>120 min</item>
</string-array>
<string-array name="breakReminderValues">
<item>disabled</item>
<item>15</item>
<item>30</item>
<item>60</item>
<item>90</item>
<item>120</item>
</string-array>
<string-array name="resizeMode">
<item>@string/resize_mode_fit</item>
<item>@string/resize_mode_zoom</item>

View File

@ -310,4 +310,5 @@
<string name="maximum_image_cache">Max image cache size</string>
<string name="copied_to_clipboard">Copied to clipboard</string>
<string name="open_copied">Open</string>
<string name="break_reminder_time">Minutes before being reminded</string>
</resources>

View File

@ -63,13 +63,18 @@
<PreferenceCategory app:title="@string/misc">
<ListPreference
<SwitchPreferenceCompat
android:defaultValue="false"
android:icon="@drawable/ic_notification"
app:key="break_reminder_toggle"
app:title="@string/break_reminder" />
<EditTextPreference
android:enabled="false"
android:icon="@drawable/ic_time"
app:defaultValue="disabled"
app:entries="@array/breakReminder"
app:entryValues="@array/breakReminderValues"
app:defaultValue="60"
app:key="break_reminder"
app:title="@string/break_reminder"
app:title="@string/break_reminder_time"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>