Merge remote-tracking branch 'origin/master'

This commit is contained in:
dslul 2022-01-23 11:41:38 +01:00
commit 2916e91b6d
11 changed files with 45 additions and 21 deletions

View file

@ -27,7 +27,7 @@ You can use [this tool](https://github.com/remi0s/aosp-dictionary-tools) to crea
Install java: Install java:
```sh ```sh
sudo pacman -S jdk8-openjdk jre8-openjdk jre8-openjdk-headless sudo pacman -S jdk11-openjdk jre11-openjdk jre11-openjdk-headless
``` ```
Install Android SDK: Install Android SDK:
@ -41,11 +41,6 @@ Configure your SDK location in your `~/.bash_profile` or `~/.bashrc`:
export ANDROID_SDK_ROOT=~/snap/androidsdk/current/AndroidSDK/ export ANDROID_SDK_ROOT=~/snap/androidsdk/current/AndroidSDK/
``` ```
Install the platform tools for your target android version:
```sh
androidsdk "platform-tools" "platforms;android-29"
```
Compile the project. This will install all dependencies, make sure to accept Compile the project. This will install all dependencies, make sure to accept
licenses when prompted. licenses when prompted.

View file

@ -16,4 +16,13 @@ public class ClipboardManagerCompat {
} }
} }
@TargetApi(Build.VERSION_CODES.O)
public static Long getClipTimestamp(ClipData cd) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return cd.getDescription().getTimestamp();
} else {
return null;
}
}
} }

View file

@ -1082,7 +1082,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
return; return;
} }
final int code = key.getCode(); final int code = key.getCode();
if (code == Constants.CODE_SPACE || code == Constants.CODE_LANGUAGE_SWITCH) { if (code == Constants.CODE_SPACE&&Settings.getInstance().getCurrent().mSpaceForLangChange || code == Constants.CODE_LANGUAGE_SWITCH) {
// Long pressing the space key invokes IME switcher dialog. // Long pressing the space key invokes IME switcher dialog.
if (sListener.onCustomRequest(Constants.CUSTOM_CODE_SHOW_INPUT_METHOD_PICKER)) { if (sListener.onCustomRequest(Constants.CUSTOM_CODE_SHOW_INPUT_METHOD_PICKER)) {
cancelKeyTracking(); cancelKeyTracking();

View file

@ -2,9 +2,11 @@ package org.dslul.openboard.inputmethod.latin
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.os.Build
import android.text.TextUtils import android.text.TextUtils
import android.util.Base64 import android.util.Base64
import android.util.Log import android.util.Log
import androidx.annotation.RequiresApi
import org.dslul.openboard.inputmethod.compat.ClipboardManagerCompat import org.dslul.openboard.inputmethod.compat.ClipboardManagerCompat
import org.dslul.openboard.inputmethod.latin.utils.JsonUtils import org.dslul.openboard.inputmethod.latin.utils.JsonUtils
import java.io.File import java.io.File
@ -45,12 +47,19 @@ class ClipboardHistoryManager(
override fun onPrimaryClipChanged() = fetchPrimaryClip() override fun onPrimaryClipChanged() = fetchPrimaryClip()
private fun fetchPrimaryClip() { private fun fetchPrimaryClip() {
if (!clipboardManager.hasPrimaryClip()) return val clipData = clipboardManager.primaryClip ?: return
val clipData = clipboardManager.primaryClip if (clipData.itemCount == 0) return
if (clipData != null && clipData.itemCount > 0 && clipData.getItemAt(0) != null) { clipData.getItemAt(0)?.let { clipItem ->
val content = clipData.getItemAt(0).coerceToText(latinIME) // Starting from API 30, onPrimaryClipChanged() can be called multiple times
if (!TextUtils.isEmpty(content)) { // for the same clip. We can identify clips with their timestamps since API 26.
val id = System.nanoTime() // We use that to prevent unwanted duplicates.
val id = ClipboardManagerCompat.getClipTimestamp(clipData)?.also { stamp ->
if (historyEntries.any { it.id == stamp }) return
} ?: System.currentTimeMillis()
val content = clipItem.coerceToText(latinIME)
if (TextUtils.isEmpty(content)) return
val entry = ClipboardHistoryEntry(id, content) val entry = ClipboardHistoryEntry(id, content)
historyEntries.add(entry) historyEntries.add(entry)
sortHistoryEntries() sortHistoryEntries()
@ -58,12 +67,11 @@ class ClipboardHistoryManager(
onHistoryChangeListener?.onClipboardHistoryEntryAdded(at) onHistoryChangeListener?.onClipboardHistoryEntryAdded(at)
} }
} }
}
fun toggleClipPinned(clipId: Long) { fun toggleClipPinned(clipId: Long) {
val from = historyEntries.indexOfFirst { it.id == clipId } val from = historyEntries.indexOfFirst { it.id == clipId }
val historyEntry = historyEntries[from].apply { val historyEntry = historyEntries[from].apply {
id = System.nanoTime() id = System.currentTimeMillis()
isPinned = !isPinned isPinned = !isPinned
} }
sortHistoryEntries() sortHistoryEntries()

View file

@ -111,6 +111,8 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_SHOW_HINTS = "pref_show_hints"; public static final String PREF_SHOW_HINTS = "pref_show_hints";
public static final String PREF_SPACE_TO_CHANGE_LANG = "prefs_long_press_keyboard_to_change_lang";
// This preference key is deprecated. Use {@link #PREF_SHOW_LANGUAGE_SWITCH_KEY} instead. // This preference key is deprecated. Use {@link #PREF_SHOW_LANGUAGE_SWITCH_KEY} instead.
// This is being used only for the backward compatibility. // This is being used only for the backward compatibility.
private static final String PREF_SUPPRESS_LANGUAGE_SWITCH_KEY = private static final String PREF_SUPPRESS_LANGUAGE_SWITCH_KEY =

View file

@ -71,6 +71,7 @@ public class SettingsValues {
public final boolean mIncludesOtherImesInLanguageSwitchList; public final boolean mIncludesOtherImesInLanguageSwitchList;
public final boolean mShowsNumberRow; public final boolean mShowsNumberRow;
public final boolean mShowsHints; public final boolean mShowsHints;
public final boolean mSpaceForLangChange;
public final boolean mShowsLanguageSwitchKey; public final boolean mShowsLanguageSwitchKey;
public final boolean mShowsEmojiKey; public final boolean mShowsEmojiKey;
public final boolean mShowsClipboardKey; public final boolean mShowsClipboardKey;
@ -148,6 +149,7 @@ public class SettingsValues {
mIncludesOtherImesInLanguageSwitchList = !Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS || prefs.getBoolean(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, false) /* forcibly */; mIncludesOtherImesInLanguageSwitchList = !Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS || prefs.getBoolean(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, false) /* forcibly */;
mShowsNumberRow = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW, false); mShowsNumberRow = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW, false);
mShowsHints = prefs.getBoolean(Settings.PREF_SHOW_HINTS, true); mShowsHints = prefs.getBoolean(Settings.PREF_SHOW_HINTS, true);
mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true);
mShowsLanguageSwitchKey = prefs.getBoolean(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, false); mShowsLanguageSwitchKey = prefs.getBoolean(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, false);
mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, false); mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, false);
mShowsClipboardKey = prefs.getBoolean(Settings.PREF_SHOW_CLIPBOARD_KEY, false); mShowsClipboardKey = prefs.getBoolean(Settings.PREF_SHOW_CLIPBOARD_KEY, false);

Binary file not shown.

View file

@ -217,6 +217,9 @@
<!-- Description of the settings to show hints --> <!-- Description of the settings to show hints -->
<string name="show_hints_summary">Show long-press hints</string> <string name="show_hints_summary">Show long-press hints</string>
<!-- Title of the settings to disable long press space to change language -->
<string name="prefs_long_press_keyboard_to_change_lang">Long press to change lang</string>
<!-- Title of the settings to enable keyboard resizing --> <!-- Title of the settings to enable keyboard resizing -->
<string name="prefs_resize_keyboard">Enable keyboard resizing</string> <string name="prefs_resize_keyboard">Enable keyboard resizing</string>
<!-- Title of the settings for setting keyboard height --> <!-- Title of the settings for setting keyboard height -->

View file

@ -34,6 +34,11 @@
android:summary="@string/show_hints_summary" android:summary="@string/show_hints_summary"
android:defaultValue="true" android:defaultValue="true"
android:persistent="true" /> android:persistent="true" />
<CheckBoxPreference
android:key="prefs_long_press_keyboard_to_change_lang"
android:title="@string/prefs_long_press_keyboard_to_change_lang"
android:persistent="true"
android:defaultValue="true" />
<CheckBoxPreference <CheckBoxPreference
android:key="pref_show_language_switch_key" android:key="pref_show_language_switch_key"
android:title="@string/show_language_switch_key" android:title="@string/show_language_switch_key"

View file

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = '1.4.30' ext.kotlin_version = '1.5.31'
repositories { repositories {
jcenter() jcenter()
google() google()

BIN
dictionaries/de_wordlist.combined.gz Normal file → Executable file

Binary file not shown.