am 2a7ade6d: Merge "Update hard keyboard status on closing input methods panel" into honeycomb

* commit '2a7ade6d7ca0fc962554628dbbb446fd20f0ba52':
  Update hard keyboard status on closing input methods panel
This commit is contained in:
Tadashi G. Takaoka
2011-01-31 18:52:32 -08:00
committed by Android Git Automerger
3 changed files with 26 additions and 40 deletions

View File

@ -22,7 +22,8 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:paddingBottom="28dip" android:paddingBottom="28dip"
android:orientation="vertical"> android:orientation="vertical"
android:visibility="gone">
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dip" android:layout_height="0dip"

View File

@ -34,7 +34,6 @@ import android.view.View;
import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import android.widget.CompoundButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RadioButton; import android.widget.RadioButton;
@ -48,8 +47,8 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeMap; import java.util.TreeMap;
public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, View.OnClickListener, public class InputMethodsPanel extends LinearLayout implements StatusBarPanel,
CompoundButton.OnCheckedChangeListener { View.OnClickListener {
private static final boolean DEBUG = TabletStatusBar.DEBUG; private static final boolean DEBUG = TabletStatusBar.DEBUG;
private static final String TAG = "InputMethodsPanel"; private static final String TAG = "InputMethodsPanel";
@ -86,6 +85,7 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
private View mConfigureImeShortcut; private View mConfigureImeShortcut;
private class InputMethodComparator implements Comparator<InputMethodInfo> { private class InputMethodComparator implements Comparator<InputMethodInfo> {
@Override
public int compare(InputMethodInfo imi1, InputMethodInfo imi2) { public int compare(InputMethodInfo imi1, InputMethodInfo imi2) {
if (imi2 == null) return 0; if (imi2 == null) return 0;
if (imi1 == null) return 1; if (imi1 == null) return 1;
@ -142,7 +142,6 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
mInputMethodMenuList = (LinearLayout) findViewById(R.id.input_method_menu_list); mInputMethodMenuList = (LinearLayout) findViewById(R.id.input_method_menu_list);
mHardKeyboardSection = (LinearLayout) findViewById(R.id.hard_keyboard_section); mHardKeyboardSection = (LinearLayout) findViewById(R.id.hard_keyboard_section);
mHardKeyboardSwitch = (Switch) findViewById(R.id.hard_keyboard_switch); mHardKeyboardSwitch = (Switch) findViewById(R.id.hard_keyboard_switch);
mHardKeyboardSwitch.setOnCheckedChangeListener(this);
mConfigureImeShortcut = findViewById(R.id.ime_settings_shortcut); mConfigureImeShortcut = findViewById(R.id.ime_settings_shortcut);
mConfigureImeShortcut.setOnClickListener(this); mConfigureImeShortcut.setOnClickListener(this);
// TODO: If configurations for IME are not changed, do not update // TODO: If configurations for IME are not changed, do not update
@ -155,34 +154,17 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
return false; return false;
} }
@Override
protected void onVisibilityChanged(View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
if (changedView == this) {
if (visibility == View.VISIBLE) {
updateUiElements();
if (mInputMethodSwitchButton != null) {
mInputMethodSwitchButton.setIconImage(R.drawable.ic_sysbar_ime_pressed);
}
} else {
if (mInputMethodSwitchButton != null) {
mInputMethodSwitchButton.setIconImage(R.drawable.ic_sysbar_ime);
}
}
}
}
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (view == mConfigureImeShortcut) { if (view == mConfigureImeShortcut) {
showConfigureInputMethods(); showConfigureInputMethods();
onFinishPanel(true); closePanel(true);
} }
} }
@Override private void updateHardKeyboardEnabled() {
public void onCheckedChanged(CompoundButton button, boolean checked) { if (mHardKeyboardAvailable) {
if (button == mHardKeyboardSwitch) { final boolean checked = mHardKeyboardSwitch.isChecked();
if (mHardKeyboardEnabled != checked) { if (mHardKeyboardEnabled != checked) {
mHardKeyboardEnabled = checked; mHardKeyboardEnabled = checked;
if (mHardKeyboardEnabledChangeListener != null) if (mHardKeyboardEnabledChangeListener != null)
@ -191,11 +173,23 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
} }
} }
private void onFinishPanel(boolean closeKeyboard) { public void openPanel() {
setVisibility(View.VISIBLE);
updateUiElements();
if (mInputMethodSwitchButton != null) {
mInputMethodSwitchButton.setIconImage(R.drawable.ic_sysbar_ime_pressed);
}
}
public void closePanel(boolean closeKeyboard) {
setVisibility(View.GONE); setVisibility(View.GONE);
if (mInputMethodSwitchButton != null) {
mInputMethodSwitchButton.setIconImage(R.drawable.ic_sysbar_ime);
}
if (closeKeyboard) { if (closeKeyboard) {
mImm.hideSoftInputFromWindow(getWindowToken(), 0); mImm.hideSoftInputFromWindow(getWindowToken(), 0);
} }
updateHardKeyboardEnabled();
} }
private void startActivity(Intent intent) { private void startActivity(Intent intent) {
@ -241,7 +235,7 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
| Intent.FLAG_ACTIVITY_CLEAR_TOP); | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent); startActivity(intent);
onFinishPanel(true); closePanel(true);
} }
}); });
} else { } else {
@ -256,7 +250,7 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
public void onClick(View v) { public void onClick(View v) {
Pair<InputMethodInfo, InputMethodSubtype> imiAndSubtype = Pair<InputMethodInfo, InputMethodSubtype> imiAndSubtype =
updateRadioButtonsByView(v); updateRadioButtonsByView(v);
onFinishPanel(false); closePanel(false);
setInputMethodAndSubtype(imiAndSubtype.first, imiAndSubtype.second); setInputMethodAndSubtype(imiAndSubtype.first, imiAndSubtype.second);
} }
}); });

View File

@ -19,12 +19,9 @@ package com.android.systemui.statusbar.tablet;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map;
import java.util.IdentityHashMap;
import android.animation.LayoutTransition; import android.animation.LayoutTransition;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.animation.AnimatorSet;
import android.app.ActivityManagerNative; import android.app.ActivityManagerNative;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Notification; import android.app.Notification;
@ -36,7 +33,6 @@ import android.content.res.Resources;
import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService;
import android.graphics.PixelFormat; import android.graphics.PixelFormat;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.LayerDrawable;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
@ -45,8 +41,6 @@ import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Slog; import android.util.Slog;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.Gravity; import android.view.Gravity;
import android.view.IWindowManager; import android.view.IWindowManager;
import android.view.KeyEvent; import android.view.KeyEvent;
@ -58,12 +52,10 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.WindowManagerImpl; import android.view.WindowManagerImpl;
import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextSwitcher;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon;
@ -271,7 +263,6 @@ public class TabletStatusBar extends StatusBar implements
mInputMethodsPanel = (InputMethodsPanel) View.inflate(context, mInputMethodsPanel = (InputMethodsPanel) View.inflate(context,
R.layout.status_bar_input_methods_panel, null); R.layout.status_bar_input_methods_panel, null);
mInputMethodsPanel.setHardKeyboardEnabledChangeListener(this); mInputMethodsPanel.setHardKeyboardEnabledChangeListener(this);
mInputMethodsPanel.setVisibility(View.GONE);
mInputMethodsPanel.setOnTouchListener(new TouchOutsideListener( mInputMethodsPanel.setOnTouchListener(new TouchOutsideListener(
MSG_CLOSE_INPUT_METHODS_PANEL, mInputMethodsPanel)); MSG_CLOSE_INPUT_METHODS_PANEL, mInputMethodsPanel));
mInputMethodsPanel.setImeSwitchButton(mInputMethodSwitchButton); mInputMethodsPanel.setImeSwitchButton(mInputMethodSwitchButton);
@ -565,11 +556,11 @@ public class TabletStatusBar extends StatusBar implements
break; break;
case MSG_OPEN_INPUT_METHODS_PANEL: case MSG_OPEN_INPUT_METHODS_PANEL:
if (DEBUG) Slog.d(TAG, "opening input methods panel"); if (DEBUG) Slog.d(TAG, "opening input methods panel");
if (mInputMethodsPanel != null) mInputMethodsPanel.setVisibility(View.VISIBLE); if (mInputMethodsPanel != null) mInputMethodsPanel.openPanel();
break; break;
case MSG_CLOSE_INPUT_METHODS_PANEL: case MSG_CLOSE_INPUT_METHODS_PANEL:
if (DEBUG) Slog.d(TAG, "closing input methods panel"); if (DEBUG) Slog.d(TAG, "closing input methods panel");
if (mInputMethodsPanel != null) mInputMethodsPanel.setVisibility(View.GONE); if (mInputMethodsPanel != null) mInputMethodsPanel.closePanel(false);
break; break;
case MSG_SHOW_CHROME: case MSG_SHOW_CHROME:
if (DEBUG) Slog.d(TAG, "hiding shadows (lights on)"); if (DEBUG) Slog.d(TAG, "hiding shadows (lights on)");