diff options
| author | Matej Drobnič | 2025-09-29 00:56:23 +0200 |
|---|---|---|
| committer | GitHub | 2025-09-29 00:56:23 +0200 |
| commit | df8e7a01e0e69c2a8463a27096d4d3c33b1f6b46 (patch) | |
| tree | 354034f08133fa4aa6073ba386258b408e2bd046 | |
| parent | 7fdf63b930e51a06011ce911cf87a03c41b8334d (diff) | |
| download | unexpected-keyboard-df8e7a01e0e69c2a8463a27096d4d3c33b1f6b46.tar.gz unexpected-keyboard-df8e7a01e0e69c2a8463a27096d4d3c33b1f6b46.zip | |
Make history duration configurable (#1074)
| -rw-r--r-- | res/values/arrays.xml | 12 | ||||
| -rw-r--r-- | res/values/strings.xml | 6 | ||||
| -rw-r--r-- | res/xml/settings.xml | 3 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/ClipboardHistoryService.java | 14 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Config.java | 2 |
5 files changed, 34 insertions, 3 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index cd12337..56015e9 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -106,4 +106,16 @@ <item>30</item> <item>15</item> </string-array> + <string-array name="pref_clipboard_duration_entries"> + <item>@string/pref_clipboard_history_duration_1</item> + <item>@string/pref_clipboard_history_duration_5</item> + <item>@string/pref_clipboard_history_duration_30</item> + <item>@string/pref_clipboard_history_duration_stop</item> + </string-array> + <string-array name="pref_clipboard_duration_values"> + <item>1</item> + <item>5</item> + <item>30</item> + <item>-1</item> + </string-array> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 988ecaa..05e9160 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -140,4 +140,10 @@ <string name="clipboard_remove_confirm">Remove this clipboard item?</string> <string name="clipboard_remove_confirmed">Yes</string> <string name="toast_no_voice_input">No voice typing app installed</string> + <string name="pref_category_clipboard">Clipboard</string> + <string name="pref_clipboard_history_duration">Clipboard memory duration</string> + <string name="pref_clipboard_history_duration_1">At most 1 minute</string> + <string name="pref_clipboard_history_duration_5">At most 5 minutes</string> + <string name="pref_clipboard_history_duration_30">At most 30 minutes</string> + <string name="pref_clipboard_history_duration_stop">Until the app stops</string> </resources> diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 22dbef2..c96f546 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -59,4 +59,7 @@ <juloo.keyboard2.prefs.IntSlideBarPreference android:key="custom_border_radius" android:title="@string/pref_corners_radius_title" android:summary="%s%%" android:defaultValue="0" min="0" max="100" android:dependency="border_config"/> <juloo.keyboard2.prefs.SlideBarPreference android:key="custom_border_line_width" android:title="@string/pref_border_width_title" android:summary="%sdp" android:defaultValue="0" min="0" max="5" android:dependency="border_config"/> </PreferenceCategory> + <PreferenceCategory android:title="@string/pref_category_clipboard"> + <ListPreference android:key="clipboard_history_duration" android:title="@string/pref_clipboard_history_duration" android:summary="%s" android:defaultValue="5" android:entries="@array/pref_clipboard_duration_entries" android:entryValues="@array/pref_clipboard_duration_values" /> + </PreferenceCategory> </PreferenceScreen> diff --git a/srcs/juloo.keyboard2/ClipboardHistoryService.java b/srcs/juloo.keyboard2/ClipboardHistoryService.java index 9554bca..27e2eb9 100644 --- a/srcs/juloo.keyboard2/ClipboardHistoryService.java +++ b/srcs/juloo.keyboard2/ClipboardHistoryService.java @@ -7,6 +7,7 @@ import android.os.Build.VERSION; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.concurrent.TimeUnit; public final class ClipboardHistoryService { @@ -50,8 +51,6 @@ public final class ClipboardHistoryService gives a sense to the user that the history is not persisted and can be forgotten as soon as the app stops. */ public static final int MAX_HISTORY_SIZE = 6; - /** Time in ms until history entries expire. */ - public static final long HISTORY_TTL_MS = 5 * 60 * 1000; static ClipboardHistoryService _service = null; static ClipboardPasteCallback _paste_callback = null; @@ -150,6 +149,10 @@ public final class ClipboardHistoryService } } + int get_history_ttl_minutes() { + return Config.globalConfig().clipboard_history_duration; + } + final class SystemListener implements ClipboardManager.OnPrimaryClipChangedListener { public SystemListener() {} @@ -171,7 +174,12 @@ public final class ClipboardHistoryService public HistoryEntry(String c) { content = c; - expiry_timestamp = System.currentTimeMillis() + HISTORY_TTL_MS; + final int historyTtlMinutes = _service.get_history_ttl_minutes(); + if (historyTtlMinutes >= 0) { + expiry_timestamp = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(historyTtlMinutes); + } else { + expiry_timestamp = Long.MAX_VALUE; + } } } diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java index dbdd877..b3eadf5 100644 --- a/srcs/juloo.keyboard2/Config.java +++ b/srcs/juloo.keyboard2/Config.java @@ -70,6 +70,7 @@ public final class Config public boolean borderConfig; public int circle_sensitivity; public boolean clipboard_history_enabled; + public int clipboard_history_duration; // Dynamically set public boolean shouldOfferVoiceTyping; @@ -181,6 +182,7 @@ public final class Config current_layout_wide = _prefs.getInt("current_layout_landscape", 0); circle_sensitivity = Integer.valueOf(_prefs.getString("circle_sensitivity", "2")); clipboard_history_enabled = _prefs.getBoolean("clipboard_history_enabled", false); + clipboard_history_duration = Integer.parseInt(_prefs.getString("clipboard_history_duration", "5")); float screen_width_dp = dm.widthPixels / dm.density; wide_screen = screen_width_dp >= WIDE_DEVICE_THRESHOLD; |
