Skip to content

Commit

Permalink
feat: improve ControlPreference style
Browse files Browse the repository at this point in the history
It is mostly a refactor because it generifies ControlPreference so it can be used in simple screens like the Previewer

but it also adds some icons to the control preference dialog
  • Loading branch information
BrayanDSO committed Feb 10, 2025
1 parent 9d05a54 commit f395913
Show file tree
Hide file tree
Showing 11 changed files with 457 additions and 309 deletions.
105 changes: 50 additions & 55 deletions AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/ViewerCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package com.ichi2.anki.cardviewer
import android.content.SharedPreferences
import android.view.KeyEvent
import androidx.core.content.edit
import com.ichi2.anki.R
import com.ichi2.anki.reviewer.Binding.Companion.keyCode
import com.ichi2.anki.reviewer.Binding.Companion.unicode
import com.ichi2.anki.reviewer.Binding.ModifierKeys
Expand All @@ -31,60 +30,56 @@ import com.ichi2.anki.reviewer.MappableBinding.Companion.toPreferenceString
import com.ichi2.anki.reviewer.ReviewerBinding

/** Abstraction: Discuss moving many of these to 'Reviewer' */
enum class ViewerCommand(
val resourceId: Int,
) {
SHOW_ANSWER(R.string.show_answer),
FLIP_OR_ANSWER_EASE1(R.string.answer_again),
FLIP_OR_ANSWER_EASE2(R.string.answer_hard),
FLIP_OR_ANSWER_EASE3(R.string.answer_good),
FLIP_OR_ANSWER_EASE4(R.string.answer_easy),
UNDO(R.string.undo),
REDO(R.string.redo),
EDIT(R.string.cardeditor_title_edit_card),
MARK(R.string.menu_mark_note),
BURY_CARD(R.string.menu_bury_card),
SUSPEND_CARD(R.string.menu_suspend_card),
DELETE(R.string.menu_delete_note),
PLAY_MEDIA(R.string.gesture_play),
EXIT(R.string.gesture_abort_learning),
BURY_NOTE(R.string.menu_bury_note),
SUSPEND_NOTE(R.string.menu_suspend_note),
TOGGLE_FLAG_RED(R.string.gesture_flag_red),
TOGGLE_FLAG_ORANGE(R.string.gesture_flag_orange),
TOGGLE_FLAG_GREEN(R.string.gesture_flag_green),
TOGGLE_FLAG_BLUE(R.string.gesture_flag_blue),
TOGGLE_FLAG_PINK(R.string.gesture_flag_pink),
TOGGLE_FLAG_TURQUOISE(R.string.gesture_flag_turquoise),
TOGGLE_FLAG_PURPLE(R.string.gesture_flag_purple),
UNSET_FLAG(R.string.gesture_flag_remove),
PAGE_UP(R.string.gesture_page_up),
PAGE_DOWN(R.string.gesture_page_down),
TAG(R.string.add_tag),
CARD_INFO(R.string.card_info_title),
ABORT_AND_SYNC(R.string.gesture_abort_sync),
RECORD_VOICE(R.string.record_voice),
SAVE_VOICE(R.string.save_voice),
REPLAY_VOICE(R.string.replay_voice),
TOGGLE_WHITEBOARD(R.string.gesture_toggle_whiteboard),
CLEAR_WHITEBOARD(R.string.clear_whiteboard),
CHANGE_WHITEBOARD_PEN_COLOR(R.string.title_whiteboard_editor),
SHOW_HINT(R.string.gesture_show_hint),
SHOW_ALL_HINTS(R.string.gesture_show_all_hints),
ADD_NOTE(R.string.menu_add_note),

// TODO: CollectionManager.TR.actionsSetDueDate()
RESCHEDULE_NOTE(R.string.card_editor_reschedule_card),
TOGGLE_AUTO_ADVANCE(R.string.toggle_auto_advance),
USER_ACTION_1(R.string.user_action_1),
USER_ACTION_2(R.string.user_action_2),
USER_ACTION_3(R.string.user_action_3),
USER_ACTION_4(R.string.user_action_4),
USER_ACTION_5(R.string.user_action_5),
USER_ACTION_6(R.string.user_action_6),
USER_ACTION_7(R.string.user_action_7),
USER_ACTION_8(R.string.user_action_8),
USER_ACTION_9(R.string.user_action_9),
enum class ViewerCommand {
SHOW_ANSWER,
FLIP_OR_ANSWER_EASE1,
FLIP_OR_ANSWER_EASE2,
FLIP_OR_ANSWER_EASE3,
FLIP_OR_ANSWER_EASE4,
UNDO,
REDO,
EDIT,
MARK,
BURY_CARD,
SUSPEND_CARD,
DELETE,
PLAY_MEDIA,
EXIT,
BURY_NOTE,
SUSPEND_NOTE,
TOGGLE_FLAG_RED,
TOGGLE_FLAG_ORANGE,
TOGGLE_FLAG_GREEN,
TOGGLE_FLAG_BLUE,
TOGGLE_FLAG_PINK,
TOGGLE_FLAG_TURQUOISE,
TOGGLE_FLAG_PURPLE,
UNSET_FLAG,
PAGE_UP,
PAGE_DOWN,
TAG,
CARD_INFO,
ABORT_AND_SYNC,
RECORD_VOICE,
SAVE_VOICE,
REPLAY_VOICE,
TOGGLE_WHITEBOARD,
CLEAR_WHITEBOARD,
CHANGE_WHITEBOARD_PEN_COLOR,
SHOW_HINT,
SHOW_ALL_HINTS,
ADD_NOTE,
RESCHEDULE_NOTE,
TOGGLE_AUTO_ADVANCE,
USER_ACTION_1,
USER_ACTION_2,
USER_ACTION_3,
USER_ACTION_4,
USER_ACTION_5,
USER_ACTION_6,
USER_ACTION_7,
USER_ACTION_8,
USER_ACTION_9,
;

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.ichi2.anki.reviewer.MappableBinding.Companion.toPreferenceString
import com.ichi2.anki.ui.internationalization.toSentenceCase
import com.ichi2.annotations.NeedsTest
import com.ichi2.preferences.ControlPreference
import com.ichi2.preferences.ReviewerControlPreference

class ControlsSettingsFragment : SettingsFragment() {
override val preferenceResource: Int
Expand All @@ -39,9 +40,14 @@ class ControlsSettingsFragment : SettingsFragment() {
// if a preference is empty, it has a value like "1/"
preferenceScreen
.allPreferences()
.filterIsInstance<ControlPreference>()
.filterIsInstance<ReviewerControlPreference>()
.filter { pref -> pref.value == null }
.forEach { pref -> pref.value = commands[pref.key]?.defaultValue?.toPreferenceString() }
.forEach { pref ->
commands[pref.key]
?.defaultValue
?.toPreferenceString()
?.let { pref.value = it }
}

setDynamicTitle()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ open class MappableBinding(
.joinToString(prefix = "1/", separator = PREF_SEPARATOR.toString())

@CheckResult
fun fromString(s: String): MappableBinding? {
private fun fromString(s: String): MappableBinding? {
if (s.isEmpty()) {
return null
}
Expand Down
Loading

0 comments on commit f395913

Please sign in to comment.