From e7eb3afbbb9ede50d9af36486d31c76058aeb5fd Mon Sep 17 00:00:00 2001 From: DavisLWebb Date: Sun, 4 May 2014 20:14:25 -0400 Subject: MY BRANCH --- src/us/minak/Minak.java | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/us/minak/Minak.java (limited to 'src/us/minak/Minak.java') diff --git a/src/us/minak/Minak.java b/src/us/minak/Minak.java new file mode 100644 index 0000000..af2736f --- /dev/null +++ b/src/us/minak/Minak.java @@ -0,0 +1,66 @@ +package us.minak; + +import android.inputmethodservice.InputMethodService; +import java.util.Queue; +import android.view.View; +import android.view.inputmethod.EditorInfo; + + +public class Minak extends InputMethodService { + private MinakView m_minak_view; + + @Override + public View onCreateInputView() { + final MinakView minak_view = (MinakView) getLayoutInflater().inflate(R.layout.minak, null); + + minak_view.setOnCharacterEnteredListener(new OnCharacterEnteredListener() { + @Override + public void characterEntered(String character) { + getCurrentInputConnection().commitText(character, 1); + } + }); + + minak_view.setOnBackspacePressedListener(new OnBackspacePressedListener() { + @Override + public void backspacePressed(boolean isLongClick) { + if (isLongClick) { + deleteLastWord(); + } else { + getCurrentInputConnection().deleteSurroundingText(1, 0); + } + } + }); + + m_minak_view = minak_view; + return minak_view; + } + + @Override + public void onStartInput(EditorInfo attribute, boolean restarting) { + if (m_minak_view != null) { + final Queue symbolsQueue = m_minak_view.getSymbolsQueue(); + while (!symbolsQueue.isEmpty()) { + final Character character = symbolsQueue.poll(); + getCurrentInputConnection().commitText(String.valueOf(character), 1); + } + } + } + + /** + * Deletes one word before the cursor. + */ + private void deleteLastWord() { + final int charactersToGet = 20; + final String splitRegexp = " "; + + // delete trailing spaces + while (getCurrentInputConnection().getTextBeforeCursor(1, 0).toString().equals(splitRegexp)) { + getCurrentInputConnection().deleteSurroundingText(1, 0); + } + + // delete last word letters + final String[] words = getCurrentInputConnection().getTextBeforeCursor(charactersToGet, 0).toString() + .split(splitRegexp); + getCurrentInputConnection().deleteSurroundingText(words[words.length - 1].length(), 0); + } +} -- cgit v1.2.3