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

Commit c04cae89 authored by Sungsoo Lim's avatar Sungsoo Lim Committed by Android (Google) Code Review
Browse files

Merge "Show MediaRouteChooserDialog in MediaControlView2"

parents ff0f3ffd 0bfa9505
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@

<resources>

    <style name="Theme.MediaRouter" parent="ThemeOverlay.AppCompat.Dark">
        <item name="windowNoTitle">true</item>
    <style name="Theme.MediaRouter" parent="android:Theme.Material">
        <item name="android:windowNoTitle">true</item>
        <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.MediaRouteButton</item>

        <item name="mediaRouteCloseDrawable">@drawable/mr_dialog_close_dark</item>
@@ -37,8 +37,8 @@
        <item name="mediaRouteControlPanelThemeOverlay">@style/ThemeOverlay.MediaRouter.Light</item>
    </style>

    <style name="Theme.MediaRouter.Light" parent="ThemeOverlay.AppCompat.Light">
        <item name="windowNoTitle">true</item>
    <style name="Theme.MediaRouter.Light" parent="android:Theme.Material.Light">
        <item name="android:windowNoTitle">true</item>
        <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.Light.MediaRouteButton</item>

        <item name="mediaRouteCloseDrawable">@drawable/mr_dialog_close_light</item>
@@ -58,14 +58,14 @@
        <item name="mediaRouteControlPanelThemeOverlay">@style/ThemeOverlay.MediaRouter.Dark</item>
    </style>

    <style name="ThemeOverlay.MediaRouter.Dark" parent="ThemeOverlay.AppCompat.Dark">
    <style name="ThemeOverlay.MediaRouter.Dark" parent="android:Theme.Material">
        <item name="mediaRoutePlayDrawable">@drawable/mr_media_play_dark</item>
        <item name="mediaRoutePauseDrawable">@drawable/mr_media_pause_dark</item>
        <item name="mediaRouteStopDrawable">@drawable/mr_media_stop_dark</item>
        <item name="mediaRouteAudioTrackDrawable">@drawable/mr_vol_type_audiotrack_dark</item>

    </style>
    <style name="ThemeOverlay.MediaRouter.Light" parent="ThemeOverlay.AppCompat.Light">
    <style name="ThemeOverlay.MediaRouter.Light" parent="android:Theme.Material.Light">
        <item name="mediaRoutePlayDrawable">@drawable/mr_media_play_light</item>
        <item name="mediaRoutePauseDrawable">@drawable/mr_media_pause_light</item>
        <item name="mediaRouteStopDrawable">@drawable/mr_media_stop_light</item>
+24 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.media.update;

import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.Theme;
@@ -24,6 +25,7 @@ import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.android.support.mediarouter.app.MediaRouteButton;

@@ -51,13 +53,23 @@ public class ApiHelper {
        return sInstance.mLibResources;
    }

    public static Resources.Theme getLibTheme() {
    public static Theme getLibTheme() {
        return sInstance.mLibTheme;
    }

    public static Theme getLibTheme(int themeId) {
        Theme theme = sInstance.mLibResources.newTheme();
        theme.applyStyle(themeId, true);
        return theme;
    }

    public static LayoutInflater getLayoutInflater(Context context) {
        return getLayoutInflater(context, getLibTheme());
    }

    public static LayoutInflater getLayoutInflater(Context context, Theme theme) {
        LayoutInflater layoutInflater = LayoutInflater.from(context).cloneInContext(
                new ContextThemeWrapper(context, getLibTheme()));
                new ContextThemeWrapper(context, theme));
        layoutInflater.setFactory2(new LayoutInflater.Factory2() {
            @Override
            public View onCreateView(
@@ -77,8 +89,17 @@ public class ApiHelper {
    }

    public static View inflateLibLayout(Context context, int libResId) {
        return inflateLibLayout(context, getLibTheme(), libResId, null, false);
    }

    public static View inflateLibLayout(Context context, Theme theme, int libResId) {
        return inflateLibLayout(context, theme, libResId, null, false);
    }

    public static View inflateLibLayout(Context context, Theme theme, int libResId,
            @Nullable ViewGroup root, boolean attachToRoot) {
        try (XmlResourceParser parser = getLibResources().getLayout(libResId)) {
            return getLayoutInflater(context).inflate(parser, null);
            return getLayoutInflater(context, theme).inflate(parser, root, attachToRoot);
        }
    }
}
+2 −10
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.support.mediarouter.app;

import android.annotation.NonNull;
import android.app.Activity;
import android.app.FragmentManager;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.ColorStateList;
@@ -27,8 +28,6 @@ import android.graphics.Canvas;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.widget.TooltipCompat;
import android.util.AttributeSet;
@@ -259,7 +258,7 @@ public class MediaRouteButton extends View {
            return false;
        }

        final FragmentManager fm = getFragmentManager();
        final FragmentManager fm = getActivity().getFragmentManager();
        if (fm == null) {
            throw new IllegalStateException("The activity must be a subclass of FragmentActivity");
        }
@@ -286,13 +285,6 @@ public class MediaRouteButton extends View {
        return true;
    }

    private FragmentManager getFragmentManager() {
        Activity activity = getActivity();
        if (activity instanceof FragmentActivity) {
            return ((FragmentActivity)activity).getSupportFragmentManager();
        }
        return null;
    }

    private Activity getActivity() {
        // Gross way of unwrapping the Activity so we can get the FragmentManager
+26 −13
Original line number Diff line number Diff line
@@ -20,7 +20,9 @@ import static com.android.support.mediarouter.media.MediaRouter.RouteInfo.CONNEC
import static com.android.support.mediarouter.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING;

import android.annotation.NonNull;
import android.app.Dialog;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -31,6 +33,7 @@ import android.os.SystemClock;
import android.support.v7.app.AppCompatDialog;
import android.text.TextUtils;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -41,6 +44,7 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.android.media.update.ApiHelper;
import com.android.media.update.R;
import com.android.support.mediarouter.media.MediaRouteSelector;
import com.android.support.mediarouter.media.MediaRouter;
@@ -61,7 +65,7 @@ import java.util.List;
 * @see MediaRouteButton
 * @see MediaRouteActionProvider
 */
public class MediaRouteChooserDialog extends AppCompatDialog {
public class MediaRouteChooserDialog extends Dialog {
    static final String TAG = "MediaRouteChooserDialog";

    // Do not update the route list immediately to avoid unnatural dialog change.
@@ -94,8 +98,9 @@ public class MediaRouteChooserDialog extends AppCompatDialog {
    }

    public MediaRouteChooserDialog(Context context, int theme) {
        super(context = MediaRouterThemeHelper.createThemedDialogContext(context, theme, false),
                MediaRouterThemeHelper.createThemedDialogStyle(context));
        super(new ContextThemeWrapper(context,
                ApiHelper.getLibTheme(MediaRouterThemeHelper.getRouterThemeId(context))),
                theme == 0 ? android.R.style.Animation : theme);
        context = getContext();

        mRouter = MediaRouter.getInstance(context);
@@ -182,7 +187,9 @@ public class MediaRouteChooserDialog extends AppCompatDialog {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.mr_chooser_dialog);
        setContentView(ApiHelper.inflateLibLayout(getContext(),
                ApiHelper.getLibTheme(MediaRouterThemeHelper.getRouterThemeId(getContext())),
                R.layout.mr_chooser_dialog));

        mRoutes = new ArrayList<>();
        mAdapter = new RouteAdapter(getContext(), mRoutes);
@@ -199,7 +206,7 @@ public class MediaRouteChooserDialog extends AppCompatDialog {
     * Sets the width of the dialog. Also called when configuration changes.
     */
    void updateLayout() {
        getWindow().setLayout(MediaRouteDialogHelper.getDialogWidth(getContext()),
        getWindow().setLayout(MediaRouteDialogHelper.getDialogWidth(),
                ViewGroup.LayoutParams.WRAP_CONTENT);
    }

@@ -248,7 +255,6 @@ public class MediaRouteChooserDialog extends AppCompatDialog {

    private final class RouteAdapter extends ArrayAdapter<MediaRouter.RouteInfo>
            implements ListView.OnItemClickListener {
        private final LayoutInflater mInflater;
        private final Drawable mDefaultIcon;
        private final Drawable mTvIcon;
        private final Drawable mSpeakerIcon;
@@ -256,12 +262,16 @@ public class MediaRouteChooserDialog extends AppCompatDialog {

        public RouteAdapter(Context context, List<MediaRouter.RouteInfo> routes) {
            super(context, 0, routes);
            mInflater = LayoutInflater.from(context);
            TypedArray styledAttributes = getContext().obtainStyledAttributes(new int[] {

            TypedArray styledAttributes = ApiHelper.getLibTheme(
                    MediaRouterThemeHelper.getRouterThemeId(context)).obtainStyledAttributes(
                            new int[] {
                                R.attr.mediaRouteDefaultIconDrawable,
                                R.attr.mediaRouteTvIconDrawable,
                                R.attr.mediaRouteSpeakerIconDrawable,
                    R.attr.mediaRouteSpeakerGroupIconDrawable});
                                R.attr.mediaRouteSpeakerGroupIconDrawable
                            });

            mDefaultIcon = styledAttributes.getDrawable(0);
            mTvIcon = styledAttributes.getDrawable(1);
            mSpeakerIcon = styledAttributes.getDrawable(2);
@@ -283,7 +293,10 @@ public class MediaRouteChooserDialog extends AppCompatDialog {
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            if (view == null) {
                view = mInflater.inflate(R.layout.mr_chooser_list_item, parent, false);
                view = ApiHelper.inflateLibLayout(getContext(),
                        ApiHelper.getLibTheme(
                                MediaRouterThemeHelper.getRouterThemeId(getContext())),
                        R.layout.mr_chooser_list_item, parent, false);
            }

            MediaRouter.RouteInfo route = getItem(position);
+1 −1
Original line number Diff line number Diff line
@@ -17,10 +17,10 @@
package com.android.support.mediarouter.app;

import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;

import com.android.support.mediarouter.media.MediaRouteSelector;

Loading