Merge "Handle density changes in QS" into nyc-dev
This commit is contained in:
@@ -39,8 +39,9 @@
|
||||
android:clipToPadding="false"
|
||||
android:clipChildren="false">
|
||||
|
||||
<include
|
||||
layout="@layout/qs_panel"
|
||||
<com.android.systemui.DensityContainer
|
||||
android:id="@+id/qs_density_container"
|
||||
android:layout="@layout/qs_panel"
|
||||
android:layout_width="@dimen/notification_panel_width"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="@integer/notification_panel_layout_gravity" />
|
||||
|
||||
@@ -93,5 +93,9 @@
|
||||
<attr name="defValue" format="boolean" />
|
||||
<attr name="metricsAction" format="integer" />
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="DensityContainer">
|
||||
<attr name="android:layout" />
|
||||
</declare-styleable>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DensityContainer extends FrameLayout {
|
||||
|
||||
private final List<InflateListener> mInflateListeners = new ArrayList<>();
|
||||
private final int mLayout;
|
||||
private int mDensity;
|
||||
|
||||
public DensityContainer(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
mDensity = context.getResources().getConfiguration().densityDpi;
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DensityContainer);
|
||||
if (!a.hasValue(R.styleable.DensityContainer_android_layout)) {
|
||||
throw new IllegalArgumentException("DensityContainer must contain a layout");
|
||||
}
|
||||
mLayout = a.getResourceId(R.styleable.DensityContainer_android_layout, 0);
|
||||
inflateLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
int density = newConfig.densityDpi;
|
||||
if (density != mDensity) {
|
||||
mDensity = density;
|
||||
inflateLayout();
|
||||
}
|
||||
}
|
||||
|
||||
private void inflateLayout() {
|
||||
removeAllViews();
|
||||
LayoutInflater.from(getContext()).inflate(mLayout, this);
|
||||
final int N = mInflateListeners.size();
|
||||
for (int i = 0; i < N; i++) {
|
||||
mInflateListeners.get(i).onInflated(getChildAt(0));
|
||||
}
|
||||
}
|
||||
|
||||
public void addInflateListener(InflateListener listener) {
|
||||
mInflateListeners.add(listener);
|
||||
listener.onInflated(getChildAt(0));
|
||||
}
|
||||
|
||||
public interface InflateListener {
|
||||
/**
|
||||
* Called whenever a new view is inflated.
|
||||
*/
|
||||
void onInflated(View v);
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@ import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.qs.QSTile.DetailAdapter;
|
||||
import com.android.systemui.qs.QSTile.Host.Callback;
|
||||
import com.android.systemui.qs.customize.QSCustomizer;
|
||||
import com.android.systemui.qs.external.CustomTile;
|
||||
import com.android.systemui.settings.BrightnessController;
|
||||
@@ -44,7 +45,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
/** View that represents the quick settings tile panel. **/
|
||||
public class QSPanel extends LinearLayout implements Tunable {
|
||||
public class QSPanel extends LinearLayout implements Tunable, Callback {
|
||||
|
||||
public static final String QS_SHOW_BRIGHTNESS = "qs_show_brightness";
|
||||
|
||||
@@ -123,9 +124,15 @@ public class QSPanel extends LinearLayout implements Tunable {
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
TunerService.get(mContext).removeTunable(this);
|
||||
mHost.removeCallback(this);
|
||||
super.onDetachedFromWindow();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTilesChanged() {
|
||||
setTiles(mHost.getTiles());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTuningChanged(String key, String newValue) {
|
||||
if (QS_SHOW_BRIGHTNESS.equals(key)) {
|
||||
@@ -168,6 +175,8 @@ public class QSPanel extends LinearLayout implements Tunable {
|
||||
|
||||
public void setHost(QSTileHost host) {
|
||||
mHost = host;
|
||||
mHost.addCallback(this);
|
||||
setTiles(mHost.getTiles());
|
||||
mFooter.setHost(host);
|
||||
createCustomizePanel();
|
||||
}
|
||||
|
||||
@@ -390,6 +390,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
|
||||
Context getContext();
|
||||
Collection<QSTile<?>> getTiles();
|
||||
void addCallback(Callback callback);
|
||||
void removeCallback(Callback callback);
|
||||
BluetoothController getBluetoothController();
|
||||
LocationController getLocationController();
|
||||
RotationLockController getRotationLockController();
|
||||
|
||||
@@ -227,6 +227,8 @@ public class SignalClusterView
|
||||
protected void onDetachedFromWindow() {
|
||||
mMobileSignalGroup.removeAllViews();
|
||||
TunerService.get(mContext).removeTunable(this);
|
||||
mSC.removeCallback(this);
|
||||
mNC.removeSignalCallback(this);
|
||||
|
||||
super.onDetachedFromWindow();
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.android.systemui.statusbar.phone;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.android.systemui.qs.QSPanel;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.NetworkControllerImpl;
|
||||
|
||||
@@ -42,6 +42,8 @@ import android.widget.TextView;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardStatusView;
|
||||
import com.android.systemui.DejankUtils;
|
||||
import com.android.systemui.DensityContainer;
|
||||
import com.android.systemui.DensityContainer.InflateListener;
|
||||
import com.android.systemui.EventLogConstants;
|
||||
import com.android.systemui.EventLogTags;
|
||||
import com.android.systemui.Interpolators;
|
||||
@@ -215,8 +217,14 @@ public class NotificationPanelView extends PanelView implements
|
||||
super.onFinishInflate();
|
||||
mKeyguardStatusBar = (KeyguardStatusBarView) findViewById(R.id.keyguard_header);
|
||||
mKeyguardStatusView = (KeyguardStatusView) findViewById(R.id.keyguard_status_view);
|
||||
mQsContainer = (QSContainer) findViewById(R.id.quick_settings_container);
|
||||
mQsContainer.getHeader().setOnClickListener(this);
|
||||
DensityContainer container = (DensityContainer) findViewById(R.id.qs_density_container);
|
||||
container.addInflateListener(new InflateListener() {
|
||||
@Override
|
||||
public void onInflated(View v) {
|
||||
mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
|
||||
mQsContainer.getHeader().setOnClickListener(NotificationPanelView.this);
|
||||
}
|
||||
});
|
||||
mClockView = (TextView) findViewById(R.id.clock_view);
|
||||
mNotificationContainerParent = (NotificationsQuickSettingsContainer)
|
||||
findViewById(R.id.notification_container_parent);
|
||||
|
||||
@@ -47,7 +47,7 @@ public class NotificationsQuickSettingsContainer extends FrameLayout
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
mQsContainer = findViewById(R.id.quick_settings_container);
|
||||
mQsContainer = findViewById(R.id.qs_density_container);
|
||||
mStackScroller = findViewById(R.id.notification_stack_scroller);
|
||||
mKeyguardStatusBar = findViewById(R.id.keyguard_header);
|
||||
ViewStub userSwitcher = (ViewStub) findViewById(R.id.keyguard_user_switcher);
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.annotation.NonNull;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.app.IActivityManager;
|
||||
import android.app.IWallpaperManagerCallback;
|
||||
import android.app.Notification;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.StatusBarManager;
|
||||
@@ -104,6 +103,8 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.keyguard.ViewMediatorCallback;
|
||||
import com.android.systemui.BatteryMeterView;
|
||||
import com.android.systemui.DemoMode;
|
||||
import com.android.systemui.DensityContainer;
|
||||
import com.android.systemui.DensityContainer.InflateListener;
|
||||
import com.android.systemui.EventLogConstants;
|
||||
import com.android.systemui.EventLogTags;
|
||||
import com.android.systemui.Interpolators;
|
||||
@@ -778,8 +779,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
mStatusBarView.setScrimController(mScrimController);
|
||||
mDozeScrimController = new DozeScrimController(mScrimController, context);
|
||||
|
||||
mHeader = (BaseStatusBarHeader) mStatusBarWindow.findViewById(R.id.header);
|
||||
mHeader.setActivityStarter(this);
|
||||
mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindow.findViewById(R.id.keyguard_header);
|
||||
mKeyguardStatusView = mStatusBarWindow.findViewById(R.id.keyguard_status_view);
|
||||
mKeyguardBottomArea =
|
||||
@@ -839,12 +838,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
|
||||
initSignalCluster(mStatusBarView);
|
||||
initSignalCluster(mKeyguardStatusBar);
|
||||
initSignalCluster(mHeader);
|
||||
|
||||
final boolean isAPhone = mNetworkController.hasVoiceCallingFeature();
|
||||
if (isAPhone) {
|
||||
mNetworkController.addEmergencyListener(mHeader);
|
||||
}
|
||||
|
||||
mFlashlightController = new FlashlightController(mContext);
|
||||
mKeyguardBottomArea.setFlashlightController(mFlashlightController);
|
||||
@@ -863,39 +856,40 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
}
|
||||
|
||||
// Set up the quick settings tile panel
|
||||
mQSPanel = (QSPanel) mStatusBarWindow.findViewById(R.id.quick_settings_panel);
|
||||
if (mQSPanel != null) {
|
||||
DensityContainer container = (DensityContainer) mStatusBarWindow.findViewById(
|
||||
R.id.qs_density_container);
|
||||
if (container != null) {
|
||||
final QSTileHost qsh = new QSTileHost(mContext, this,
|
||||
mBluetoothController, mLocationController, mRotationLockController,
|
||||
mNetworkController, mZenModeController, mHotspotController,
|
||||
mCastController, mFlashlightController,
|
||||
mUserSwitcherController, mUserInfoController, mKeyguardMonitor,
|
||||
mSecurityController, mBatteryController, mIconController);
|
||||
mQSPanel.setTiles(qsh.getTiles());
|
||||
mSecurityController, mBatteryController, mIconController,
|
||||
mNextAlarmController);
|
||||
mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow);
|
||||
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
|
||||
QSContainer qsContainer = (QSContainer) mStatusBarWindow.findViewById(
|
||||
R.id.quick_settings_container);
|
||||
qsContainer.setHost(qsh);
|
||||
qsh.addCallback(new QSTileHost.Callback() {
|
||||
container.addInflateListener(new InflateListener() {
|
||||
@Override
|
||||
public void onTilesChanged() {
|
||||
mQSPanel.setTiles(qsh.getTiles());
|
||||
public void onInflated(View v) {
|
||||
QSContainer qsContainer = (QSContainer) v.findViewById(
|
||||
R.id.quick_settings_container);
|
||||
qsContainer.setHost(qsh);
|
||||
mQSPanel = qsContainer.getQsPanel();
|
||||
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
|
||||
mHeader = qsContainer.getHeader();
|
||||
initSignalCluster(mHeader);
|
||||
mHeader.setActivityStarter(PhoneStatusBar.this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// User info. Trigger first load.
|
||||
mHeader.setUserInfoController(mUserInfoController);
|
||||
mKeyguardStatusBar.setUserInfoController(mUserInfoController);
|
||||
mKeyguardStatusBar.setUserSwitcherController(mUserSwitcherController);
|
||||
mUserInfoController.reloadUserInfo();
|
||||
|
||||
mHeader.setBatteryController(mBatteryController);
|
||||
((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(
|
||||
mBatteryController);
|
||||
mKeyguardStatusBar.setBatteryController(mBatteryController);
|
||||
mHeader.setNextAlarmController(mNextAlarmController);
|
||||
|
||||
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
|
||||
mBroadcastReceiver.onReceive(mContext,
|
||||
|
||||
@@ -57,6 +57,7 @@ import com.android.systemui.qs.tiles.WorkModeTile;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.BluetoothController;
|
||||
import com.android.systemui.statusbar.policy.CastController;
|
||||
import com.android.systemui.statusbar.policy.NextAlarmController;
|
||||
import com.android.systemui.statusbar.policy.NightModeController;
|
||||
import com.android.systemui.statusbar.policy.FlashlightController;
|
||||
import com.android.systemui.statusbar.policy.HotspotController;
|
||||
@@ -111,16 +112,18 @@ public final class QSTileHost implements QSTile.Host, Tunable {
|
||||
private final NightModeController mNightModeController;
|
||||
private final AutoTileManager mAutoTiles;
|
||||
private final ManagedProfileController mProfileController;
|
||||
private final NextAlarmController mNextAlarmController;
|
||||
private View mHeader;
|
||||
|
||||
public QSTileHost(Context context, PhoneStatusBar statusBar,
|
||||
BluetoothController bluetooth, LocationController location,
|
||||
RotationLockController rotation, NetworkController network,
|
||||
ZenModeController zen, HotspotController hotspot,
|
||||
CastController cast, FlashlightController flashlight,
|
||||
UserSwitcherController userSwitcher, UserInfoController userInfo,
|
||||
KeyguardMonitor keyguard, SecurityController security,
|
||||
BatteryController battery, StatusBarIconController iconController) {
|
||||
BluetoothController bluetooth, LocationController location,
|
||||
RotationLockController rotation, NetworkController network,
|
||||
ZenModeController zen, HotspotController hotspot,
|
||||
CastController cast, FlashlightController flashlight,
|
||||
UserSwitcherController userSwitcher, UserInfoController userInfo,
|
||||
KeyguardMonitor keyguard, SecurityController security,
|
||||
BatteryController battery, StatusBarIconController iconController,
|
||||
NextAlarmController nextAlarmController) {
|
||||
mContext = context;
|
||||
mStatusBar = statusBar;
|
||||
mBluetooth = bluetooth;
|
||||
@@ -137,6 +140,7 @@ public final class QSTileHost implements QSTile.Host, Tunable {
|
||||
mSecurity = security;
|
||||
mBattery = battery;
|
||||
mIconController = iconController;
|
||||
mNextAlarmController = nextAlarmController;
|
||||
mNightModeController = new NightModeController(mContext, true);
|
||||
mProfileController = new ManagedProfileController(this);
|
||||
|
||||
@@ -152,6 +156,10 @@ public final class QSTileHost implements QSTile.Host, Tunable {
|
||||
mAutoTiles = new AutoTileManager(context, this);
|
||||
}
|
||||
|
||||
public NextAlarmController getNextAlarmController() {
|
||||
return mNextAlarmController;
|
||||
}
|
||||
|
||||
public void setHeaderView(View view) {
|
||||
mHeader = view;
|
||||
}
|
||||
@@ -170,6 +178,11 @@ public final class QSTileHost implements QSTile.Host, Tunable {
|
||||
mCallbacks.add(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeCallback(Callback callback) {
|
||||
mCallbacks.remove(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<QSTile<?>> getTiles() {
|
||||
return mTiles.values();
|
||||
|
||||
@@ -35,13 +35,13 @@ import com.android.systemui.FontSizeUtils;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.qs.QSAnimator;
|
||||
import com.android.systemui.qs.QSPanel;
|
||||
import com.android.systemui.qs.QSTile;
|
||||
import com.android.systemui.qs.QuickQSPanel;
|
||||
import com.android.systemui.qs.TouchAnimator;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.NextAlarmController;
|
||||
import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback;
|
||||
import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
|
||||
public class QuickStatusBarHeader extends BaseStatusBarHeader implements
|
||||
@@ -90,6 +90,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
|
||||
private TouchAnimator mAlarmTranslation;
|
||||
private TouchAnimator mSettingsAlpha;
|
||||
private float mExpansionAmount;
|
||||
private QSTileHost mHost;
|
||||
|
||||
public QuickStatusBarHeader(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -222,6 +223,14 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
|
||||
mExpandIndicator.setExpanded(headerExpansionFraction > EXPAND_INDICATOR_THRESHOLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
setListening(false);
|
||||
mHost.getUserInfoController().remListener(mUserListener);
|
||||
mHost.getNetworkController().removeEmergencyListener(this);
|
||||
super.onDetachedFromWindow();
|
||||
}
|
||||
|
||||
private void updateAlarmVisibilities() {
|
||||
mAlarmStatus.setVisibility(mAlarmShowing ? View.VISIBLE : View.INVISIBLE);
|
||||
mAlarmStatusCollapsed.setVisibility(mAlarmShowing ? View.VISIBLE : View.INVISIBLE);
|
||||
@@ -284,17 +293,19 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
|
||||
}
|
||||
|
||||
public void setupHost(final QSTileHost host) {
|
||||
mHost = host;
|
||||
host.setHeaderView(this);
|
||||
mHeaderQsPanel.setQSPanelAndHeader(mQsPanel, this);
|
||||
mHeaderQsPanel.setHost(host);
|
||||
mHeaderQsPanel.setMaxTiles(5);
|
||||
mHeaderQsPanel.setTiles(host.getTiles());
|
||||
host.addCallback(new QSTile.Host.Callback() {
|
||||
@Override
|
||||
public void onTilesChanged() {
|
||||
mHeaderQsPanel.setTiles(host.getTiles());
|
||||
}
|
||||
});
|
||||
mHeaderQsPanel.setHost(host);
|
||||
setUserInfoController(host.getUserInfoController());
|
||||
setBatteryController(host.getBatteryController());
|
||||
setNextAlarmController(host.getNextAlarmController());
|
||||
|
||||
final boolean isAPhone = mHost.getNetworkController().hasVoiceCallingFeature();
|
||||
if (isAPhone) {
|
||||
mHost.getNetworkController().addEmergencyListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -340,12 +351,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
|
||||
|
||||
@Override
|
||||
public void setUserInfoController(UserInfoController userInfoController) {
|
||||
userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() {
|
||||
@Override
|
||||
public void onUserInfoChanged(String name, Drawable picture) {
|
||||
mMultiUserAvatar.setImageDrawable(picture);
|
||||
}
|
||||
});
|
||||
userInfoController.addListener(mUserListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -358,4 +364,11 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final OnUserInfoChangedListener mUserListener = new OnUserInfoChangedListener() {
|
||||
@Override
|
||||
public void onUserInfoChanged(String name, Drawable picture) {
|
||||
mMultiUserAvatar.setImageDrawable(picture);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -39,7 +39,6 @@ import android.widget.RelativeLayout;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.keyguard.KeyguardStatusView;
|
||||
import com.android.systemui.BatteryMeterView;
|
||||
import com.android.systemui.FontSizeUtils;
|
||||
@@ -48,7 +47,7 @@ import com.android.systemui.qs.QSPanel;
|
||||
import com.android.systemui.qs.QSTile;
|
||||
import com.android.systemui.qs.QSTile.DetailAdapter;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.NetworkControllerImpl.EmergencyListener;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
|
||||
import com.android.systemui.statusbar.policy.NextAlarmController;
|
||||
import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
|
||||
@@ -19,11 +19,10 @@ import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkControllerImpl.EmergencyListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.android.systemui.statusbar.policy;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
|
||||
import com.android.settingslib.net.DataUsageController;
|
||||
import com.android.settingslib.wifi.AccessPoint;
|
||||
|
||||
@@ -36,6 +35,11 @@ public interface NetworkController {
|
||||
DataUsageController getMobileDataController();
|
||||
DataSaverController getDataSaverController();
|
||||
|
||||
boolean hasVoiceCallingFeature();
|
||||
|
||||
void addEmergencyListener(EmergencyListener listener);
|
||||
void removeEmergencyListener(EmergencyListener listener);
|
||||
|
||||
public interface SignalCallback {
|
||||
void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
|
||||
boolean activityIn, boolean activityOut, String description);
|
||||
@@ -53,6 +57,10 @@ public interface NetworkController {
|
||||
void setMobileDataEnabled(boolean enabled);
|
||||
}
|
||||
|
||||
public interface EmergencyListener {
|
||||
void setEmergencyCallsOnly(boolean emergencyOnly);
|
||||
}
|
||||
|
||||
public static class IconState {
|
||||
public final boolean visible;
|
||||
public final int icon;
|
||||
|
||||
@@ -252,6 +252,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mCallbackHandler.setEmergencyCallsOnly(isEmergencyOnly());
|
||||
}
|
||||
|
||||
public void removeEmergencyListener(EmergencyListener listener) {
|
||||
mCallbackHandler.setListening(listener, false);
|
||||
}
|
||||
|
||||
public boolean hasMobileDataFeature() {
|
||||
return mHasMobileDataFeature;
|
||||
}
|
||||
@@ -812,10 +816,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
}
|
||||
};
|
||||
|
||||
public interface EmergencyListener {
|
||||
void setEmergencyCallsOnly(boolean emergencyOnly);
|
||||
}
|
||||
|
||||
public static class SubscriptionDefaults {
|
||||
public int getDefaultVoiceSubId() {
|
||||
return SubscriptionManager.getDefaultVoiceSubscriptionId();
|
||||
|
||||
@@ -14,17 +14,13 @@
|
||||
|
||||
package com.android.systemui.statusbar.policy;
|
||||
|
||||
import libcore.util.Objects;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.opengl.Matrix;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.util.MathUtils;
|
||||
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -189,8 +185,8 @@ public class NightModeController implements TunerService.Tunable {
|
||||
}
|
||||
|
||||
private void updateNightMode(Intent intent) {
|
||||
mIsNight = intent.getBooleanExtra(EXTRA_IS_NIGHT, false);
|
||||
mAmount = intent.getFloatExtra(EXTRA_AMOUNT, 0);
|
||||
mIsNight = intent != null && intent.getBooleanExtra(EXTRA_IS_NIGHT, false);
|
||||
mAmount = intent != null ? intent.getFloatExtra(EXTRA_AMOUNT, 0) : 0;
|
||||
}
|
||||
|
||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
|
||||
@@ -43,7 +43,7 @@ public class TileServicesTests extends SysuiTestCase {
|
||||
QSTileHost host = new QSTileHost(mContext, null, null, null, null,
|
||||
networkController, null,
|
||||
Mockito.mock(HotspotController.class), null,
|
||||
null, null, null, null, null, null, null);
|
||||
null, null, null, null, null, null, null, null);
|
||||
mTileService = new TestTileServices(host, Looper.myLooper());
|
||||
}
|
||||
|
||||
|
||||
@@ -19,12 +19,10 @@ import android.os.HandlerThread;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
import com.android.systemui.statusbar.policy.NetworkControllerImpl.EmergencyListener;
|
||||
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
Reference in New Issue
Block a user