From 929539eb864822d669265b142bdcc49b6cf8ea6b Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Sat, 19 May 2018 00:05:02 -0700 Subject: Implement a global theme to be easily configured in Dialer. deleted several colors and unified them across the app migrated several alert dialogs to support alert dialogs added many todos migrated several tests from GoogleRobolectricTestRunner to RobolectricTestRunner Because of the test migration: - moved dialpad theme attributes into dialpad/theme - moved incall ui theme attributes into incallui/theme Bug: 79883035 Test: tap PiperOrigin-RevId: 197246477 Change-Id: Ifc534793bc32757bbbf2007a7c40287c8d0817ad --- java/com/android/dialer/theme/ThemeUtil.java | 110 ++++++++++++++++++++ .../dialer/theme/attributes/AndroidManifest.xml | 16 +++ .../dialer/theme/attributes/res/values/attr.xml | 21 ++++ .../theme/res/color/dialer_primary_text_color.xml | 4 +- .../res/color/dialer_secondary_text_color.xml | 4 +- .../res/color/settings_text_color_primary.xml | 23 +++++ .../res/color/settings_text_color_secondary.xml | 23 +++++ .../com/android/dialer/theme/res/values/colors.xml | 58 ++--------- .../theme/res/values/colors_dialer_light.xml | 55 ++++++++++ .../com/android/dialer/theme/res/values/dimens.xml | 4 + .../com/android/dialer/theme/res/values/styles.xml | 62 ----------- .../theme/res/values/styles_dialer_light.xml | 110 ++++++++++++++++++++ .../dialer/theme/res/values/theme_dialer_light.xml | 114 +++++++++++++++++++++ .../com/android/dialer/theme/res/values/themes.xml | 79 -------------- 14 files changed, 486 insertions(+), 197 deletions(-) create mode 100644 java/com/android/dialer/theme/ThemeUtil.java create mode 100644 java/com/android/dialer/theme/attributes/AndroidManifest.xml create mode 100644 java/com/android/dialer/theme/attributes/res/values/attr.xml create mode 100644 java/com/android/dialer/theme/res/color/settings_text_color_primary.xml create mode 100644 java/com/android/dialer/theme/res/color/settings_text_color_secondary.xml create mode 100644 java/com/android/dialer/theme/res/values/colors_dialer_light.xml delete mode 100644 java/com/android/dialer/theme/res/values/styles.xml create mode 100644 java/com/android/dialer/theme/res/values/styles_dialer_light.xml create mode 100644 java/com/android/dialer/theme/res/values/theme_dialer_light.xml delete mode 100644 java/com/android/dialer/theme/res/values/themes.xml (limited to 'java/com/android/dialer/theme') diff --git a/java/com/android/dialer/theme/ThemeUtil.java b/java/com/android/dialer/theme/ThemeUtil.java new file mode 100644 index 000000000..227224448 --- /dev/null +++ b/java/com/android/dialer/theme/ThemeUtil.java @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.theme; + +import android.content.Context; +import android.content.res.TypedArray; +import android.support.annotation.ColorInt; +import android.support.annotation.StyleRes; +import android.view.ContextThemeWrapper; +import android.view.LayoutInflater; +import com.android.dialer.common.Assert; + +/** Utility for fetching */ +@SuppressWarnings("unused") +public class ThemeUtil { + + private static int theme = -1; + private static int colorIcon = -1; + private static int colorPrimary = -1; + private static int colorPrimaryDark = -1; + private static int colorAccent = -1; + private static int textColorPrimary = -1; + private static int textColorSecondary = -1; + private static int textColorPrimaryInverse = -1; + private static int textColorHint = -1; + private static int colorBackground = -1; + private static int colorBackgroundFloating = -1; + + public static void initializeTheme(Context context) { + // TODO(a bug): add share prefs check to configure this + theme = R.style.Dialer_ThemeBase_NoActionBar; + context = context.getApplicationContext(); + context.setTheme(theme); + TypedArray array = + context + .getTheme() + .obtainStyledAttributes( + theme, + new int[] { + android.R.attr.colorPrimary, + android.R.attr.colorPrimaryDark, + android.R.attr.colorAccent, + android.R.attr.textColorPrimary, + android.R.attr.textColorSecondary, + android.R.attr.textColorPrimaryInverse, + android.R.attr.textColorHint, + android.R.attr.colorBackground, + android.R.attr.colorBackgroundFloating, + R.attr.colorIcon, + }); + colorPrimary = array.getColor(/* index= */ 0, /* defValue= */ -1); + colorPrimaryDark = array.getColor(/* index= */ 1, /* defValue= */ -1); + colorAccent = array.getColor(/* index= */ 2, /* defValue= */ -1); + textColorPrimary = array.getColor(/* index= */ 3, /* defValue= */ -1); + textColorSecondary = array.getColor(/* index= */ 4, /* defValue= */ -1); + textColorPrimaryInverse = array.getColor(/* index= */ 5, /* defValue= */ -1); + textColorHint = array.getColor(/* index= */ 6, /* defValue= */ -1); + colorBackground = array.getColor(/* index= */ 7, /* defValue= */ -1); + colorBackgroundFloating = array.getColor(/* index= */ 8, /* defValue= */ -1); + colorIcon = array.getColor(/* index= */ 9, /* defValue= */ -1); + array.recycle(); + } + + public static @ColorInt int getColorIcon() { + Assert.checkArgument(colorIcon != -1); + return colorIcon; + } + + public static @ColorInt int getColorPrimary() { + Assert.checkArgument(colorPrimary != -1); + return colorPrimary; + } + + public static @ColorInt int getColorAccent() { + Assert.checkArgument(colorAccent != -1); + return colorAccent; + } + + public static @ColorInt int getTextColorSecondary() { + Assert.checkArgument(textColorSecondary != -1); + return textColorSecondary; + } + + public static @StyleRes int getTheme() { + Assert.checkArgument(theme != -1); + return theme; + } + + public static Context getThemedContext(Context context) { + return new ContextThemeWrapper(context, getTheme()); + } + + public static LayoutInflater getThemedLayoutInflator(LayoutInflater inflater) { + return inflater.cloneInContext(getThemedContext(inflater.getContext())); + } +} diff --git a/java/com/android/dialer/theme/attributes/AndroidManifest.xml b/java/com/android/dialer/theme/attributes/AndroidManifest.xml new file mode 100644 index 000000000..1a50716d2 --- /dev/null +++ b/java/com/android/dialer/theme/attributes/AndroidManifest.xml @@ -0,0 +1,16 @@ + + diff --git a/java/com/android/dialer/theme/attributes/res/values/attr.xml b/java/com/android/dialer/theme/attributes/res/values/attr.xml new file mode 100644 index 000000000..6db0aa8d3 --- /dev/null +++ b/java/com/android/dialer/theme/attributes/res/values/attr.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml b/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml index 347db41bc..6612b17ab 100644 --- a/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml +++ b/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml @@ -16,6 +16,6 @@ --> - - + + \ No newline at end of file diff --git a/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml b/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml index 920b46792..e1c000aef 100644 --- a/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml +++ b/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml @@ -16,6 +16,6 @@ --> - - + + \ No newline at end of file diff --git a/java/com/android/dialer/theme/res/color/settings_text_color_primary.xml b/java/com/android/dialer/theme/res/color/settings_text_color_primary.xml new file mode 100644 index 000000000..ba259088a --- /dev/null +++ b/java/com/android/dialer/theme/res/color/settings_text_color_primary.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/java/com/android/dialer/theme/res/color/settings_text_color_secondary.xml b/java/com/android/dialer/theme/res/color/settings_text_color_secondary.xml new file mode 100644 index 000000000..2f7899272 --- /dev/null +++ b/java/com/android/dialer/theme/res/color/settings_text_color_secondary.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/java/com/android/dialer/theme/res/values/colors.xml b/java/com/android/dialer/theme/res/values/colors.xml index 2185d861c..7c62a2103 100644 --- a/java/com/android/dialer/theme/res/values/colors.xml +++ b/java/com/android/dialer/theme/res/values/colors.xml @@ -1,3 +1,4 @@ + - + - - #2A56C6 - #1C3AA9 - - #4285F4 - #332A56C6 - #00C853 - - #F50057 - - #ffffff - #DE78909C - - - #9E9E9E - + #BD2A2A + #D8D8D8 #2A56C6 - - @color/dialer_theme_color - - - #fafafa - - #ffffff - @color/background_dialer_white - #097138 #A52714 #097138 - - @color/dialer_theme_color - - - @color/dialer_theme_color_dark - + #CFD8DC - - - #89000000 - - - #BD2A2A - - - #D8D8D8 - + \ No newline at end of file diff --git a/java/com/android/dialer/theme/res/values/colors_dialer_light.xml b/java/com/android/dialer/theme/res/values/colors_dialer_light.xml new file mode 100644 index 000000000..ea8247414 --- /dev/null +++ b/java/com/android/dialer/theme/res/values/colors_dialer_light.xml @@ -0,0 +1,55 @@ + + + + + #2A56C6 + #1C3AA9 + #F50057 + #332A56C6 + + + #212121 + #636363 + #9E9E9E + #DE78909C + #FFFFFF + #DDFFFFFF + #4285F4 + + + + @color/dialer_primary_text_color + @color/dialer_secondary_text_color + #AAAAAA + + + #FAFAFA + #FFFFFF + + + #89000000 + diff --git a/java/com/android/dialer/theme/res/values/dimens.xml b/java/com/android/dialer/theme/res/values/dimens.xml index 88b8a0423..4abe4b53a 100644 --- a/java/com/android/dialer/theme/res/values/dimens.xml +++ b/java/com/android/dialer/theme/res/values/dimens.xml @@ -54,4 +54,8 @@ 88dp + + + 16sp + 14sp diff --git a/java/com/android/dialer/theme/res/values/styles.xml b/java/com/android/dialer/theme/res/values/styles.xml deleted file mode 100644 index 8412aaadf..000000000 --- a/java/com/android/dialer/theme/res/values/styles.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/java/com/android/dialer/theme/res/values/styles_dialer_light.xml b/java/com/android/dialer/theme/res/values/styles_dialer_light.xml new file mode 100644 index 000000000..6ce3b1960 --- /dev/null +++ b/java/com/android/dialer/theme/res/values/styles_dialer_light.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com/android/dialer/theme/res/values/theme_dialer_light.xml b/java/com/android/dialer/theme/res/values/theme_dialer_light.xml new file mode 100644 index 000000000..728842915 --- /dev/null +++ b/java/com/android/dialer/theme/res/values/theme_dialer_light.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + diff --git a/java/com/android/dialer/theme/res/values/themes.xml b/java/com/android/dialer/theme/res/values/themes.xml deleted file mode 100644 index 1c5706623..000000000 --- a/java/com/android/dialer/theme/res/values/themes.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - -- cgit v1.2.3