Merge "Merge "Fix cast dialog dismiss on home/recents" into oc-dev am: 5c0f27a24b" into oc-dev-plus-aosp
am: 9af66b3521
Change-Id: Ia8c4aa8371c2cc910194c77b4053a3ac865affcd
This commit is contained in:
@@ -16,8 +16,14 @@
|
||||
|
||||
package com.android.systemui.qs.tiles;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnDismissListener;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.support.v7.app.MediaRouteChooserDialog;
|
||||
@@ -61,6 +67,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
||||
private final KeyguardMonitor mKeyguard;
|
||||
private final Callback mCallback = new Callback();
|
||||
private final ActivityStarter mActivityStarter;
|
||||
private Dialog mDialog;
|
||||
|
||||
public CastTile(QSHost host) {
|
||||
super(host);
|
||||
@@ -128,9 +135,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
||||
Context context = new ContextThemeWrapper(mContext,
|
||||
R.style.Theme_AppCompat_Light_Dialog_Alert);
|
||||
if (mState.value) {
|
||||
MediaRouteControllerDialog dialog = new MediaRouteControllerDialog(context);
|
||||
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
|
||||
dialog.show();
|
||||
mDialog = new MediaRouteControllerDialog(context);
|
||||
} else {
|
||||
// Instead of showing detail, show standard media routing UI.
|
||||
MediaRouteChooserDialog dialog = new MediaRouteChooserDialog(context);
|
||||
@@ -138,13 +143,21 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
||||
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
|
||||
.build();
|
||||
dialog.setRouteSelector(selector);
|
||||
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
|
||||
dialog.show();
|
||||
mDialog = dialog;
|
||||
}
|
||||
mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
|
||||
mDialog.show();
|
||||
registerReceiver();
|
||||
mHost.collapsePanels();
|
||||
});
|
||||
}
|
||||
|
||||
private void registerReceiver() {
|
||||
mContext.registerReceiverAsUser(mReceiver, UserHandle.CURRENT,
|
||||
new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS), null, null);
|
||||
mDialog.setOnDismissListener(dialog -> mContext.unregisterReceiver(mReceiver));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getTileLabel() {
|
||||
return mContext.getString(R.string.quick_settings_cast_title);
|
||||
@@ -210,6 +223,15 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
||||
}
|
||||
};
|
||||
|
||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (mDialog != null) {
|
||||
mDialog.dismiss();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final class CastDetailAdapter implements DetailAdapter, QSDetailItems.Callback {
|
||||
private final LinkedHashMap<String, CastDevice> mVisibleOrder = new LinkedHashMap<>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user