Merge changes from topic "dialog-refactor" into sc-v2-dev am: 9f02d2fd20
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16357438 Change-Id: Ib0101a0a326b2191fb623d1c086a6d66a812a92d
This commit is contained in:
committed by
Automerger Merge Worker
commit
2c3c98982e
@@ -31,7 +31,6 @@ import android.util.Log;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnAttachStateChangeListener;
|
import android.view.View.OnAttachStateChangeListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.WindowManager.LayoutParams;
|
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -40,6 +39,7 @@ import com.android.internal.app.MediaRouteDialogPresenter;
|
|||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
|
import com.android.systemui.animation.DialogLaunchAnimator;
|
||||||
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.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
@@ -76,6 +76,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
|||||||
private final CastDetailAdapter mDetailAdapter;
|
private final CastDetailAdapter mDetailAdapter;
|
||||||
private final KeyguardStateController mKeyguard;
|
private final KeyguardStateController mKeyguard;
|
||||||
private final NetworkController mNetworkController;
|
private final NetworkController mNetworkController;
|
||||||
|
private final DialogLaunchAnimator mDialogLaunchAnimator;
|
||||||
private final Callback mCallback = new Callback();
|
private final Callback mCallback = new Callback();
|
||||||
private Dialog mDialog;
|
private Dialog mDialog;
|
||||||
private boolean mWifiConnected;
|
private boolean mWifiConnected;
|
||||||
@@ -94,7 +95,8 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
|||||||
CastController castController,
|
CastController castController,
|
||||||
KeyguardStateController keyguardStateController,
|
KeyguardStateController keyguardStateController,
|
||||||
NetworkController networkController,
|
NetworkController networkController,
|
||||||
HotspotController hotspotController
|
HotspotController hotspotController,
|
||||||
|
DialogLaunchAnimator dialogLaunchAnimator
|
||||||
) {
|
) {
|
||||||
super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger,
|
super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger,
|
||||||
statusBarStateController, activityStarter, qsLogger);
|
statusBarStateController, activityStarter, qsLogger);
|
||||||
@@ -102,6 +104,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
|||||||
mDetailAdapter = new CastDetailAdapter();
|
mDetailAdapter = new CastDetailAdapter();
|
||||||
mKeyguard = keyguardStateController;
|
mKeyguard = keyguardStateController;
|
||||||
mNetworkController = networkController;
|
mNetworkController = networkController;
|
||||||
|
mDialogLaunchAnimator = dialogLaunchAnimator;
|
||||||
mController.observe(this, mCallback);
|
mController.observe(this, mCallback);
|
||||||
mKeyguard.observe(this, mCallback);
|
mKeyguard.observe(this, mCallback);
|
||||||
mNetworkController.observe(this, mSignalCallback);
|
mNetworkController.observe(this, mSignalCallback);
|
||||||
@@ -153,9 +156,15 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
|||||||
|
|
||||||
List<CastDevice> activeDevices = getActiveDevices();
|
List<CastDevice> activeDevices = getActiveDevices();
|
||||||
if (willPopDetail()) {
|
if (willPopDetail()) {
|
||||||
mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
|
if (!mKeyguard.isShowing()) {
|
||||||
showDetail(true);
|
showDetail(view);
|
||||||
});
|
} else {
|
||||||
|
mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
|
||||||
|
// Dismissing the keyguard will collapse the shade, so we don't animate from the
|
||||||
|
// view here as it would not look good.
|
||||||
|
showDetail(null /* view */);
|
||||||
|
});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
mController.stopCasting(activeDevices.get(0));
|
mController.stopCasting(activeDevices.get(0));
|
||||||
}
|
}
|
||||||
@@ -184,19 +193,29 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showDetail(boolean show) {
|
public void showDetail(boolean show) {
|
||||||
|
showDetail(null /* view */);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showDetail(@Nullable View view) {
|
||||||
mUiHandler.post(() -> {
|
mUiHandler.post(() -> {
|
||||||
mDialog = MediaRouteDialogPresenter.createDialog(mContext, ROUTE_TYPE_REMOTE_DISPLAY,
|
mDialog = MediaRouteDialogPresenter.createDialog(mContext, ROUTE_TYPE_REMOTE_DISPLAY,
|
||||||
v -> {
|
v -> {
|
||||||
|
mDialogLaunchAnimator.disableAllCurrentDialogsExitAnimations();
|
||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
mActivityStarter
|
mActivityStarter
|
||||||
.postStartActivityDismissingKeyguard(getLongClickIntent(), 0);
|
.postStartActivityDismissingKeyguard(getLongClickIntent(), 0);
|
||||||
});
|
});
|
||||||
mDialog.getWindow().setType(LayoutParams.TYPE_KEYGUARD_DIALOG);
|
|
||||||
SystemUIDialog.setShowForAllUsers(mDialog, true);
|
SystemUIDialog.setShowForAllUsers(mDialog, true);
|
||||||
SystemUIDialog.registerDismissListener(mDialog);
|
SystemUIDialog.registerDismissListener(mDialog);
|
||||||
SystemUIDialog.setWindowOnTop(mDialog);
|
SystemUIDialog.setWindowOnTop(mDialog);
|
||||||
mUiHandler.post(() -> mDialog.show());
|
|
||||||
mHost.collapsePanels();
|
mUiHandler.post(() -> {
|
||||||
|
if (view != null) {
|
||||||
|
mDialogLaunchAnimator.showFromView(mDialog, view);
|
||||||
|
} else {
|
||||||
|
mDialog.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import androidx.test.filters.SmallTest;
|
|||||||
|
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
|
import com.android.systemui.animation.DialogLaunchAnimator;
|
||||||
import com.android.systemui.classifier.FalsingManagerFake;
|
import com.android.systemui.classifier.FalsingManagerFake;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
@@ -90,6 +91,8 @@ public class CastTileTest extends SysuiTestCase {
|
|||||||
private HotspotController.Callback mHotspotCallback;
|
private HotspotController.Callback mHotspotCallback;
|
||||||
@Mock
|
@Mock
|
||||||
private QSLogger mQSLogger;
|
private QSLogger mQSLogger;
|
||||||
|
@Mock
|
||||||
|
private DialogLaunchAnimator mDialogLaunchAnimator;
|
||||||
|
|
||||||
private TestableLooper mTestableLooper;
|
private TestableLooper mTestableLooper;
|
||||||
private CastTile mCastTile;
|
private CastTile mCastTile;
|
||||||
@@ -113,7 +116,8 @@ public class CastTileTest extends SysuiTestCase {
|
|||||||
mController,
|
mController,
|
||||||
mKeyguard,
|
mKeyguard,
|
||||||
mNetworkController,
|
mNetworkController,
|
||||||
mHotspotController
|
mHotspotController,
|
||||||
|
mDialogLaunchAnimator
|
||||||
);
|
);
|
||||||
mCastTile.initialize();
|
mCastTile.initialize();
|
||||||
|
|
||||||
@@ -241,6 +245,7 @@ public class CastTileTest extends SysuiTestCase {
|
|||||||
List<CastDevice> devices = new ArrayList<>();
|
List<CastDevice> devices = new ArrayList<>();
|
||||||
devices.add(device);
|
devices.add(device);
|
||||||
when(mController.getCastDevices()).thenReturn(devices);
|
when(mController.getCastDevices()).thenReturn(devices);
|
||||||
|
when(mKeyguard.isShowing()).thenReturn(true);
|
||||||
|
|
||||||
enableWifiAndProcessMessages();
|
enableWifiAndProcessMessages();
|
||||||
mCastTile.handleClick(null /* view */);
|
mCastTile.handleClick(null /* view */);
|
||||||
|
|||||||
Reference in New Issue
Block a user