Skip to content

Commit dacbc79

Browse files
feat(theming): Get rid of custom theme checking...
... and rely on PlatformThemeUtil.isDarkMode in stead. Signed-off-by: Stefan Niedermann <info@niedermann.it>
1 parent a40704a commit dacbc79

4 files changed

Lines changed: 25 additions & 63 deletions

File tree

app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
package it.niedermann.owncloud.notes;
22

3+
import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
4+
35
import android.app.Application;
46
import android.content.Context;
5-
import android.content.SharedPreferences;
6-
import android.content.res.Configuration;
77
import android.util.Log;
88

99
import androidx.appcompat.app.AppCompatDelegate;
1010
import androidx.preference.PreferenceManager;
1111

1212
import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
1313

14-
import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
15-
16-
import com.nextcloud.android.common.ui.util.PlatformThemeUtil;
17-
1814
public class NotesApplication extends Application {
1915
private static final String TAG = NotesApplication.class.getSimpleName();
2016

@@ -59,18 +55,6 @@ public static DarkModeSetting getAppTheme(Context context) {
5955
return DarkModeSetting.valueOf(mode);
6056
}
6157

62-
public static boolean isDarkThemeActive(Context context, DarkModeSetting setting) {
63-
if (setting == DarkModeSetting.SYSTEM_DEFAULT) {
64-
return isDarkThemeActive(context);
65-
} else {
66-
return setting == DarkModeSetting.DARK;
67-
}
68-
}
69-
70-
public static boolean isDarkThemeActive(Context context) {
71-
return PlatformThemeUtil.isDarkMode(context);
72-
}
73-
7458
public static void setLockedPreference(boolean lockedPreference) {
7559
Log.i(TAG, "New locked preference: " + lockedPreference);
7660
NotesApplication.lockedPreference = lockedPreference;

app/src/main/java/it/niedermann/owncloud/notes/branding/NotesViewThemeUtils.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package it.niedermann.owncloud.notes.branding;
22

33
import static com.nextcloud.android.common.ui.util.ColorStateListUtilsKt.buildColorStateList;
4-
import static it.niedermann.owncloud.notes.NotesApplication.isDarkThemeActive;
4+
import static com.nextcloud.android.common.ui.util.PlatformThemeUtil.isDarkMode;
55

66
import android.content.Context;
77
import android.graphics.Color;
@@ -21,7 +21,6 @@
2121

2222
import com.google.android.material.appbar.AppBarLayout;
2323
import com.google.android.material.appbar.MaterialToolbar;
24-
import com.google.android.material.navigation.NavigationView;
2524
import com.nextcloud.android.common.ui.theme.MaterialSchemes;
2625
import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase;
2726
import com.nextcloud.android.common.ui.theme.utils.MaterialViewThemeUtils;
@@ -125,7 +124,7 @@ public void colorLayerDrawable(@NonNull LayerDrawable check, @IdRes int areaToCo
125124

126125
@ColorInt
127126
public int getTextHighlightBackgroundColor(@NonNull Context context, @ColorInt int mainColor, @ColorInt int colorPrimary, @ColorInt int colorAccent) {
128-
if (isDarkThemeActive(context)) { // Dark background
127+
if (isDarkMode(context)) { // Dark background
129128
if (ColorUtil.INSTANCE.isColorDark(mainColor)) { // Dark brand color
130129
if (NotesColorUtil.contrastRatioIsSufficient(mainColor, colorPrimary)) { // But also dark text
131130
return mainColor;

app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import static android.os.Build.VERSION_CODES.O;
55
import static android.view.View.GONE;
66
import static android.view.View.VISIBLE;
7-
import static it.niedermann.owncloud.notes.NotesApplication.isDarkThemeActive;
7+
import static com.nextcloud.android.common.ui.util.PlatformThemeUtil.isDarkMode;
88
import static it.niedermann.owncloud.notes.NotesApplication.isGridViewEnabled;
99
import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.DEFAULT_CATEGORY;
1010
import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.FAVORITES;
@@ -49,6 +49,7 @@
4949
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
5050
import com.google.android.material.floatingactionbutton.FloatingActionButton;
5151
import com.google.android.material.snackbar.Snackbar;
52+
import com.nextcloud.android.common.ui.util.PlatformThemeUtil;
5253
import com.nextcloud.android.sso.AccountImporter;
5354
import com.nextcloud.android.sso.exceptions.AccountImportCancelledException;
5455
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
@@ -159,7 +160,7 @@ protected void onCreate(Bundle savedInstanceState) {
159160

160161
gridView = isGridViewEnabled();
161162

162-
if (!gridView || isDarkThemeActive(this)) {
163+
if (!gridView || isDarkMode(this)) {
163164
activityBinding.activityNotesListView.setBackgroundColor(ContextCompat.getColor(this, R.color.primary));
164165
}
165166

app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
import static android.view.View.INVISIBLE;
44
import static android.view.View.VISIBLE;
5-
import static it.niedermann.owncloud.notes.shared.util.NotesColorUtil.contrastRatioIsSufficient;
5+
6+
import static com.nextcloud.android.common.ui.util.PlatformThemeUtil.isDarkMode;
67

78
import android.content.Context;
8-
import android.content.res.ColorStateList;
9-
import android.graphics.Color;
109
import android.text.SpannableString;
1110
import android.text.TextUtils;
1211
import android.text.style.BackgroundColorSpan;
@@ -26,12 +25,12 @@
2625
import androidx.recyclerview.widget.RecyclerView;
2726

2827
import com.google.android.material.chip.Chip;
28+
import com.nextcloud.android.common.ui.theme.utils.ColorRole;
29+
import com.nextcloud.android.common.ui.util.PlatformThemeUtil;
2930

3031
import java.util.regex.Matcher;
3132
import java.util.regex.Pattern;
3233

33-
import it.niedermann.android.util.ColorUtil;
34-
import it.niedermann.owncloud.notes.NotesApplication;
3534
import it.niedermann.owncloud.notes.R;
3635
import it.niedermann.owncloud.notes.branding.BrandingUtil;
3736
import it.niedermann.owncloud.notes.persistence.entity.Note;
@@ -60,47 +59,26 @@ protected void bindStatus(AppCompatImageView noteStatus, DBStatus status, int ma
6059
DrawableCompat.setTint(noteStatus.getDrawable(), BrandingUtil.of(mainColor, context).notes.getOnPrimaryContainer(context));
6160
}
6261

63-
protected void bindCategory(@NonNull Context context, @NonNull TextView noteCategory, boolean showCategory, @NonNull String category, int mainColor) {
64-
final boolean isDarkThemeActive = NotesApplication.isDarkThemeActive(context);
65-
noteCategory.setVisibility(showCategory && !category.isEmpty() ? View.VISIBLE : View.GONE);
66-
noteCategory.setText(category);
62+
protected void bindCategory(@NonNull Context context, @NonNull TextView noteCategory, boolean showCategory, @NonNull String category, int color) {
63+
if (!showCategory || category.isEmpty()) {
64+
noteCategory.setVisibility(View.GONE);
65+
} else {
66+
noteCategory.setText(category);
6767

68-
@ColorInt final int categoryForeground;
69-
@ColorInt final int categoryBackground;
68+
final var util = BrandingUtil.of(color, context);
7069

71-
if (isDarkThemeActive) {
72-
if (ColorUtil.INSTANCE.isColorDark(mainColor)) {
73-
if (contrastRatioIsSufficient(mainColor, Color.BLACK)) {
74-
categoryBackground = mainColor;
75-
categoryForeground = Color.WHITE;
70+
if (noteCategory instanceof Chip) {
71+
util.material.colorChipBackground((Chip) noteCategory);
72+
} else {
73+
util.platform.tintDrawable(context, noteCategory.getBackground(), ColorRole.PRIMARY);
74+
if (isDarkMode(context)) {
75+
util.platform.colorTextView(noteCategory, ColorRole.ON_PRIMARY);
7676
} else {
77-
categoryBackground = Color.WHITE;
78-
categoryForeground = mainColor;
77+
util.platform.colorTextView(noteCategory, ColorRole.ON_SECONDARY_CONTAINER);
7978
}
80-
} else {
81-
categoryBackground = mainColor;
82-
categoryForeground = Color.BLACK;
8379
}
84-
} else {
85-
categoryForeground = Color.BLACK;
86-
if (ColorUtil.INSTANCE.isColorDark(mainColor) || contrastRatioIsSufficient(mainColor, Color.WHITE)) {
87-
categoryBackground = mainColor;
88-
} else {
89-
categoryBackground = Color.BLACK;
90-
}
91-
}
9280

93-
noteCategory.setTextColor(categoryForeground);
94-
if (noteCategory instanceof Chip) {
95-
final Chip chip = (Chip) noteCategory;
96-
chip.setChipStrokeColor(ColorStateList.valueOf(categoryBackground));
97-
if(isDarkThemeActive) {
98-
chip.setChipBackgroundColor(ColorStateList.valueOf(categoryBackground));
99-
} else {
100-
chip.setChipBackgroundColorResource(R.color.grid_item_background_selector);
101-
}
102-
} else {
103-
DrawableCompat.setTint(noteCategory.getBackground(), categoryBackground);
81+
noteCategory.setVisibility(View.VISIBLE);
10482
}
10583
}
10684

0 commit comments

Comments
 (0)