use of android.text.Editable in project android_frameworks_base by ResurrectionRemix.
the class TextView method setExtractedText.
/**
* Apply to this text view the given extracted text, as previously
* returned by {@link #extractText(ExtractedTextRequest, ExtractedText)}.
*/
public void setExtractedText(ExtractedText text) {
Editable content = getEditableText();
if (text.text != null) {
if (content == null) {
setText(text.text, TextView.BufferType.EDITABLE);
} else {
int start = 0;
int end = content.length();
if (text.partialStartOffset >= 0) {
final int N = content.length();
start = text.partialStartOffset;
if (start > N)
start = N;
end = text.partialEndOffset;
if (end > N)
end = N;
}
removeParcelableSpans(content, start, end);
if (TextUtils.equals(content.subSequence(start, end), text.text)) {
if (text.text instanceof Spanned) {
// OK to copy spans only.
TextUtils.copySpansFrom((Spanned) text.text, 0, end - start, Object.class, content, start);
}
} else {
content.replace(start, end, text.text);
}
}
}
// Now set the selection position... make sure it is in range, to
// avoid crashes. If this is a partial update, it is possible that
// the underlying text may have changed, causing us problems here.
// Also we just don't want to trust clients to do the right thing.
Spannable sp = (Spannable) getText();
final int N = sp.length();
int start = text.selectionStart;
if (start < 0)
start = 0;
else if (start > N)
start = N;
int end = text.selectionEnd;
if (end < 0)
end = 0;
else if (end > N)
end = N;
Selection.setSelection(sp, start, end);
// Finally, update the selection mode.
if ((text.flags & ExtractedText.FLAG_SELECTING) != 0) {
MetaKeyKeyListener.startSelecting(this, sp);
} else {
MetaKeyKeyListener.stopSelecting(this, sp);
}
}
use of android.text.Editable in project android_frameworks_base by ResurrectionRemix.
the class AbsListView method onSaveInstanceState.
@Override
public Parcelable onSaveInstanceState() {
/*
* This doesn't really make sense as the place to dismiss the
* popups, but there don't seem to be any other useful hooks
* that happen early enough to keep from getting complaints
* about having leaked the window.
*/
dismissPopup();
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
if (mPendingSync != null) {
// Just keep what we last restored.
ss.selectedId = mPendingSync.selectedId;
ss.firstId = mPendingSync.firstId;
ss.viewTop = mPendingSync.viewTop;
ss.position = mPendingSync.position;
ss.height = mPendingSync.height;
ss.filter = mPendingSync.filter;
ss.inActionMode = mPendingSync.inActionMode;
ss.checkedItemCount = mPendingSync.checkedItemCount;
ss.checkState = mPendingSync.checkState;
ss.checkIdState = mPendingSync.checkIdState;
return ss;
}
boolean haveChildren = getChildCount() > 0 && mItemCount > 0;
long selectedId = getSelectedItemId();
ss.selectedId = selectedId;
ss.height = getHeight();
if (selectedId >= 0) {
// Remember the selection
ss.viewTop = mSelectedTop;
ss.position = getSelectedItemPosition();
ss.firstId = INVALID_POSITION;
} else {
if (haveChildren && mFirstPosition > 0) {
// Remember the position of the first child.
// We only do this if we are not currently at the top of
// the list, for two reasons:
// (1) The list may be in the process of becoming empty, in
// which case mItemCount may not be 0, but if we try to
// ask for any information about position 0 we will crash.
// (2) Being "at the top" seems like a special case, anyway,
// and the user wouldn't expect to end up somewhere else when
// they revisit the list even if its content has changed.
View v = getChildAt(0);
ss.viewTop = v.getTop();
int firstPos = mFirstPosition;
if (firstPos >= mItemCount) {
firstPos = mItemCount - 1;
}
ss.position = firstPos;
ss.firstId = mAdapter.getItemId(firstPos);
} else {
ss.viewTop = 0;
ss.firstId = INVALID_POSITION;
ss.position = 0;
}
}
ss.filter = null;
if (mFiltered) {
final EditText textFilter = mTextFilter;
if (textFilter != null) {
Editable filterText = textFilter.getText();
if (filterText != null) {
ss.filter = filterText.toString();
}
}
}
ss.inActionMode = mChoiceMode == CHOICE_MODE_MULTIPLE_MODAL && mChoiceActionMode != null;
if (mCheckStates != null) {
ss.checkState = mCheckStates.clone();
}
if (mCheckedIdStates != null) {
final LongSparseArray<Integer> idState = new LongSparseArray<Integer>();
final int count = mCheckedIdStates.size();
for (int i = 0; i < count; i++) {
idState.put(mCheckedIdStates.keyAt(i), mCheckedIdStates.valueAt(i));
}
ss.checkIdState = idState;
}
ss.checkedItemCount = mCheckedItemCount;
if (mRemoteAdapter != null) {
mRemoteAdapter.saveRemoteViewsCache();
}
return ss;
}
use of android.text.Editable in project android_frameworks_base by ResurrectionRemix.
the class EditableInputConnection method clearMetaKeyStates.
@Override
public boolean clearMetaKeyStates(int states) {
final Editable content = getEditable();
if (content == null)
return false;
KeyListener kl = mTextView.getKeyListener();
if (kl != null) {
try {
kl.clearMetaKeyState(mTextView, content, states);
} catch (AbstractMethodError e) {
// This is an old listener that doesn't implement the
// new method.
}
}
return true;
}
use of android.text.Editable in project android_frameworks_base by ResurrectionRemix.
the class BackupRestoreConfirmation method monitorEncryptionPassword.
private void monitorEncryptionPassword() {
mAllowButton.setEnabled(false);
mEncPassword.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
mAllowButton.setEnabled(mEncPassword.getText().length() > 0);
}
});
}
use of android.text.Editable in project android_frameworks_base by ResurrectionRemix.
the class DialerFilter method clearText.
/**
* Clears both the digits and the filter text.
*/
public void clearText() {
Editable text;
text = mLetters.getText();
text.clear();
text = mDigits.getText();
text.clear();
// Reset the mode based on the hardware type
if (mIsQwerty) {
setMode(DIGITS_AND_LETTERS);
} else {
setMode(DIGITS_ONLY);
}
}
Aggregations