Skip to content

Commit b9f8d58

Browse files
committed
feat: add preference to disable editor cursor animation
1 parent 27681db commit b9f8d58

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

core/app/src/main/java/com/itsaky/androidide/preferences/editorPrefExts.kt

+12
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import com.itsaky.androidide.preferences.internal.EditorPreferences.USE_CUSTOM_F
4242
import com.itsaky.androidide.preferences.internal.EditorPreferences.USE_ICU
4343
import com.itsaky.androidide.preferences.internal.EditorPreferences.USE_MAGNIFER
4444
import com.itsaky.androidide.preferences.internal.EditorPreferences.USE_SOFT_TAB
45+
import com.itsaky.androidide.preferences.internal.EditorPreferences.CURSOR_ANIMATION_ENABLED
4546
import com.itsaky.androidide.preferences.internal.EditorPreferences.WORD_WRAP
4647
import com.itsaky.androidide.resources.R.drawable
4748
import com.itsaky.androidide.resources.R.string
@@ -86,6 +87,7 @@ private class CommonConfigurations(
8687
addPreference(VisibiblePasswordFlag())
8788
addPreference(DeleteEmptyLines())
8889
addPreference(DeleteTabs())
90+
addPreference(CursorAnimationEnabled())
8991
addPreference(StickyScrollEnabled())
9092
addPreference(PinLineNumbersEnabled())
9193
addPreference(CompletionsMatchLower())
@@ -147,6 +149,16 @@ private class UseSoftTab(
147149
) : SwitchPreference(setValue = EditorPreferences::useSoftTab::set,
148150
getValue = EditorPreferences::useSoftTab::get)
149151

152+
@Parcelize
153+
private class CursorAnimationEnabled(
154+
override val key: String = CURSOR_ANIMATION_ENABLED,
155+
override val title: Int = string.idepref_editor_cursorAnimationEnabled_title,
156+
override val summary: Int? = string.idepref_editor_cursorAnimationEnabled_summary,
157+
override val icon: Int? = drawable.ic_space, // TODO: Add a icon
158+
) : SwitchPreference(setValue = EditorPreferences::cursorAnimationEnabled::set,
159+
getValue = EditorPreferences::cursorAnimationEnabled::get)
160+
161+
150162
@Parcelize
151163
private class TabSize(
152164
override val key: String = TAB_SIZE,

core/app/src/main/java/com/itsaky/androidide/ui/CodeEditorView.kt

+6
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ class CodeEditorView(
341341
onUseIcuPrefChanged()
342342
onDeleteEmptyLinesPrefChanged()
343343
onDeleteTabsPrefChanged()
344+
onCursorAnimationPrefChanged()
344345
onStickyScrollEnabeldPrefChanged()
345346
onPinLineNumbersPrefChanged()
346347
}
@@ -409,6 +410,10 @@ class CodeEditorView(
409410
binding.editor.props.deleteMultiSpaces = if (EditorPreferences.deleteTabsOnBackspace) -1 else 1
410411
}
411412

413+
private fun onCursorAnimationPrefChanged() {
414+
binding.editor.cursorAnimationEnabled = EditorPreferences.cursorAnimationEnabled
415+
}
416+
412417
private fun onStickyScrollEnabeldPrefChanged() {
413418
binding.editor.props.stickyScroll = EditorPreferences.stickyScrollEnabled
414419
}
@@ -460,6 +465,7 @@ class CodeEditorView(
460465
EditorPreferences.USE_MAGNIFER -> onMagnifierPrefChanged()
461466
EditorPreferences.USE_ICU -> onUseIcuPrefChanged()
462467
EditorPreferences.USE_CUSTOM_FONT -> onCustomFontPrefChanged()
468+
EditorPreferences.CURSOR_ANIMATION_ENABLED -> onCursorAnimationPrefChanged()
463469
EditorPreferences.DELETE_EMPTY_LINES -> onDeleteEmptyLinesPrefChanged()
464470
EditorPreferences.DELETE_TABS_ON_BACKSPACE -> onDeleteTabsPrefChanged()
465471
EditorPreferences.STICKY_SCROLL_ENABLED -> onStickyScrollEnabeldPrefChanged()

core/resources/src/main/res/values/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,8 @@
258258
<string name="msg_swipe_for_output">Swipe up for @@build output@@.</string>
259259
<string name="idepref_editor_useSoftTabs_title">Use soft tab</string>
260260
<string name="idepref_editor_useSoftTabs_summary">Choose whether to use spaces instead of tab character (\\t).</string>
261+
<string name="idepref_editor_cursorAnimationEnabled_title">Enable cursor animation</string>
262+
<string name="idepref_editor_cursorAnimationEnabled_summary">Choose whether to use animation when moving the cursor.</string>
261263
<string name="btn_donate">Donate</string>
262264
<string name="btn_docs">Documentation</string>
263265
<string name="btn_close">Close</string>

utilities/preferences/src/main/java/com/itsaky/androidide/preferences/internal/EditorPreferences.kt

+7
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ object EditorPreferences {
4343
const val USE_ICU = "idepref_editor_useIcu"
4444
const val USE_SOFT_TAB = "idepref_editor_useSoftTab"
4545
const val USE_CUSTOM_FONT = "idepref_editor_useCustomFont"
46+
const val CURSOR_ANIMATION_ENABLED = "idepref_editor_cursorAnimationEnabled"
4647
const val DELETE_EMPTY_LINES = "idepref_editor_deleteEmptyLines"
4748
const val DELETE_TABS_ON_BACKSPACE = "idepref_editor_deleteTab"
4849
const val STICKY_SCROLL_ENABLED = "idepref_editor_stickyScrollEnabled"
@@ -147,6 +148,12 @@ object EditorPreferences {
147148
prefManager.putBoolean(USE_CUSTOM_FONT, value)
148149
}
149150

151+
var cursorAnimationEnabled: Boolean
152+
get() = prefManager.getBoolean(CURSOR_ANIMATION_ENABLED, false)
153+
set(value) {
154+
prefManager.putBoolean(CURSOR_ANIMATION_ENABLED, value)
155+
}
156+
150157
var colorScheme: String
151158
get() = prefManager.getString(COLOR_SCHEME, DEFAULT_COLOR_SCHEME)
152159
set(value) {

0 commit comments

Comments
 (0)