Merge "[Status Bar Refactor] Make StatusBarDemoMode part of the fragment component so it's re-created each time we get a new status bar view."
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4bdb6fdca
@@ -146,6 +146,7 @@ import com.android.systemui.classifier.FalsingCollector;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.demomode.DemoMode;
|
||||
import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.emergency.EmergencyGesture;
|
||||
@@ -1549,7 +1550,7 @@ public class StatusBar extends CoreStartable implements
|
||||
mHeadsUpManager.addListener(mStatusBarComponent.getStatusBarHeadsUpChangeListener());
|
||||
|
||||
// Listen for demo mode changes
|
||||
mDemoModeController.addCallback(mStatusBarComponent.getStatusBarDemoMode());
|
||||
mDemoModeController.addCallback(mDemoModeCallback);
|
||||
|
||||
if (mCommandQueueCallbacks != null) {
|
||||
mCommandQueue.removeCallback(mCommandQueueCallbacks);
|
||||
@@ -4430,4 +4431,14 @@ public class StatusBar extends CoreStartable implements
|
||||
return mStartingSurfaceOptional.get().getBackgroundColor(task);
|
||||
}
|
||||
};
|
||||
|
||||
private final DemoMode mDemoModeCallback = new DemoMode() {
|
||||
@Override
|
||||
public void onDemoModeFinished() {
|
||||
checkBarModes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispatchDemoCommand(String command, Bundle args) { }
|
||||
};
|
||||
}
|
||||
|
||||
@@ -21,28 +21,39 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRAN
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
|
||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
|
||||
import static com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentModule.OPERATOR_NAME_VIEW;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dagger.qualifiers.DisplayId;
|
||||
import com.android.systemui.demomode.DemoMode;
|
||||
import com.android.systemui.demomode.DemoModeCommandReceiver;
|
||||
import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.navigationbar.NavigationBarController;
|
||||
import com.android.systemui.statusbar.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
|
||||
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentScope;
|
||||
import com.android.systemui.statusbar.policy.Clock;
|
||||
import com.android.systemui.util.ViewController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
/** */
|
||||
@StatusBarComponent.StatusBarScope
|
||||
public class StatusBarDemoMode implements DemoMode {
|
||||
private final StatusBar mStatusBar;
|
||||
/**
|
||||
* A controller that updates status-bar-related views during demo mode.
|
||||
*
|
||||
* This class extends ViewController not because it controls a specific view, but because we want it
|
||||
* to get torn down and re-created in line with the view's lifecycle.
|
||||
*/
|
||||
@StatusBarFragmentScope
|
||||
public class StatusBarDemoMode extends ViewController<View> implements DemoMode {
|
||||
private final Clock mClockView;
|
||||
private final View mOperatorNameView;
|
||||
private final DemoModeController mDemoModeController;
|
||||
private final NotificationShadeWindowController mNotificationShadeWindowController;
|
||||
private final NotificationShadeWindowViewController mNotificationShadeWindowViewController;
|
||||
private final NavigationBarController mNavigationBarController;
|
||||
@@ -50,18 +61,33 @@ public class StatusBarDemoMode implements DemoMode {
|
||||
|
||||
@Inject
|
||||
StatusBarDemoMode(
|
||||
StatusBar statusBar,
|
||||
Clock clockView,
|
||||
@Named(OPERATOR_NAME_VIEW) View operatorNameView,
|
||||
DemoModeController demoModeController,
|
||||
NotificationShadeWindowController notificationShadeWindowController,
|
||||
NotificationShadeWindowViewController notificationShadeWindowViewController,
|
||||
NavigationBarController navigationBarController,
|
||||
@DisplayId int displayId) {
|
||||
mStatusBar = statusBar;
|
||||
super(clockView);
|
||||
mClockView = clockView;
|
||||
mOperatorNameView = operatorNameView;
|
||||
mDemoModeController = demoModeController;
|
||||
mNotificationShadeWindowController = notificationShadeWindowController;
|
||||
mNotificationShadeWindowViewController = notificationShadeWindowViewController;
|
||||
mNavigationBarController = navigationBarController;
|
||||
mDisplayId = displayId;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onViewAttached() {
|
||||
mDemoModeController.addCallback(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onViewDetached() {
|
||||
mDemoModeController.removeCallback(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> demoCommands() {
|
||||
List<String> s = new ArrayList<>();
|
||||
@@ -74,21 +100,23 @@ public class StatusBarDemoMode implements DemoMode {
|
||||
@Override
|
||||
public void onDemoModeStarted() {
|
||||
// Must send this message to any view that we delegate to via dispatchDemoCommandToView
|
||||
dispatchDemoModeStartedToView(R.id.clock);
|
||||
dispatchDemoModeStartedToView(R.id.operator_name);
|
||||
dispatchDemoModeStartedToView(mClockView);
|
||||
dispatchDemoModeStartedToView(mOperatorNameView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDemoModeFinished() {
|
||||
dispatchDemoModeFinishedToView(R.id.clock);
|
||||
dispatchDemoModeFinishedToView(R.id.operator_name);
|
||||
mStatusBar.checkBarModes();
|
||||
dispatchDemoModeFinishedToView(mClockView);
|
||||
dispatchDemoModeFinishedToView(mOperatorNameView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispatchDemoCommand(String command, @NonNull Bundle args) {
|
||||
if (command.equals(COMMAND_CLOCK)) {
|
||||
dispatchDemoCommandToView(command, args, R.id.clock);
|
||||
dispatchDemoCommandToView(command, args, mClockView);
|
||||
}
|
||||
if (command.equals(COMMAND_OPERATOR)) {
|
||||
dispatchDemoCommandToView(command, args, mOperatorNameView);
|
||||
}
|
||||
if (command.equals(COMMAND_BARS)) {
|
||||
String mode = args.getString("mode");
|
||||
@@ -108,34 +136,21 @@ public class StatusBarDemoMode implements DemoMode {
|
||||
mNavigationBarController.transitionTo(mDisplayId, barMode, animate);
|
||||
}
|
||||
}
|
||||
if (command.equals(COMMAND_OPERATOR)) {
|
||||
dispatchDemoCommandToView(command, args, R.id.operator_name);
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchDemoModeStartedToView(int id) {
|
||||
View statusBarView = mStatusBar.getStatusBarView();
|
||||
if (statusBarView == null) return;
|
||||
View v = statusBarView.findViewById(id);
|
||||
private void dispatchDemoModeStartedToView(View v) {
|
||||
if (v instanceof DemoModeCommandReceiver) {
|
||||
((DemoModeCommandReceiver) v).onDemoModeStarted();
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: these should have controllers, and this method should be removed
|
||||
private void dispatchDemoCommandToView(String command, Bundle args, int id) {
|
||||
View statusBarView = mStatusBar.getStatusBarView();
|
||||
if (statusBarView == null) return;
|
||||
View v = statusBarView.findViewById(id);
|
||||
private void dispatchDemoCommandToView(String command, Bundle args, View v) {
|
||||
if (v instanceof DemoModeCommandReceiver) {
|
||||
((DemoModeCommandReceiver) v).dispatchDemoCommand(command, args);
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchDemoModeFinishedToView(int id) {
|
||||
View statusBarView = mStatusBar.getStatusBarView();
|
||||
if (statusBarView == null) return;
|
||||
View v = statusBarView.findViewById(id);
|
||||
private void dispatchDemoModeFinishedToView(View v) {
|
||||
if (v instanceof DemoModeCommandReceiver) {
|
||||
((DemoModeCommandReceiver) v).onDemoModeFinished();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowViewController;
|
||||
import com.android.systemui.statusbar.phone.SplitShadeHeaderController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarCommandQueueCallbacks;
|
||||
import com.android.systemui.statusbar.phone.StatusBarDemoMode;
|
||||
import com.android.systemui.statusbar.phone.StatusBarHeadsUpChangeListener;
|
||||
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
|
||||
|
||||
@@ -108,12 +107,6 @@ public interface StatusBarComponent {
|
||||
@StatusBarScope
|
||||
AuthRippleController getAuthRippleController();
|
||||
|
||||
/**
|
||||
* Creates a StatusBarDemoMode.
|
||||
*/
|
||||
@StatusBarScope
|
||||
StatusBarDemoMode getStatusBarDemoMode();
|
||||
|
||||
/**
|
||||
* Creates a StatusBarHeadsUpChangeListener.
|
||||
*/
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
|
||||
import com.android.systemui.statusbar.phone.LightsOutNotifController;
|
||||
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
|
||||
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarDemoMode;
|
||||
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
|
||||
|
||||
import dagger.BindsInstance;
|
||||
@@ -62,6 +63,7 @@ public interface StatusBarFragmentComponent {
|
||||
getHeadsUpAppearanceController().init();
|
||||
getPhoneStatusBarViewController().init();
|
||||
getLightsOutNotifController().init();
|
||||
getStatusBarDemoMode().init();
|
||||
}
|
||||
|
||||
/** */
|
||||
@@ -84,4 +86,8 @@ public interface StatusBarFragmentComponent {
|
||||
/** */
|
||||
@StatusBarFragmentScope
|
||||
LightsOutNotifController getLightsOutNotifController();
|
||||
|
||||
/** */
|
||||
@StatusBarFragmentScope
|
||||
StatusBarDemoMode getStatusBarDemoMode();
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.android.systemui.statusbar.phone.NotificationPanelViewController;
|
||||
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
|
||||
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController;
|
||||
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
|
||||
import com.android.systemui.statusbar.policy.Clock;
|
||||
|
||||
import javax.inject.Named;
|
||||
|
||||
@@ -36,6 +37,7 @@ import dagger.Provides;
|
||||
public interface StatusBarFragmentModule {
|
||||
|
||||
String LIGHTS_OUT_NOTIF_VIEW = "lights_out_notif_view";
|
||||
String OPERATOR_NAME_VIEW = "operator_name_view";
|
||||
|
||||
/** */
|
||||
@Provides
|
||||
@@ -61,6 +63,21 @@ public interface StatusBarFragmentModule {
|
||||
return view.findViewById(R.id.notification_lights_out);
|
||||
}
|
||||
|
||||
/** */
|
||||
@Provides
|
||||
@StatusBarFragmentScope
|
||||
@Named(OPERATOR_NAME_VIEW)
|
||||
static View provideOperatorNameView(@RootView PhoneStatusBarView view) {
|
||||
return view.findViewById(R.id.operator_name);
|
||||
}
|
||||
|
||||
/** */
|
||||
@Provides
|
||||
@StatusBarFragmentScope
|
||||
static Clock provideClock(@RootView PhoneStatusBarView view) {
|
||||
return view.findViewById(R.id.clock);
|
||||
}
|
||||
|
||||
/** */
|
||||
@Provides
|
||||
@StatusBarFragmentScope
|
||||
|
||||
Reference in New Issue
Block a user