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

Commit 7f6d1f2d authored by satok's avatar satok Committed by Android Git Automerger
Browse files

am e2f32bc9: am 71353f36: Merge "Update input method panel when packages are...

am e2f32bc9: am 71353f36: Merge "Update input method panel when packages are changed." into honeycomb

* commit 'e2f32bc9':
  Update input method panel when packages are changed.
parents e9a7d0df e2f32bc9
Loading
Loading
Loading
Loading
+46 −3
Original line number Original line Diff line number Diff line
@@ -16,8 +16,10 @@


package com.android.systemui.statusbar.tablet;
package com.android.systemui.statusbar.tablet;


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.os.IBinder;
import android.os.IBinder;
@@ -49,14 +51,24 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, O
    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";


    private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            onPackageChanged();
        }
    };

    private final InputMethodManager mImm;
    private final InputMethodManager mImm;
    private final IntentFilter mIntentFilter = new IntentFilter();
    private final HashMap<View, Pair<InputMethodInfo, InputMethodSubtype>> mRadioViewAndImiMap =
            new HashMap<View, Pair<InputMethodInfo, InputMethodSubtype>>();
    private final TreeMap<InputMethodInfo, List<InputMethodSubtype>>
    private final TreeMap<InputMethodInfo, List<InputMethodSubtype>>
            mEnabledInputMethodAndSubtypesCache =
            mEnabledInputMethodAndSubtypesCache =
                    new TreeMap<InputMethodInfo, List<InputMethodSubtype>>(
                    new TreeMap<InputMethodInfo, List<InputMethodSubtype>>(
                            new InputMethodComparator());
                            new InputMethodComparator());
    private final HashMap<View, Pair<InputMethodInfo, InputMethodSubtype>> mRadioViewAndImiMap =
            new HashMap<View, Pair<InputMethodInfo, InputMethodSubtype>>();


    private boolean mAttached = false;
    private boolean mPackageChanged = false;
    private Context mContext;
    private Context mContext;
    private IBinder mToken;
    private IBinder mToken;
    private InputMethodButton mInputMethodSwitchButton;
    private InputMethodButton mInputMethodSwitchButton;
@@ -88,6 +100,28 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, O
        super(context, attrs, defStyle);
        super(context, attrs, defStyle);
        mContext = context;
        mContext = context;
        mImm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        mImm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        mIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        mIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
        mIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        mIntentFilter.addDataScheme("package");
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        if (mAttached) {
            getContext().unregisterReceiver(mBroadcastReceiver);
            mAttached = false;
        }
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        if (!mAttached) {
            getContext().registerReceiver(mBroadcastReceiver, mIntentFilter);
            mAttached = true;
        }
    }
    }


    @Override
    @Override
@@ -302,7 +336,8 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, O
        String newEnabledIMIs = Settings.Secure.getString(
        String newEnabledIMIs = Settings.Secure.getString(
                mContext.getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS);
                mContext.getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS);
        if (mEnabledInputMethodAndSubtypesCacheStr == null
        if (mEnabledInputMethodAndSubtypesCacheStr == null
                || !mEnabledInputMethodAndSubtypesCacheStr.equals(newEnabledIMIs)) {
                || !mEnabledInputMethodAndSubtypesCacheStr.equals(newEnabledIMIs)
                || mPackageChanged) {
            mEnabledInputMethodAndSubtypesCache.clear();
            mEnabledInputMethodAndSubtypesCache.clear();
            final List<InputMethodInfo> imis = mImm.getEnabledInputMethodList();
            final List<InputMethodInfo> imis = mImm.getEnabledInputMethodList();
            for (InputMethodInfo imi: imis) {
            for (InputMethodInfo imi: imis) {
@@ -310,6 +345,7 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, O
                        mImm.getEnabledInputMethodSubtypeList(imi, true));
                        mImm.getEnabledInputMethodSubtypeList(imi, true));
            }
            }
            mEnabledInputMethodAndSubtypesCacheStr = newEnabledIMIs;
            mEnabledInputMethodAndSubtypesCacheStr = newEnabledIMIs;
            mPackageChanged = false;
        }
        }
        return mEnabledInputMethodAndSubtypesCache;
        return mEnabledInputMethodAndSubtypesCache;
    }
    }
@@ -376,4 +412,11 @@ public class InputMethodsPanel extends LinearLayout implements StatusBarPanel, O
        }
        }
        return null;
        return null;
    }
    }

    private void onPackageChanged() {
        if (DEBUG) {
            Log.d(TAG, "onPackageChanged.");
        }
        mPackageChanged = true;
    }
}
}