Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b29662f authored by Ricardo Cerqueira's avatar Ricardo Cerqueira Committed by Gerrit Code Review
Browse files

Merge "QS: Fix up Wifi Display tile for screencasting and reenable it" into cm-11.0

parents 91ec372f b3eff367
Loading
Loading
Loading
Loading
+70 −13
Original line number Diff line number Diff line
@@ -3,7 +3,8 @@ package com.android.systemui.quicksettings;
import android.content.Context;
import android.content.Intent;
import android.hardware.display.DisplayManager;
import android.hardware.display.WifiDisplayStatus;
import android.media.MediaRouter;
import android.media.MediaRouter.RouteInfo;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -11,11 +12,15 @@ import android.view.View.OnClickListener;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.QuickSettingsController;
import com.android.systemui.statusbar.phone.QuickSettingsContainerView;
import com.android.systemui.statusbar.phone.QuickSettingsTileView;

public class WiFiDisplayTile extends QuickSettingsTile{

    private boolean enabled = false;
    private boolean connected = false;
    private boolean connecting;
    private final MediaRouter mMediaRouter;
    private final RemoteDisplayRouteCallback mRemoteDisplayRouteCallback;
    private MediaRouter.RouteInfo connectedRoute;

    public WiFiDisplayTile(Context context, 
            QuickSettingsController qsc) {
@@ -28,20 +33,71 @@ public class WiFiDisplayTile extends QuickSettingsTile{
                startSettingsActivity(android.provider.Settings.ACTION_WIFI_DISPLAY_SETTINGS);
            }
        };
        qsc.registerAction(DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED, this);
        mMediaRouter = (MediaRouter)context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
        mRemoteDisplayRouteCallback = new RemoteDisplayRouteCallback();

    }

    /** Callback for changes to remote display routes. */
    private class RemoteDisplayRouteCallback extends MediaRouter.SimpleCallback {
        @Override
        public void onRouteAdded(MediaRouter router, RouteInfo route) {
            updateRemoteDisplays();
        }
        @Override
        public void onRouteChanged(MediaRouter router, RouteInfo route) {
            updateRemoteDisplays();
        }
        @Override
        public void onRouteRemoved(MediaRouter router, RouteInfo route) {
            updateRemoteDisplays();
        }
        @Override
        public void onRouteSelected(MediaRouter router, int type, RouteInfo route) {
            updateRemoteDisplays();
        }
        @Override
    public void onReceive(Context context, Intent intent) {
        WifiDisplayStatus status = (WifiDisplayStatus)intent.getParcelableExtra(DisplayManager.EXTRA_WIFI_DISPLAY_STATUS);
        enabled = status.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON;
        connected = status.getActiveDisplay() != null;
        public void onRouteUnselected(MediaRouter router, int type, RouteInfo route) {
            updateRemoteDisplays();
        }
    }

    private void updateRemoteDisplays() {
        connectedRoute = mMediaRouter.getSelectedRoute(
                MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY);
        enabled = connectedRoute != null && (connectedRoute.getSupportedTypes()
                & MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY) != 0;

        if (enabled) {
            connecting = connectedRoute.isConnecting();
        } else {
            connectedRoute = null;
            connecting = false;
            enabled = mMediaRouter.isRouteAvailable(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY,
                    MediaRouter.AVAILABILITY_FLAG_IGNORE_DEFAULT_ROUTE);
        }

        updateResources();
    }

    @Override
    void onPostCreate() {
        updateTile();
        mTile.setOnPrepareListener(new QuickSettingsTileView.OnPrepareListener() {
            @Override
            public void onPrepare() {
                mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY,
                        mRemoteDisplayRouteCallback,
                        MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
                updateRemoteDisplays();
            }
            @Override
            public void onUnprepare() {
                mMediaRouter.removeCallback(mRemoteDisplayRouteCallback);
            }
        });

        updateRemoteDisplays();

        super.onPostCreate();
    }

@@ -52,11 +108,12 @@ public class WiFiDisplayTile extends QuickSettingsTile{
    }

    private synchronized void updateTile() {
        if(enabled && connected) {
            mLabel = mContext.getString(R.string.quick_settings_wifi_display_label);
            mDrawable = R.drawable.ic_qs_cast_connected;
        if(enabled && (connectedRoute != null)) {
            mLabel = connectedRoute.getName().toString();
            mDrawable = connecting ?
                R.drawable.ic_qs_cast_connecting : R.drawable.ic_qs_cast_connected;
        }else{
            mLabel = mContext.getString(R.string.quick_settings_wifi_display_no_connection_label);
            mLabel = mContext.getString(R.string.quick_settings_remote_display_no_connection_label);
            mDrawable = R.drawable.ic_qs_cast_available;
        }
    }
+3 −3
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ import com.android.systemui.quicksettings.TorchTile;
import com.android.systemui.quicksettings.UsbTetherTile;
import com.android.systemui.quicksettings.UserTile;
import com.android.systemui.quicksettings.VolumeTile;
//import com.android.systemui.quicksettings.WiFiDisplayTile;
import com.android.systemui.quicksettings.WiFiDisplayTile;
import com.android.systemui.quicksettings.WiFiTile;
import com.android.systemui.quicksettings.WifiAPTile;

@@ -311,12 +311,12 @@ public class QuickSettingsController {
        if (!dockBatteryLoaded) {
            loadDockBatteryTile(resolver, inflater);
        }
        /*if (Settings.System.getIntForUser(resolver,
        if (Settings.System.getIntForUser(resolver,
                    Settings.System.QS_DYNAMIC_WIFI, 1, UserHandle.USER_CURRENT) == 1) {
            QuickSettingsTile qs = new WiFiDisplayTile(mContext, this);
            qs.setupQuickSettingsTile(inflater, mContainerView);
            mQuickSettingsTiles.add(qs);
        }*/
        }
        if (QSUtils.deviceSupportsImeSwitcher(mContext) && Settings.System.getIntForUser(resolver,
                    Settings.System.QS_DYNAMIC_IME, 1, UserHandle.USER_CURRENT) == 1) {
            mIMETile = new InputMethodTile(mContext, this);