Skip to content

Commit

Permalink
Add new candidate+clipboard suggestion view (#38, #424, #425, #426)
Browse files Browse the repository at this point in the history
  • Loading branch information
patrickgold committed Mar 27, 2021
1 parent 2f0d607 commit 563a4a9
Show file tree
Hide file tree
Showing 12 changed files with 604 additions and 206 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@ class FlorisClipboardManager private constructor() : ClipboardManager.OnPrimaryC
}
return instance!!
}

@Synchronized
fun getInstanceOrNull(): FlorisClipboardManager? = instance

/**
* Taken from ClipboardDescription.java from the AOSP
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.gestures.VelocityThreshold
import dev.patrickgold.florisboard.ime.text.key.KeyHintMode
import dev.patrickgold.florisboard.ime.text.key.UtilityKeyAction
import dev.patrickgold.florisboard.ime.text.smartbar.CandidateView
import dev.patrickgold.florisboard.ime.theme.ThemeMode
import dev.patrickgold.florisboard.util.TimeUtil
import dev.patrickgold.florisboard.util.VersionName
Expand Down Expand Up @@ -444,20 +445,28 @@ class PrefHelper(
class Suggestion(private val prefHelper: PrefHelper) {
companion object {
const val BLOCK_POSSIBLY_OFFENSIVE = "suggestion__block_possibly_offensive"
const val CLIPBOARD_CONTENT_ENABLED = "suggestion__clipboard_content_enabled"
const val CLIPBOARD_CONTENT_TIMEOUT = "suggestion__clipboard_content_timeout"
const val DISPLAY_MODE = "suggestion__display_mode"
const val ENABLED = "suggestion__enabled"
const val SUGGEST_CLIPBOARD_CONTENT = "suggestion__suggest_clipboard_content"
const val USE_PREV_WORDS = "suggestion__use_prev_words"
}

var blockPossiblyOffensive: Boolean
get() = prefHelper.getPref(BLOCK_POSSIBLY_OFFENSIVE, true)
set(v) = prefHelper.setPref(BLOCK_POSSIBLY_OFFENSIVE, v)
var clipboardContentEnabled: Boolean
get() = prefHelper.getPref(CLIPBOARD_CONTENT_ENABLED, false)
set(v) = prefHelper.setPref(CLIPBOARD_CONTENT_ENABLED, v)
var clipboardContentTimeout: Int
get() = prefHelper.getPref(CLIPBOARD_CONTENT_TIMEOUT, 30)
set(v) = prefHelper.setPref(CLIPBOARD_CONTENT_TIMEOUT, v)
var displayMode: CandidateView.DisplayMode
get() = CandidateView.DisplayMode.fromString(prefHelper.getPref(DISPLAY_MODE, CandidateView.DisplayMode.DYNAMIC_SCROLLABLE.toString()))
set(v) = prefHelper.setPref(DISPLAY_MODE, v)
var enabled: Boolean
get() = prefHelper.getPref(ENABLED, true)
set(v) = prefHelper.setPref(ENABLED, v)
var suggestClipboardContent: Boolean
get() = prefHelper.getPref(SUGGEST_CLIPBOARD_CONTENT, false)
set(v) = prefHelper.setPref(SUGGEST_CLIPBOARD_CONTENT, v)
var usePrevWords: Boolean
get() = prefHelper.getPref(USE_PREV_WORDS, true)
set(v) = prefHelper.setPref(USE_PREV_WORDS, v)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import android.widget.Toast
import android.widget.ViewFlipper
import dev.patrickgold.florisboard.BuildConfig
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.clip.provider.ClipboardItem
import dev.patrickgold.florisboard.ime.core.*
import dev.patrickgold.florisboard.ime.dictionary.Dictionary
import dev.patrickgold.florisboard.ime.dictionary.DictionaryManager
Expand Down Expand Up @@ -351,7 +352,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(), In
val suggestions = it.getTokenPredictions(
precedingTokens = listOf(),
currentToken = Token(activeEditorInstance.cachedInput.currentWord.text),
maxSuggestionCount = 3,
maxSuggestionCount = 16,
allowPossiblyOffensive = !florisboard.prefs.suggestion.blockPossiblyOffensive
).toStringList()
if (BuildConfig.DEBUG) {
Expand Down Expand Up @@ -420,6 +421,10 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(), In
activeEditorInstance.commitCompletion(word)
}

override fun onSmartbarClipboardCandidatePressed(clipboardItem: ClipboardItem) {
activeEditorInstance.commitClipboardItem(clipboardItem)
}

override fun onSmartbarPrivateModeButtonClicked() {
Toast.makeText(florisboard.context, R.string.private_mode_dialog__title, Toast.LENGTH_LONG).show()
}
Expand Down Expand Up @@ -692,28 +697,12 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(), In
}
KeyCode.CLIPBOARD_CUT -> activeEditorInstance.performClipboardCut()
KeyCode.CLIPBOARD_COPY -> activeEditorInstance.performClipboardCopy()
KeyCode.CLIPBOARD_PASTE -> {
activeEditorInstance.performClipboardPaste()
smartbarView?.resetClipboardSuggestion()
}
KeyCode.CLIPBOARD_PASTE -> activeEditorInstance.performClipboardPaste()
KeyCode.CLIPBOARD_SELECT -> handleClipboardSelect()
KeyCode.CLIPBOARD_SELECT_ALL -> activeEditorInstance.performClipboardSelectAll()
KeyCode.DELETE -> {
handleDelete()
if (ev.action == InputKeyEvent.Action.DOWN_UP || ev.action == InputKeyEvent.Action.UP) {
smartbarView?.resetClipboardSuggestion()
}
}
KeyCode.DELETE_WORD -> {
handleDeleteWord()
if (ev.action == InputKeyEvent.Action.DOWN_UP || ev.action == InputKeyEvent.Action.UP) {
smartbarView?.resetClipboardSuggestion()
}
}
KeyCode.ENTER -> {
handleEnter()
smartbarView?.resetClipboardSuggestion()
}
KeyCode.DELETE -> handleDelete()
KeyCode.DELETE_WORD -> handleDeleteWord()
KeyCode.ENTER -> handleEnter()
KeyCode.INTERNAL_BATCH_EDIT -> {
florisboard.endInternalBatchEdit()
return
Expand Down Expand Up @@ -777,7 +766,6 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(), In
}
}
}
smartbarView?.resetClipboardSuggestion()
}
}
if (data.code != KeyCode.SHIFT && !capsLock && !inputEventDispatcher.isPressed(KeyCode.SHIFT)) {
Expand Down

0 comments on commit 563a4a9

Please sign in to comment.