Merge "Make PhoneStatusBarPolicy injectable." into rvc-dev am: 2f9694c6ba
Change-Id: I52ad556455c55023c15363a1259155d00611d3a5
This commit is contained in:
@@ -122,6 +122,7 @@ import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
|||||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
||||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||||
|
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
@@ -324,6 +325,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
KeyguardDismissUtil keyguardDismissUtil,
|
KeyguardDismissUtil keyguardDismissUtil,
|
||||||
ExtensionController extensionController,
|
ExtensionController extensionController,
|
||||||
UserInfoControllerImpl userInfoControllerImpl,
|
UserInfoControllerImpl userInfoControllerImpl,
|
||||||
|
PhoneStatusBarPolicy phoneStatusBarPolicy,
|
||||||
DismissCallbackRegistry dismissCallbackRegistry,
|
DismissCallbackRegistry dismissCallbackRegistry,
|
||||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
||||||
/* Car Settings injected components. */
|
/* Car Settings injected components. */
|
||||||
@@ -407,6 +409,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
keyguardDismissUtil,
|
keyguardDismissUtil,
|
||||||
extensionController,
|
extensionController,
|
||||||
userInfoControllerImpl,
|
userInfoControllerImpl,
|
||||||
|
phoneStatusBarPolicy,
|
||||||
dismissCallbackRegistry,
|
dismissCallbackRegistry,
|
||||||
statusBarTouchableRegionManager);
|
statusBarTouchableRegionManager);
|
||||||
mUserSwitcherController = userSwitcherController;
|
mUserSwitcherController = userSwitcherController;
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
|||||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
||||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||||
|
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||||
@@ -197,6 +198,7 @@ public class CarStatusBarModule {
|
|||||||
KeyguardDismissUtil keyguardDismissUtil,
|
KeyguardDismissUtil keyguardDismissUtil,
|
||||||
ExtensionController extensionController,
|
ExtensionController extensionController,
|
||||||
UserInfoControllerImpl userInfoControllerImpl,
|
UserInfoControllerImpl userInfoControllerImpl,
|
||||||
|
PhoneStatusBarPolicy phoneStatusBarPolicy,
|
||||||
DismissCallbackRegistry dismissCallbackRegistry,
|
DismissCallbackRegistry dismissCallbackRegistry,
|
||||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
||||||
CarServiceProvider carServiceProvider,
|
CarServiceProvider carServiceProvider,
|
||||||
@@ -278,6 +280,7 @@ public class CarStatusBarModule {
|
|||||||
keyguardDismissUtil,
|
keyguardDismissUtil,
|
||||||
extensionController,
|
extensionController,
|
||||||
userInfoControllerImpl,
|
userInfoControllerImpl,
|
||||||
|
phoneStatusBarPolicy,
|
||||||
dismissCallbackRegistry,
|
dismissCallbackRegistry,
|
||||||
statusBarTouchableRegionManager,
|
statusBarTouchableRegionManager,
|
||||||
carServiceProvider,
|
carServiceProvider,
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ public final class Prefs {
|
|||||||
get(context).unregisterOnSharedPreferenceChangeListener(listener);
|
get(context).unregisterOnSharedPreferenceChangeListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SharedPreferences get(Context context) {
|
public static SharedPreferences get(Context context) {
|
||||||
return context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
|
return context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
|
|||||||
|
|
||||||
import android.app.INotificationManager;
|
import android.app.INotificationManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.hardware.display.AmbientDisplayConfiguration;
|
import android.hardware.display.AmbientDisplayConfiguration;
|
||||||
import android.hardware.display.NightDisplayListener;
|
import android.hardware.display.NightDisplayListener;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -34,6 +35,7 @@ import com.android.internal.logging.MetricsLogger;
|
|||||||
import com.android.internal.util.NotificationMessagingUtil;
|
import com.android.internal.util.NotificationMessagingUtil;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.keyguard.ViewMediatorCallback;
|
import com.android.keyguard.ViewMediatorCallback;
|
||||||
|
import com.android.systemui.Prefs;
|
||||||
import com.android.systemui.dagger.qualifiers.Background;
|
import com.android.systemui.dagger.qualifiers.Background;
|
||||||
import com.android.systemui.dagger.qualifiers.Main;
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
|
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
|
||||||
@@ -77,6 +79,13 @@ public class DependencyProvider {
|
|||||||
return new Handler(thread.getLooper());
|
return new Handler(thread.getLooper());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
|
@Provides
|
||||||
|
@Main
|
||||||
|
public SharedPreferences provideSharePreferences(Context context) {
|
||||||
|
return Prefs.get(context);
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
@Provides
|
@Provides
|
||||||
public AmbientDisplayConfiguration provideAmbientDispalyConfiguration(Context context) {
|
public AmbientDisplayConfiguration provideAmbientDispalyConfiguration(Context context) {
|
||||||
|
|||||||
@@ -209,6 +209,7 @@ public class SystemServicesModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
|
@Nullable
|
||||||
static TelecomManager provideTelecomManager(Context context) {
|
static TelecomManager provideTelecomManager(Context context) {
|
||||||
return context.getSystemService(TelecomManager.class);
|
return context.getSystemService(TelecomManager.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
ConfigurationController configurationController, ActivityStarter activityStarter,
|
ConfigurationController configurationController, ActivityStarter activityStarter,
|
||||||
KeyguardStateController keyguardStateController, UserManager userManager,
|
KeyguardStateController keyguardStateController, UserManager userManager,
|
||||||
TrustManager trustManager, IActivityManager iActivityManager,
|
TrustManager trustManager, IActivityManager iActivityManager,
|
||||||
TelecomManager telecomManager, MetricsLogger metricsLogger,
|
@Nullable TelecomManager telecomManager, MetricsLogger metricsLogger,
|
||||||
BlurUtils blurUtils, SysuiColorExtractor colorExtractor,
|
BlurUtils blurUtils, SysuiColorExtractor colorExtractor,
|
||||||
IStatusBarService statusBarService,
|
IStatusBarService statusBarService,
|
||||||
NotificationShadeWindowController notificationShadeWindowController,
|
NotificationShadeWindowController notificationShadeWindowController,
|
||||||
@@ -568,13 +568,16 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
@Override
|
@Override
|
||||||
public void onPress() {
|
public void onPress() {
|
||||||
mMetricsLogger.action(MetricsEvent.ACTION_EMERGENCY_DIALER_FROM_POWER_MENU);
|
mMetricsLogger.action(MetricsEvent.ACTION_EMERGENCY_DIALER_FROM_POWER_MENU);
|
||||||
Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent(null /* number */);
|
if (mTelecomManager != null) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent(
|
||||||
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
|
null /* number */);
|
||||||
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
intent.putExtra(EmergencyDialerConstants.EXTRA_ENTRY_TYPE,
|
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
|
||||||
EmergencyDialerConstants.ENTRY_TYPE_POWER_MENU);
|
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
mContext.startActivityAsUser(intent, UserHandle.CURRENT);
|
intent.putExtra(EmergencyDialerConstants.EXTRA_ENTRY_TYPE,
|
||||||
|
EmergencyDialerConstants.ENTRY_TYPE_POWER_MENU);
|
||||||
|
mContext.startActivityAsUser(intent, UserHandle.CURRENT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ import com.android.systemui.Prefs;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysUIToast;
|
import com.android.systemui.SysUIToast;
|
||||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||||
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
import com.android.systemui.plugins.qs.DetailAdapter;
|
import com.android.systemui.plugins.qs.DetailAdapter;
|
||||||
import com.android.systemui.plugins.qs.QSTile.BooleanState;
|
import com.android.systemui.plugins.qs.QSTile.BooleanState;
|
||||||
@@ -79,6 +80,7 @@ public class DndTile extends QSTileImpl<BooleanState> {
|
|||||||
private final ZenModeController mController;
|
private final ZenModeController mController;
|
||||||
private final DndDetailAdapter mDetailAdapter;
|
private final DndDetailAdapter mDetailAdapter;
|
||||||
private final ActivityStarter mActivityStarter;
|
private final ActivityStarter mActivityStarter;
|
||||||
|
private final SharedPreferences mSharedPreferences;
|
||||||
private final BroadcastDispatcher mBroadcastDispatcher;
|
private final BroadcastDispatcher mBroadcastDispatcher;
|
||||||
|
|
||||||
private boolean mListening;
|
private boolean mListening;
|
||||||
@@ -87,10 +89,12 @@ public class DndTile extends QSTileImpl<BooleanState> {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DndTile(QSHost host, ZenModeController zenModeController,
|
public DndTile(QSHost host, ZenModeController zenModeController,
|
||||||
ActivityStarter activityStarter, BroadcastDispatcher broadcastDispatcher) {
|
ActivityStarter activityStarter, BroadcastDispatcher broadcastDispatcher,
|
||||||
|
@Main SharedPreferences sharedPreferences) {
|
||||||
super(host);
|
super(host);
|
||||||
mController = zenModeController;
|
mController = zenModeController;
|
||||||
mActivityStarter = activityStarter;
|
mActivityStarter = activityStarter;
|
||||||
|
mSharedPreferences = sharedPreferences;
|
||||||
mDetailAdapter = new DndDetailAdapter();
|
mDetailAdapter = new DndDetailAdapter();
|
||||||
mBroadcastDispatcher = broadcastDispatcher;
|
mBroadcastDispatcher = broadcastDispatcher;
|
||||||
broadcastDispatcher.registerReceiver(mReceiver, new IntentFilter(ACTION_SET_VISIBLE));
|
broadcastDispatcher.registerReceiver(mReceiver, new IntentFilter(ACTION_SET_VISIBLE));
|
||||||
@@ -111,16 +115,16 @@ public class DndTile extends QSTileImpl<BooleanState> {
|
|||||||
Prefs.putBoolean(context, Prefs.Key.DND_TILE_VISIBLE, visible);
|
Prefs.putBoolean(context, Prefs.Key.DND_TILE_VISIBLE, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isVisible(Context context) {
|
public static boolean isVisible(SharedPreferences prefs) {
|
||||||
return Prefs.getBoolean(context, Prefs.Key.DND_TILE_VISIBLE, false /* defaultValue */);
|
return prefs.getBoolean(Prefs.Key.DND_TILE_VISIBLE, false /* defaultValue */);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setCombinedIcon(Context context, boolean combined) {
|
public static void setCombinedIcon(Context context, boolean combined) {
|
||||||
Prefs.putBoolean(context, Prefs.Key.DND_TILE_COMBINED_ICON, combined);
|
Prefs.putBoolean(context, Prefs.Key.DND_TILE_COMBINED_ICON, combined);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isCombinedIcon(Context context) {
|
public static boolean isCombinedIcon(SharedPreferences sharedPreferences) {
|
||||||
return Prefs.getBoolean(context, Prefs.Key.DND_TILE_COMBINED_ICON,
|
return sharedPreferences.getBoolean(Prefs.Key.DND_TILE_COMBINED_ICON,
|
||||||
false /* defaultValue */);
|
false /* defaultValue */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,7 +305,7 @@ public class DndTile extends QSTileImpl<BooleanState> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
return isVisible(mContext);
|
return isVisible(mSharedPreferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final OnSharedPreferenceChangeListener mPrefListener
|
private final OnSharedPreferenceChangeListener mPrefListener
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package com.android.systemui.qs.tiles;
|
package com.android.systemui.qs.tiles;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.service.quicksettings.Tile;
|
import android.service.quicksettings.Tile;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
@@ -81,11 +81,11 @@ public class RotationLockTile extends QSTileImpl<BooleanState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isCurrentOrientationLockPortrait(RotationLockController controller,
|
public static boolean isCurrentOrientationLockPortrait(RotationLockController controller,
|
||||||
Context context) {
|
Resources resources) {
|
||||||
int lockOrientation = controller.getRotationLockOrientation();
|
int lockOrientation = controller.getRotationLockOrientation();
|
||||||
if (lockOrientation == Configuration.ORIENTATION_UNDEFINED) {
|
if (lockOrientation == Configuration.ORIENTATION_UNDEFINED) {
|
||||||
// Freely rotating device; use current rotation
|
// Freely rotating device; use current rotation
|
||||||
return context.getResources().getConfiguration().orientation
|
return resources.getConfiguration().orientation
|
||||||
!= Configuration.ORIENTATION_LANDSCAPE;
|
!= Configuration.ORIENTATION_LANDSCAPE;
|
||||||
} else {
|
} else {
|
||||||
return lockOrientation != Configuration.ORIENTATION_LANDSCAPE;
|
return lockOrientation != Configuration.ORIENTATION_LANDSCAPE;
|
||||||
|
|||||||
@@ -16,15 +16,18 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.phone;
|
package com.android.systemui.statusbar.phone;
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.annotation.Nullable;
|
||||||
import android.app.ActivityTaskManager;
|
import android.app.ActivityTaskManager;
|
||||||
import android.app.AlarmManager;
|
import android.app.AlarmManager;
|
||||||
import android.app.AlarmManager.AlarmClockInfo;
|
import android.app.AlarmManager.AlarmClockInfo;
|
||||||
|
import android.app.IActivityManager;
|
||||||
import android.app.SynchronousUserSwitchObserver;
|
import android.app.SynchronousUserSwitchObserver;
|
||||||
import android.content.BroadcastReceiver;
|
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.IntentFilter;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
@@ -33,13 +36,13 @@ import android.os.UserManager;
|
|||||||
import android.provider.Settings.Global;
|
import android.provider.Settings.Global;
|
||||||
import android.service.notification.ZenModeConfig;
|
import android.service.notification.ZenModeConfig;
|
||||||
import android.telecom.TelecomManager;
|
import android.telecom.TelecomManager;
|
||||||
import android.telephony.TelephonyManager;
|
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.systemui.Dependency;
|
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||||
|
import com.android.systemui.dagger.qualifiers.DisplayId;
|
||||||
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||||
import com.android.systemui.qs.tiles.DndTile;
|
import com.android.systemui.qs.tiles.DndTile;
|
||||||
import com.android.systemui.qs.tiles.RotationLockTile;
|
import com.android.systemui.qs.tiles.RotationLockTile;
|
||||||
@@ -61,10 +64,13 @@ import com.android.systemui.statusbar.policy.RotationLockController.RotationLock
|
|||||||
import com.android.systemui.statusbar.policy.SensorPrivacyController;
|
import com.android.systemui.statusbar.policy.SensorPrivacyController;
|
||||||
import com.android.systemui.statusbar.policy.UserInfoController;
|
import com.android.systemui.statusbar.policy.UserInfoController;
|
||||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||||
|
import com.android.systemui.util.time.DateFormatUtil;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class contains all of the policy about which icons are installed in the status bar at boot
|
* This class contains all of the policy about which icons are installed in the status bar at boot
|
||||||
* time. It goes through the normal API for icons, even though it probably strictly doesn't need to.
|
* time. It goes through the normal API for icons, even though it probably strictly doesn't need to.
|
||||||
@@ -82,7 +88,7 @@ public class PhoneStatusBarPolicy
|
|||||||
private static final String TAG = "PhoneStatusBarPolicy";
|
private static final String TAG = "PhoneStatusBarPolicy";
|
||||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||||
|
|
||||||
public static final int LOCATION_STATUS_ICON_ID =
|
static final int LOCATION_STATUS_ICON_ID =
|
||||||
com.android.internal.R.drawable.perm_group_location;
|
com.android.internal.R.drawable.perm_group_location;
|
||||||
|
|
||||||
private final String mSlotCast;
|
private final String mSlotCast;
|
||||||
@@ -97,20 +103,26 @@ public class PhoneStatusBarPolicy
|
|||||||
private final String mSlotHeadset;
|
private final String mSlotHeadset;
|
||||||
private final String mSlotDataSaver;
|
private final String mSlotDataSaver;
|
||||||
private final String mSlotLocation;
|
private final String mSlotLocation;
|
||||||
private final String mSlotMicrophone;
|
|
||||||
private final String mSlotCamera;
|
|
||||||
private final String mSlotSensorsOff;
|
private final String mSlotSensorsOff;
|
||||||
private final String mSlotScreenRecord;
|
private final String mSlotScreenRecord;
|
||||||
|
private final int mDisplayId;
|
||||||
|
private final SharedPreferences mSharedPreferences;
|
||||||
|
private final DateFormatUtil mDateFormatUtil;
|
||||||
|
private final TelecomManager mTelecomManager;
|
||||||
|
private final AudioManager mAudioManager;
|
||||||
|
|
||||||
private final Context mContext;
|
|
||||||
private final Handler mHandler = new Handler();
|
private final Handler mHandler = new Handler();
|
||||||
private final CastController mCast;
|
private final CastController mCast;
|
||||||
private final HotspotController mHotspot;
|
private final HotspotController mHotspot;
|
||||||
private final NextAlarmController mNextAlarmController;
|
private final NextAlarmController mNextAlarmController;
|
||||||
private final AlarmManager mAlarmManager;
|
private final AlarmManager mAlarmManager;
|
||||||
private final UserInfoController mUserInfoController;
|
private final UserInfoController mUserInfoController;
|
||||||
|
private final IActivityManager mIActivityManager;
|
||||||
private final UserManager mUserManager;
|
private final UserManager mUserManager;
|
||||||
private final StatusBarIconController mIconController;
|
private final StatusBarIconController mIconController;
|
||||||
|
private final CommandQueue mCommandQueue;
|
||||||
|
private final BroadcastDispatcher mBroadcastDispatcher;
|
||||||
|
private final Resources mResources;
|
||||||
private final RotationLockController mRotationLockController;
|
private final RotationLockController mRotationLockController;
|
||||||
private final DataSaverController mDataSaver;
|
private final DataSaverController mDataSaver;
|
||||||
private final ZenModeController mZenController;
|
private final ZenModeController mZenController;
|
||||||
@@ -121,10 +133,6 @@ public class PhoneStatusBarPolicy
|
|||||||
private final SensorPrivacyController mSensorPrivacyController;
|
private final SensorPrivacyController mSensorPrivacyController;
|
||||||
private final RecordingController mRecordingController;
|
private final RecordingController mRecordingController;
|
||||||
|
|
||||||
// Assume it's all good unless we hear otherwise. We don't always seem
|
|
||||||
// to get broadcasts that it *is* there.
|
|
||||||
int mSimState = TelephonyManager.SIM_STATE_READY;
|
|
||||||
|
|
||||||
private boolean mZenVisible;
|
private boolean mZenVisible;
|
||||||
private boolean mVolumeVisible;
|
private boolean mVolumeVisible;
|
||||||
private boolean mCurrentUserSetup;
|
private boolean mCurrentUserSetup;
|
||||||
@@ -134,47 +142,70 @@ public class PhoneStatusBarPolicy
|
|||||||
private BluetoothController mBluetooth;
|
private BluetoothController mBluetooth;
|
||||||
private AlarmManager.AlarmClockInfo mNextAlarm;
|
private AlarmManager.AlarmClockInfo mNextAlarm;
|
||||||
|
|
||||||
public PhoneStatusBarPolicy(Context context, StatusBarIconController iconController,
|
@Inject
|
||||||
|
public PhoneStatusBarPolicy(StatusBarIconController iconController,
|
||||||
CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher,
|
CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher,
|
||||||
@UiBackground Executor uiBgExecutor) {
|
@UiBackground Executor uiBgExecutor, @Main Resources resources,
|
||||||
mContext = context;
|
CastController castController, HotspotController hotspotController,
|
||||||
|
BluetoothController bluetoothController, NextAlarmController nextAlarmController,
|
||||||
|
UserInfoController userInfoController, RotationLockController rotationLockController,
|
||||||
|
DataSaverController dataSaverController, ZenModeController zenModeController,
|
||||||
|
DeviceProvisionedController deviceProvisionedController,
|
||||||
|
KeyguardStateController keyguardStateController,
|
||||||
|
LocationController locationController,
|
||||||
|
SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager,
|
||||||
|
AlarmManager alarmManager, UserManager userManager, AudioManager audioManager,
|
||||||
|
RecordingController recordingController,
|
||||||
|
@Nullable TelecomManager telecomManager, @DisplayId int displayId,
|
||||||
|
@Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil) {
|
||||||
mIconController = iconController;
|
mIconController = iconController;
|
||||||
mCast = Dependency.get(CastController.class);
|
mCommandQueue = commandQueue;
|
||||||
mHotspot = Dependency.get(HotspotController.class);
|
mBroadcastDispatcher = broadcastDispatcher;
|
||||||
mBluetooth = Dependency.get(BluetoothController.class);
|
mResources = resources;
|
||||||
mNextAlarmController = Dependency.get(NextAlarmController.class);
|
mCast = castController;
|
||||||
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
mHotspot = hotspotController;
|
||||||
mUserInfoController = Dependency.get(UserInfoController.class);
|
mBluetooth = bluetoothController;
|
||||||
mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
|
mNextAlarmController = nextAlarmController;
|
||||||
mRotationLockController = Dependency.get(RotationLockController.class);
|
mAlarmManager = alarmManager;
|
||||||
mDataSaver = Dependency.get(DataSaverController.class);
|
mUserInfoController = userInfoController;
|
||||||
mZenController = Dependency.get(ZenModeController.class);
|
mIActivityManager = iActivityManager;
|
||||||
mProvisionedController = Dependency.get(DeviceProvisionedController.class);
|
mUserManager = userManager;
|
||||||
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
|
mRotationLockController = rotationLockController;
|
||||||
mLocationController = Dependency.get(LocationController.class);
|
mDataSaver = dataSaverController;
|
||||||
mSensorPrivacyController = Dependency.get(SensorPrivacyController.class);
|
mZenController = zenModeController;
|
||||||
mRecordingController = Dependency.get(RecordingController.class);
|
mProvisionedController = deviceProvisionedController;
|
||||||
|
mKeyguardStateController = keyguardStateController;
|
||||||
|
mLocationController = locationController;
|
||||||
|
mSensorPrivacyController = sensorPrivacyController;
|
||||||
|
mRecordingController = recordingController;
|
||||||
mUiBgExecutor = uiBgExecutor;
|
mUiBgExecutor = uiBgExecutor;
|
||||||
|
mAudioManager = audioManager;
|
||||||
|
mTelecomManager = telecomManager;
|
||||||
|
|
||||||
mSlotCast = context.getString(com.android.internal.R.string.status_bar_cast);
|
mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast);
|
||||||
mSlotHotspot = context.getString(com.android.internal.R.string.status_bar_hotspot);
|
mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot);
|
||||||
mSlotBluetooth = context.getString(com.android.internal.R.string.status_bar_bluetooth);
|
mSlotBluetooth = resources.getString(com.android.internal.R.string.status_bar_bluetooth);
|
||||||
mSlotTty = context.getString(com.android.internal.R.string.status_bar_tty);
|
mSlotTty = resources.getString(com.android.internal.R.string.status_bar_tty);
|
||||||
mSlotZen = context.getString(com.android.internal.R.string.status_bar_zen);
|
mSlotZen = resources.getString(com.android.internal.R.string.status_bar_zen);
|
||||||
mSlotVolume = context.getString(com.android.internal.R.string.status_bar_volume);
|
mSlotVolume = resources.getString(com.android.internal.R.string.status_bar_volume);
|
||||||
mSlotAlarmClock = context.getString(com.android.internal.R.string.status_bar_alarm_clock);
|
mSlotAlarmClock = resources.getString(com.android.internal.R.string.status_bar_alarm_clock);
|
||||||
mSlotManagedProfile = context.getString(
|
mSlotManagedProfile = resources.getString(
|
||||||
com.android.internal.R.string.status_bar_managed_profile);
|
com.android.internal.R.string.status_bar_managed_profile);
|
||||||
mSlotRotate = context.getString(com.android.internal.R.string.status_bar_rotate);
|
mSlotRotate = resources.getString(com.android.internal.R.string.status_bar_rotate);
|
||||||
mSlotHeadset = context.getString(com.android.internal.R.string.status_bar_headset);
|
mSlotHeadset = resources.getString(com.android.internal.R.string.status_bar_headset);
|
||||||
mSlotDataSaver = context.getString(com.android.internal.R.string.status_bar_data_saver);
|
mSlotDataSaver = resources.getString(com.android.internal.R.string.status_bar_data_saver);
|
||||||
mSlotLocation = context.getString(com.android.internal.R.string.status_bar_location);
|
mSlotLocation = resources.getString(com.android.internal.R.string.status_bar_location);
|
||||||
mSlotMicrophone = context.getString(com.android.internal.R.string.status_bar_microphone);
|
mSlotSensorsOff = resources.getString(com.android.internal.R.string.status_bar_sensors_off);
|
||||||
mSlotCamera = context.getString(com.android.internal.R.string.status_bar_camera);
|
mSlotScreenRecord = resources.getString(
|
||||||
mSlotSensorsOff = context.getString(com.android.internal.R.string.status_bar_sensors_off);
|
|
||||||
mSlotScreenRecord = context.getString(
|
|
||||||
com.android.internal.R.string.status_bar_screen_record);
|
com.android.internal.R.string.status_bar_screen_record);
|
||||||
|
|
||||||
|
mDisplayId = displayId;
|
||||||
|
mSharedPreferences = sharedPreferences;
|
||||||
|
mDateFormatUtil = dateFormatUtil;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Initialize the object after construction. */
|
||||||
|
public void init() {
|
||||||
// listen for broadcasts
|
// listen for broadcasts
|
||||||
IntentFilter filter = new IntentFilter();
|
IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
|
filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
|
||||||
@@ -185,11 +216,11 @@ public class PhoneStatusBarPolicy
|
|||||||
filter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
|
filter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
|
||||||
filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
|
filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
|
||||||
filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
|
filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
|
||||||
broadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler);
|
mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler);
|
||||||
|
|
||||||
// listen for user / profile change.
|
// listen for user / profile change.
|
||||||
try {
|
try {
|
||||||
ActivityManager.getService().registerUserSwitchObserver(mUserSwitchListener, TAG);
|
mIActivityManager.registerUserSwitchObserver(mUserSwitchListener, TAG);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
// Ignore
|
// Ignore
|
||||||
}
|
}
|
||||||
@@ -219,26 +250,26 @@ public class PhoneStatusBarPolicy
|
|||||||
|
|
||||||
// hotspot
|
// hotspot
|
||||||
mIconController.setIcon(mSlotHotspot, R.drawable.stat_sys_hotspot,
|
mIconController.setIcon(mSlotHotspot, R.drawable.stat_sys_hotspot,
|
||||||
mContext.getString(R.string.accessibility_status_bar_hotspot));
|
mResources.getString(R.string.accessibility_status_bar_hotspot));
|
||||||
mIconController.setIconVisibility(mSlotHotspot, mHotspot.isHotspotEnabled());
|
mIconController.setIconVisibility(mSlotHotspot, mHotspot.isHotspotEnabled());
|
||||||
|
|
||||||
// managed profile
|
// managed profile
|
||||||
mIconController.setIcon(mSlotManagedProfile, R.drawable.stat_sys_managed_profile_status,
|
mIconController.setIcon(mSlotManagedProfile, R.drawable.stat_sys_managed_profile_status,
|
||||||
mContext.getString(R.string.accessibility_managed_profile));
|
mResources.getString(R.string.accessibility_managed_profile));
|
||||||
mIconController.setIconVisibility(mSlotManagedProfile, mManagedProfileIconVisible);
|
mIconController.setIconVisibility(mSlotManagedProfile, mManagedProfileIconVisible);
|
||||||
|
|
||||||
// data saver
|
// data saver
|
||||||
mIconController.setIcon(mSlotDataSaver, R.drawable.stat_sys_data_saver,
|
mIconController.setIcon(mSlotDataSaver, R.drawable.stat_sys_data_saver,
|
||||||
context.getString(R.string.accessibility_data_saver_on));
|
mResources.getString(R.string.accessibility_data_saver_on));
|
||||||
mIconController.setIconVisibility(mSlotDataSaver, false);
|
mIconController.setIconVisibility(mSlotDataSaver, false);
|
||||||
|
|
||||||
mIconController.setIcon(mSlotLocation, LOCATION_STATUS_ICON_ID,
|
mIconController.setIcon(mSlotLocation, LOCATION_STATUS_ICON_ID,
|
||||||
mContext.getString(R.string.accessibility_location_active));
|
mResources.getString(R.string.accessibility_location_active));
|
||||||
mIconController.setIconVisibility(mSlotLocation, false);
|
mIconController.setIconVisibility(mSlotLocation, false);
|
||||||
|
|
||||||
// sensors off
|
// sensors off
|
||||||
mIconController.setIcon(mSlotSensorsOff, R.drawable.stat_sys_sensors_off,
|
mIconController.setIcon(mSlotSensorsOff, R.drawable.stat_sys_sensors_off,
|
||||||
mContext.getString(R.string.accessibility_sensors_off_active));
|
mResources.getString(R.string.accessibility_sensors_off_active));
|
||||||
mIconController.setIconVisibility(mSlotSensorsOff,
|
mIconController.setIconVisibility(mSlotSensorsOff,
|
||||||
mSensorPrivacyController.isSensorPrivacyEnabled());
|
mSensorPrivacyController.isSensorPrivacyEnabled());
|
||||||
|
|
||||||
@@ -259,7 +290,7 @@ public class PhoneStatusBarPolicy
|
|||||||
mLocationController.addCallback(this);
|
mLocationController.addCallback(this);
|
||||||
mRecordingController.addCallback(this);
|
mRecordingController.addCallback(this);
|
||||||
|
|
||||||
commandQueue.addCallback(this);
|
mCommandQueue.addCallback(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -284,51 +315,17 @@ public class PhoneStatusBarPolicy
|
|||||||
|
|
||||||
private String buildAlarmContentDescription() {
|
private String buildAlarmContentDescription() {
|
||||||
if (mNextAlarm == null) {
|
if (mNextAlarm == null) {
|
||||||
return mContext.getString(R.string.status_bar_alarm);
|
return mResources.getString(R.string.status_bar_alarm);
|
||||||
}
|
}
|
||||||
return formatNextAlarm(mNextAlarm, mContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String formatNextAlarm(AlarmManager.AlarmClockInfo info, Context context) {
|
String skeleton = mDateFormatUtil.is24HourFormat() ? "EHm" : "Ehma";
|
||||||
if (info == null) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
String skeleton = DateFormat.is24HourFormat(
|
|
||||||
context, ActivityManager.getCurrentUser()) ? "EHm" : "Ehma";
|
|
||||||
String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton);
|
String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton);
|
||||||
String dateString = DateFormat.format(pattern, info.getTriggerTime()).toString();
|
String dateString = DateFormat.format(pattern, mNextAlarm.getTriggerTime()).toString();
|
||||||
|
|
||||||
return context.getString(R.string.accessibility_quick_settings_alarm, dateString);
|
return mResources.getString(R.string.accessibility_quick_settings_alarm, dateString);
|
||||||
}
|
|
||||||
|
|
||||||
private final void updateSimState(Intent intent) {
|
|
||||||
String stateExtra = intent.getStringExtra(Intent.EXTRA_SIM_STATE);
|
|
||||||
if (Intent.SIM_STATE_ABSENT.equals(stateExtra)) {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_READY;
|
|
||||||
} else if (Intent.SIM_STATE_CARD_IO_ERROR.equals(stateExtra)) {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_CARD_IO_ERROR;
|
|
||||||
} else if (Intent.SIM_STATE_CARD_RESTRICTED.equals(stateExtra)) {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_CARD_RESTRICTED;
|
|
||||||
} else if (Intent.SIM_STATE_READY.equals(stateExtra)) {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_READY;
|
|
||||||
} else if (Intent.SIM_STATE_LOCKED.equals(stateExtra)) {
|
|
||||||
final String lockedReason =
|
|
||||||
intent.getStringExtra(Intent.EXTRA_SIM_LOCKED_REASON);
|
|
||||||
if (Intent.SIM_LOCKED_ON_PIN.equals(lockedReason)) {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_PIN_REQUIRED;
|
|
||||||
} else if (Intent.SIM_LOCKED_ON_PUK.equals(lockedReason)) {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_PUK_REQUIRED;
|
|
||||||
} else {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_NETWORK_LOCKED;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mSimState = TelephonyManager.SIM_STATE_UNKNOWN;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final void updateVolumeZen() {
|
private final void updateVolumeZen() {
|
||||||
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
|
|
||||||
boolean zenVisible = false;
|
boolean zenVisible = false;
|
||||||
int zenIconId = 0;
|
int zenIconId = 0;
|
||||||
String zenDescription = null;
|
String zenDescription = null;
|
||||||
@@ -338,29 +335,29 @@ public class PhoneStatusBarPolicy
|
|||||||
String volumeDescription = null;
|
String volumeDescription = null;
|
||||||
int zen = mZenController.getZen();
|
int zen = mZenController.getZen();
|
||||||
|
|
||||||
if (DndTile.isVisible(mContext) || DndTile.isCombinedIcon(mContext)) {
|
if (DndTile.isVisible(mSharedPreferences) || DndTile.isCombinedIcon(mSharedPreferences)) {
|
||||||
zenVisible = zen != Global.ZEN_MODE_OFF;
|
zenVisible = zen != Global.ZEN_MODE_OFF;
|
||||||
zenIconId = R.drawable.stat_sys_dnd;
|
zenIconId = R.drawable.stat_sys_dnd;
|
||||||
zenDescription = mContext.getString(R.string.quick_settings_dnd_label);
|
zenDescription = mResources.getString(R.string.quick_settings_dnd_label);
|
||||||
} else if (zen == Global.ZEN_MODE_NO_INTERRUPTIONS) {
|
} else if (zen == Global.ZEN_MODE_NO_INTERRUPTIONS) {
|
||||||
zenVisible = true;
|
zenVisible = true;
|
||||||
zenIconId = R.drawable.stat_sys_dnd;
|
zenIconId = R.drawable.stat_sys_dnd;
|
||||||
zenDescription = mContext.getString(R.string.interruption_level_none);
|
zenDescription = mResources.getString(R.string.interruption_level_none);
|
||||||
} else if (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) {
|
} else if (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) {
|
||||||
zenVisible = true;
|
zenVisible = true;
|
||||||
zenIconId = R.drawable.stat_sys_dnd;
|
zenIconId = R.drawable.stat_sys_dnd;
|
||||||
zenDescription = mContext.getString(R.string.interruption_level_priority);
|
zenDescription = mResources.getString(R.string.interruption_level_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) {
|
if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) {
|
||||||
if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) {
|
if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) {
|
||||||
volumeVisible = true;
|
volumeVisible = true;
|
||||||
volumeIconId = R.drawable.stat_sys_ringer_vibrate;
|
volumeIconId = R.drawable.stat_sys_ringer_vibrate;
|
||||||
volumeDescription = mContext.getString(R.string.accessibility_ringer_vibrate);
|
volumeDescription = mResources.getString(R.string.accessibility_ringer_vibrate);
|
||||||
} else if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) {
|
} else if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) {
|
||||||
volumeVisible = true;
|
volumeVisible = true;
|
||||||
volumeIconId = R.drawable.stat_sys_ringer_silent;
|
volumeIconId = R.drawable.stat_sys_ringer_silent;
|
||||||
volumeDescription = mContext.getString(R.string.accessibility_ringer_silent);
|
volumeDescription = mResources.getString(R.string.accessibility_ringer_silent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,13 +392,13 @@ public class PhoneStatusBarPolicy
|
|||||||
private final void updateBluetooth() {
|
private final void updateBluetooth() {
|
||||||
int iconId = R.drawable.stat_sys_data_bluetooth_connected;
|
int iconId = R.drawable.stat_sys_data_bluetooth_connected;
|
||||||
String contentDescription =
|
String contentDescription =
|
||||||
mContext.getString(R.string.accessibility_quick_settings_bluetooth_on);
|
mResources.getString(R.string.accessibility_quick_settings_bluetooth_on);
|
||||||
boolean bluetoothVisible = false;
|
boolean bluetoothVisible = false;
|
||||||
if (mBluetooth != null) {
|
if (mBluetooth != null) {
|
||||||
if (mBluetooth.isBluetoothConnected()
|
if (mBluetooth.isBluetoothConnected()
|
||||||
&& (mBluetooth.isBluetoothAudioActive()
|
&& (mBluetooth.isBluetoothAudioActive()
|
||||||
|| !mBluetooth.isBluetoothAudioProfileOnly())) {
|
|| !mBluetooth.isBluetoothAudioProfileOnly())) {
|
||||||
contentDescription = mContext.getString(
|
contentDescription = mResources.getString(
|
||||||
R.string.accessibility_bluetooth_connected);
|
R.string.accessibility_bluetooth_connected);
|
||||||
bluetoothVisible = mBluetooth.isBluetoothEnabled();
|
bluetoothVisible = mBluetooth.isBluetoothEnabled();
|
||||||
}
|
}
|
||||||
@@ -412,12 +409,10 @@ public class PhoneStatusBarPolicy
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final void updateTTY() {
|
private final void updateTTY() {
|
||||||
TelecomManager telecomManager =
|
if (mTelecomManager == null) {
|
||||||
(TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
|
|
||||||
if (telecomManager == null) {
|
|
||||||
updateTTY(TelecomManager.TTY_MODE_OFF);
|
updateTTY(TelecomManager.TTY_MODE_OFF);
|
||||||
} else {
|
} else {
|
||||||
updateTTY(telecomManager.getCurrentTtyMode());
|
updateTTY(mTelecomManager.getCurrentTtyMode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,7 +425,7 @@ public class PhoneStatusBarPolicy
|
|||||||
// TTY is on
|
// TTY is on
|
||||||
if (DEBUG) Log.v(TAG, "updateTTY: set TTY on");
|
if (DEBUG) Log.v(TAG, "updateTTY: set TTY on");
|
||||||
mIconController.setIcon(mSlotTty, R.drawable.stat_sys_tty_mode,
|
mIconController.setIcon(mSlotTty, R.drawable.stat_sys_tty_mode,
|
||||||
mContext.getString(R.string.accessibility_tty_enabled));
|
mResources.getString(R.string.accessibility_tty_enabled));
|
||||||
mIconController.setIconVisibility(mSlotTty, true);
|
mIconController.setIconVisibility(mSlotTty, true);
|
||||||
} else {
|
} else {
|
||||||
// TTY is off
|
// TTY is off
|
||||||
@@ -452,7 +447,7 @@ public class PhoneStatusBarPolicy
|
|||||||
mHandler.removeCallbacks(mRemoveCastIconRunnable);
|
mHandler.removeCallbacks(mRemoveCastIconRunnable);
|
||||||
if (isCasting && !mRecordingController.isRecording()) { // screen record has its own icon
|
if (isCasting && !mRecordingController.isRecording()) { // screen record has its own icon
|
||||||
mIconController.setIcon(mSlotCast, R.drawable.stat_sys_cast,
|
mIconController.setIcon(mSlotCast, R.drawable.stat_sys_cast,
|
||||||
mContext.getString(R.string.accessibility_casting));
|
mResources.getString(R.string.accessibility_casting));
|
||||||
mIconController.setIconVisibility(mSlotCast, true);
|
mIconController.setIconVisibility(mSlotCast, true);
|
||||||
} else {
|
} else {
|
||||||
// don't turn off the screen-record icon for a few seconds, just to make sure the user
|
// don't turn off the screen-record icon for a few seconds, just to make sure the user
|
||||||
@@ -478,7 +473,7 @@ public class PhoneStatusBarPolicy
|
|||||||
showIcon = true;
|
showIcon = true;
|
||||||
mIconController.setIcon(mSlotManagedProfile,
|
mIconController.setIcon(mSlotManagedProfile,
|
||||||
R.drawable.stat_sys_managed_profile_status,
|
R.drawable.stat_sys_managed_profile_status,
|
||||||
mContext.getString(R.string.accessibility_managed_profile));
|
mResources.getString(R.string.accessibility_managed_profile));
|
||||||
} else {
|
} else {
|
||||||
showIcon = false;
|
showIcon = false;
|
||||||
}
|
}
|
||||||
@@ -545,7 +540,7 @@ public class PhoneStatusBarPolicy
|
|||||||
@Override
|
@Override
|
||||||
public void appTransitionStarting(int displayId, long startTime, long duration,
|
public void appTransitionStarting(int displayId, long startTime, long duration,
|
||||||
boolean forced) {
|
boolean forced) {
|
||||||
if (mContext.getDisplayId() == displayId) {
|
if (mDisplayId == displayId) {
|
||||||
updateManagedProfile();
|
updateManagedProfile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -567,14 +562,14 @@ public class PhoneStatusBarPolicy
|
|||||||
@Override
|
@Override
|
||||||
public void onRotationLockStateChanged(boolean rotationLocked, boolean affordanceVisible) {
|
public void onRotationLockStateChanged(boolean rotationLocked, boolean affordanceVisible) {
|
||||||
boolean portrait = RotationLockTile.isCurrentOrientationLockPortrait(
|
boolean portrait = RotationLockTile.isCurrentOrientationLockPortrait(
|
||||||
mRotationLockController, mContext);
|
mRotationLockController, mResources);
|
||||||
if (rotationLocked) {
|
if (rotationLocked) {
|
||||||
if (portrait) {
|
if (portrait) {
|
||||||
mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_portrait,
|
mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_portrait,
|
||||||
mContext.getString(R.string.accessibility_rotation_lock_on_portrait));
|
mResources.getString(R.string.accessibility_rotation_lock_on_portrait));
|
||||||
} else {
|
} else {
|
||||||
mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_landscape,
|
mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_landscape,
|
||||||
mContext.getString(R.string.accessibility_rotation_lock_on_landscape));
|
mResources.getString(R.string.accessibility_rotation_lock_on_landscape));
|
||||||
}
|
}
|
||||||
mIconController.setIconVisibility(mSlotRotate, true);
|
mIconController.setIconVisibility(mSlotRotate, true);
|
||||||
} else {
|
} else {
|
||||||
@@ -586,7 +581,7 @@ public class PhoneStatusBarPolicy
|
|||||||
boolean connected = intent.getIntExtra("state", 0) != 0;
|
boolean connected = intent.getIntExtra("state", 0) != 0;
|
||||||
boolean hasMic = intent.getIntExtra("microphone", 0) != 0;
|
boolean hasMic = intent.getIntExtra("microphone", 0) != 0;
|
||||||
if (connected) {
|
if (connected) {
|
||||||
String contentDescription = mContext.getString(hasMic
|
String contentDescription = mResources.getString(hasMic
|
||||||
? R.string.accessibility_status_bar_headset
|
? R.string.accessibility_status_bar_headset
|
||||||
: R.string.accessibility_status_bar_headphones);
|
: R.string.accessibility_status_bar_headphones);
|
||||||
mIconController.setIcon(mSlotHeadset, hasMic ? R.drawable.stat_sys_headset_mic
|
mIconController.setIcon(mSlotHeadset, hasMic ? R.drawable.stat_sys_headset_mic
|
||||||
@@ -630,7 +625,6 @@ public class PhoneStatusBarPolicy
|
|||||||
if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) {
|
if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
updateSimState(intent);
|
|
||||||
break;
|
break;
|
||||||
case TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED:
|
case TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED:
|
||||||
updateTTY(intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE,
|
updateTTY(intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE,
|
||||||
|
|||||||
@@ -676,6 +676,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
KeyguardDismissUtil keyguardDismissUtil,
|
KeyguardDismissUtil keyguardDismissUtil,
|
||||||
ExtensionController extensionController,
|
ExtensionController extensionController,
|
||||||
UserInfoControllerImpl userInfoControllerImpl,
|
UserInfoControllerImpl userInfoControllerImpl,
|
||||||
|
PhoneStatusBarPolicy phoneStatusBarPolicy,
|
||||||
DismissCallbackRegistry dismissCallbackRegistry,
|
DismissCallbackRegistry dismissCallbackRegistry,
|
||||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager) {
|
StatusBarTouchableRegionManager statusBarTouchableRegionManager) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -751,6 +752,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
mKeyguardDismissUtil = keyguardDismissUtil;
|
mKeyguardDismissUtil = keyguardDismissUtil;
|
||||||
mExtensionController = extensionController;
|
mExtensionController = extensionController;
|
||||||
mUserInfoControllerImpl = userInfoControllerImpl;
|
mUserInfoControllerImpl = userInfoControllerImpl;
|
||||||
|
mIconPolicy = phoneStatusBarPolicy;
|
||||||
mDismissCallbackRegistry = dismissCallbackRegistry;
|
mDismissCallbackRegistry = dismissCallbackRegistry;
|
||||||
|
|
||||||
mBubbleExpandListener =
|
mBubbleExpandListener =
|
||||||
@@ -875,8 +877,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
// end old BaseStatusBar.start().
|
// end old BaseStatusBar.start().
|
||||||
|
|
||||||
// Lastly, call to the icon policy to install/update all the icons.
|
// Lastly, call to the icon policy to install/update all the icons.
|
||||||
mIconPolicy = new PhoneStatusBarPolicy(mContext, mIconController, mCommandQueue,
|
mIconPolicy.init();
|
||||||
mBroadcastDispatcher, mUiBgExecutor);
|
|
||||||
mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController);
|
mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController);
|
||||||
|
|
||||||
mKeyguardStateController.addCallback(this);
|
mKeyguardStateController.addCallback(this);
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
|||||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
||||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||||
|
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
@@ -193,6 +194,7 @@ public interface StatusBarPhoneModule {
|
|||||||
KeyguardDismissUtil keyguardDismissUtil,
|
KeyguardDismissUtil keyguardDismissUtil,
|
||||||
ExtensionController extensionController,
|
ExtensionController extensionController,
|
||||||
UserInfoControllerImpl userInfoControllerImpl,
|
UserInfoControllerImpl userInfoControllerImpl,
|
||||||
|
PhoneStatusBarPolicy phoneStatusBarPolicy,
|
||||||
DismissCallbackRegistry dismissCallbackRegistry,
|
DismissCallbackRegistry dismissCallbackRegistry,
|
||||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager) {
|
StatusBarTouchableRegionManager statusBarTouchableRegionManager) {
|
||||||
return new StatusBar(
|
return new StatusBar(
|
||||||
@@ -269,6 +271,7 @@ public interface StatusBarPhoneModule {
|
|||||||
keyguardDismissUtil,
|
keyguardDismissUtil,
|
||||||
extensionController,
|
extensionController,
|
||||||
userInfoControllerImpl,
|
userInfoControllerImpl,
|
||||||
|
phoneStatusBarPolicy,
|
||||||
dismissCallbackRegistry,
|
dismissCallbackRegistry,
|
||||||
statusBarTouchableRegionManager);
|
statusBarTouchableRegionManager);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.util.time;
|
||||||
|
|
||||||
|
import android.app.ActivityManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.text.format.DateFormat;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiable wrapper around {@link DateFormat}.
|
||||||
|
*/
|
||||||
|
public class DateFormatUtil {
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public DateFormatUtil(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns true if the phone is in 24 hour format. */
|
||||||
|
public boolean is24HourFormat() {
|
||||||
|
return DateFormat.is24HourFormat(mContext, ActivityManager.getCurrentUser());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -247,6 +247,7 @@ public class StatusBarTest extends SysuiTestCase {
|
|||||||
@Mock private KeyguardDismissUtil mKeyguardDismissUtil;
|
@Mock private KeyguardDismissUtil mKeyguardDismissUtil;
|
||||||
@Mock private ExtensionController mExtensionController;
|
@Mock private ExtensionController mExtensionController;
|
||||||
@Mock private UserInfoControllerImpl mUserInfoControllerImpl;
|
@Mock private UserInfoControllerImpl mUserInfoControllerImpl;
|
||||||
|
@Mock private PhoneStatusBarPolicy mPhoneStatusBarPolicy;
|
||||||
private ShadeController mShadeController;
|
private ShadeController mShadeController;
|
||||||
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
|
||||||
private InitController mInitController = new InitController();
|
private InitController mInitController = new InitController();
|
||||||
@@ -400,6 +401,7 @@ public class StatusBarTest extends SysuiTestCase {
|
|||||||
mKeyguardDismissUtil,
|
mKeyguardDismissUtil,
|
||||||
mExtensionController,
|
mExtensionController,
|
||||||
mUserInfoControllerImpl,
|
mUserInfoControllerImpl,
|
||||||
|
mPhoneStatusBarPolicy,
|
||||||
mDismissCallbackRegistry,
|
mDismissCallbackRegistry,
|
||||||
mStatusBarTouchableRegionManager);
|
mStatusBarTouchableRegionManager);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user