mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-16 22:13:34 +02:00
Replaced default dark by force light theme
This commit is contained in:
@@ -430,6 +430,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
private ImageButton ibSearchText;
|
||||
private ImageButton ibSearch;
|
||||
private ImageButton ibTranslate;
|
||||
private ImageButton ibForceLight;
|
||||
private ImageButton ibHide;
|
||||
private ImageButton ibSeen;
|
||||
private ImageButton ibAnswer;
|
||||
@@ -805,6 +806,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText = vsBody.findViewById(R.id.ibSearchText);
|
||||
ibSearch = vsBody.findViewById(R.id.ibSearch);
|
||||
ibTranslate = vsBody.findViewById(R.id.ibTranslate);
|
||||
ibForceLight = vsBody.findViewById(R.id.ibForceLight);
|
||||
ibHide = vsBody.findViewById(R.id.ibHide);
|
||||
ibSeen = vsBody.findViewById(R.id.ibSeen);
|
||||
ibAnswer = vsBody.findViewById(R.id.ibAnswer);
|
||||
@@ -921,6 +923,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearch.setOnClickListener(this);
|
||||
ibTranslate.setOnClickListener(this);
|
||||
ibTranslate.setOnLongClickListener(this);
|
||||
ibForceLight.setOnClickListener(this);
|
||||
ibHide.setOnClickListener(this);
|
||||
ibSeen.setOnClickListener(this);
|
||||
ibAnswer.setOnClickListener(this);
|
||||
@@ -1016,6 +1019,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearch.setOnClickListener(null);
|
||||
ibTranslate.setOnClickListener(null);
|
||||
ibTranslate.setOnLongClickListener(null);
|
||||
ibForceLight.setOnClickListener(null);
|
||||
ibHide.setOnClickListener(null);
|
||||
ibSeen.setOnClickListener(null);
|
||||
ibAnswer.setOnClickListener(null);
|
||||
@@ -1529,6 +1533,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText.setVisibility(View.GONE);
|
||||
ibSearch.setVisibility(View.GONE);
|
||||
ibTranslate.setVisibility(View.GONE);
|
||||
ibForceLight.setVisibility(View.GONE);
|
||||
ibHide.setVisibility(View.GONE);
|
||||
ibSeen.setVisibility(View.GONE);
|
||||
ibAnswer.setVisibility(View.GONE);
|
||||
@@ -1763,6 +1768,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText.setVisibility(View.GONE);
|
||||
ibSearch.setVisibility(View.GONE);
|
||||
ibTranslate.setVisibility(View.GONE);
|
||||
ibForceLight.setVisibility(View.GONE);
|
||||
ibHide.setVisibility(View.GONE);
|
||||
ibSeen.setVisibility(View.GONE);
|
||||
ibAnswer.setVisibility(View.GONE);
|
||||
@@ -1932,7 +1938,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
boolean headers = (message.uid != null ||
|
||||
(message.accountProtocol == EntityAccount.TYPE_POP && message.headers != null));
|
||||
|
||||
evalProperties(message); // TODO: done again in bindBody
|
||||
|
||||
boolean full = properties.getValue("full", message.id);
|
||||
boolean dark = Helper.isDarkTheme(context);
|
||||
boolean force_light = properties.getValue("force_light", message.id);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean expand_all = prefs.getBoolean("expand_all", false);
|
||||
@@ -1948,6 +1958,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
boolean button_seen = prefs.getBoolean("button_seen", false);
|
||||
boolean button_hide = prefs.getBoolean("button_hide", false);
|
||||
boolean button_translate = prefs.getBoolean("button_translate", true);
|
||||
boolean button_force_light = prefs.getBoolean("button_force_light", false);
|
||||
boolean button_search = prefs.getBoolean("button_search", false);
|
||||
boolean button_search_text = prefs.getBoolean("button_search_text", false);
|
||||
boolean button_event = prefs.getBoolean("button_event", false);
|
||||
@@ -1977,6 +1988,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText.setVisibility(tools && !outbox && button_search_text && message.content && !full ? View.VISIBLE : View.GONE);
|
||||
ibSearch.setVisibility(tools && !outbox && button_search && (froms > 0 || tos > 0) ? View.VISIBLE : View.GONE);
|
||||
ibTranslate.setVisibility(tools && !outbox && button_translate && DeepL.isAvailable(context) && message.content ? View.VISIBLE : View.GONE);
|
||||
ibForceLight.setVisibility(tools && full && dark && button_force_light && message.content ? View.VISIBLE : View.GONE);
|
||||
ibForceLight.setImageLevel(force_light ? 1 : 0);
|
||||
ibHide.setVisibility(tools && button_hide && !outbox ? View.VISIBLE : View.GONE);
|
||||
ibSeen.setVisibility(tools && button_seen && !outbox && seen ? View.VISIBLE : View.GONE);
|
||||
ibAnswer.setVisibility(!tools || outbox || (!expand_all && expand_one) || !threading ? View.GONE : View.VISIBLE);
|
||||
@@ -2218,26 +2231,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
});
|
||||
}
|
||||
|
||||
private void bindBody(TupleMessageEx message, final boolean scroll) {
|
||||
if (!Objects.equals(tvBody.getTag(), message.id)) {
|
||||
tvBody.setTag(message.id);
|
||||
tvBody.setText(null);
|
||||
}
|
||||
properties.endSearch();
|
||||
clearActions();
|
||||
|
||||
ibSeenBottom.setImageResource(message.ui_seen
|
||||
? R.drawable.twotone_mail_24 : R.drawable.twotone_drafts_24);
|
||||
ibSeenBottom.setVisibility(!(message.folderReadOnly || message.uid == null) ||
|
||||
message.accountProtocol == EntityAccount.TYPE_POP
|
||||
? View.VISIBLE : View.GONE);
|
||||
|
||||
if (!message.content) {
|
||||
if (scroll)
|
||||
properties.scrollTo(getAdapterPosition(), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
private void evalProperties(TupleMessageEx message) {
|
||||
if (message.from != null)
|
||||
for (Address sender : message.from) {
|
||||
String from = ((InternetAddress) sender).getAddress();
|
||||
@@ -2274,11 +2268,35 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
properties.setValue("full", message.id, true);
|
||||
properties.setValue("full_asked", message.id, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void bindBody(TupleMessageEx message, final boolean scroll) {
|
||||
if (!Objects.equals(tvBody.getTag(), message.id)) {
|
||||
tvBody.setTag(message.id);
|
||||
tvBody.setText(null);
|
||||
}
|
||||
properties.endSearch();
|
||||
clearActions();
|
||||
|
||||
ibSeenBottom.setImageResource(message.ui_seen
|
||||
? R.drawable.twotone_mail_24 : R.drawable.twotone_drafts_24);
|
||||
ibSeenBottom.setVisibility(!(message.folderReadOnly || message.uid == null) ||
|
||||
message.accountProtocol == EntityAccount.TYPE_POP
|
||||
? View.VISIBLE : View.GONE);
|
||||
|
||||
if (!message.content) {
|
||||
if (scroll)
|
||||
properties.scrollTo(getAdapterPosition(), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
evalProperties(message);
|
||||
|
||||
boolean show_full = properties.getValue("full", message.id);
|
||||
boolean show_images = properties.getValue("images", message.id);
|
||||
boolean show_quotes = (properties.getValue("quotes", message.id) || !collapse_quotes);
|
||||
|
||||
boolean force_light = properties.getValue("force_light", message.id);
|
||||
boolean always_images = prefs.getBoolean("html_always_images", false);
|
||||
if (always_images && show_full) {
|
||||
show_images = true;
|
||||
@@ -2348,7 +2366,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
|
||||
webView.setMinimumHeight(height);
|
||||
|
||||
webView.init(height, size, position,
|
||||
webView.init(height, size, position, force_light,
|
||||
new WebViewEx.IWebView() {
|
||||
@Override
|
||||
public void onSizeChanged(int w, int h, int ow, int oh) {
|
||||
@@ -3385,6 +3403,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
DeepL.FragmentDialogDeepL fragment = new DeepL.FragmentDialogDeepL();
|
||||
fragment.show(parentFragment.getParentFragmentManager(), "deepl:configure");
|
||||
}
|
||||
} else if (id == R.id.ibForceLight) {
|
||||
onActionForceLight(message);
|
||||
} else if (id == R.id.ibAnswer) {
|
||||
onActionAnswer(message, ibAnswer);
|
||||
} else if (id == R.id.ibNotes) {
|
||||
@@ -4178,20 +4198,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
|
||||
if (full) {
|
||||
TextView tvDark = dview.findViewById(R.id.tvDark);
|
||||
CheckBox cbDark = dview.findViewById(R.id.cbDark);
|
||||
CheckBox cbAlwaysImages = dview.findViewById(R.id.cbAlwaysImages);
|
||||
|
||||
boolean confirm_html = prefs.getBoolean("confirm_html", true);
|
||||
cbDark.setChecked(prefs.getBoolean("html_dark", confirm_html));
|
||||
cbAlwaysImages.setChecked(prefs.getBoolean("html_always_images", false));
|
||||
|
||||
cbDark.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
prefs.edit().putBoolean("html_dark", isChecked).apply();
|
||||
}
|
||||
});
|
||||
|
||||
cbAlwaysImages.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
@@ -4201,10 +4212,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
|
||||
boolean isDark = Helper.isDarkTheme(context);
|
||||
boolean canDark = WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK);
|
||||
|
||||
tvDark.setVisibility(isDark && !canDark ? View.VISIBLE : View.GONE);
|
||||
cbDark.setVisibility(isDark && canDark ? View.VISIBLE : View.GONE);
|
||||
|
||||
} else {
|
||||
boolean disable_tracking = prefs.getBoolean("disable_tracking", true);
|
||||
|
||||
@@ -4360,8 +4368,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
}
|
||||
|
||||
private void onActionOpenFullConfirmed(final TupleMessageEx message) {
|
||||
boolean force_light = properties.getValue("force_light", message.id);
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", message.id);
|
||||
args.putBoolean("force_light", force_light);
|
||||
|
||||
new SimpleTask<String>() {
|
||||
@Override
|
||||
@@ -4387,6 +4398,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
protected void onExecuted(Bundle args, String html) {
|
||||
Bundle fargs = new Bundle();
|
||||
fargs.putString("html", html);
|
||||
fargs.putBoolean("force_light", args.getBoolean("force_light"));
|
||||
|
||||
FragmentDialogOpenFull dialog = new FragmentDialogOpenFull();
|
||||
dialog.setArguments(fargs);
|
||||
@@ -4610,6 +4622,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
private void onActionMore(TupleMessageEx message) {
|
||||
boolean show_headers = properties.getValue("headers", message.id);
|
||||
boolean full = properties.getValue("full", message.id);
|
||||
boolean dark = Helper.isDarkTheme(context);
|
||||
boolean force_light = properties.getValue("force_light", message.id);
|
||||
|
||||
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(context, powner, ibMore);
|
||||
popupMenu.inflate(R.menu.popup_message_more);
|
||||
@@ -4655,6 +4669,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
popupMenu.getMenu().findItem(R.id.menu_translate).setVisible(
|
||||
DeepL.isAvailable(context) && message.content);
|
||||
|
||||
popupMenu.getMenu().findItem(R.id.menu_force_light).setVisible(full && dark);
|
||||
popupMenu.getMenu().findItem(R.id.menu_force_light).setChecked(force_light);
|
||||
|
||||
popupMenu.getMenu().findItem(R.id.menu_share).setEnabled(message.content);
|
||||
popupMenu.getMenu().findItem(R.id.menu_pin).setVisible(pin);
|
||||
popupMenu.getMenu().findItem(R.id.menu_event).setEnabled(message.content);
|
||||
@@ -4736,6 +4753,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
} else if (itemId == R.id.menu_translate) {
|
||||
onActionTranslate(message);
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_force_light) {
|
||||
onActionForceLight(message);
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_event) {
|
||||
if (ActivityBilling.isPro(context))
|
||||
onMenuShare(message, true);
|
||||
@@ -5140,6 +5160,13 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
fragment.show(parentFragment.getParentFragmentManager(), "message:translate");
|
||||
}
|
||||
|
||||
private void onActionForceLight(TupleMessageEx message) {
|
||||
boolean force_light = !properties.getValue("force_light", message.id);
|
||||
properties.setValue("force_light", message.id, force_light);
|
||||
ibForceLight.setImageLevel(force_light ? 1 : 0);
|
||||
bindBody(message, false);
|
||||
}
|
||||
|
||||
private void onSearchText(TupleMessageEx message) {
|
||||
properties.startSearch(tvBody);
|
||||
}
|
||||
@@ -7261,19 +7288,20 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
String html = getArguments().getString("html");
|
||||
Bundle args = getArguments();
|
||||
String html = args.getString("html");
|
||||
boolean force_light = args.getBoolean("force_light");
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
final Context context = getContext();
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean overview_mode = prefs.getBoolean("overview_mode", false);
|
||||
boolean safe_browsing = prefs.getBoolean("safe_browsing", false);
|
||||
boolean confirm_html = prefs.getBoolean("confirm_html", true);
|
||||
boolean html_dark = prefs.getBoolean("html_dark", confirm_html);
|
||||
|
||||
View view = inflater.inflate(R.layout.fragment_open_full, container, false);
|
||||
WebView wv = view.findViewById(R.id.wv);
|
||||
|
||||
WebSettings settings = wv.getSettings();
|
||||
settings.setUserAgentString(WebViewEx.getUserAgent(getContext(), wv));
|
||||
settings.setUserAgentString(WebViewEx.getUserAgent(context, wv));
|
||||
settings.setUseWideViewPort(true);
|
||||
settings.setLoadWithOverviewMode(overview_mode);
|
||||
|
||||
@@ -7289,10 +7317,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
|
||||
settings.setSafeBrowsingEnabled(safe_browsing);
|
||||
|
||||
if (html_dark &&
|
||||
WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK))
|
||||
WebSettingsCompat.setForceDark(settings,
|
||||
Helper.isDarkTheme(getContext()) ? FORCE_DARK_ON : FORCE_DARK_OFF);
|
||||
boolean dark = (Helper.isDarkTheme(context) && !force_light);
|
||||
if (WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK))
|
||||
WebSettingsCompat.setForceDark(settings, dark ? FORCE_DARK_ON : FORCE_DARK_OFF);
|
||||
|
||||
settings.setLoadsImagesAutomatically(true);
|
||||
settings.setBlockNetworkLoads(false);
|
||||
@@ -7378,6 +7405,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
final CheckBox cbSearch = dview.findViewById(R.id.cbSearch);
|
||||
final CheckBox cbSearchText = dview.findViewById(R.id.cbSearchText);
|
||||
final CheckBox cbTranslate = dview.findViewById(R.id.cbTranslate);
|
||||
final CheckBox cbForceLight = dview.findViewById(R.id.cbForceLight);
|
||||
final CheckBox cbEvent = dview.findViewById(R.id.cbEvent);
|
||||
final CheckBox cbShare = dview.findViewById(R.id.cbShare);
|
||||
final CheckBox cbPin = dview.findViewById(R.id.cbPin);
|
||||
@@ -7401,6 +7429,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
cbSearch.setChecked(prefs.getBoolean("button_search", false));
|
||||
cbSearchText.setChecked(prefs.getBoolean("button_search_text", false));
|
||||
cbTranslate.setChecked(prefs.getBoolean("button_translate", true));
|
||||
cbForceLight.setChecked(prefs.getBoolean("button_force_light", false));
|
||||
cbEvent.setChecked(prefs.getBoolean("button_event", false));
|
||||
cbShare.setChecked(prefs.getBoolean("button_share", false));
|
||||
cbPin.setChecked(prefs.getBoolean("button_pin", false));
|
||||
@@ -7427,6 +7456,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
editor.putBoolean("button_search", cbSearch.isChecked());
|
||||
editor.putBoolean("button_search_text", cbSearchText.isChecked());
|
||||
editor.putBoolean("button_translate", cbTranslate.isChecked());
|
||||
editor.putBoolean("button_force_light", cbForceLight.isChecked());
|
||||
editor.putBoolean("button_event", cbEvent.isChecked());
|
||||
editor.putBoolean("button_share", cbShare.isChecked());
|
||||
editor.putBoolean("button_pin", cbPin.isChecked());
|
||||
|
||||
Reference in New Issue
Block a user