diff --git a/app/build.gradle b/app/build.gradle index 58f5b82d7..5d9e089a0 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,6 +81,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1" // why not working with 1.6.0? implementation 'com.github.martin-stone:hsv-alpha-color-picker-android:3.1.0' + implementation 'com.joaomgcd:taskerpluginlibrary:0.4.10' testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:3.12.4' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4501ee583..16a980f1f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,6 +21,9 @@ + + + + + + + + + + diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java index 0e29645fd..12f9cba27 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java @@ -33,6 +33,7 @@ import org.dslul.openboard.inputmethod.latin.define.ProductionFlags; import org.dslul.openboard.inputmethod.latin.settings.Settings; import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; +import org.dslul.openboard.inputmethod.latin.tasker.GlobalKeyboardListener; import org.dslul.openboard.inputmethod.latin.utils.CapsModeUtils; import org.dslul.openboard.inputmethod.latin.utils.LanguageOnSpacebarUtils; import org.dslul.openboard.inputmethod.latin.utils.RecapitalizeStatus; @@ -543,6 +544,7 @@ public View onCreateInputView(@NonNull Context displayContext, mEmojiPalettesView.setKeyboardActionListener(mLatinIME); mClipboardHistoryView.setHardwareAcceleratedDrawingEnabled(isHardwareAcceleratedDrawingEnabled); mClipboardHistoryView.setKeyboardActionListener(mLatinIME); + GlobalKeyboardListener.INSTANCE.setListener(mLatinIME); return mCurrentInputView; } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/GlobalKeyboardListener.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/GlobalKeyboardListener.kt new file mode 100644 index 000000000..eb07b6215 --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/GlobalKeyboardListener.kt @@ -0,0 +1,7 @@ +package org.dslul.openboard.inputmethod.latin.tasker + +import org.dslul.openboard.inputmethod.keyboard.KeyboardActionListener + +object GlobalKeyboardListener{ + var listener: KeyboardActionListener? = null +} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/SendTextAction.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/SendTextAction.kt new file mode 100644 index 000000000..c3f2e34ed --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/SendTextAction.kt @@ -0,0 +1,69 @@ +package org.dslul.openboard.inputmethod.latin.tasker + +import android.app.Activity +import android.content.Context +import android.os.Bundle +import android.widget.EditText +import androidx.appcompat.app.AlertDialog +import com.joaomgcd.taskerpluginlibrary.action.TaskerPluginRunnerActionNoOutput +import com.joaomgcd.taskerpluginlibrary.config.TaskerPluginConfig +import com.joaomgcd.taskerpluginlibrary.config.TaskerPluginConfigHelperNoOutput +import com.joaomgcd.taskerpluginlibrary.input.TaskerInput +import com.joaomgcd.taskerpluginlibrary.input.TaskerInputField +import com.joaomgcd.taskerpluginlibrary.input.TaskerInputRoot +import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResult +import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResultSucess + + +@TaskerInputRoot +data class TaskerText @JvmOverloads constructor(@field:TaskerInputField("text") var text: String = "") + +class SendTextAction : Activity(), TaskerPluginConfig { + + var text: String = "" + lateinit var editText: EditText + private val helper by lazy { SendTextActionHelper(this) } + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + editText = EditText(this) + // simple edit text ui + val a = AlertDialog.Builder(this) + .setTitle("Send Text") + .setView(editText) + .setPositiveButton("OK") { _, _ -> + text = editText.text.toString() + helper.finishForTasker() + } + .setNegativeButton("Cancel") { _, _ -> + helper.onBackPressed() + }.create() + editText.requestFocus() + a.show() + + + helper.onCreate() + } + + override val context: Context + get() = applicationContext + override val inputForTasker: TaskerInput + get() { + return TaskerInput(TaskerText(text)) + } + + override fun assignFromInput(input: TaskerInput) { + text = input.regular.text + } +} + +class SendTextActionHelper(config: TaskerPluginConfig) : + TaskerPluginConfigHelperNoOutput(config) { + override val inputClass: Class = TaskerText::class.java + override val runnerClass: Class = SendTextActionRunner::class.java +} + +class SendTextActionRunner : TaskerPluginRunnerActionNoOutput() { + override fun run(context: Context, input: TaskerInput): TaskerPluginResult = + GlobalKeyboardListener.listener?.onTextInput(input.regular.text) + ?.let { TaskerPluginResultSucess() } ?: TaskerPluginResultSucess() +}