Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
import org.json.JSONObject
import java.util.Date

class AnkiquestSettingsFragment : SettingsFragment() {
open class AnkiquestSettingsFragment : SettingsFragment() {
override val preferenceResource = R.xml.preferences_ankiquest
override val analyticsScreenNameConstant = "prefs.ankiquest"

Expand Down Expand Up @@ -75,37 +75,14 @@ class AnkiquestSettingsFragment : SettingsFragment() {

override fun initSubscreen() {
refreshServerSettings.clear()
bindDashboard(R.string.ankiquest_dashboard_key)
}

protected fun bindAccount() {
requirePreference<VersatileTextPreference>(R.string.ankiquest_url_key).continuousValidator =
VersatileTextPreference.Validator { value ->
if (value.isNotEmpty()) value.toHttpUrl()
}
requirePreference<SwitchPreferenceCompat>(R.string.ankiquest_notify_rank_key).setOnPreferenceChangeListener { _, enabled ->
if (enabled == true) askForNotifications()
true
}
requirePreference<ListPreference>(R.string.ankiquest_streak_hours_key).setOnPreferenceChangeListener { _, hours ->
if (hours != "0") askForNotifications()
true
}
bindServerToggle(
R.string.ankiquest_nudges_key,
read = { Ankiquest.nudgesEnabled() },
save = { Ankiquest.setNudges(it).getBoolean("nudges") },
notify = true,
)
bindServerToggle(
R.string.ankiquest_celebrations_key,
read = { Ankiquest.celebrationsEnabled() },
save = { Ankiquest.setCelebrations(it).optBoolean("celebrations", it) },
notify = true,
)
bindServerToggle(
R.string.ankiquest_streak_protection_key,
read = { Ankiquest.streakProtectionEnabled() },
save = { Ankiquest.setStreakProtection(it) },
)
bindDashboard(R.string.ankiquest_dashboard_key)
bindDashboard(R.string.ankiquest_community_reminders_key, community = true)
requirePreference<Preference>(R.string.ankiquest_avatar_key).setOnPreferenceClickListener {
pictureAction {
val account = checkNotNull(AnkiquestAvatars.account()) { getString(R.string.ankiquest_nudges_unavailable) }
Expand Down Expand Up @@ -142,14 +119,48 @@ class AnkiquestSettingsFragment : SettingsFragment() {
}
true
}
bindAction(R.string.ankiquest_test_key) { Ankiquest.runFromSettings(requireContext(), uploadAll = false) }
}

protected fun bindStudy() {
bindServerToggle(
R.string.ankiquest_streak_protection_key,
read = { Ankiquest.streakProtectionEnabled() },
save = { Ankiquest.setStreakProtection(it) },
)
}

protected fun bindNotifications() {
requirePreference<SwitchPreferenceCompat>(R.string.ankiquest_notify_rank_key).setOnPreferenceChangeListener { _, enabled ->
if (enabled == true) askForNotifications()
true
}
requirePreference<ListPreference>(R.string.ankiquest_streak_hours_key).setOnPreferenceChangeListener { _, hours ->
if (hours != "0") askForNotifications()
true
}
bindServerToggle(
R.string.ankiquest_nudges_key,
read = { Ankiquest.nudgesEnabled() },
save = { Ankiquest.setNudges(it).getBoolean("nudges") },
notify = true,
)
bindServerToggle(
R.string.ankiquest_celebrations_key,
read = { Ankiquest.celebrationsEnabled() },
save = { Ankiquest.setCelebrations(it).optBoolean("celebrations", it) },
notify = true,
)
bindDashboard(R.string.ankiquest_community_reminders_key, community = true)
bindAlertSettings(R.string.ankiquest_message_alerts_key, nudge = false)
bindAlertSettings(R.string.ankiquest_nudge_alerts_key, nudge = true)
requirePreference<Preference>(R.string.ankiquest_health_key).setOnPreferenceClickListener {
showNotificationHealth()
true
}
bindAction(R.string.ankiquest_test_key) { Ankiquest.runFromSettings(requireContext(), uploadAll = false) }
bindAction(R.string.ankiquest_upload_all_key) { Ankiquest.runFromSettings(requireContext(), uploadAll = true) }
}

protected fun bindSharing() {
bindAction(R.string.ankiquest_deck_notifications_key) {
try {
showDeckNotifications(Ankiquest.deckNotificationSettings())
Expand All @@ -158,6 +169,10 @@ class AnkiquestSettingsFragment : SettingsFragment() {
getString(R.string.ankiquest_check_failed, e.message ?: e.javaClass.simpleName)
}
}
}

protected fun bindMaintenance() {
bindAction(R.string.ankiquest_upload_all_key) { Ankiquest.runFromSettings(requireContext(), uploadAll = true) }
requirePreference<Preference>(R.string.ankiquest_check_updates_key).summary =
getString(
R.string.ankiquest_check_updates_summary,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// SPDX-License-Identifier: AGPL-3.0-only

package com.ichi2.anki.preferences

import com.ichi2.anki.R

class AnkiquestAccountSettingsFragment : AnkiquestSettingsFragment() {
override val preferenceResource = R.xml.preferences_ankiquest_account
override val analyticsScreenNameConstant = "prefs.ankiquest.account"

override fun initSubscreen() = bindAccount()
}

class AnkiquestStudySettingsFragment : AnkiquestSettingsFragment() {
override val preferenceResource = R.xml.preferences_ankiquest_study
override val analyticsScreenNameConstant = "prefs.ankiquest.study"

override fun initSubscreen() = bindStudy()
}

class AnkiquestNotificationsSettingsFragment : AnkiquestSettingsFragment() {
override val preferenceResource = R.xml.preferences_ankiquest_notifications
override val analyticsScreenNameConstant = "prefs.ankiquest.notifications"

override fun initSubscreen() = bindNotifications()
}

class AnkiquestSharingSettingsFragment : AnkiquestSettingsFragment() {
override val preferenceResource = R.xml.preferences_ankiquest_sharing
override val analyticsScreenNameConstant = "prefs.ankiquest.sharing"

override fun initSubscreen() = bindSharing()
}

class AnkiquestMaintenanceSettingsFragment : AnkiquestSettingsFragment() {
override val preferenceResource = R.xml.preferences_ankiquest_maintenance
override val analyticsScreenNameConstant = "prefs.ankiquest.maintenance"

override fun initSubscreen() = bindMaintenance()
}
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,11 @@ fun getFragmentFromXmlRes(
R.xml.preferences_backup_limits -> BackupLimitsSettingsFragment()
R.xml.preferences_custom_sync_server -> CustomSyncServerSettingsFragment()
R.xml.preferences_ankiquest -> AnkiquestSettingsFragment()
R.xml.preferences_ankiquest_account -> AnkiquestAccountSettingsFragment()
R.xml.preferences_ankiquest_study -> AnkiquestStudySettingsFragment()
R.xml.preferences_ankiquest_notifications -> AnkiquestNotificationsSettingsFragment()
R.xml.preferences_ankiquest_sharing -> AnkiquestSharingSettingsFragment()
R.xml.preferences_ankiquest_maintenance -> AnkiquestMaintenanceSettingsFragment()
R.xml.preferences_ankiquest_subscriptions -> AnkiquestSubscriptionsFragment()
R.xml.preferences_notifications -> NotificationsSettingsFragment()
R.xml.preferences_appearance -> AppearanceSettingsFragment()
Expand Down
12 changes: 12 additions & 0 deletions AnkiDroid/src/main/res/values-de/ankiquest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
<resources>
<string name="ankiquest_account_title">Konto und Verbindung</string>
<string name="ankiquest_account_summary">Server, Spieler, Token und Profilbild</string>
<string name="ankiquest_study_title">Lernen und Serien</string>
<string name="ankiquest_study_summary">Tägliches Lernen und Serienschutz</string>
<string name="ankiquest_notifications_title">Erinnerungen und Hinweise</string>
<string name="ankiquest_notifications_summary">Erinnerungen, Hinweise und Alarme</string>
<string name="ankiquest_sharing_title">Freunde und Teilen</string>
<string name="ankiquest_sharing_summary">Deckmeldungen und Abonnements</string>
<string name="ankiquest_maintenance_title">App und Daten</string>
<string name="ankiquest_maintenance_summary">Uploads und App-Updates</string>
<string name="ankiquest_notification_events_title">Wann benachrichtigen</string>
<string name="ankiquest_notification_delivery_title">Benachrichtigungseinstellungen</string>
<string name="ankiquest_dashboard_title">Rangliste</string>
<string name="ankiquest_community_reminders_title">Gemeinschaftserinnerungen</string>
<string name="ankiquest_community_reminders_summary">Wähle Erinnerungen für Community-Events</string>
Expand Down
12 changes: 12 additions & 0 deletions AnkiDroid/src/main/res/values-es/ankiquest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
<resources>
<string name="ankiquest_account_title">Cuenta y conexión</string>
<string name="ankiquest_account_summary">Servidor, jugador, token y foto de perfil</string>
<string name="ankiquest_study_title">Estudio y rachas</string>
<string name="ankiquest_study_summary">Opciones de estudio diario y protección de racha</string>
<string name="ankiquest_notifications_title">Recordatorios y alertas</string>
<string name="ankiquest_notifications_summary">Recordatorios, avisos y alertas</string>
<string name="ankiquest_sharing_title">Amigos y contenido compartido</string>
<string name="ankiquest_sharing_summary">Avisos de mazos y suscripciones</string>
<string name="ankiquest_maintenance_title">Aplicación y datos</string>
<string name="ankiquest_maintenance_summary">Subida de repasos y actualizaciones</string>
<string name="ankiquest_notification_events_title">Cuándo avisar</string>
<string name="ankiquest_notification_delivery_title">Ajustes de alertas</string>
<string name="ankiquest_dashboard_title">Clasificación</string>
<string name="ankiquest_community_reminders_title">Recordatorios de la comunidad</string>
<string name="ankiquest_community_reminders_summary">Elige recordatorios de eventos de la comunidad</string>
Expand Down
12 changes: 12 additions & 0 deletions AnkiDroid/src/main/res/values-fr/ankiquest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
<resources>
<string name="ankiquest_account_title">Compte et connexion</string>
<string name="ankiquest_account_summary">Serveur, joueur, jeton et photo de profil</string>
<string name="ankiquest_study_title">Étude et séries</string>
<string name="ankiquest_study_summary">Étude quotidienne et protection des séries</string>
<string name="ankiquest_notifications_title">Rappels et alertes</string>
<string name="ankiquest_notifications_summary">Rappels, encouragements et alertes</string>
<string name="ankiquest_sharing_title">Amis et partage</string>
<string name="ankiquest_sharing_summary">Actualités des paquets et abonnements</string>
<string name="ankiquest_maintenance_title">Application et données</string>
<string name="ankiquest_maintenance_summary">Envois de révisions et mises à jour</string>
<string name="ankiquest_notification_events_title">Quand notifier</string>
<string name="ankiquest_notification_delivery_title">Paramètres des alertes</string>
<string name="ankiquest_dashboard_title">Classement</string>
<string name="ankiquest_community_reminders_title">Rappels communautaires</string>
<string name="ankiquest_community_reminders_summary">Choisir des rappels pour les événements communautaires</string>
Expand Down
12 changes: 12 additions & 0 deletions AnkiDroid/src/main/res/values-pt/ankiquest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
<resources>
<string name="ankiquest_account_title">Conta e conexão</string>
<string name="ankiquest_account_summary">Servidor, jogador, token e foto de perfil</string>
<string name="ankiquest_study_title">Estudo e sequências</string>
<string name="ankiquest_study_summary">Estudo diário e proteção de sequências</string>
<string name="ankiquest_notifications_title">Lembretes e alertas</string>
<string name="ankiquest_notifications_summary">Lembretes, incentivos e alertas</string>
<string name="ankiquest_sharing_title">Amigos e partilha</string>
<string name="ankiquest_sharing_summary">Avisos de baralhos e subscrições</string>
<string name="ankiquest_maintenance_title">Aplicação e dados</string>
<string name="ankiquest_maintenance_summary">Envio de revisões e atualizações</string>
<string name="ankiquest_notification_events_title">Quando notificar</string>
<string name="ankiquest_notification_delivery_title">Definições dos alertas</string>
<string name="ankiquest_dashboard_title">Classificação</string>
<string name="ankiquest_community_reminders_title">Avisos comunitários</string>
<string name="ankiquest_community_reminders_summary">Escolha lembretes para eventos comunitários</string>
Expand Down
17 changes: 17 additions & 0 deletions AnkiDroid/src/main/res/values/ankiquest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="ankiquest_account_screen_key" translatable="false">ankiquestAccountScreen</string>
<string name="ankiquest_account_title">Account &amp; connection</string>
<string name="ankiquest_account_summary">Server, player, token and profile picture</string>
<string name="ankiquest_study_screen_key" translatable="false">ankiquestStudyScreen</string>
<string name="ankiquest_study_title">Study &amp; streaks</string>
<string name="ankiquest_study_summary">Daily study options and streak protection</string>
<string name="ankiquest_notifications_screen_key" translatable="false">ankiquestNotificationsScreen</string>
<string name="ankiquest_notifications_title">Reminders &amp; alerts</string>
<string name="ankiquest_notifications_summary">Reminders, nudges and alert delivery</string>
<string name="ankiquest_sharing_screen_key" translatable="false">ankiquestSharingScreen</string>
<string name="ankiquest_sharing_title">Friends &amp; sharing</string>
<string name="ankiquest_sharing_summary">Deck updates and subscriptions</string>
<string name="ankiquest_maintenance_screen_key" translatable="false">ankiquestMaintenanceScreen</string>
<string name="ankiquest_maintenance_title">App &amp; data</string>
<string name="ankiquest_maintenance_summary">Review uploads and app updates</string>
<string name="ankiquest_notification_events_title">When to notify</string>
<string name="ankiquest_notification_delivery_title">Alert settings</string>
<string name="ankiquest_dashboard_key" translatable="false">ankiquestDashboard</string>
<string name="ankiquest_dashboard_title" maxLength="41">Leaderboard</string>
<string name="ankiquest_community_reminders_key" translatable="false">ankiquestCommunityReminders</string>
Expand Down
Loading
Loading