111417b1cfde8f1749905f2d735623af9214148afJeff Brown/*
211417b1cfde8f1749905f2d735623af9214148afJeff Brown * Copyright (C) 2013 The Android Open Source Project
311417b1cfde8f1749905f2d735623af9214148afJeff Brown *
411417b1cfde8f1749905f2d735623af9214148afJeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
511417b1cfde8f1749905f2d735623af9214148afJeff Brown * you may not use this file except in compliance with the License.
611417b1cfde8f1749905f2d735623af9214148afJeff Brown * You may obtain a copy of the License at
711417b1cfde8f1749905f2d735623af9214148afJeff Brown *
811417b1cfde8f1749905f2d735623af9214148afJeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
911417b1cfde8f1749905f2d735623af9214148afJeff Brown *
1011417b1cfde8f1749905f2d735623af9214148afJeff Brown * Unless required by applicable law or agreed to in writing, software
1111417b1cfde8f1749905f2d735623af9214148afJeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
1211417b1cfde8f1749905f2d735623af9214148afJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1311417b1cfde8f1749905f2d735623af9214148afJeff Brown * See the License for the specific language governing permissions and
1411417b1cfde8f1749905f2d735623af9214148afJeff Brown * limitations under the License.
1511417b1cfde8f1749905f2d735623af9214148afJeff Brown */
1611417b1cfde8f1749905f2d735623af9214148afJeff Brown
1711417b1cfde8f1749905f2d735623af9214148afJeff Brownpackage android.support.v7.app;
1811417b1cfde8f1749905f2d735623af9214148afJeff Brown
1911417b1cfde8f1749905f2d735623af9214148afJeff Brownimport android.content.Context;
202ef36d857302c5cd738c7c8bdec53d31feebebbaJeff Brownimport android.graphics.drawable.Drawable;
2111417b1cfde8f1749905f2d735623af9214148afJeff Brownimport android.support.v7.mediarouter.R;
2211417b1cfde8f1749905f2d735623af9214148afJeff Brownimport android.util.TypedValue;
2311417b1cfde8f1749905f2d735623af9214148afJeff Brownimport android.view.ContextThemeWrapper;
2411417b1cfde8f1749905f2d735623af9214148afJeff Brown
2511417b1cfde8f1749905f2d735623af9214148afJeff Brownfinal class MediaRouterThemeHelper {
2611417b1cfde8f1749905f2d735623af9214148afJeff Brown    private MediaRouterThemeHelper() {
2711417b1cfde8f1749905f2d735623af9214148afJeff Brown    }
2811417b1cfde8f1749905f2d735623af9214148afJeff Brown
299942d40d0d952b03b583fe66f434676793697aa2Jeff Brown    public static Context createThemedContext(Context context, boolean forceDark) {
309942d40d0d952b03b583fe66f434676793697aa2Jeff Brown        boolean isLightTheme = isLightTheme(context);
319942d40d0d952b03b583fe66f434676793697aa2Jeff Brown        if (isLightTheme && forceDark) {
329942d40d0d952b03b583fe66f434676793697aa2Jeff Brown            context = new ContextThemeWrapper(context, R.style.Theme_AppCompat);
339942d40d0d952b03b583fe66f434676793697aa2Jeff Brown            isLightTheme = false;
349942d40d0d952b03b583fe66f434676793697aa2Jeff Brown        }
359942d40d0d952b03b583fe66f434676793697aa2Jeff Brown        return new ContextThemeWrapper(context, isLightTheme ?
369942d40d0d952b03b583fe66f434676793697aa2Jeff Brown                R.style.Theme_MediaRouter_Light : R.style.Theme_MediaRouter);
3711417b1cfde8f1749905f2d735623af9214148afJeff Brown    }
3811417b1cfde8f1749905f2d735623af9214148afJeff Brown
3911417b1cfde8f1749905f2d735623af9214148afJeff Brown    public static int getThemeResource(Context context, int attr) {
4011417b1cfde8f1749905f2d735623af9214148afJeff Brown        TypedValue value = new TypedValue();
4111417b1cfde8f1749905f2d735623af9214148afJeff Brown        return context.getTheme().resolveAttribute(attr, value, true) ? value.resourceId : 0;
4211417b1cfde8f1749905f2d735623af9214148afJeff Brown    }
432ef36d857302c5cd738c7c8bdec53d31feebebbaJeff Brown
442ef36d857302c5cd738c7c8bdec53d31feebebbaJeff Brown    public static Drawable getThemeDrawable(Context context, int attr) {
452ef36d857302c5cd738c7c8bdec53d31feebebbaJeff Brown        int res = getThemeResource(context, attr);
462ef36d857302c5cd738c7c8bdec53d31feebebbaJeff Brown        return res != 0 ? context.getResources().getDrawable(res) : null;
472ef36d857302c5cd738c7c8bdec53d31feebebbaJeff Brown    }
489942d40d0d952b03b583fe66f434676793697aa2Jeff Brown
499942d40d0d952b03b583fe66f434676793697aa2Jeff Brown    private static boolean isLightTheme(Context context) {
509942d40d0d952b03b583fe66f434676793697aa2Jeff Brown        TypedValue value = new TypedValue();
519942d40d0d952b03b583fe66f434676793697aa2Jeff Brown        return context.getTheme().resolveAttribute(R.attr.isLightTheme, value, true)
529942d40d0d952b03b583fe66f434676793697aa2Jeff Brown                && value.data != 0;
539942d40d0d952b03b583fe66f434676793697aa2Jeff Brown    }
5411417b1cfde8f1749905f2d735623af9214148afJeff Brown}
55