am 845d829d: Merge "Get rid of direct reference to KeyboardId from KeyboardLayoutState"

* commit '845d829d47aca3d03b6d7ac0f2d0ac97433cbabd':
  Get rid of direct reference to KeyboardId from KeyboardLayoutState
main
Tadashi G. Takaoka 2011-12-07 01:42:13 -08:00 committed by Android Git Automerger
commit 08ea7dfdd6
1 changed files with 24 additions and 26 deletions

View File

@ -106,6 +106,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
// TODO: Move this to KeyboardState.
private class KeyboardLayoutState { private class KeyboardLayoutState {
private boolean mIsValid; private boolean mIsValid;
private boolean mIsAlphabetMode; private boolean mIsAlphabetMode;
@ -113,43 +114,39 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private boolean mIsShifted; private boolean mIsShifted;
public void save() { public void save() {
if (mCurrentId == null) {
return;
}
mIsAlphabetMode = isAlphabetMode(); mIsAlphabetMode = isAlphabetMode();
if (mIsAlphabetMode) { if (mIsAlphabetMode) {
mIsShiftLocked = mState.isShiftLocked(); mIsShiftLocked = mState.isShiftLocked();
mIsShifted = !mIsShiftLocked && mState.isShiftedOrShiftLocked(); mIsShifted = !mIsShiftLocked && mState.isShiftedOrShiftLocked();
} else { } else {
mIsShiftLocked = false; mIsShiftLocked = false;
mIsShifted = mCurrentId.equals(mSymbolsShiftedKeyboardId); mIsShifted = isSymbolShifted();
} }
mIsValid = true; mIsValid = true;
} }
public KeyboardId getKeyboardId() { public void restore(boolean forceRestore) {
if (!mIsValid) return mMainKeyboardId; if (!mIsValid) {
if (forceRestore) {
if (mIsAlphabetMode) { setAlphabetKeyboard();
return mMainKeyboardId; }
} else { return;
return mIsShifted ? mSymbolsShiftedKeyboardId : mSymbolsKeyboardId;
} }
}
public void restore() {
if (!mIsValid) return;
mIsValid = false; mIsValid = false;
if (mIsAlphabetMode) { if (mIsAlphabetMode) {
final boolean isAlphabetMode = isAlphabetMode(); setAlphabetKeyboard();
final boolean isShiftLocked = isAlphabetMode && mState.isShiftLocked(); if (mIsShiftLocked) {
final boolean isShifted = !isShiftLocked && mState.isShiftedOrShiftLocked(); setShiftLocked(true);
if (mIsShiftLocked != isShiftLocked) { }
toggleCapsLock(); if (mIsShifted) {
} else if (mIsShifted != isShifted) { setShifted(MANUAL_SHIFT);
onPressShift(false); }
onReleaseShift(false); } else {
if (mIsShifted) {
setSymbolsShiftedKeyboard();
} else {
setSymbolsKeyboard();
} }
} }
} }
@ -207,8 +204,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
mSymbolsShiftedKeyboardId = getKeyboardId(editorInfo, true, true, settingsValues); mSymbolsShiftedKeyboardId = getKeyboardId(editorInfo, true, true, settingsValues);
mState.onLoadKeyboard(); mState.onLoadKeyboard();
mLayoutSwitchBackSymbols = mResources.getString(R.string.layout_switch_back_symbols); mLayoutSwitchBackSymbols = mResources.getString(R.string.layout_switch_back_symbols);
setKeyboard(getKeyboard(mSavedKeyboardState.getKeyboardId())); mSavedKeyboardState.restore(mCurrentId == null);
mSavedKeyboardState.restore();
} catch (RuntimeException e) { } catch (RuntimeException e) {
Log.w(TAG, "loading keyboard failed: " + mMainKeyboardId, e); Log.w(TAG, "loading keyboard failed: " + mMainKeyboardId, e);
LatinImeLogger.logOnException(mMainKeyboardId.toString(), e); LatinImeLogger.logOnException(mMainKeyboardId.toString(), e);
@ -216,7 +212,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
} }
public void saveKeyboardState() { public void saveKeyboardState() {
mSavedKeyboardState.save(); if (mCurrentId != null) {
mSavedKeyboardState.save();
}
} }
public void onFinishInputView() { public void onFinishInputView() {