Skip to content

Commit 53117ef

Browse files
authored
Create common-ui module for common theming across the apps (#1277)
* extracted theming, colors and dimensions to a common-ui module * cleaning up references to styles * fixed wrong theme inheritance * remove unnecessary test
1 parent 3c36dc5 commit 53117ef

30 files changed

+393
-248
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ android {
125125
dependencies {
126126
implementation project(path: ':statistics')
127127
implementation project(path: ':common')
128+
implementation project(path: ':common-ui')
128129
implementation project(path: ':di')
129130

130131
implementation AndroidX.legacy.supportV4
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version="1.0" encoding="utf-8"?><!--
2+
~ Copyright (c) 2021 DuckDuckGo
3+
~
4+
~ Licensed under the Apache License, Version 2.0 (the "License");
5+
~ you may not use this file except in compliance with the License.
6+
~ You may obtain a copy of the License at
7+
~
8+
~ http://www.apache.org/licenses/LICENSE-2.0
9+
~
10+
~ Unless required by applicable law or agreed to in writing, software
11+
~ distributed under the License is distributed on an "AS IS" BASIS,
12+
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
~ See the License for the specific language governing permissions and
14+
~ limitations under the License.
15+
-->
16+
17+
<resources>
18+
<style name="FireDialog" parent="@style/Theme.Design.BottomSheetDialog">
19+
<item name="android:windowIsFloating">false</item>
20+
<item name="android:navigationBarColor">?toolbarBgColor</item>
21+
<item name="android:statusBarColor">@android:color/transparent</item>
22+
<item name="bottomSheetStyle">@style/FireDialogStyle</item>
23+
</style>
24+
25+
<style name="EmailTooltip" parent="@style/Theme.Design.BottomSheetDialog">
26+
<item name="android:windowIsFloating">false</item>
27+
<item name="android:navigationBarColor">?toolbarBgColor</item>
28+
<item name="android:statusBarColor">@android:color/transparent</item>
29+
<item name="bottomSheetStyle">@style/EmailTooltipStyle</item>
30+
</style>
31+
</resources>

app/src/main/res/values/styles.xml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@
1616

1717
<resources xmlns:tools="http://schemas.android.com/tools">
1818

19-
<style name="BottomSheetDialog" parent="Theme.Design.BottomSheetDialog">
20-
<item name="bottomSheetStyle">@style/BottomSheetStyle</item>
21-
</style>
22-
23-
<style name="BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
24-
<item name="behavior_peekHeight">512dp</item>
25-
</style>
26-
2719
<style name="DashboardHeader">
2820
<item name="android:fontFamily">sans-serif</item>
2921
<item name="android:letterSpacing">0.14</item>
@@ -313,10 +305,6 @@
313305
<item name="android:textSize">13sp</item>
314306
</style>
315307

316-
<style name="snackbarButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Snackbar">
317-
<item name="android:textColor">?attr/colorAccent</item>
318-
</style>
319-
320308
<style name="FireproofWebsiteSectionTitle">
321309
<item name="android:layout_width">match_parent</item>
322310
<item name="android:layout_height">wrap_content</item>

app/src/main/res/values/themes.xml

Lines changed: 3 additions & 219 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<!--
2-
~ Copyright (c) 2018 DuckDuckGo
1+
<?xml version="1.0" encoding="utf-8"?><!--
2+
~ Copyright (c) 2021 DuckDuckGo
33
~
44
~ Licensed under the Apache License, Version 2.0 (the "License");
55
~ you may not use this file except in compliance with the License.
@@ -16,223 +16,7 @@
1616

1717
<resources>
1818

19-
<style name="BaseAppTheme" parent="Theme.MaterialComponents.Light.Bridge"/>
2019

21-
<style name="AppTheme" parent="BaseAppTheme">
2220

23-
<!-- These neutral colors cover cases before dynamic theme can be applied
24-
such as the app launch color -->
25-
<item name="colorPrimary">@color/almostBlackDark</item>
26-
<item name="colorPrimaryDark">@color/black</item>
27-
<item name="colorAccent">@color/cornflowerBlue</item>
28-
<item name="android:windowBackground">?attr/colorPrimaryDark</item>
29-
<item name="windowActionBar">false</item>
30-
<item name="windowNoTitle">true</item>
31-
<item name="bottomSheetDialogTheme">@style/BottomSheetDialog</item>
32-
<item name="android:windowActivityTransitions">true</item>
33-
<item name="autoCompleteTextViewStyle">@style/AutoCompleteTextViewStyle</item>
34-
<item name="android:statusBarColor">?toolbarBgColor</item>
35-
<item name="snackbarButtonStyle">@style/snackbarButtonStyle</item>
36-
<item name="android:colorEdgeEffect">@color/newBlack</item>
37-
</style>
3821

39-
<style name="AppTheme.BaseDark">
40-
<item name="colorPrimary">@color/darkThemePrimary</item>
41-
<item name="colorPrimaryDark">@color/darkThemePrimaryDark</item>
42-
<item name="daxLogoTextColor">@color/white</item>
43-
<item name="normalTextColor">@color/white</item>
44-
<item name="toolbarIconColor">@color/white</item>
45-
<item name="toolbarTextColor">@color/white</item>
46-
<item name="toolbarBgColor">@color/newBlack</item>
47-
<item name="toolbarBgBorderColor">@color/toolbarBorderColorDark</item>
48-
<item name="dialogBgColor">@color/almostBlackDark</item>
49-
<item name="browserIconColorSelector">@color/browser_icon_color_selector_dark</item>
50-
<item name="browserMenuTextColor">@color/white</item>
51-
<item name="browserMenuTextColorDisabled">@color/warGreyTwo</item>
52-
<item name="omnibarRoundedFieldBackgroundColor">@color/almostBlack</item>
53-
<item name="omnibarTextColor">@color/white</item>
54-
<item name="omnibarHintColor">@color/paleBrownishGray</item>
55-
<item name="omnibarLogoLetterTextColor">@color/midGray</item>
56-
<item name="autoCompleteTextColor">@color/white</item>
57-
<item name="autoCompleteSubtitleTextColor">@color/grayish</item>
58-
<item name="tabTitleTextColor">@color/white</item>
59-
<item name="tabTitleTextColorLegacy">@color/midnight</item>
60-
<item name="tabSubtitleTextColor">@color/coolGray</item>
61-
<item name="tabSelectedBorderColor">@color/skyBlue</item>
62-
<item name="tabsFireTextColor">@color/white</item>
63-
<item name="tabCardBackgroundColor">@color/almostBlack</item>
64-
<item name="whitelistTextColor">@color/white</item>
65-
<item name="bookmarkIconColor">@color/white</item>
66-
<item name="websiteListFaviconBackground">@color/almostBlack</item>
67-
<item name="bookmarkTitleTextColor">@color/white</item>
68-
<item name="savedSiteEmptyTextColor">@color/white</item>
69-
<item name="fireproofWebsiteTitleTextColor">@color/white</item>
70-
<item name="savedSiteSubtitleTextColor">@color/grayishTwo</item>
71-
<item name="settingsItemTextColor">@color/white</item>
72-
<item name="settingsItemTextColorDisabled">@color/warGreyTwo</item>
73-
<item name="settingsMinorTextColor">@color/grayishTwo</item>
74-
<item name="settingsSwitchBackgroundColor">@color/subtleGrayTwo</item>
75-
<item name="settingsDividerColor">@color/almostBlack</item>
76-
<item name="buttonOutlinedTextColor">@color/pinkishGrayThree</item>
77-
<item name="buttonOutlinedBorderColor">@color/brownishGrayTwo</item>
78-
<item name="callToActionTitleColor">@color/white</item>
79-
<item name="callToActionSubtitleColor">@color/grayishThree</item>
80-
<item name="daxDialogBackgroundColor">@color/charcoalGrey</item>
81-
<item name="daxDialogSecondaryButtonTextColor">@color/white</item>
82-
<item name="daxDialogSecondaryButtonRippleColor">@color/white</item>
83-
84-
<item name="brokenSiteSelectionTextColor">@color/white</item>
85-
<item name="brokenSiteOutlinedColor">@color/grayish</item>
86-
<item name="brokenSitesButtonDisabledBackgroundColor">@color/greyishBrownTwo</item>
87-
<item name="brokenSitesButtonDisabledTextColor">@color/warGreyTwo</item>
88-
<item name="brokenSitesButtonRippleColor">@color/white</item>
89-
90-
<item name="feedbackAnonymousFeedbackLabelColor">@color/grayish</item>
91-
<item name="feedbackListItemBackgroundColor">@color/almostBlack</item>
92-
<item name="feedbackListItemSeparatorColor">@color/charcoalGrey</item>
93-
<item name="feedbackEditTextBackgroundColor">@color/almostBlack</item>
94-
<item name="feedbackEditTextHintColor">@color/grayish</item>
95-
96-
<item name="privacyDashboardLogoLetterTextColor">@color/subtleGray</item>
97-
</style>
98-
99-
<style name="AppTheme.Dark" parent="AppTheme.BaseDark" />
100-
101-
<style name="AppTheme.Dark.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
102-
103-
<style name="AppTheme.Dark.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
104-
105-
<style name="AppTheme.Dark.Transparent">
106-
<item name="android:statusBarColor">@android:color/transparent</item>
107-
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
108-
</style>
109-
110-
<!-- To create a new color theme, copy this light one and update the suffix as appropriate.
111-
Include:
112-
* AppTheme.BaseLight
113-
* AppTheme.Light
114-
* AppTheme.Light in values-v23/themes.xml
115-
* SplashTheme.Light
116-
-->
117-
<style name="AppTheme.BaseLight">
118-
<item name="colorPrimary">@color/lightThemePrimary</item>
119-
<item name="colorPrimaryDark">@color/lightThemePrimaryDark</item>
120-
<item name="daxLogoTextColor">@color/almostBlackDark</item>
121-
<item name="normalTextColor">@color/almostBlackDark</item>
122-
<item name="toolbarIconColor">@color/almostBlackDark</item>
123-
<item name="toolbarTextColor">@color/almostBlackDark</item>
124-
<item name="toolbarBgColor">@color/white</item>
125-
<item name="toolbarBgBorderColor">@color/toolbarBorderColorLight</item>
126-
<item name="dialogBgColor">@color/white</item>
127-
<item name="browserIconColorSelector">@color/browser_icon_color_selector_light</item>
128-
<item name="browserMenuTextColor">@color/almostBlackDark</item>
129-
<item name="browserMenuTextColorDisabled">@color/pinkish_grey_two</item>
130-
<item name="omnibarRoundedFieldBackgroundColor">@color/whiteFour</item>
131-
<item name="omnibarTextColor">@color/almostBlackDark</item>
132-
<item name="omnibarHintColor">@color/brownishGrayTwo</item>
133-
<item name="omnibarLogoLetterTextColor">@color/whiteFour</item>
134-
<item name="autoCompleteTextColor">@color/almostBlackDark</item>
135-
<item name="autoCompleteSubtitleTextColor">@color/warmerGray</item>
136-
<item name="tabTitleTextColor">@color/almostBlackDark</item>
137-
<item name="tabTitleTextColorLegacy">@color/almostBlackDark</item>
138-
<item name="tabSubtitleTextColor">@color/warmerGray</item>
139-
<item name="tabSelectedBorderColor">@color/cornflowerBlue</item>
140-
<item name="tabsFireTextColor">@color/warmerGray</item>
141-
<item name="tabCardBackgroundColor">@color/white</item>
142-
<item name="bookmarkIconColor">@color/almostBlackDark</item>
143-
<item name="bookmarkTitleTextColor">@color/almostBlackDark</item>
144-
<item name="savedSiteEmptyTextColor">@color/almostBlackDark</item>
145-
<item name="whitelistTextColor">@color/almostBlack</item>
146-
<item name="websiteListFaviconBackground">@color/whiteSix</item>
147-
<item name="fireproofWebsiteTitleTextColor">@color/almostBlack</item>
148-
<item name="savedSiteSubtitleTextColor">@color/warmerGray</item>
149-
<item name="settingsItemTextColor">@color/almostBlackDark</item>
150-
<item name="settingsItemTextColorDisabled">@color/pinkish_grey_two</item>
151-
<item name="settingsMinorTextColor">@color/warmerGray</item>
152-
<item name="settingsSwitchBackgroundColor">@color/brownishGrayTwo</item>
153-
<item name="settingsDividerColor">@color/whiteSix</item>
154-
<item name="buttonOutlinedTextColor">@color/cornflowerBlue</item>
155-
<item name="buttonOutlinedBorderColor">@color/grayishThree</item>
156-
<item name="callToActionTitleColor">@color/almostBlackDark</item>
157-
<item name="callToActionSubtitleColor">@color/brownishGrayTwo</item>
158-
<item name="daxDialogBackgroundColor">@color/white</item>
159-
<item name="daxDialogSecondaryButtonTextColor">@color/almostBlackDark</item>
160-
<item name="daxDialogSecondaryButtonRippleColor">@color/subtleGrayTwo</item>
161-
162-
<item name="brokenSiteSelectionTextColor">@color/almostBlackDark</item>
163-
<item name="brokenSiteOutlinedColor">@color/grayishTwo</item>
164-
<item name="brokenSitesButtonDisabledBackgroundColor">@color/subtleGrayTwo</item>
165-
<item name="brokenSitesButtonDisabledTextColor">@color/white</item>
166-
<item name="brokenSitesButtonRippleColor">@color/subtleGrayTwo</item>
167-
168-
<item name="feedbackAnonymousFeedbackLabelColor">@color/warmerGray</item>
169-
<item name="feedbackListItemBackgroundColor">@color/whiteFive</item>
170-
<item name="feedbackListItemSeparatorColor">@color/whiteSix</item>
171-
<item name="feedbackEditTextBackgroundColor">@color/whiteFive</item>
172-
<item name="feedbackEditTextHintColor">@color/warmerGray</item>
173-
174-
<item name="privacyDashboardLogoLetterTextColor">@color/whiteFour</item>
175-
</style>
176-
177-
<style name="AppTheme.Light" parent="AppTheme.BaseLight">
178-
<!-- The status bar must always be dark prior to API 23 as the light text cannot be changed -->
179-
<item name="android:statusBarColor">@color/almostBlack</item>
180-
</style>
181-
182-
<style name="ModalCardTheme" parent="Theme.AppCompat.Light.NoActionBar">
183-
<item name="colorPrimary">@color/darkThemePrimary</item>
184-
<item name="colorPrimaryDark">@color/darkThemePrimaryDark</item>
185-
<item name="colorAccent">@color/cornflowerBlue</item>
186-
<item name="android:windowBackground">@color/translucentDark</item>
187-
<item name="android:windowNoTitle">true</item>
188-
<item name="android:colorBackgroundCacheHint">@null</item>
189-
<item name="android:windowIsTranslucent">true</item>
190-
<item name="android:windowAnimationStyle">@android:style/Animation</item>
191-
<item name="toolbarIconColor">@color/white</item>
192-
</style>
193-
194-
<style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
195-
<item name="colorControlNormal">?attr/toolbarIconColor</item>
196-
<item name="android:textColorPrimary">?attr/toolbarTextColor</item>
197-
<item name="colorControlHighlight">@color/subtleGrayTwo</item>
198-
</style>
199-
200-
<style name="OmnibarToolbarTheme">
201-
<item name="colorControlHighlight">@color/subtleGrayTwo</item>
202-
</style>
203-
204-
<style name="SwitchTheme" parent="Widget.AppCompat.CompoundButton.Switch">
205-
<item name="colorControlActivated">@android:color/white</item>
206-
</style>
207-
208-
<style name="SettingsSwitchTheme">
209-
<item name="colorControlActivated">@color/cornflowerBlue</item>
210-
<item name="colorSwitchThumbNormal">@color/white</item>
211-
<item name="android:colorForeground">?attr/settingsSwitchBackgroundColor</item>
212-
</style>
213-
214-
<style name="TextInputLayoutTheme" parent="Widget.Design.TextInputLayout">
215-
<item name="colorControlActivated">?colorAccent</item>
216-
<item name="colorControlNormal">?colorAccent</item>
217-
<item name="colorControlHighlight">?colorAccent</item>
218-
<item name="android:textColor">?normalTextColor</item>
219-
<item name="android:textColorSecondary">?normalTextColor</item>
220-
<item name="android:textColorHint">?normalTextColor</item>
221-
</style>
222-
223-
<style name="AutoCompleteTextViewStyle" parent="Widget.AppCompat.AutoCompleteTextView">
224-
<item name="android:textCursorDrawable">@drawable/text_cursor</item>
225-
<item name="android:textColorHint">?attr/omnibarHintColor</item>
226-
<item name="android:fontFamily">sans-serif-medium</item>
227-
</style>
228-
229-
<style name="DaxDialogFragment" parent="android:Theme.DeviceDefault.Light.NoActionBar">
230-
<item name="android:windowTranslucentStatus">true</item>
231-
</style>
232-
233-
<style name="PopUpMenuSwitchTheme">
234-
<item name="colorAccent">@color/cornflowerBlue</item>
235-
<item name="android:textColorSecondary">?attr/toolbarIconColor</item>
236-
</style>
237-
238-
</resources>
22+
</resources>

common-ui/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

common-ui/build.gradle

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (c) 2021 DuckDuckGo
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
plugins {
18+
id 'com.android.library'
19+
id 'kotlin-android'
20+
id 'kotlin-kapt'
21+
}
22+
23+
apply from: "$rootProject.projectDir/gradle/android-library.gradle"
24+
25+
dependencies {
26+
27+
implementation AndroidX.appCompat
28+
implementation Google.android.material
29+
implementation AndroidX.constraintLayout
30+
}

common-ui/proguard-rules.pro

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add project specific ProGuard rules here.
2+
# You can control the set of applied configuration files using the
3+
# proguardFiles setting in build.gradle.
4+
#
5+
# For more details, see
6+
# http://developer.android.com/guide/developing/tools/proguard.html
7+
8+
# If your project uses WebView with JS, uncomment the following
9+
# and specify the fully qualified class name to the JavaScript interface
10+
# class:
11+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12+
# public *;
13+
#}
14+
15+
# Uncomment this to preserve the line number information for
16+
# debugging stack traces.
17+
#-keepattributes SourceFile,LineNumberTable
18+
19+
# If you keep the line number information, uncomment this to
20+
# hide the original source file name.
21+
#-renamesourcefileattribute SourceFile
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
~ Copyright (c) 2021 DuckDuckGo
4+
~
5+
~ Licensed under the Apache License, Version 2.0 (the "License");
6+
~ you may not use this file except in compliance with the License.
7+
~ You may obtain a copy of the License at
8+
~
9+
~ http://www.apache.org/licenses/LICENSE-2.0
10+
~
11+
~ Unless required by applicable law or agreed to in writing, software
12+
~ distributed under the License is distributed on an "AS IS" BASIS,
13+
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
~ See the License for the specific language governing permissions and
15+
~ limitations under the License.
16+
-->
17+
18+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
19+
package="com.duckduckgo.mobile.android">
20+
21+
</manifest>

0 commit comments

Comments
 (0)