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