Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Luhmer <david-dev@live.de>2021-06-13 21:36:21 +0300
committerDavid Luhmer <david-dev@live.de>2021-06-13 21:36:21 +0300
commita76a866f4d92a07d84faa2eae1404d504a6ff2c5 (patch)
tree7134a3aac3072945a5ad6924a62867c0de95e3b6 /News-Android-App/src/main/java
parent4117c76ca5e1fae75f262cc9a61ad8ec6e1546cd (diff)
Fix #972 - light theme issues (Light theme is incompatible with incognito mode)
Signed-off-by: David Luhmer <david-dev@live.de>
Diffstat (limited to 'News-Android-App/src/main/java')
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java50
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeChooser.java6
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeUtils.java46
3 files changed, 82 insertions, 20 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java
index 74b066b6..9357ae86 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java
@@ -48,7 +48,6 @@ import androidx.viewpager.widget.ViewPager;
import java.lang.ref.WeakReference;
import java.util.HashSet;
-import java.util.Objects;
import java.util.Set;
import javax.inject.Inject;
@@ -57,6 +56,7 @@ import de.greenrobot.dao.query.LazyList;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
import de.luhmer.owncloudnewsreader.database.model.RssItem;
import de.luhmer.owncloudnewsreader.databinding.ActivityNewsDetailBinding;
+import de.luhmer.owncloudnewsreader.helper.ThemeChooser;
import de.luhmer.owncloudnewsreader.helper.ThemeUtils;
import de.luhmer.owncloudnewsreader.model.PodcastItem;
import de.luhmer.owncloudnewsreader.model.TTSItem;
@@ -392,25 +392,28 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
menuItem_PlayPodcast.setVisible(podcastAvailable);
}
+ boolean isDark = ThemeChooser.isDarkTheme(this);
+ boolean darkIcons = !isDark && !mShowFastActions;
+
if (menuItem_Starred != null) {
if (isStarred) {
- menuItem_Starred.setIcon(R.drawable.ic_action_star_dark);
- binding.faDetailBar.faStar.setImageResource(R.drawable.ic_action_star_dark);
+ menuItem_Starred.setIcon(darkIcons ? R.drawable.ic_action_star_light : R.drawable.ic_action_star_dark);
+ binding.faDetailBar.faStar.setImageResource(darkIcons ? R.drawable.ic_action_star_light : R.drawable.ic_action_star_dark);
} else {
- menuItem_Starred.setIcon(R.drawable.ic_action_star_border_dark);
- binding.faDetailBar.faStar.setImageResource(R.drawable.ic_action_star_border_dark);
+ menuItem_Starred.setIcon(darkIcons ? R.drawable.ic_action_star_border_light : R.drawable.ic_action_star_border_dark);
+ binding.faDetailBar.faStar.setImageResource(darkIcons ? R.drawable.ic_action_star_border_light : R.drawable.ic_action_star_border_dark);
}
}
if (menuItem_Read != null) {
if (isRead) {
- menuItem_Read.setIcon(R.drawable.ic_checkbox_white);
+ menuItem_Read.setIcon(darkIcons ? R.drawable.ic_checkbox_black : R.drawable.ic_checkbox_white);
menuItem_Read.setChecked(true);
- binding.faDetailBar.faMarkAsRead.setImageResource(R.drawable.ic_checkbox_white);
+ binding.faDetailBar.faMarkAsRead.setImageResource(darkIcons ? R.drawable.ic_checkbox_black : R.drawable.ic_checkbox_white);
} else {
- menuItem_Read.setIcon(R.drawable.ic_checkbox_outline_white);
+ menuItem_Read.setIcon(darkIcons ? R.drawable.ic_checkbox_outline_black : R.drawable.ic_checkbox_outline_white);
menuItem_Read.setChecked(false);
- binding.faDetailBar.faMarkAsRead.setImageResource(R.drawable.ic_checkbox_outline_white);
+ binding.faDetailBar.faMarkAsRead.setImageResource(darkIcons ? R.drawable.ic_checkbox_outline_black : R.drawable.ic_checkbox_outline_white);
}
}
}
@@ -460,10 +463,11 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
}
}
- updateActionBarIcons();
initIncognitoMode();
+ updateActionBarIcons();
+
return true;
}
@@ -543,7 +547,6 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
share.putExtra(Intent.EXTRA_TEXT, content);
startActivity(Intent.createChooser(share, "Share Item"));
-
}
/**
@@ -617,18 +620,35 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
}
public void initIncognitoMode() {
+ boolean isLightTheme = !ThemeChooser.isDarkTheme(this);
+
int color = getResources().getColor(isIncognitoEnabled() ? R.color.material_grey_900 : R.color.colorPrimary);
ThemeUtils.colorizeToolbar(binding.toolbarLayout.toolbar, color);
+ if (isLightTheme) {
+ // the first three menu items are from the fast actions (if enabled)
+ int skipItems = mShowFastActions ? 3 : 0;
+ if (isIncognitoEnabled()) {
+ int white = getResources().getColor(android.R.color.white);
+ ThemeUtils.colorizeToolbarForeground(binding.toolbarLayout.toolbar, white, skipItems);
+ clearLightStatusBar(getWindow().getDecorView());
+ } else {
+ int primaryTextColor = getResources().getColor(R.color.primaryTextColor);
+ ThemeUtils.colorizeToolbarForeground(binding.toolbarLayout.toolbar, primaryTextColor, skipItems);
+ setLightStatusBar(getWindow().getDecorView());
+ }
+ }
+ getWindow().setStatusBarColor(color);
+
+
//ThemeUtils.colorizeToolbar(bottomAppBar, color);
//ThemeUtils.changeStatusBarColor(this, color);
//getWindow().setNavigationBarColor(color);
- getWindow().setStatusBarColor(color);
+
/*
switch (ThemeChooser.getSelectedTheme()) {
case LIGHT:
Log.d(TAG, "initIncognitoMode: LIGHT");
- setLightStatusBar(getWindow().getDecorView());
getWindow().setStatusBarColor(Color.WHITE);
break;
case DARK:
@@ -645,7 +665,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
*/
}
- /*
+
private void setLightStatusBar(@NonNull View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int flags = view.getSystemUiVisibility(); // get current flag
@@ -661,7 +681,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
view.setSystemUiVisibility(flags);
}
}
- */
+
/**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeChooser.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeChooser.java
index 23965e43..cf16c6f9 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeChooser.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeChooser.java
@@ -126,8 +126,8 @@ public class ThemeChooser {
return themeChanged || oledChanged;
}
- private static boolean isDarkTheme(Context context) {
- switch(AppCompatDelegate.getDefaultNightMode()) {
+ public static boolean isDarkTheme(Context context) {
+ switch (AppCompatDelegate.getDefaultNightMode()) {
case AppCompatDelegate.MODE_NIGHT_YES:
Log.v(TAG, "MODE_NIGHT_YES (Dark Theme)");
return true;
@@ -136,7 +136,7 @@ public class ThemeChooser {
case AppCompatDelegate.MODE_NIGHT_AUTO:
//Log.v(TAG, "MODE_NIGHT_AUTO");
int nightModeFlags = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
- if(Configuration.UI_MODE_NIGHT_YES == nightModeFlags) {
+ if (Configuration.UI_MODE_NIGHT_YES == nightModeFlags) {
Log.v(TAG, "MODE_NIGHT_AUTO (Dark Theme)");
return true;
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeUtils.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeUtils.java
index 0aa0e0c7..4188b15d 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeUtils.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ThemeUtils.java
@@ -22,13 +22,17 @@
package de.luhmer.owncloudnewsreader.helper;
import android.app.Activity;
+import android.graphics.ColorFilter;
import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.Log;
+import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
+import android.widget.ImageButton;
import android.widget.SearchView;
import android.widget.TextView;
@@ -110,8 +114,8 @@ public class ThemeUtils {
v.setBackgroundColor(toolbarBackgroundColor);
- if(v instanceof ActionMenuView) {
- for(int j = 0; j < ((ActionMenuView)v).getChildCount(); j++) {
+ if (v instanceof ActionMenuView) {
+ for (int j = 0; j < ((ActionMenuView) v).getChildCount(); j++) {
v.setBackgroundColor(toolbarBackgroundColor);
}
}
@@ -119,7 +123,45 @@ public class ThemeUtils {
}
/**
+ * Use this method to colorize the toolbar to the desired target color
+ *
+ * @param toolbarView toolbar view being colored
+ * @param toolbarForegroundColor the target background color
+ * @param skipMenuItems how many menu items should not be colored
+ */
+ public static void colorizeToolbarForeground(Toolbar toolbarView, @ColorInt int toolbarForegroundColor, int skipMenuItems) {
+ toolbarView.setTitleTextColor(toolbarForegroundColor);
+
+ ColorFilter cf = new PorterDuffColorFilter(toolbarForegroundColor, PorterDuff.Mode.SRC_IN);
+ Drawable drawable = toolbarView.getOverflowIcon();
+ if (drawable != null) {
+ drawable.setColorFilter(cf);
+ }
+
+ for (int i = 0; i < toolbarView.getChildCount(); i++) {
+ final View v = toolbarView.getChildAt(i);
+ if (v instanceof ImageButton) {
+ ((ImageButton) v).setColorFilter(cf);
+ } else if (v instanceof ActionMenuView) {
+ Menu menu = ((ActionMenuView) v).getMenu();
+ for (int x = skipMenuItems; x < menu.size(); x++) {
+ Drawable d = menu.getItem(x).getIcon();
+ if (d != null) {
+ d.setColorFilter(cf);
+ }
+ }
+ }
+ /*
+ else {
+ Log.d(TAG, v.toString());
+ }
+ */
+ }
+ }
+
+ /**
* Use this method to colorize the status bar to the desired target color
+ *
* @param activity
* @param statusBarColor
*/