am 3b1186ca: am f0f5e78b: am e017f0d5: QS: Hide Location, Cast tiles when showing secure keyguard.
* commit '3b1186cad292e776e914f98a58fd8af5013dc773': QS: Hide Location, Cast tiles when showing secure keyguard.
This commit is contained in:
@@ -30,6 +30,7 @@ import com.android.systemui.qs.QSTile.State;
|
||||
import com.android.systemui.statusbar.policy.BluetoothController;
|
||||
import com.android.systemui.statusbar.policy.CastController;
|
||||
import com.android.systemui.statusbar.policy.FlashlightController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
import com.android.systemui.statusbar.policy.Listenable;
|
||||
import com.android.systemui.statusbar.policy.LocationController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
@@ -244,16 +245,16 @@ public abstract class QSTile<TState extends State> implements Listenable {
|
||||
void collapsePanels();
|
||||
Looper getLooper();
|
||||
Context getContext();
|
||||
List<QSTile<?>> getTiles();
|
||||
BluetoothController getBluetoothController();
|
||||
LocationController getLocationController();
|
||||
RotationLockController getRotationLockController();
|
||||
List<QSTile<?>> getTiles();
|
||||
NetworkController getNetworkController();
|
||||
ZenModeController getZenModeController();
|
||||
TetheringController getTetheringController();
|
||||
CastController getCastController();
|
||||
VolumeComponent getVolumeComponent();
|
||||
FlashlightController getFlashlightController();
|
||||
KeyguardMonitor getKeyguardMonitor();
|
||||
}
|
||||
|
||||
public static class State {
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.android.systemui.qs.QSDetailItems.Item;
|
||||
import com.android.systemui.qs.QSTile;
|
||||
import com.android.systemui.statusbar.policy.CastController;
|
||||
import com.android.systemui.statusbar.policy.CastController.CastDevice;
|
||||
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Set;
|
||||
@@ -41,11 +42,14 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
|
||||
|
||||
private final CastController mController;
|
||||
private final CastDetailAdapter mDetailAdapter;
|
||||
private final KeyguardMonitor mKeyguard;
|
||||
private final Callback mCallback = new Callback();
|
||||
|
||||
public CastTile(Host host) {
|
||||
super(host);
|
||||
mController = host.getCastController();
|
||||
mDetailAdapter = new CastDetailAdapter();
|
||||
mKeyguard = host.getKeyguardMonitor();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,9 +68,11 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
|
||||
if (DEBUG) Log.d(TAG, "setListening " + listening);
|
||||
if (listening) {
|
||||
mController.addCallback(mCallback);
|
||||
mKeyguard.addCallback(mCallback);
|
||||
} else {
|
||||
mController.setDiscovering(false);
|
||||
mController.removeCallback(mCallback);
|
||||
mKeyguard.removeCallback(mCallback);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +90,7 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
|
||||
|
||||
@Override
|
||||
protected void handleUpdateState(BooleanState state, Object arg) {
|
||||
state.visible = true;
|
||||
state.visible = !(mKeyguard.isSecure() && mKeyguard.isShowing());
|
||||
state.label = mContext.getString(R.string.quick_settings_cast_title);
|
||||
state.value = false;
|
||||
final Set<CastDevice> devices = mController.getCastDevices();
|
||||
@@ -109,11 +115,16 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
|
||||
: mContext.getString(R.string.quick_settings_cast_device_default_name);
|
||||
}
|
||||
|
||||
private final CastController.Callback mCallback = new CastController.Callback() {
|
||||
private final class Callback implements CastController.Callback, KeyguardMonitor.Callback {
|
||||
@Override
|
||||
public void onCastDevicesChanged() {
|
||||
refreshState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyguardChanged() {
|
||||
refreshState();
|
||||
}
|
||||
};
|
||||
|
||||
private final class CastDetailAdapter implements DetailAdapter, QSDetailItems.Callback {
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.qs.tiles;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.qs.QSTile;
|
||||
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
import com.android.systemui.statusbar.policy.LocationController;
|
||||
import com.android.systemui.statusbar.policy.LocationController.LocationSettingsChangeCallback;
|
||||
|
||||
@@ -25,10 +26,13 @@ import com.android.systemui.statusbar.policy.LocationController.LocationSettings
|
||||
public class LocationTile extends QSTile<QSTile.BooleanState> {
|
||||
|
||||
private final LocationController mController;
|
||||
private final KeyguardMonitor mKeyguard;
|
||||
private final Callback mCallback = new Callback();
|
||||
|
||||
public LocationTile(Host host) {
|
||||
super(host);
|
||||
mController = host.getLocationController();
|
||||
mKeyguard = host.getKeyguardMonitor();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -40,8 +44,10 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
|
||||
public void setListening(boolean listening) {
|
||||
if (listening) {
|
||||
mController.addSettingsChangedCallback(mCallback);
|
||||
mKeyguard.addCallback(mCallback);
|
||||
} else {
|
||||
mController.removeSettingsChangedCallback(mCallback);
|
||||
mKeyguard.removeCallback(mCallback);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +65,7 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
|
||||
@Override
|
||||
protected void handleUpdateState(BooleanState state, Object arg) {
|
||||
final boolean locationEnabled = mController.isLocationEnabled();
|
||||
state.visible = true;
|
||||
state.visible = !(mKeyguard.isSecure() && mKeyguard.isShowing());
|
||||
state.value = locationEnabled;
|
||||
if (locationEnabled) {
|
||||
state.iconId = R.drawable.ic_qs_location_on;
|
||||
@@ -76,10 +82,16 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
|
||||
}
|
||||
}
|
||||
|
||||
private final LocationSettingsChangeCallback mCallback = new LocationSettingsChangeCallback() {
|
||||
private final class Callback implements LocationSettingsChangeCallback,
|
||||
KeyguardMonitor.Callback {
|
||||
@Override
|
||||
public void onLocationSettingsChanged(boolean enabled) {
|
||||
refreshState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyguardChanged() {
|
||||
refreshState();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -130,6 +130,7 @@ import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.CastControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.FlashlightController;
|
||||
import com.android.systemui.statusbar.policy.HeadsUpNotificationView;
|
||||
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
|
||||
import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.statusbar.policy.LocationControllerImpl;
|
||||
@@ -212,6 +213,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
KeyguardUserSwitcher mKeyguardUserSwitcher;
|
||||
FlashlightController mFlashlightController;
|
||||
UserSwitcherController mUserSwitcherController;
|
||||
KeyguardMonitor mKeyguardMonitor;
|
||||
|
||||
int mNaturalBarHeight = -1;
|
||||
int mIconSize = -1;
|
||||
@@ -749,6 +751,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
|
||||
mFlashlightController = new FlashlightController(mContext);
|
||||
mUserSwitcherController = new UserSwitcherController(mContext);
|
||||
mKeyguardMonitor = new KeyguardMonitor();
|
||||
|
||||
// Set up the quick settings tile panel
|
||||
mQSPanel = (QSPanel) mStatusBarWindow.findViewById(R.id.quick_settings_panel);
|
||||
@@ -756,8 +759,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
final QSTileHost qsh = new QSTileHost(mContext, this,
|
||||
mBluetoothController, mLocationController, mRotationLockController,
|
||||
mNetworkController, mZenModeController, null /*tethering*/,
|
||||
mCastController, mVolumeComponent, mFlashlightController,
|
||||
mUserSwitcherController);
|
||||
mCastController, mFlashlightController,
|
||||
mUserSwitcherController, mKeyguardMonitor);
|
||||
mQSPanel.setHost(qsh);
|
||||
for (QSTile<?> tile : qsh.getTiles()) {
|
||||
mQSPanel.addTile(tile);
|
||||
@@ -3205,6 +3208,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
checkBarModes();
|
||||
updateCarrierLabelVisibility(false);
|
||||
updateMediaMetaData(false);
|
||||
mKeyguardMonitor.notifyKeyguardState(mStatusBarKeyguardViewManager.isShowing(),
|
||||
mStatusBarKeyguardViewManager.isSecure());
|
||||
}
|
||||
|
||||
private void updateDozingState() {
|
||||
|
||||
@@ -36,13 +36,13 @@ import com.android.systemui.settings.CurrentUserTracker;
|
||||
import com.android.systemui.statusbar.policy.BluetoothController;
|
||||
import com.android.systemui.statusbar.policy.CastController;
|
||||
import com.android.systemui.statusbar.policy.FlashlightController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
import com.android.systemui.statusbar.policy.LocationController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.RotationLockController;
|
||||
import com.android.systemui.statusbar.policy.TetheringController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -61,17 +61,17 @@ public class QSTileHost implements QSTile.Host {
|
||||
private final CastController mCast;
|
||||
private final Looper mLooper;
|
||||
private final CurrentUserTracker mUserTracker;
|
||||
private final VolumeComponent mVolume;
|
||||
private final ArrayList<QSTile<?>> mTiles = new ArrayList<QSTile<?>>();
|
||||
private final FlashlightController mFlashlight;
|
||||
private final UserSwitcherController mUserSwitcherController;
|
||||
private final KeyguardMonitor mKeyguard;
|
||||
|
||||
public QSTileHost(Context context, PhoneStatusBar statusBar,
|
||||
BluetoothController bluetooth, LocationController location,
|
||||
RotationLockController rotation, NetworkController network,
|
||||
ZenModeController zen, TetheringController tethering,
|
||||
CastController cast, VolumeComponent volume, FlashlightController flashlight,
|
||||
UserSwitcherController userSwitcher) {
|
||||
CastController cast, FlashlightController flashlight,
|
||||
UserSwitcherController userSwitcher, KeyguardMonitor keyguard) {
|
||||
mContext = context;
|
||||
mStatusBar = statusBar;
|
||||
mBluetooth = bluetooth;
|
||||
@@ -81,9 +81,9 @@ public class QSTileHost implements QSTile.Host {
|
||||
mZen = zen;
|
||||
mTethering = tethering;
|
||||
mCast = cast;
|
||||
mVolume = volume;
|
||||
mFlashlight = flashlight;
|
||||
mUserSwitcherController = userSwitcher;
|
||||
mKeyguard = keyguard;
|
||||
|
||||
final HandlerThread ht = new HandlerThread(QSTileHost.class.getSimpleName());
|
||||
ht.start();
|
||||
@@ -177,13 +177,13 @@ public class QSTileHost implements QSTile.Host {
|
||||
}
|
||||
|
||||
@Override
|
||||
public VolumeComponent getVolumeComponent() {
|
||||
return mVolume;
|
||||
public FlashlightController getFlashlightController() {
|
||||
return mFlashlight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlashlightController getFlashlightController() {
|
||||
return mFlashlight;
|
||||
public KeyguardMonitor getKeyguardMonitor() {
|
||||
return mKeyguard;
|
||||
}
|
||||
|
||||
public UserSwitcherController getUserSwitcherController() {
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.statusbar.policy;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public final class KeyguardMonitor {
|
||||
|
||||
private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>();
|
||||
|
||||
private boolean mShowing;
|
||||
private boolean mSecure;
|
||||
|
||||
public void addCallback(Callback callback) {
|
||||
mCallbacks.add(callback);
|
||||
}
|
||||
|
||||
public void removeCallback(Callback callback) {
|
||||
mCallbacks.remove(callback);
|
||||
}
|
||||
|
||||
public boolean isShowing() {
|
||||
return mShowing;
|
||||
}
|
||||
|
||||
public boolean isSecure() {
|
||||
return mSecure;
|
||||
}
|
||||
|
||||
public void notifyKeyguardState(boolean showing, boolean secure) {
|
||||
if (mShowing == showing && mSecure == secure) return;
|
||||
mShowing = showing;
|
||||
mSecure = secure;
|
||||
for (Callback callback : mCallbacks) {
|
||||
callback.onKeyguardChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
void onKeyguardChanged();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user