Move final attributes to SettingsValues (B2)

Bug: 6675475
Bug: 6677394
Change-Id: I4a26efb9226d3f909f331c4d2e47cd83a05c011e
main
Jean Chalard 2012-06-12 09:35:51 +09:00
parent 6ebd93951f
commit dca729fddd
2 changed files with 62 additions and 36 deletions

View File

@ -872,33 +872,32 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (ProductionFlag.IS_EXPERIMENTAL) {
ResearchLogger.latinIME_onDisplayCompletions(applicationSpecifiedCompletions);
}
if (null != mInputAttributes && mInputAttributes.mApplicationSpecifiedCompletionOn) {
mApplicationSpecifiedCompletions = applicationSpecifiedCompletions;
if (applicationSpecifiedCompletions == null) {
clearSuggestions();
return;
}
final ArrayList<SuggestedWords.SuggestedWordInfo> applicationSuggestedWords =
SuggestedWords.getFromApplicationSpecifiedCompletions(
applicationSpecifiedCompletions);
final SuggestedWords suggestedWords = new SuggestedWords(
applicationSuggestedWords,
false /* typedWordValid */,
false /* hasAutoCorrectionCandidate */,
false /* allowsToBeAutoCorrected */,
false /* isPunctuationSuggestions */,
false /* isObsoleteSuggestions */,
false /* isPrediction */);
// When in fullscreen mode, show completions generated by the application
final boolean isAutoCorrection = false;
setSuggestions(suggestedWords, isAutoCorrection);
setAutoCorrectionIndicator(isAutoCorrection);
// TODO: is this the right thing to do? What should we auto-correct to in
// this case? This says to keep whatever the user typed.
mWordComposer.setAutoCorrection(mWordComposer.getTypedWord());
setSuggestionStripShown(true);
if (!mCurrentSettings.isApplicationSpecifiedCompletionsOn()) return;
mApplicationSpecifiedCompletions = applicationSpecifiedCompletions;
if (applicationSpecifiedCompletions == null) {
clearSuggestions();
return;
}
final ArrayList<SuggestedWords.SuggestedWordInfo> applicationSuggestedWords =
SuggestedWords.getFromApplicationSpecifiedCompletions(
applicationSpecifiedCompletions);
final SuggestedWords suggestedWords = new SuggestedWords(
applicationSuggestedWords,
false /* typedWordValid */,
false /* hasAutoCorrectionCandidate */,
false /* allowsToBeAutoCorrected */,
false /* isPunctuationSuggestions */,
false /* isObsoleteSuggestions */,
false /* isPrediction */);
// When in fullscreen mode, show completions generated by the application
final boolean isAutoCorrection = false;
setSuggestions(suggestedWords, isAutoCorrection);
setAutoCorrectionIndicator(isAutoCorrection);
// TODO: is this the right thing to do? What should we auto-correct to in
// this case? This says to keep whatever the user typed.
mWordComposer.setAutoCorrection(mWordComposer.getTypedWord());
setSuggestionStripShown(true);
}
private void setSuggestionStripShownInternal(boolean shown, boolean needsInputViewShown) {
@ -1277,8 +1276,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
break;
default:
if (primaryCode == Keyboard.CODE_TAB
&& mInputAttributes.mEditorAction == EditorInfo.IME_ACTION_NEXT) {
if (primaryCode == Keyboard.CODE_TAB && mCurrentSettings.isEditorActionNext()) {
performEditorAction(EditorInfo.IME_ACTION_NEXT);
break;
}
@ -1628,7 +1626,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
public boolean isSuggestionsRequested() {
// TODO: move this method to mCurrentSettings
return (null != mInputAttributes && mInputAttributes.mIsSettingsSuggestionStripOn)
return mCurrentSettings.isSuggestionStripRequestedByTextField()
&& (mCurrentSettings.isCorrectionOn()
|| mCurrentSettings.isSuggestionStripVisibleInOrientation(mDisplayOrientation));
}
@ -1645,7 +1643,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
return true;
if (!mCurrentSettings.isSuggestionStripVisibleInOrientation(mDisplayOrientation))
return false;
if (null != mInputAttributes && mInputAttributes.mApplicationSpecifiedCompletionOn)
if (mCurrentSettings.isApplicationSpecifiedCompletionsOn())
return true;
return isSuggestionsRequested();
}
@ -1827,7 +1825,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
}
if ((null != mInputAttributes && mInputAttributes.mApplicationSpecifiedCompletionOn)
if (mCurrentSettings.isApplicationSpecifiedCompletionsOn()
&& mApplicationSpecifiedCompletions != null
&& index >= 0 && index < mApplicationSpecifiedCompletions.length) {
if (mSuggestionsView != null) {
@ -2224,13 +2222,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
final int keyboardMode = keyboard != null ? keyboard.mId.mMode : -1;
p.println(" Keyboard mode = " + keyboardMode);
p.println(" mIsSuggestionsRequested=" + mInputAttributes.mIsSettingsSuggestionStripOn);
p.println(" mIsSuggestionsStripRequestedByTextField = "
+ mCurrentSettings.isSuggestionStripRequestedByTextField());
p.println(" mCorrectionMode=" + mCurrentSettings.mCorrectionMode);
p.println(" isComposingWord=" + mWordComposer.isComposingWord());
p.println(" isCorrectionOn=" + mCurrentSettings.isCorrectionOn());
p.println(" mSoundOn=" + mCurrentSettings.mSoundOn);
p.println(" mVibrateOn=" + mCurrentSettings.mVibrateOn);
p.println(" mKeyPreviewPopupOn=" + mCurrentSettings.mKeyPreviewPopupOn);
p.println(" mInputAttributes=" + mInputAttributes.toString());
p.println(" inputAttributes=" + mCurrentSettings.getInputAttributesDebugString());
}
}

View File

@ -87,6 +87,9 @@ public class SettingsValues {
private final float mKeypressSoundVolumeRawValue;
private final InputMethodSubtype[] mAdditionalSubtypes;
// From the input box
private final InputAttributes mInputAttributes;
// Deduced settings
public final int mKeypressVibrationDuration;
public final float mFxVolume;
@ -125,6 +128,13 @@ public class SettingsValues {
mSymbolsExcludedFromWordSeparators, res);
mHintToSaveText = context.getText(R.string.hint_add_to_dictionary);
// Store the input attributes
if (null == inputAttributes) {
mInputAttributes = new InputAttributes(null, false /* isFullscreenMode */);
} else {
mInputAttributes = inputAttributes;
}
// Get the settings preferences
mAutoCap = prefs.getBoolean(Settings.PREF_AUTO_CAP, true);
mVibrateOn = isVibrateOn(context, prefs, res);
@ -167,7 +177,7 @@ public class SettingsValues {
mVoiceKeyOnMain = mVoiceMode != null && mVoiceMode.equals(voiceModeMain);
mAdditionalSubtypes = AdditionalSubtype.createAdditionalSubtypesArray(
getPrefAdditionalSubtypes(prefs, res));
mCorrectionMode = createCorrectionMode(inputAttributes);
mCorrectionMode = createCorrectionMode();
mSuggestionVisibility = createSuggestionVisibility(res);
}
@ -202,9 +212,9 @@ public class SettingsValues {
return wordSeparators;
}
private int createCorrectionMode(final InputAttributes inputAttributes) {
private int createCorrectionMode() {
final boolean shouldAutoCorrect = mAutoCorrectEnabled
&& (null == inputAttributes || !inputAttributes.mInputTypeNoAutoCorrect);
&& !mInputAttributes.mInputTypeNoAutoCorrect;
if (mBigramSuggestionEnabled && shouldAutoCorrect) return Suggest.CORRECTION_FULL_BIGRAM;
return shouldAutoCorrect ? Suggest.CORRECTION_FULL : Suggest.CORRECTION_NONE;
}
@ -226,6 +236,18 @@ public class SettingsValues {
res.getBoolean(R.bool.config_default_vibration_enabled));
}
public boolean isApplicationSpecifiedCompletionsOn() {
return mInputAttributes.mApplicationSpecifiedCompletionOn;
}
public boolean isEditorActionNext() {
return mInputAttributes.mEditorAction == EditorInfo.IME_ACTION_NEXT;
}
public boolean isSuggestionStripRequestedByTextField() {
return mInputAttributes.mIsSettingsSuggestionStripOn;
}
public boolean isCorrectionOn() {
return mCorrectionMode == Suggest.CORRECTION_FULL
|| mCorrectionMode == Suggest.CORRECTION_FULL_BIGRAM;
@ -413,4 +435,9 @@ public class SettingsValues {
final String newStr = Utils.localeAndTimeHashMapToStr(map);
prefs.edit().putString(Settings.PREF_LAST_USER_DICTIONARY_WRITE_TIME, newStr).apply();
}
// For debug.
public String getInputAttributesDebugString() {
return mInputAttributes.toString();
}
}