diff options
author | John Spurlock <jspurlock@google.com> | 2015-04-07 14:01:28 -0400 |
---|---|---|
committer | John Spurlock <jspurlock@google.com> | 2015-04-07 14:15:40 -0400 |
commit | cd863ad094f38ab6b2339bb7961a34ae11414412 (patch) | |
tree | 4a825f96f6ca80967fe4a14073237894850faff4 /packages | |
parent | 9e0f8deae851ec917613256dfbe899ae5c1b1ca5 (diff) | |
download | frameworks_base-cd863ad094f38ab6b2339bb7961a34ae11414412.zip frameworks_base-cd863ad094f38ab6b2339bb7961a34ae11414412.tar.gz frameworks_base-cd863ad094f38ab6b2339bb7961a34ae11414412.tar.bz2 |
ZenTile: Don't broadcast intents in-process.
Bug: 20091931
Change-Id: Id35691a56c9fd279a9fb271525e193cefdc44c7f
Diffstat (limited to 'packages')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java | 32 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java | 4 |
2 files changed, 23 insertions, 13 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java index ff6a45a..64730c2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.provider.Settings; import android.provider.Settings.Global; import android.view.LayoutInflater; @@ -46,20 +47,17 @@ public class DndTile extends QSTile<QSTile.BooleanState> { private final DndDetailAdapter mDetailAdapter; private boolean mListening; - private boolean mVisible; private boolean mShowingDetail; public DndTile(Host host) { super(host); mController = host.getZenModeController(); mDetailAdapter = new DndDetailAdapter(); - mVisible = isVisible(host.getContext()); mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_SET_VISIBLE)); } public static void setVisible(Context context, boolean visible) { - context.sendBroadcast(new Intent(DndTile.ACTION_SET_VISIBLE) - .putExtra(DndTile.EXTRA_VISIBLE, visible)); + getSharedPrefs(context).edit().putBoolean(PREF_KEY_VISIBLE, visible).commit(); } public static boolean isVisible(Context context) { @@ -98,7 +96,7 @@ public class DndTile extends QSTile<QSTile.BooleanState> { protected void handleUpdateState(BooleanState state, Object arg) { final int zen = arg instanceof Integer ? (Integer) arg : mController.getZen(); state.value = zen != Global.ZEN_MODE_OFF; - state.visible = mVisible; + state.visible = isVisible(mContext); switch (zen) { case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS: state.icon = ResourceIcon.get(R.drawable.ic_qs_dnd_on); @@ -145,26 +143,38 @@ public class DndTile extends QSTile<QSTile.BooleanState> { mListening = listening; if (mListening) { mController.addCallback(mZenCallback); + getSharedPrefs(mContext).registerOnSharedPreferenceChangeListener(mPrefListener); } else { mController.removeCallback(mZenCallback); + getSharedPrefs(mContext).unregisterOnSharedPreferenceChangeListener(mPrefListener); } } + private static SharedPreferences getSharedPrefs(Context context) { + return context.getSharedPreferences(context.getPackageName(), 0); + } + + private final OnSharedPreferenceChangeListener mPrefListener + = new OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (PREF_KEY_COMBINED_ICON.equals(key) || PREF_KEY_VISIBLE.equals(key)) { + refreshState(); + } + } + }; + private final ZenModeController.Callback mZenCallback = new ZenModeController.Callback() { public void onZenChanged(int zen) { refreshState(zen); } }; - private static SharedPreferences getSharedPrefs(Context context) { - return context.getSharedPreferences(context.getPackageName(), 0); - } - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - mVisible = intent.getBooleanExtra(EXTRA_VISIBLE, false); - getSharedPrefs(mContext).edit().putBoolean(PREF_KEY_VISIBLE, mVisible).commit(); + final boolean visible = intent.getBooleanExtra(EXTRA_VISIBLE, false); + setVisible(mContext, visible); refreshState(); } }; diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java index a3d9377..265e2c6 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java @@ -45,6 +45,7 @@ import android.util.Log; import android.util.SparseArray; import com.android.systemui.R; +import com.android.systemui.qs.tiles.DndTile; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -489,8 +490,7 @@ public class VolumeDialogController { public void showDndTile(boolean visible) { if (D.BUG) Log.d(TAG, "showDndTile"); - mContext.sendBroadcast(new Intent("com.android.systemui.dndtile.SET_VISIBLE") - .putExtra("visible", visible)); + DndTile.setVisible(mContext, visible); } private final class VC extends IVolumeController.Stub { |