summaryrefslogtreecommitdiffstats
path: root/core/java/com/android
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2010-12-08 17:43:58 -0800
committerGilles Debunne <debunne@google.com>2010-12-10 11:31:59 -0800
commitcf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91 (patch)
tree89a70a7fd0d4c3289df77b6e2422d0ce59409e81 /core/java/com/android
parent70e81ba9abbac2f9e5add30fb749c4bd85441d4c (diff)
downloadframeworks_base-cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91.zip
frameworks_base-cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91.tar.gz
frameworks_base-cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91.tar.bz2
New API in InputConnection to signal IME's text correction.
Scafolding so that the IME team can start working on this feature. The animation part in the TextView is missing. Change-Id: I8225538564370fba1500e3539742a8ab79bdd199
Diffstat (limited to 'core/java/com/android')
-rw-r--r--core/java/com/android/internal/view/IInputConnectionWrapper.java15
-rw-r--r--core/java/com/android/internal/view/IInputContext.aidl3
-rw-r--r--core/java/com/android/internal/view/InputConnectionWrapper.java10
-rw-r--r--core/java/com/android/internal/widget/EditableInputConnection.java24
4 files changed, 51 insertions, 1 deletions
diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java
index 986ba38..b5df812 100644
--- a/core/java/com/android/internal/view/IInputConnectionWrapper.java
+++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java
@@ -24,6 +24,7 @@ import android.os.RemoteException;
import android.util.Log;
import android.view.KeyEvent;
import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.ExtractedTextRequest;
import android.view.inputmethod.InputConnection;
@@ -39,6 +40,7 @@ public class IInputConnectionWrapper extends IInputContext.Stub {
private static final int DO_GET_EXTRACTED_TEXT = 40;
private static final int DO_COMMIT_TEXT = 50;
private static final int DO_COMMIT_COMPLETION = 55;
+ private static final int DO_COMMIT_CORRECTION = 56;
private static final int DO_SET_SELECTION = 57;
private static final int DO_PERFORM_EDITOR_ACTION = 58;
private static final int DO_PERFORM_CONTEXT_MENU_ACTION = 59;
@@ -116,6 +118,10 @@ public class IInputConnectionWrapper extends IInputContext.Stub {
dispatchMessage(obtainMessageO(DO_COMMIT_COMPLETION, text));
}
+ public void commitCorrection(CorrectionInfo info) {
+ dispatchMessage(obtainMessageO(DO_COMMIT_CORRECTION, info));
+ }
+
public void setSelection(int start, int end) {
dispatchMessage(obtainMessageII(DO_SET_SELECTION, start, end));
}
@@ -309,6 +315,15 @@ public class IInputConnectionWrapper extends IInputContext.Stub {
ic.commitCompletion((CompletionInfo)msg.obj);
return;
}
+ case DO_COMMIT_CORRECTION: {
+ InputConnection ic = mInputConnection.get();
+ if (ic == null || !isActive()) {
+ Log.w(TAG, "commitCorrection on inactive InputConnection");
+ return;
+ }
+ ic.commitCorrection((CorrectionInfo)msg.obj);
+ return;
+ }
case DO_SET_COMPOSING_TEXT: {
InputConnection ic = mInputConnection.get();
if (ic == null || !isActive()) {
diff --git a/core/java/com/android/internal/view/IInputContext.aidl b/core/java/com/android/internal/view/IInputContext.aidl
index 333fc82..e00dd4e 100644
--- a/core/java/com/android/internal/view/IInputContext.aidl
+++ b/core/java/com/android/internal/view/IInputContext.aidl
@@ -19,6 +19,7 @@ package com.android.internal.view;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.ExtractedTextRequest;
import com.android.internal.view.IInputContextCallback;
@@ -48,6 +49,8 @@ import com.android.internal.view.IInputContextCallback;
void commitCompletion(in CompletionInfo completion);
+ void commitCorrection(in CorrectionInfo correction);
+
void setSelection(int start, int end);
void performEditorAction(int actionCode);
diff --git a/core/java/com/android/internal/view/InputConnectionWrapper.java b/core/java/com/android/internal/view/InputConnectionWrapper.java
index 08c3026..b13118a 100644
--- a/core/java/com/android/internal/view/InputConnectionWrapper.java
+++ b/core/java/com/android/internal/view/InputConnectionWrapper.java
@@ -22,6 +22,7 @@ import android.os.SystemClock;
import android.util.Log;
import android.view.KeyEvent;
import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest;
import android.view.inputmethod.InputConnection;
@@ -287,6 +288,15 @@ public class InputConnectionWrapper implements InputConnection {
}
}
+ public boolean commitCorrection(CorrectionInfo correctionInfo) {
+ try {
+ mIInputContext.commitCorrection(correctionInfo);
+ return true;
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
public boolean setSelection(int start, int end) {
try {
mIInputContext.setSelection(start, end);
diff --git a/core/java/com/android/internal/widget/EditableInputConnection.java b/core/java/com/android/internal/widget/EditableInputConnection.java
index ad329d1..6a1beb4 100644
--- a/core/java/com/android/internal/widget/EditableInputConnection.java
+++ b/core/java/com/android/internal/widget/EditableInputConnection.java
@@ -22,6 +22,7 @@ import android.text.method.KeyListener;
import android.util.Log;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest;
import android.widget.TextView;
@@ -37,6 +38,7 @@ public class EditableInputConnection extends BaseInputConnection {
mTextView = textview;
}
+ @Override
public Editable getEditable() {
TextView tv = mTextView;
if (tv != null) {
@@ -45,16 +47,19 @@ public class EditableInputConnection extends BaseInputConnection {
return null;
}
+ @Override
public boolean beginBatchEdit() {
mTextView.beginBatchEdit();
return true;
}
+ @Override
public boolean endBatchEdit() {
mTextView.endBatchEdit();
return true;
}
+ @Override
public boolean clearMetaKeyStates(int states) {
final Editable content = getEditable();
if (content == null) return false;
@@ -70,6 +75,7 @@ public class EditableInputConnection extends BaseInputConnection {
return true;
}
+ @Override
public boolean commitCompletion(CompletionInfo text) {
if (DEBUG) Log.v(TAG, "commitCompletion " + text);
mTextView.beginBatchEdit();
@@ -78,12 +84,26 @@ public class EditableInputConnection extends BaseInputConnection {
return true;
}
+ /**
+ * Calls the {@link TextView#onCommitCorrection} method of the associated TextView.
+ */
+ @Override
+ public boolean commitCorrection(CorrectionInfo correctionInfo) {
+ if (DEBUG) Log.v(TAG, "commitCorrection" + correctionInfo);
+ mTextView.beginBatchEdit();
+ mTextView.onCommitCorrection(correctionInfo);
+ mTextView.endBatchEdit();
+ return true;
+ }
+
+ @Override
public boolean performEditorAction(int actionCode) {
if (DEBUG) Log.v(TAG, "performEditorAction " + actionCode);
mTextView.onEditorAction(actionCode);
return true;
}
+ @Override
public boolean performContextMenuAction(int id) {
if (DEBUG) Log.v(TAG, "performContextMenuAction " + id);
mTextView.beginBatchEdit();
@@ -92,6 +112,7 @@ public class EditableInputConnection extends BaseInputConnection {
return true;
}
+ @Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (mTextView != null) {
ExtractedText et = new ExtractedText();
@@ -104,7 +125,8 @@ public class EditableInputConnection extends BaseInputConnection {
}
return null;
}
-
+
+ @Override
public boolean performPrivateCommand(String action, Bundle data) {
mTextView.onPrivateIMECommand(action, data);
return true;