From 9ca4b4377c6c94cca181c57bd9c784386223d274 Mon Sep 17 00:00:00 2001 From: satok Date: Fri, 7 Oct 2011 15:08:19 +0900 Subject: [PATCH] Add a hidden flag for the auto correction indicator in SuggestionSpan Bug: 5245468 Change-Id: Ic111554da86fefd47dd9a26c1bd41e4ee57dc552 --- .../android/text/style/SuggestionSpan.java | 32 +++++++++++++++++-- core/res/res/values/attrs.xml | 3 ++ core/res/res/values/styles.xml | 4 +++ core/res/res/values/themes.xml | 1 + 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/core/java/android/text/style/SuggestionSpan.java b/core/java/android/text/style/SuggestionSpan.java index 1379dd2d8acc2..6e950165733a9 100644 --- a/core/java/android/text/style/SuggestionSpan.java +++ b/core/java/android/text/style/SuggestionSpan.java @@ -56,6 +56,14 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { */ public static final int FLAG_MISSPELLED = 0x0002; + /** + * Sets this flag if the auto correction is about to be applied to a word/text + * that the user is typing/composing. This type of suggestion is rendered differently + * to indicate the auto correction is happening. + * @hide + */ + public static final int FLAG_AUTO_CORRECTION = 0x0004; + public static final String ACTION_SUGGESTION_PICKED = "android.text.style.SUGGESTION_PICKED"; public static final String SUGGESTION_SPAN_PICKED_AFTER = "after"; public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before"; @@ -82,6 +90,9 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { private float mMisspelledUnderlineThickness; private int mMisspelledUnderlineColor; + private float mAutoCorrectionUnderlineThickness; + private int mAutoCorrectionUnderlineColor; + /* * TODO: If switching IME is required, needs to add parameters for ids of InputMethodInfo * and InputMethodSubtype. @@ -145,14 +156,21 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { com.android.internal.R.styleable.SuggestionSpan_textUnderlineColor, Color.BLACK); defStyle = com.android.internal.R.attr.textAppearanceEasyCorrectSuggestion; - typedArray = context.obtainStyledAttributes( null, com.android.internal.R.styleable.SuggestionSpan, defStyle, 0); - mEasyCorrectUnderlineThickness = typedArray.getDimension( com.android.internal.R.styleable.SuggestionSpan_textUnderlineThickness, 0); mEasyCorrectUnderlineColor = typedArray.getColor( com.android.internal.R.styleable.SuggestionSpan_textUnderlineColor, Color.BLACK); + + defStyle = com.android.internal.R.attr.textAppearanceAutoCorrectionSuggestion; + typedArray = context.obtainStyledAttributes( + null, com.android.internal.R.styleable.SuggestionSpan, defStyle, 0); + mAutoCorrectionUnderlineThickness = typedArray.getDimension( + com.android.internal.R.styleable.SuggestionSpan_textUnderlineThickness, 0); + mAutoCorrectionUnderlineColor = typedArray.getColor( + com.android.internal.R.styleable.SuggestionSpan_textUnderlineColor, Color.BLACK); + } public SuggestionSpan(Parcel src) { @@ -165,6 +183,8 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { mEasyCorrectUnderlineThickness = src.readFloat(); mMisspelledUnderlineColor = src.readInt(); mMisspelledUnderlineThickness = src.readFloat(); + mAutoCorrectionUnderlineColor = src.readInt(); + mAutoCorrectionUnderlineThickness = src.readFloat(); } /** @@ -218,6 +238,8 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { dest.writeFloat(mEasyCorrectUnderlineThickness); dest.writeInt(mMisspelledUnderlineColor); dest.writeFloat(mMisspelledUnderlineThickness); + dest.writeInt(mAutoCorrectionUnderlineColor); + dest.writeFloat(mAutoCorrectionUnderlineThickness); } @Override @@ -261,6 +283,7 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { public void updateDrawState(TextPaint tp) { final boolean misspelled = (mFlags & FLAG_MISSPELLED) != 0; final boolean easy = (mFlags & FLAG_EASY_CORRECT) != 0; + final boolean autoCorrection = (mFlags & FLAG_AUTO_CORRECTION) != 0; if (easy) { if (!misspelled) { tp.setUnderlineText(mEasyCorrectUnderlineColor, mEasyCorrectUnderlineThickness); @@ -269,6 +292,8 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { // than just easy, do not apply misspelled if an easy (or a mispelled) has been set tp.setUnderlineText(mMisspelledUnderlineColor, mMisspelledUnderlineThickness); } + } else if (autoCorrection) { + tp.setUnderlineText(mAutoCorrectionUnderlineColor, mAutoCorrectionUnderlineThickness); } } @@ -281,12 +306,15 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { // The order here should match what is used in updateDrawState final boolean misspelled = (mFlags & FLAG_MISSPELLED) != 0; final boolean easy = (mFlags & FLAG_EASY_CORRECT) != 0; + final boolean autoCorrection = (mFlags & FLAG_AUTO_CORRECTION) != 0; if (easy) { if (!misspelled) { return mEasyCorrectUnderlineColor; } else { return mMisspelledUnderlineColor; } + } else if (autoCorrection) { + return mAutoCorrectionUnderlineColor; } return 0; } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index a27abb3ba758d..6c7a981845701 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -158,6 +158,9 @@ + + + diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 1f1dc262bbf34..20af731358bb7 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -257,6 +257,10 @@ please see styles_device_defaults.xml. @color/holo_red_light + +