Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a7ade6d authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Update hard keyboard status on closing input methods panel" into honeycomb

parents c623fff0 e385f0c7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -22,7 +22,8 @@
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:paddingBottom="28dip"
    android:orientation="vertical">
    android:orientation="vertical"
    android:visibility="gone">
    <View
        android:layout_width="match_parent"
        android:layout_height="0dip"
+22 −28
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import android.view.View;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
@@ -48,8 +47,8 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, View.OnClickListener,
        CompoundButton.OnCheckedChangeListener {
public class InputMethodsPanel extends LinearLayout implements StatusBarPanel,
        View.OnClickListener {
    private static final boolean DEBUG = TabletStatusBar.DEBUG;
    private static final String TAG = "InputMethodsPanel";

@@ -86,6 +85,7 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
    private View mConfigureImeShortcut;

    private class InputMethodComparator implements Comparator<InputMethodInfo> {
        @Override
        public int compare(InputMethodInfo imi1, InputMethodInfo imi2) {
            if (imi2 == null) return 0;
            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);
        mHardKeyboardSection = (LinearLayout) findViewById(R.id.hard_keyboard_section);
        mHardKeyboardSwitch = (Switch) findViewById(R.id.hard_keyboard_switch);
        mHardKeyboardSwitch.setOnCheckedChangeListener(this);
        mConfigureImeShortcut = findViewById(R.id.ime_settings_shortcut);
        mConfigureImeShortcut.setOnClickListener(this);
        // 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;
    }

    @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
    public void onClick(View view) {
        if (view == mConfigureImeShortcut) {
            showConfigureInputMethods();
            onFinishPanel(true);
            closePanel(true);
        }
    }

    @Override
    public void onCheckedChanged(CompoundButton button, boolean checked) {
        if (button == mHardKeyboardSwitch) {
    private void updateHardKeyboardEnabled() {
        if (mHardKeyboardAvailable) {
            final boolean checked = mHardKeyboardSwitch.isChecked();
            if (mHardKeyboardEnabled != checked) {
                mHardKeyboardEnabled = checked;
                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);
        if (mInputMethodSwitchButton != null) {
            mInputMethodSwitchButton.setIconImage(R.drawable.ic_sysbar_ime);
        }
        if (closeKeyboard) {
            mImm.hideSoftInputFromWindow(getWindowToken(), 0);
        }
        updateHardKeyboardEnabled();
    }

    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_CLEAR_TOP);
                    startActivity(intent);
                    onFinishPanel(true);
                    closePanel(true);
                }
            });
        } else {
@@ -256,7 +250,7 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, V
            public void onClick(View v) {
                Pair<InputMethodInfo, InputMethodSubtype> imiAndSubtype =
                        updateRadioButtonsByView(v);
                onFinishPanel(false);
                closePanel(false);
                setInputMethodAndSubtype(imiAndSubtype.first, imiAndSubtype.second);
            }
        });
+2 −11
Original line number Diff line number Diff line
@@ -19,12 +19,9 @@ package com.android.systemui.statusbar.tablet;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Map;
import java.util.IdentityHashMap;

import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.animation.AnimatorSet;
import android.app.ActivityManagerNative;
import android.app.PendingIntent;
import android.app.Notification;
@@ -36,7 +33,6 @@ import android.content.res.Resources;
import android.inputmethodservice.InputMethodService;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Handler;
import android.os.IBinder;
@@ -45,8 +41,6 @@ import android.os.RemoteException;
import android.os.ServiceManager;
import android.text.TextUtils;
import android.util.Slog;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.Gravity;
import android.view.IWindowManager;
import android.view.KeyEvent;
@@ -58,12 +52,10 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.WindowManagerImpl;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RemoteViews;
import android.widget.ScrollView;
import android.widget.TextSwitcher;
import android.widget.TextView;

import com.android.internal.statusbar.StatusBarIcon;
@@ -271,7 +263,6 @@ public class TabletStatusBar extends StatusBar implements
        mInputMethodsPanel = (InputMethodsPanel) View.inflate(context,
                R.layout.status_bar_input_methods_panel, null);
        mInputMethodsPanel.setHardKeyboardEnabledChangeListener(this);
        mInputMethodsPanel.setVisibility(View.GONE);
        mInputMethodsPanel.setOnTouchListener(new TouchOutsideListener(
                MSG_CLOSE_INPUT_METHODS_PANEL, mInputMethodsPanel));
        mInputMethodsPanel.setImeSwitchButton(mInputMethodSwitchButton);
@@ -565,11 +556,11 @@ public class TabletStatusBar extends StatusBar implements
                    break;
                case MSG_OPEN_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;
                case MSG_CLOSE_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;
                case MSG_SHOW_CHROME:
                    if (DEBUG) Slog.d(TAG, "hiding shadows (lights on)");