abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/values/arrays.xml12
-rw-r--r--res/values/strings.xml6
-rw-r--r--res/xml/settings.xml3
-rw-r--r--srcs/juloo.keyboard2/ClipboardHistoryService.java14
-rw-r--r--srcs/juloo.keyboard2/Config.java2
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;