From 9b70485109c3a79287bf0a7674dfb01976db864d Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 26 Apr 2023 13:32:00 +0200 Subject: [PATCH] Prevent crash --- .../email/FragmentOptionsBehavior.java | 166 ++++---- .../email/FragmentOptionsConnection.java | 76 ++-- .../email/FragmentOptionsDisplay.java | 400 +++++++++--------- .../email/FragmentOptionsEncryption.java | 86 ++-- .../faircode/email/FragmentOptionsMisc.java | 390 ++++++++--------- .../email/FragmentOptionsNotifications.java | 94 ++-- .../email/FragmentOptionsPrivacy.java | 130 +++--- .../faircode/email/FragmentOptionsSend.java | 198 ++++----- .../email/FragmentOptionsSynchronize.java | 140 +++--- 9 files changed, 858 insertions(+), 822 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index a4e061d313..e9c9570c6b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -639,89 +639,93 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe } private void setOptions() { - if (view == null || getContext() == null) - return; + try { + if (view == null || getContext() == null) + return; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + swRestoreOnLaunch.setChecked(prefs.getBoolean("restore_on_launch", false)); + swSyncOnlaunch.setChecked(prefs.getBoolean("sync_on_launch", false)); + swDoubleBack.setChecked(prefs.getBoolean("double_back", false)); + swConversationActions.setChecked(prefs.getBoolean("conversation_actions", Helper.isGoogle())); + swConversationActionsReplies.setChecked(prefs.getBoolean("conversation_actions_replies", true)); + swConversationActionsReplies.setEnabled(swConversationActions.isChecked()); + swLanguageDetection.setChecked(prefs.getBoolean("language_detection", false)); + + int default_snooze = prefs.getInt("default_snooze", 1); + etDefaultSnooze.setText(default_snooze == 1 ? null : Integer.toString(default_snooze)); + etDefaultSnooze.setHint("1"); + + swPhotoPicker.setChecked(prefs.getBoolean("photo_picker", false)); + + swPull.setChecked(prefs.getBoolean("pull", true)); + swAutoScroll.setChecked(prefs.getBoolean("autoscroll", false)); + swQuickFilter.setChecked(prefs.getBoolean("quick_filter", false)); + swQuickScroll.setChecked(prefs.getBoolean("quick_scroll", true)); + swQuickActions.setChecked(prefs.getBoolean("quick_actions", true)); + + int swipe_sensitivity = prefs.getInt("swipe_sensitivity", DEFAULT_SWIPE_SENSITIVITY); + sbSwipeSensitivity.setProgress(swipe_sensitivity); + + swFolderNav.setChecked(prefs.getBoolean("foldernav", false)); + + swDoubleTap.setChecked(prefs.getBoolean("doubletap", false)); + swSwipeNav.setChecked(prefs.getBoolean("swipenav", true)); + swVolumeNav.setChecked(prefs.getBoolean("volumenav", false)); + swReversed.setChecked(prefs.getBoolean("reversed", false)); + swSwipeClose.setChecked(prefs.getBoolean("swipe_close", false)); + swSwipeMove.setChecked(prefs.getBoolean("swipe_move", false)); + + swAutoExpand.setChecked(prefs.getBoolean("autoexpand", true)); + swExpandFirst.setChecked(prefs.getBoolean("expand_first", true)); + swExpandFirst.setEnabled(swAutoExpand.isChecked()); + swExpandAll.setChecked(prefs.getBoolean("expand_all", false)); + swExpandOne.setChecked(prefs.getBoolean("expand_one", true)); + swExpandOne.setEnabled(!swExpandAll.isChecked()); + swCollapseMultiple.setChecked(prefs.getBoolean("collapse_multiple", true)); + + swAutoClose.setChecked(prefs.getBoolean("autoclose", true)); + + String onClose = prefs.getString("onclose", ""); + String[] onCloseValues = getResources().getStringArray(R.array.onCloseValues); + for (int pos = 0; pos < onCloseValues.length; pos++) + if (onCloseValues[pos].equals(onClose)) { + spOnClose.setSelection(pos); + break; + } - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + tvOnClose.setEnabled(!swAutoClose.isChecked()); + spOnClose.setEnabled(!swAutoClose.isChecked()); + + swAutoCloseUnseen.setChecked(prefs.getBoolean("autoclose_unseen", false)); + swAutoCloseSend.setChecked(prefs.getBoolean("autoclose_send", false)); + swCollapseMarked.setChecked(prefs.getBoolean("collapse_marked", true)); - swRestoreOnLaunch.setChecked(prefs.getBoolean("restore_on_launch", false)); - swSyncOnlaunch.setChecked(prefs.getBoolean("sync_on_launch", false)); - swDoubleBack.setChecked(prefs.getBoolean("double_back", false)); - swConversationActions.setChecked(prefs.getBoolean("conversation_actions", Helper.isGoogle())); - swConversationActionsReplies.setChecked(prefs.getBoolean("conversation_actions_replies", true)); - swConversationActionsReplies.setEnabled(swConversationActions.isChecked()); - swLanguageDetection.setChecked(prefs.getBoolean("language_detection", false)); - - int default_snooze = prefs.getInt("default_snooze", 1); - etDefaultSnooze.setText(default_snooze == 1 ? null : Integer.toString(default_snooze)); - etDefaultSnooze.setHint("1"); - - swPhotoPicker.setChecked(prefs.getBoolean("photo_picker", false)); - - swPull.setChecked(prefs.getBoolean("pull", true)); - swAutoScroll.setChecked(prefs.getBoolean("autoscroll", false)); - swQuickFilter.setChecked(prefs.getBoolean("quick_filter", false)); - swQuickScroll.setChecked(prefs.getBoolean("quick_scroll", true)); - swQuickActions.setChecked(prefs.getBoolean("quick_actions", true)); - - int swipe_sensitivity = prefs.getInt("swipe_sensitivity", DEFAULT_SWIPE_SENSITIVITY); - sbSwipeSensitivity.setProgress(swipe_sensitivity); - - swFolderNav.setChecked(prefs.getBoolean("foldernav", false)); - - swDoubleTap.setChecked(prefs.getBoolean("doubletap", false)); - swSwipeNav.setChecked(prefs.getBoolean("swipenav", true)); - swVolumeNav.setChecked(prefs.getBoolean("volumenav", false)); - swReversed.setChecked(prefs.getBoolean("reversed", false)); - swSwipeClose.setChecked(prefs.getBoolean("swipe_close", false)); - swSwipeMove.setChecked(prefs.getBoolean("swipe_move", false)); - - swAutoExpand.setChecked(prefs.getBoolean("autoexpand", true)); - swExpandFirst.setChecked(prefs.getBoolean("expand_first", true)); - swExpandFirst.setEnabled(swAutoExpand.isChecked()); - swExpandAll.setChecked(prefs.getBoolean("expand_all", false)); - swExpandOne.setChecked(prefs.getBoolean("expand_one", true)); - swExpandOne.setEnabled(!swExpandAll.isChecked()); - swCollapseMultiple.setChecked(prefs.getBoolean("collapse_multiple", true)); - - swAutoClose.setChecked(prefs.getBoolean("autoclose", true)); - - String onClose = prefs.getString("onclose", ""); - String[] onCloseValues = getResources().getStringArray(R.array.onCloseValues); - for (int pos = 0; pos < onCloseValues.length; pos++) - if (onCloseValues[pos].equals(onClose)) { - spOnClose.setSelection(pos); - break; - } - - tvOnClose.setEnabled(!swAutoClose.isChecked()); - spOnClose.setEnabled(!swAutoClose.isChecked()); - - swAutoCloseUnseen.setChecked(prefs.getBoolean("autoclose_unseen", false)); - swAutoCloseSend.setChecked(prefs.getBoolean("autoclose_send", false)); - swCollapseMarked.setChecked(prefs.getBoolean("collapse_marked", true)); - - int undo_timeout = prefs.getInt("undo_timeout", 5000); - int[] undoValues = getResources().getIntArray(R.array.undoValues); - for (int pos = 0; pos < undoValues.length; pos++) - if (undoValues[pos] == undo_timeout) { - spUndoTimeout.setSelection(pos); - break; - } - - swAutoRead.setChecked(prefs.getBoolean("autoread", false)); - swAutoUnflag.setChecked(prefs.getBoolean("autounflag", false)); - swResetImportance.setChecked(prefs.getBoolean("reset_importance", false)); - swThreadSentTrash.setChecked(prefs.getBoolean("thread_sent_trash", true)); - - swFlagSnoozed.setChecked(prefs.getBoolean("flag_snoozed", false)); - swAutoImportant.setChecked(prefs.getBoolean("auto_important", false)); - swResetSnooze.setChecked(prefs.getBoolean("reset_snooze", true)); - swAutoBlockSender.setChecked(prefs.getBoolean("auto_block_sender", true)); - swAutoHideAnswer.setChecked(prefs.getBoolean("auto_hide_answer", !accessibility)); - swSwipeReply.setChecked(prefs.getBoolean("swipe_reply", false)); - swMoveThreadSent.setChecked(prefs.getBoolean("move_thread_sent", false)); - tvDefaultFolder.setText(prefs.getString("default_folder", null)); + int undo_timeout = prefs.getInt("undo_timeout", 5000); + int[] undoValues = getResources().getIntArray(R.array.undoValues); + for (int pos = 0; pos < undoValues.length; pos++) + if (undoValues[pos] == undo_timeout) { + spUndoTimeout.setSelection(pos); + break; + } + + swAutoRead.setChecked(prefs.getBoolean("autoread", false)); + swAutoUnflag.setChecked(prefs.getBoolean("autounflag", false)); + swResetImportance.setChecked(prefs.getBoolean("reset_importance", false)); + swThreadSentTrash.setChecked(prefs.getBoolean("thread_sent_trash", true)); + + swFlagSnoozed.setChecked(prefs.getBoolean("flag_snoozed", false)); + swAutoImportant.setChecked(prefs.getBoolean("auto_important", false)); + swResetSnooze.setChecked(prefs.getBoolean("reset_snooze", true)); + swAutoBlockSender.setChecked(prefs.getBoolean("auto_block_sender", true)); + swAutoHideAnswer.setChecked(prefs.getBoolean("auto_hide_answer", !accessibility)); + swSwipeReply.setChecked(prefs.getBoolean("swipe_reply", false)); + swMoveThreadSent.setChecked(prefs.getBoolean("move_thread_sent", false)); + tvDefaultFolder.setText(prefs.getString("default_folder", null)); + } catch (Throwable ex) { + Log.e(ex); + } } private void onDefaultFolder(Uri uri) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java index 7fd2c42431..38140f5e6b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java @@ -423,46 +423,50 @@ public class FragmentOptionsConnection extends FragmentBase implements SharedPre } private void setOptions() { - if (view == null || getContext() == null) - return; + try { + if (view == null || getContext() == null) + return; - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - swMetered.setChecked(prefs.getBoolean("metered", true)); + swMetered.setChecked(prefs.getBoolean("metered", true)); - int download = prefs.getInt("download", MessageHelper.DEFAULT_DOWNLOAD_SIZE); - int[] downloadValues = getResources().getIntArray(R.array.downloadValues); - for (int pos = 0; pos < downloadValues.length; pos++) - if (downloadValues[pos] == download) { - spDownload.setSelection(pos); - break; - } + int download = prefs.getInt("download", MessageHelper.DEFAULT_DOWNLOAD_SIZE); + int[] downloadValues = getResources().getIntArray(R.array.downloadValues); + for (int pos = 0; pos < downloadValues.length; pos++) + if (downloadValues[pos] == download) { + spDownload.setSelection(pos); + break; + } - swRoaming.setChecked(prefs.getBoolean("roaming", true)); - swRlah.setChecked(prefs.getBoolean("rlah", true)); - - swDownloadHeaders.setChecked(prefs.getBoolean("download_headers", false)); - swDownloadEml.setChecked(prefs.getBoolean("download_eml", false)); - swDownloadPlain.setChecked(prefs.getBoolean("download_plain", false)); - - swValidated.setChecked(prefs.getBoolean("require_validated", false)); - swValidatedCaptive.setChecked(prefs.getBoolean("require_validated_captive", true)); - swValidatedCaptive.setEnabled(!swValidated.isChecked()); - swVpnOnly.setChecked(prefs.getBoolean("vpn_only", false)); - - int timeout = prefs.getInt("timeout", 0); - etTimeout.setText(timeout == 0 ? null : Integer.toString(timeout)); - etTimeout.setHint(Integer.toString(EmailService.DEFAULT_CONNECT_TIMEOUT)); - - swPreferIp4.setChecked(prefs.getBoolean("prefer_ip4", true)); - swBindSocket.setChecked(prefs.getBoolean("bind_socket", false)); - swStandaloneVpn.setChecked(prefs.getBoolean("standalone_vpn", false)); - swTcpKeepAlive.setChecked(prefs.getBoolean("tcp_keep_alive", false)); - swSslHarden.setChecked(prefs.getBoolean("ssl_harden", false)); - swSslHardenStrict.setChecked(prefs.getBoolean("ssl_harden_strict", false)); - swSslHardenStrict.setEnabled(swSslHarden.isChecked()); - swCertStrict.setChecked(prefs.getBoolean("cert_strict", !BuildConfig.PLAY_STORE_RELEASE)); - swOpenSafe.setChecked(prefs.getBoolean("open_safe", false)); + swRoaming.setChecked(prefs.getBoolean("roaming", true)); + swRlah.setChecked(prefs.getBoolean("rlah", true)); + + swDownloadHeaders.setChecked(prefs.getBoolean("download_headers", false)); + swDownloadEml.setChecked(prefs.getBoolean("download_eml", false)); + swDownloadPlain.setChecked(prefs.getBoolean("download_plain", false)); + + swValidated.setChecked(prefs.getBoolean("require_validated", false)); + swValidatedCaptive.setChecked(prefs.getBoolean("require_validated_captive", true)); + swValidatedCaptive.setEnabled(!swValidated.isChecked()); + swVpnOnly.setChecked(prefs.getBoolean("vpn_only", false)); + + int timeout = prefs.getInt("timeout", 0); + etTimeout.setText(timeout == 0 ? null : Integer.toString(timeout)); + etTimeout.setHint(Integer.toString(EmailService.DEFAULT_CONNECT_TIMEOUT)); + + swPreferIp4.setChecked(prefs.getBoolean("prefer_ip4", true)); + swBindSocket.setChecked(prefs.getBoolean("bind_socket", false)); + swStandaloneVpn.setChecked(prefs.getBoolean("standalone_vpn", false)); + swTcpKeepAlive.setChecked(prefs.getBoolean("tcp_keep_alive", false)); + swSslHarden.setChecked(prefs.getBoolean("ssl_harden", false)); + swSslHardenStrict.setChecked(prefs.getBoolean("ssl_harden_strict", false)); + swSslHardenStrict.setEnabled(swSslHarden.isChecked()); + swCertStrict.setChecked(prefs.getBoolean("cert_strict", !BuildConfig.PLAY_STORE_RELEASE)); + swOpenSafe.setChecked(prefs.getBoolean("open_safe", false)); + } catch (Throwable ex) { + Log.e(ex); + } } private static Intent getIntentConnectivity() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java index 141c202682..9467e2d288 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java @@ -1394,207 +1394,211 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer } private void setOptions() { - if (view == null || getContext() == null) - return; + try { + if (view == null || getContext() == null) + return; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + String startup = prefs.getString("startup", "unified"); + String[] startupValues = getResources().getStringArray(R.array.startupValues); + for (int pos = 0; pos < startupValues.length; pos++) + if (startupValues[pos].equals(startup)) { + spStartup.setSelection(pos); + break; + } - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - - String startup = prefs.getString("startup", "unified"); - String[] startupValues = getResources().getStringArray(R.array.startupValues); - for (int pos = 0; pos < startupValues.length; pos++) - if (startupValues[pos].equals(startup)) { - spStartup.setSelection(pos); - break; - } - - swDate.setChecked(prefs.getBoolean("date", true)); - swDateWeek.setChecked(prefs.getBoolean("date_week", false)); - swDateWeek.setEnabled(swDate.isChecked()); - swDateFixed.setChecked(prefs.getBoolean("date_fixed", false)); - swDateFixed.setEnabled(!swDate.isChecked()); - swDateBold.setChecked(prefs.getBoolean("date_bold", false)); - swDateBold.setEnabled(swDate.isChecked() || swDateFixed.isChecked()); - swCategory.setChecked(prefs.getBoolean("group_category", false)); - swCards.setChecked(prefs.getBoolean("cards", true)); - swBeige.setChecked(prefs.getBoolean("beige", true)); - swTabularBackground.setChecked(prefs.getBoolean("tabular_card_bg", false)); - swShadow.setChecked(prefs.getBoolean("shadow_unread", false)); - swShadowBorder.setChecked(prefs.getBoolean("shadow_border", true)); - swShadowHighlight.setChecked(prefs.getBoolean("shadow_highlight", false)); - swBeige.setEnabled(swCards.isChecked()); - swTabularBackground.setEnabled(!swCards.isChecked()); - swShadow.setEnabled(swCards.isChecked()); - swShadowBorder.setEnabled(swShadow.isEnabled() && swShadow.isChecked()); - swShadowHighlight.setEnabled(swShadow.isEnabled() && swShadow.isChecked()); - swTabularDividers.setChecked(prefs.getBoolean("dividers", true)); - swTabularDividers.setEnabled(!swCards.isChecked()); - swPortrait2.setChecked(prefs.getBoolean("portrait2", false)); - swPortrait2c.setChecked(prefs.getBoolean("portrait2c", false) && !swPortrait2.isChecked()); - spPortraitMinSize.setSelection(prefs.getInt("portrait_min_size", 0)); - swLandscape.setChecked(prefs.getBoolean("landscape", true)); - spLandscapeMinSize.setSelection(prefs.getInt("landscape_min_size", 0)); - swClosePane.setChecked(prefs.getBoolean("close_pane", !Helper.isSurfaceDuo())); - - int column_width = prefs.getInt("column_width", 67); - tvColumnWidth.setText(getString(R.string.title_advanced_column_width, NF.format(column_width))); - sbColumnWidth.setProgress(column_width); - - swHideToolbar.setChecked(prefs.getBoolean("hide_toolbar", !BuildConfig.PLAY_STORE_RELEASE)); - swNavOptions.setChecked(prefs.getBoolean("nav_options", true)); - swNavCategories.setChecked(prefs.getBoolean("nav_categories", false)); - swNavLastSync.setChecked(prefs.getBoolean("nav_last_sync", true)); - swNavMessageCount.setChecked(prefs.getBoolean("nav_count", false)); - swNavUnseenDrafts.setChecked(prefs.getBoolean("nav_unseen_drafts", false)); - swNavPinnedCount.setChecked(prefs.getBoolean("nav_count_pinned", false)); - swNavBarColorize.setChecked(prefs.getBoolean("navbar_colorize", false)); - - swThreading.setChecked(prefs.getBoolean("threading", true)); - swThreadingUnread.setChecked(prefs.getBoolean("threading_unread", false)); - swThreadingUnread.setEnabled(swThreading.isChecked()); - swIndentation.setChecked(prefs.getBoolean("indentation", false)); - swIndentation.setEnabled(swCards.isChecked() && swThreading.isChecked()); - swSeekbar.setChecked(prefs.getBoolean("seekbar", false)); - swActionbar.setChecked(prefs.getBoolean("actionbar", true)); - swActionbarSwap.setChecked(prefs.getBoolean("actionbar_swap", false)); - swActionbarSwap.setEnabled(swActionbar.isChecked()); - swActionbarColor.setChecked(prefs.getBoolean("actionbar_color", false)); - swActionbarColor.setEnabled(swActionbar.isChecked()); - - swHighlightUnread.setChecked(prefs.getBoolean("highlight_unread", true)); - - btnHighlightColor.setColor(prefs.getInt("highlight_color", - Helper.resolveColor(getContext(), R.attr.colorUnreadHighlight))); - - swColorStripe.setChecked(prefs.getBoolean("color_stripe", true)); - swColorStripeWide.setChecked(prefs.getBoolean("color_stripe_wide", false)); - //swColorStripeWide.setEnabled(swColorStripe.isChecked()); - swAvatars.setChecked(prefs.getBoolean("avatars", true)); - swBimi.setChecked(prefs.getBoolean("bimi", false)); - swGravatars.setChecked(prefs.getBoolean("gravatars", false)); - swLibravatars.setChecked(prefs.getBoolean("libravatars", false)); - swFavicons.setChecked(prefs.getBoolean("favicons", false)); - swFaviconsPartial.setChecked(prefs.getBoolean("favicons_partial", true)); - swFaviconsPartial.setEnabled(swFavicons.isChecked()); - swGeneratedIcons.setChecked(prefs.getBoolean("generated_icons", true)); - swIdenticons.setChecked(prefs.getBoolean("identicons", false)); - swIdenticons.setEnabled(swGeneratedIcons.isChecked()); - swCircular.setChecked(prefs.getBoolean("circular", true)); - - int saturation = prefs.getInt("saturation", 100); - tvSaturation.setText(getString(R.string.title_advanced_color_saturation, NF.format(saturation))); - sbSaturation.setProgress(saturation); - sbSaturation.setEnabled(swGeneratedIcons.isChecked()); - - int brightness = prefs.getInt("brightness", 100); - tvBrightness.setText(getString(R.string.title_advanced_color_value, NF.format(brightness))); - sbBrightness.setProgress(brightness); - sbBrightness.setEnabled(swGeneratedIcons.isChecked()); - - int threshold = prefs.getInt("threshold", 50); - tvThreshold.setText(getString(R.string.title_advanced_color_threshold, NF.format(threshold))); - sbThreshold.setProgress(threshold); - sbThreshold.setEnabled(swGeneratedIcons.isChecked()); - - MessageHelper.AddressFormat email_format = MessageHelper.getAddressFormat(getContext()); - spNameEmail.setSelection(email_format.ordinal()); - swPreferContact.setChecked(prefs.getBoolean("prefer_contact", false)); - swOnlyContact.setChecked(prefs.getBoolean("only_contact", false)); - swDistinguishContacts.setChecked(prefs.getBoolean("distinguish_contacts", false)); - swShowRecipients.setChecked(prefs.getBoolean("show_recipients", false)); - - swSubjectTop.setChecked(prefs.getBoolean("subject_top", false)); - swSubjectItalic.setChecked(prefs.getBoolean("subject_italic", true)); - swHighlightSubject.setChecked(prefs.getBoolean("highlight_subject", false)); - - int[] fontSizeValues = getResources().getIntArray(R.array.fontSizeValues); - String[] ellipsizeValues = getResources().getStringArray(R.array.ellipsizeValues); - - int font_size_sender = prefs.getInt("font_size_sender", -1); - for (int pos = 0; pos < fontSizeValues.length; pos++) - if (fontSizeValues[pos] == font_size_sender) { - spFontSizeSender.setSelection(pos); - break; - } - - int font_size_subject = prefs.getInt("font_size_subject", -1); - for (int pos = 0; pos < fontSizeValues.length; pos++) - if (fontSizeValues[pos] == font_size_subject) { - spFontSizeSubject.setSelection(pos); - break; - } - - String sender_ellipsize = prefs.getString("sender_ellipsize", "end"); - for (int pos = 0; pos < ellipsizeValues.length; pos++) - if (ellipsizeValues[pos].equals(sender_ellipsize)) { - spSenderEllipsize.setSelection(pos); - break; - } - - String subject_ellipsize = prefs.getString("subject_ellipsize", "full"); - for (int pos = 0; pos < ellipsizeValues.length; pos++) - if (ellipsizeValues[pos].equals(subject_ellipsize)) { - spSubjectEllipsize.setSelection(pos); - break; - } - - swKeywords.setChecked(prefs.getBoolean("keywords_header", false)); - swLabels.setChecked(prefs.getBoolean("labels_header", true)); - swFlags.setChecked(prefs.getBoolean("flags", true)); - swFlagsBackground.setChecked(prefs.getBoolean("flags_background", false)); - swPreview.setChecked(prefs.getBoolean("preview", false)); - swPreviewItalic.setChecked(prefs.getBoolean("preview_italic", true)); - swPreviewItalic.setEnabled(swPreview.isChecked()); - spPreviewLines.setSelection(prefs.getInt("preview_lines", 1) - 1); - spPreviewLines.setEnabled(swPreview.isChecked()); - swAlignHeader.setChecked(prefs.getBoolean("align_header", false)); - - swAddresses.setChecked(prefs.getBoolean("addresses", false)); - - int message_zoom = prefs.getInt("message_zoom", 100); - tvMessageZoom.setText(getString(R.string.title_advanced_message_text_zoom2, NF.format(message_zoom))); - if (message_zoom >= 50 && message_zoom <= 250) - sbMessageZoom.setProgress(message_zoom - 50); - - swOverviewMode.setChecked(prefs.getBoolean("overview_mode", false)); - swOverrideWidth.setChecked(prefs.getBoolean("override_width", false)); - - swContrast.setChecked(prefs.getBoolean("contrast", false)); - swHyphenation.setChecked(prefs.getBoolean("hyphenation", false)); - - String display_font = prefs.getString("display_font", ""); - List fonts = StyleHelper.getFonts(getContext()); - for (int pos = 0; pos < fonts.size(); pos++) { - StyleHelper.FontDescriptor font = fonts.get(pos); - if (font.type.equals(display_font)) { - spDisplayFont.setSelection(pos + 1); - break; + swDate.setChecked(prefs.getBoolean("date", true)); + swDateWeek.setChecked(prefs.getBoolean("date_week", false)); + swDateWeek.setEnabled(swDate.isChecked()); + swDateFixed.setChecked(prefs.getBoolean("date_fixed", false)); + swDateFixed.setEnabled(!swDate.isChecked()); + swDateBold.setChecked(prefs.getBoolean("date_bold", false)); + swDateBold.setEnabled(swDate.isChecked() || swDateFixed.isChecked()); + swCategory.setChecked(prefs.getBoolean("group_category", false)); + swCards.setChecked(prefs.getBoolean("cards", true)); + swBeige.setChecked(prefs.getBoolean("beige", true)); + swTabularBackground.setChecked(prefs.getBoolean("tabular_card_bg", false)); + swShadow.setChecked(prefs.getBoolean("shadow_unread", false)); + swShadowBorder.setChecked(prefs.getBoolean("shadow_border", true)); + swShadowHighlight.setChecked(prefs.getBoolean("shadow_highlight", false)); + swBeige.setEnabled(swCards.isChecked()); + swTabularBackground.setEnabled(!swCards.isChecked()); + swShadow.setEnabled(swCards.isChecked()); + swShadowBorder.setEnabled(swShadow.isEnabled() && swShadow.isChecked()); + swShadowHighlight.setEnabled(swShadow.isEnabled() && swShadow.isChecked()); + swTabularDividers.setChecked(prefs.getBoolean("dividers", true)); + swTabularDividers.setEnabled(!swCards.isChecked()); + swPortrait2.setChecked(prefs.getBoolean("portrait2", false)); + swPortrait2c.setChecked(prefs.getBoolean("portrait2c", false) && !swPortrait2.isChecked()); + spPortraitMinSize.setSelection(prefs.getInt("portrait_min_size", 0)); + swLandscape.setChecked(prefs.getBoolean("landscape", true)); + spLandscapeMinSize.setSelection(prefs.getInt("landscape_min_size", 0)); + swClosePane.setChecked(prefs.getBoolean("close_pane", !Helper.isSurfaceDuo())); + + int column_width = prefs.getInt("column_width", 67); + tvColumnWidth.setText(getString(R.string.title_advanced_column_width, NF.format(column_width))); + sbColumnWidth.setProgress(column_width); + + swHideToolbar.setChecked(prefs.getBoolean("hide_toolbar", !BuildConfig.PLAY_STORE_RELEASE)); + swNavOptions.setChecked(prefs.getBoolean("nav_options", true)); + swNavCategories.setChecked(prefs.getBoolean("nav_categories", false)); + swNavLastSync.setChecked(prefs.getBoolean("nav_last_sync", true)); + swNavMessageCount.setChecked(prefs.getBoolean("nav_count", false)); + swNavUnseenDrafts.setChecked(prefs.getBoolean("nav_unseen_drafts", false)); + swNavPinnedCount.setChecked(prefs.getBoolean("nav_count_pinned", false)); + swNavBarColorize.setChecked(prefs.getBoolean("navbar_colorize", false)); + + swThreading.setChecked(prefs.getBoolean("threading", true)); + swThreadingUnread.setChecked(prefs.getBoolean("threading_unread", false)); + swThreadingUnread.setEnabled(swThreading.isChecked()); + swIndentation.setChecked(prefs.getBoolean("indentation", false)); + swIndentation.setEnabled(swCards.isChecked() && swThreading.isChecked()); + swSeekbar.setChecked(prefs.getBoolean("seekbar", false)); + swActionbar.setChecked(prefs.getBoolean("actionbar", true)); + swActionbarSwap.setChecked(prefs.getBoolean("actionbar_swap", false)); + swActionbarSwap.setEnabled(swActionbar.isChecked()); + swActionbarColor.setChecked(prefs.getBoolean("actionbar_color", false)); + swActionbarColor.setEnabled(swActionbar.isChecked()); + + swHighlightUnread.setChecked(prefs.getBoolean("highlight_unread", true)); + + btnHighlightColor.setColor(prefs.getInt("highlight_color", + Helper.resolveColor(getContext(), R.attr.colorUnreadHighlight))); + + swColorStripe.setChecked(prefs.getBoolean("color_stripe", true)); + swColorStripeWide.setChecked(prefs.getBoolean("color_stripe_wide", false)); + //swColorStripeWide.setEnabled(swColorStripe.isChecked()); + swAvatars.setChecked(prefs.getBoolean("avatars", true)); + swBimi.setChecked(prefs.getBoolean("bimi", false)); + swGravatars.setChecked(prefs.getBoolean("gravatars", false)); + swLibravatars.setChecked(prefs.getBoolean("libravatars", false)); + swFavicons.setChecked(prefs.getBoolean("favicons", false)); + swFaviconsPartial.setChecked(prefs.getBoolean("favicons_partial", true)); + swFaviconsPartial.setEnabled(swFavicons.isChecked()); + swGeneratedIcons.setChecked(prefs.getBoolean("generated_icons", true)); + swIdenticons.setChecked(prefs.getBoolean("identicons", false)); + swIdenticons.setEnabled(swGeneratedIcons.isChecked()); + swCircular.setChecked(prefs.getBoolean("circular", true)); + + int saturation = prefs.getInt("saturation", 100); + tvSaturation.setText(getString(R.string.title_advanced_color_saturation, NF.format(saturation))); + sbSaturation.setProgress(saturation); + sbSaturation.setEnabled(swGeneratedIcons.isChecked()); + + int brightness = prefs.getInt("brightness", 100); + tvBrightness.setText(getString(R.string.title_advanced_color_value, NF.format(brightness))); + sbBrightness.setProgress(brightness); + sbBrightness.setEnabled(swGeneratedIcons.isChecked()); + + int threshold = prefs.getInt("threshold", 50); + tvThreshold.setText(getString(R.string.title_advanced_color_threshold, NF.format(threshold))); + sbThreshold.setProgress(threshold); + sbThreshold.setEnabled(swGeneratedIcons.isChecked()); + + MessageHelper.AddressFormat email_format = MessageHelper.getAddressFormat(getContext()); + spNameEmail.setSelection(email_format.ordinal()); + swPreferContact.setChecked(prefs.getBoolean("prefer_contact", false)); + swOnlyContact.setChecked(prefs.getBoolean("only_contact", false)); + swDistinguishContacts.setChecked(prefs.getBoolean("distinguish_contacts", false)); + swShowRecipients.setChecked(prefs.getBoolean("show_recipients", false)); + + swSubjectTop.setChecked(prefs.getBoolean("subject_top", false)); + swSubjectItalic.setChecked(prefs.getBoolean("subject_italic", true)); + swHighlightSubject.setChecked(prefs.getBoolean("highlight_subject", false)); + + int[] fontSizeValues = getResources().getIntArray(R.array.fontSizeValues); + String[] ellipsizeValues = getResources().getStringArray(R.array.ellipsizeValues); + + int font_size_sender = prefs.getInt("font_size_sender", -1); + for (int pos = 0; pos < fontSizeValues.length; pos++) + if (fontSizeValues[pos] == font_size_sender) { + spFontSizeSender.setSelection(pos); + break; + } + + int font_size_subject = prefs.getInt("font_size_subject", -1); + for (int pos = 0; pos < fontSizeValues.length; pos++) + if (fontSizeValues[pos] == font_size_subject) { + spFontSizeSubject.setSelection(pos); + break; + } + + String sender_ellipsize = prefs.getString("sender_ellipsize", "end"); + for (int pos = 0; pos < ellipsizeValues.length; pos++) + if (ellipsizeValues[pos].equals(sender_ellipsize)) { + spSenderEllipsize.setSelection(pos); + break; + } + + String subject_ellipsize = prefs.getString("subject_ellipsize", "full"); + for (int pos = 0; pos < ellipsizeValues.length; pos++) + if (ellipsizeValues[pos].equals(subject_ellipsize)) { + spSubjectEllipsize.setSelection(pos); + break; + } + + swKeywords.setChecked(prefs.getBoolean("keywords_header", false)); + swLabels.setChecked(prefs.getBoolean("labels_header", true)); + swFlags.setChecked(prefs.getBoolean("flags", true)); + swFlagsBackground.setChecked(prefs.getBoolean("flags_background", false)); + swPreview.setChecked(prefs.getBoolean("preview", false)); + swPreviewItalic.setChecked(prefs.getBoolean("preview_italic", true)); + swPreviewItalic.setEnabled(swPreview.isChecked()); + spPreviewLines.setSelection(prefs.getInt("preview_lines", 1) - 1); + spPreviewLines.setEnabled(swPreview.isChecked()); + swAlignHeader.setChecked(prefs.getBoolean("align_header", false)); + + swAddresses.setChecked(prefs.getBoolean("addresses", false)); + + int message_zoom = prefs.getInt("message_zoom", 100); + tvMessageZoom.setText(getString(R.string.title_advanced_message_text_zoom2, NF.format(message_zoom))); + if (message_zoom >= 50 && message_zoom <= 250) + sbMessageZoom.setProgress(message_zoom - 50); + + swOverviewMode.setChecked(prefs.getBoolean("overview_mode", false)); + swOverrideWidth.setChecked(prefs.getBoolean("override_width", false)); + + swContrast.setChecked(prefs.getBoolean("contrast", false)); + swHyphenation.setChecked(prefs.getBoolean("hyphenation", false)); + + String display_font = prefs.getString("display_font", ""); + List fonts = StyleHelper.getFonts(getContext()); + for (int pos = 0; pos < fonts.size(); pos++) { + StyleHelper.FontDescriptor font = fonts.get(pos); + if (font.type.equals(display_font)) { + spDisplayFont.setSelection(pos + 1); + break; + } } - } - swMonospacedPre.setChecked(prefs.getBoolean("monospaced_pre", false)); - swTextSeparators.setChecked(prefs.getBoolean("text_separators", true)); - swCollapseQuotes.setChecked(prefs.getBoolean("collapse_quotes", false)); - swImagesPlaceholders.setChecked(prefs.getBoolean("image_placeholders", true)); - swImagesInline.setChecked(prefs.getBoolean("inline_images", false)); - swButtonExtra.setChecked(prefs.getBoolean("button_extra", false)); - swUnzip.setChecked(prefs.getBoolean("unzip", !BuildConfig.PLAY_STORE_RELEASE)); - swAttachmentsAlt.setChecked(prefs.getBoolean("attachments_alt", false)); - swThumbnails.setChecked(prefs.getBoolean("thumbnails", true)); - - swListCount.setChecked(prefs.getBoolean("list_count", false)); - swBundledFonts.setChecked(prefs.getBoolean("bundled_fonts", true)); - swParseClasses.setChecked(prefs.getBoolean("parse_classes", true)); - swBackgroundColor.setChecked(prefs.getBoolean("background_color", false)); - swTextColor.setChecked(prefs.getBoolean("text_color", true)); - swTextSize.setChecked(prefs.getBoolean("text_size", true)); - swTextFont.setChecked(prefs.getBoolean("text_font", true)); - swTextAlign.setChecked(prefs.getBoolean("text_align", true)); - swTextTitles.setChecked(prefs.getBoolean("text_titles", false)); - swAuthentication.setChecked(prefs.getBoolean("authentication", true)); - swAuthenticationIndicator.setChecked(prefs.getBoolean("authentication_indicator", false)); - swAuthenticationIndicator.setEnabled(swAuthentication.isChecked()); - - updateColor(); + swMonospacedPre.setChecked(prefs.getBoolean("monospaced_pre", false)); + swTextSeparators.setChecked(prefs.getBoolean("text_separators", true)); + swCollapseQuotes.setChecked(prefs.getBoolean("collapse_quotes", false)); + swImagesPlaceholders.setChecked(prefs.getBoolean("image_placeholders", true)); + swImagesInline.setChecked(prefs.getBoolean("inline_images", false)); + swButtonExtra.setChecked(prefs.getBoolean("button_extra", false)); + swUnzip.setChecked(prefs.getBoolean("unzip", !BuildConfig.PLAY_STORE_RELEASE)); + swAttachmentsAlt.setChecked(prefs.getBoolean("attachments_alt", false)); + swThumbnails.setChecked(prefs.getBoolean("thumbnails", true)); + + swListCount.setChecked(prefs.getBoolean("list_count", false)); + swBundledFonts.setChecked(prefs.getBoolean("bundled_fonts", true)); + swParseClasses.setChecked(prefs.getBoolean("parse_classes", true)); + swBackgroundColor.setChecked(prefs.getBoolean("background_color", false)); + swTextColor.setChecked(prefs.getBoolean("text_color", true)); + swTextSize.setChecked(prefs.getBoolean("text_size", true)); + swTextFont.setChecked(prefs.getBoolean("text_font", true)); + swTextAlign.setChecked(prefs.getBoolean("text_align", true)); + swTextTitles.setChecked(prefs.getBoolean("text_titles", false)); + swAuthentication.setChecked(prefs.getBoolean("authentication", true)); + swAuthenticationIndicator.setChecked(prefs.getBoolean("authentication_indicator", false)); + swAuthenticationIndicator.setEnabled(swAuthentication.isChecked()); + + updateColor(); + } catch (Throwable ex) { + Log.e(ex); + } } private void setNavigationBarColor(int color) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java index 50e4e15810..dd0c333537 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java @@ -634,49 +634,53 @@ public class FragmentOptionsEncryption extends FragmentBase } private void setOptions() { - if (view == null || getContext() == null) - return; - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - - swSign.setChecked(prefs.getBoolean("sign_default", false)); - swEncrypt.setChecked(prefs.getBoolean("encrypt_default", false)); - swSign.setEnabled(!swEncrypt.isChecked()); - swEncryptAuto.setChecked(prefs.getBoolean("encrypt_auto", false)); - swAutoDecrypt.setChecked(prefs.getBoolean("auto_decrypt", false)); - swAutoUndoDecrypt.setChecked(prefs.getBoolean("auto_undecrypt", false)); - - String provider = prefs.getString("openpgp_provider", Helper.PGP_OPENKEYCHAIN_PACKAGE); - spOpenPgp.setTag(provider); - for (int pos = 0; pos < openPgpProvider.size(); pos++) - if (provider.equals(openPgpProvider.get(pos))) { - spOpenPgp.setSelection(pos); - break; - } - testOpenPgp(provider); - - swAutocrypt.setChecked(prefs.getBoolean("autocrypt", true)); - swAutocryptMutual.setChecked(prefs.getBoolean("autocrypt_mutual", true)); - swAutocryptMutual.setEnabled(swAutocrypt.isChecked()); - swEncryptSubject.setChecked(prefs.getBoolean("encrypt_subject", false)); - - String signAlgorithm = prefs.getString("sign_algo_smime", "SHA-256"); - String[] smimeSignAlgo = getResources().getStringArray(R.array.smimeSignAlgo); - for (int pos = 0; pos < smimeSignAlgo.length; pos++) - if (smimeSignAlgo[pos].equals(signAlgorithm)) { - spSignAlgoSmime.setSelection(pos); - break; - } + try { + if (view == null || getContext() == null) + return; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + swSign.setChecked(prefs.getBoolean("sign_default", false)); + swEncrypt.setChecked(prefs.getBoolean("encrypt_default", false)); + swSign.setEnabled(!swEncrypt.isChecked()); + swEncryptAuto.setChecked(prefs.getBoolean("encrypt_auto", false)); + swAutoDecrypt.setChecked(prefs.getBoolean("auto_decrypt", false)); + swAutoUndoDecrypt.setChecked(prefs.getBoolean("auto_undecrypt", false)); + + String provider = prefs.getString("openpgp_provider", Helper.PGP_OPENKEYCHAIN_PACKAGE); + spOpenPgp.setTag(provider); + for (int pos = 0; pos < openPgpProvider.size(); pos++) + if (provider.equals(openPgpProvider.get(pos))) { + spOpenPgp.setSelection(pos); + break; + } + testOpenPgp(provider); + + swAutocrypt.setChecked(prefs.getBoolean("autocrypt", true)); + swAutocryptMutual.setChecked(prefs.getBoolean("autocrypt_mutual", true)); + swAutocryptMutual.setEnabled(swAutocrypt.isChecked()); + swEncryptSubject.setChecked(prefs.getBoolean("encrypt_subject", false)); + + String signAlgorithm = prefs.getString("sign_algo_smime", "SHA-256"); + String[] smimeSignAlgo = getResources().getStringArray(R.array.smimeSignAlgo); + for (int pos = 0; pos < smimeSignAlgo.length; pos++) + if (smimeSignAlgo[pos].equals(signAlgorithm)) { + spSignAlgoSmime.setSelection(pos); + break; + } - String encryptAlgorithm = prefs.getString("encrypt_algo_smime", "AES-128"); - String[] smimeEncryptAlgo = getResources().getStringArray(R.array.smimeEncryptAlgo); - for (int pos = 0; pos < smimeEncryptAlgo.length; pos++) - if (smimeEncryptAlgo[pos].equals(encryptAlgorithm)) { - spEncryptAlgoSmime.setSelection(pos); - break; - } + String encryptAlgorithm = prefs.getString("encrypt_algo_smime", "AES-128"); + String[] smimeEncryptAlgo = getResources().getStringArray(R.array.smimeEncryptAlgo); + for (int pos = 0; pos < smimeEncryptAlgo.length; pos++) + if (smimeEncryptAlgo[pos].equals(encryptAlgorithm)) { + spEncryptAlgoSmime.setSelection(pos); + break; + } - swCheckCertificate.setChecked(prefs.getBoolean("check_certificate", true)); + swCheckCertificate.setChecked(prefs.getBoolean("check_certificate", true)); + } catch (Throwable ex) { + Log.e(ex); + } } private void testOpenPgp(String pkg) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 7a90b4ef02..1207fb3c10 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -1085,7 +1085,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc sbOpenAiTemperature.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - prefs.edit().putFloat("openai_temperature", progress / 10f).apply(); + prefs.edit().putFloat("openai_temperature", (float) progress / 10f).apply(); } @Override @@ -2320,203 +2320,207 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } private void setOptions() { - if (view == null || getContext() == null) - return; - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - - ActivityManager am = Helper.getSystemService(getContext(), ActivityManager.class); - int class_mb = am.getMemoryClass(); - int class_large_mb = am.getLargeMemoryClass(); - ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); - am.getMemoryInfo(mi); - - swSortAnswers.setChecked(prefs.getBoolean("sort_answers", false)); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) - swPowerMenu.setChecked(Helper.isComponentEnabled(getContext(), ServicePowerControl.class)); - swExternalSearch.setChecked(Helper.isComponentEnabled(getContext(), ActivitySearch.class)); - swExternalAnswer.setChecked(Helper.isComponentEnabled(getContext(), ActivityAnswer.class)); - swShortcuts.setChecked(prefs.getBoolean("shortcuts", true)); - swFts.setChecked(prefs.getBoolean("fts", false)); - - swClassification.setChecked(prefs.getBoolean("classification", false)); - - int class_min_chance = prefs.getInt("class_min_probability", 5); - tvClassMinProbability.setText(getString(R.string.title_advanced_class_min_chance, NF.format(class_min_chance))); - sbClassMinProbability.setProgress(class_min_chance); - - int class_min_difference = prefs.getInt("class_min_difference", 40); - tvClassMinDifference.setText(getString(R.string.title_advanced_class_min_difference, NF.format(class_min_difference))); - sbClassMinDifference.setProgress(class_min_difference); - - swShowFiltered.setChecked(prefs.getBoolean("show_filtered", false)); - - int selected = -1; - String language = prefs.getString("language", null); - List display = new ArrayList<>(); - display.add(getString(R.string.title_advanced_language_system)); - for (int pos = 0; pos < languages.size(); pos++) { - Pair lang = languages.get(pos); - display.add(lang.second); - if (lang.first.equals(language)) - selected = pos + 1; - } - - swUpdates.setChecked(prefs.getBoolean("updates", true)); - swCheckWeekly.setChecked(prefs.getBoolean("weekly", Helper.hasPlayStore(getContext()))); - swCheckWeekly.setEnabled(swUpdates.isChecked()); - swBeta.setChecked(prefs.getBoolean("beta", false)); - swBeta.setEnabled(swUpdates.isChecked()); - swChangelog.setChecked(prefs.getBoolean("show_changelog", !BuildConfig.PLAY_STORE_RELEASE)); - swAnnouncements.setChecked(prefs.getBoolean("announcements", true)); - swExperiments.setChecked(prefs.getBoolean("experiments", false)); - swCrashReports.setChecked(prefs.getBoolean("crash_reports", false)); - tvUuid.setText(prefs.getString("uuid", null)); - swCleanupAttachments.setChecked(prefs.getBoolean("cleanup_attachments", false)); - - ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, android.R.id.text1, display); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - spLanguage.setAdapter(adapter); - if (selected >= 0) - spLanguage.setSelection(selected); - - swLanguageTool.setChecked(prefs.getBoolean("lt_enabled", false)); - swLanguageToolAuto.setChecked(prefs.getBoolean("lt_auto", true)); - swLanguageToolAuto.setEnabled(swLanguageTool.isChecked()); - swLanguageToolPicky.setChecked(prefs.getBoolean("lt_picky", false)); - swLanguageToolPicky.setEnabled(swLanguageTool.isChecked()); - etLanguageTool.setText(prefs.getString("lt_uri", null)); - etLanguageToolUser.setText(prefs.getString("lt_user", null)); - tilLanguageToolKey.getEditText().setText(prefs.getString("lt_key", null)); - swDeepL.setChecked(prefs.getBoolean("deepl_enabled", false)); - swVirusTotal.setChecked(prefs.getBoolean("vt_enabled", false)); - tilVirusTotal.getEditText().setText(prefs.getString("vt_apikey", null)); - swSend.setChecked(prefs.getBoolean("send_enabled", false)); - etSend.setText(prefs.getString("send_host", null)); - swOpenAi.setChecked(prefs.getBoolean("openai_enabled", false)); - tilOpenAi.getEditText().setText(prefs.getString("openai_apikey", null)); - etOpenAiModel.setText(prefs.getString("openai_model", null)); - - float temperature = prefs.getFloat("openai_temperature", 0.5f); - tvOpenAiTemperature.setText(getString(R.string.title_advanced_openai_temperature, NF.format(temperature))); - sbOpenAiTemperature.setProgress(Math.round(temperature * 10)); - swOpenAiModeration.setChecked(prefs.getBoolean("openai_moderation", false)); - - swWatchdog.setChecked(prefs.getBoolean("watchdog", true)); - swMainLog.setChecked(prefs.getBoolean("main_log", true)); - swMainLogMem.setChecked(prefs.getBoolean("main_log_memory", false)); - swMainLogMem.setEnabled(swMainLog.isChecked()); - swProtocol.setChecked(prefs.getBoolean("protocol", false)); - swLogInfo.setChecked(prefs.getInt("log_level", android.util.Log.WARN) <= android.util.Log.INFO); - swDebug.setChecked(prefs.getBoolean("debug", false)); - swCanary.setChecked(prefs.getBoolean("leak_canary", false)); - swTest1.setChecked(prefs.getBoolean("test1", false)); - swTest2.setChecked(prefs.getBoolean("test2", false)); - swTest3.setChecked(prefs.getBoolean("test3", false)); - swTest4.setChecked(prefs.getBoolean("test4", false)); - swTest5.setChecked(prefs.getBoolean("test5", false)); - - swAutostart.setChecked(Helper.isComponentEnabled(getContext(), ReceiverAutoStart.class)); - swEmergency.setChecked(prefs.getBoolean("emergency_file", true)); - swWorkManager.setChecked(prefs.getBoolean("work_manager", true)); - swExternalStorage.setChecked(prefs.getBoolean("external_storage", false)); - - swIntegrity.setChecked(prefs.getBoolean("sqlite_integrity_check", true)); - swWal.setChecked(prefs.getBoolean("wal", true)); - swCheckpoints.setChecked(prefs.getBoolean("sqlite_checkpoints", true)); - swAnalyze.setChecked(prefs.getBoolean("sqlite_analyze", true)); - swAutoVacuum.setChecked(prefs.getBoolean("sqlite_auto_vacuum", false)); - swSyncExtra.setChecked(prefs.getBoolean("sqlite_sync_extra", true)); - - int sqlite_cache = prefs.getInt("sqlite_cache", DB.DEFAULT_CACHE_SIZE); - Integer cache_size = DB.getCacheSizeKb(getContext()); - if (cache_size == null) - cache_size = 2000; - tvSqliteCache.setText(getString(R.string.title_advanced_sqlite_cache, - NF.format(sqlite_cache), - Helper.humanReadableByteCount(cache_size * 1024L))); - sbSqliteCache.setProgress(sqlite_cache); - - int chunk_size = prefs.getInt("chunk_size", Core.DEFAULT_CHUNK_SIZE); - tvChunkSize.setText(getString(R.string.title_advanced_chunk_size, chunk_size)); - sbChunkSize.setProgress(chunk_size); - - int thread_range = prefs.getInt("thread_range", MessageHelper.DEFAULT_THREAD_RANGE); - int range = (int) Math.pow(2, thread_range); - tvThreadRange.setText(getString(R.string.title_advanced_thread_range, range)); - sbThreadRange.setProgress(thread_range); - - swUndoManager.setChecked(prefs.getBoolean("undo_manager", false)); - swBrowserZoom.setChecked(prefs.getBoolean("browser_zoom", false)); - swFakeDark.setChecked(prefs.getBoolean("fake_dark", false)); - swShowRecent.setChecked(prefs.getBoolean("show_recent", false)); - swModSeq.setChecked(prefs.getBoolean("use_modseq", true)); - swPreamble.setChecked(prefs.getBoolean("preamble", false)); - swUid.setChecked(prefs.getBoolean("uid_command", false)); - swExpunge.setChecked(prefs.getBoolean("perform_expunge", true)); - swUidExpunge.setChecked(prefs.getBoolean("uid_expunge", false)); - swAuthPlain.setChecked(prefs.getBoolean("auth_plain", true)); - swAuthLogin.setChecked(prefs.getBoolean("auth_login", true)); - swAuthNtlm.setChecked(prefs.getBoolean("auth_ntlm", true)); - swAuthSasl.setChecked(prefs.getBoolean("auth_sasl", true)); - swAuthApop.setChecked(prefs.getBoolean("auth_apop", false)); - swUseTop.setChecked(prefs.getBoolean("use_top", true)); - swKeepAlivePoll.setChecked(prefs.getBoolean("keep_alive_poll", false)); - swEmptyPool.setChecked(prefs.getBoolean("empty_pool", true)); - swIdleDone.setChecked(prefs.getBoolean("idle_done", true)); - swFastFetch.setChecked(prefs.getBoolean("fast_fetch", false)); - - int max_backoff_power = prefs.getInt("max_backoff_power", ServiceSynchronize.DEFAULT_BACKOFF_POWER - 3); - int max_backoff = (int) Math.pow(2, max_backoff_power + 3); - tvMaxBackoff.setText(getString(R.string.title_advanced_max_backoff, max_backoff)); - sbMaxBackOff.setProgress(max_backoff_power); - - swLogarithmicBackoff.setChecked(prefs.getBoolean("logarithmic_backoff", true)); - swExactAlarms.setChecked(prefs.getBoolean("exact_alarms", true)); - swNativeDkim.setEnabled(!BuildConfig.PLAY_STORE_RELEASE); - swNativeDkim.setChecked(prefs.getBoolean("native_dkim", false)); - swNativeArc.setEnabled(swNativeDkim.isEnabled() && swNativeDkim.isChecked()); - swNativeArc.setChecked(prefs.getBoolean("native_arc", true)); - etNativeArcWhitelist.setEnabled(swNativeDkim.isEnabled() && swNativeDkim.isChecked()); - etNativeArcWhitelist.setText(prefs.getString("native_arc_whitelist", null)); - swInfra.setChecked(prefs.getBoolean("infra", false)); - swDupMsgId.setChecked(prefs.getBoolean("dup_msgids", false)); - etKeywords.setText(prefs.getString("global_keywords", null)); - swTestIab.setChecked(prefs.getBoolean("test_iab", false)); - - tvProcessors.setText(getString(R.string.title_advanced_processors, Runtime.getRuntime().availableProcessors())); - tvMemoryClass.setText(getString(R.string.title_advanced_memory_class, - class_mb + " MB", - class_large_mb + " MB", - Helper.humanReadableByteCount(mi.totalMem))); - - String android_id; try { - android_id = Settings.Secure.getString( - getContext().getContentResolver(), - Settings.Secure.ANDROID_ID); - if (android_id == null) - android_id = ""; - } catch (Throwable ex) { - Log.w(ex); - android_id = "?"; - } - tvAndroidId.setText(getString(R.string.title_advanced_android_id, android_id)); + if (view == null || getContext() == null) + return; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + ActivityManager am = Helper.getSystemService(getContext(), ActivityManager.class); + int class_mb = am.getMemoryClass(); + int class_large_mb = am.getLargeMemoryClass(); + ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); + am.getMemoryInfo(mi); + + swSortAnswers.setChecked(prefs.getBoolean("sort_answers", false)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) + swPowerMenu.setChecked(Helper.isComponentEnabled(getContext(), ServicePowerControl.class)); + swExternalSearch.setChecked(Helper.isComponentEnabled(getContext(), ActivitySearch.class)); + swExternalAnswer.setChecked(Helper.isComponentEnabled(getContext(), ActivityAnswer.class)); + swShortcuts.setChecked(prefs.getBoolean("shortcuts", true)); + swFts.setChecked(prefs.getBoolean("fts", false)); + + swClassification.setChecked(prefs.getBoolean("classification", false)); + + int class_min_chance = prefs.getInt("class_min_probability", 5); + tvClassMinProbability.setText(getString(R.string.title_advanced_class_min_chance, NF.format(class_min_chance))); + sbClassMinProbability.setProgress(class_min_chance); + + int class_min_difference = prefs.getInt("class_min_difference", 40); + tvClassMinDifference.setText(getString(R.string.title_advanced_class_min_difference, NF.format(class_min_difference))); + sbClassMinDifference.setProgress(class_min_difference); + + swShowFiltered.setChecked(prefs.getBoolean("show_filtered", false)); + + int selected = -1; + String language = prefs.getString("language", null); + List display = new ArrayList<>(); + display.add(getString(R.string.title_advanced_language_system)); + for (int pos = 0; pos < languages.size(); pos++) { + Pair lang = languages.get(pos); + display.add(lang.second); + if (lang.first.equals(language)) + selected = pos + 1; + } + + swUpdates.setChecked(prefs.getBoolean("updates", true)); + swCheckWeekly.setChecked(prefs.getBoolean("weekly", Helper.hasPlayStore(getContext()))); + swCheckWeekly.setEnabled(swUpdates.isChecked()); + swBeta.setChecked(prefs.getBoolean("beta", false)); + swBeta.setEnabled(swUpdates.isChecked()); + swChangelog.setChecked(prefs.getBoolean("show_changelog", !BuildConfig.PLAY_STORE_RELEASE)); + swAnnouncements.setChecked(prefs.getBoolean("announcements", true)); + swExperiments.setChecked(prefs.getBoolean("experiments", false)); + swCrashReports.setChecked(prefs.getBoolean("crash_reports", false)); + tvUuid.setText(prefs.getString("uuid", null)); + swCleanupAttachments.setChecked(prefs.getBoolean("cleanup_attachments", false)); + + ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, android.R.id.text1, display); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spLanguage.setAdapter(adapter); + if (selected >= 0) + spLanguage.setSelection(selected); + + swLanguageTool.setChecked(prefs.getBoolean("lt_enabled", false)); + swLanguageToolAuto.setChecked(prefs.getBoolean("lt_auto", true)); + swLanguageToolAuto.setEnabled(swLanguageTool.isChecked()); + swLanguageToolPicky.setChecked(prefs.getBoolean("lt_picky", false)); + swLanguageToolPicky.setEnabled(swLanguageTool.isChecked()); + etLanguageTool.setText(prefs.getString("lt_uri", null)); + etLanguageToolUser.setText(prefs.getString("lt_user", null)); + tilLanguageToolKey.getEditText().setText(prefs.getString("lt_key", null)); + swDeepL.setChecked(prefs.getBoolean("deepl_enabled", false)); + swVirusTotal.setChecked(prefs.getBoolean("vt_enabled", false)); + tilVirusTotal.getEditText().setText(prefs.getString("vt_apikey", null)); + swSend.setChecked(prefs.getBoolean("send_enabled", false)); + etSend.setText(prefs.getString("send_host", null)); + swOpenAi.setChecked(prefs.getBoolean("openai_enabled", false)); + tilOpenAi.getEditText().setText(prefs.getString("openai_apikey", null)); + etOpenAiModel.setText(prefs.getString("openai_model", null)); + + float temperature = prefs.getFloat("openai_temperature", 0.5f); + tvOpenAiTemperature.setText(getString(R.string.title_advanced_openai_temperature, NF.format(temperature))); + sbOpenAiTemperature.setProgress(Math.round(temperature * 10)); + swOpenAiModeration.setChecked(prefs.getBoolean("openai_moderation", false)); + + swWatchdog.setChecked(prefs.getBoolean("watchdog", true)); + swMainLog.setChecked(prefs.getBoolean("main_log", true)); + swMainLogMem.setChecked(prefs.getBoolean("main_log_memory", false)); + swMainLogMem.setEnabled(swMainLog.isChecked()); + swProtocol.setChecked(prefs.getBoolean("protocol", false)); + swLogInfo.setChecked(prefs.getInt("log_level", android.util.Log.WARN) <= android.util.Log.INFO); + swDebug.setChecked(prefs.getBoolean("debug", false)); + swCanary.setChecked(prefs.getBoolean("leak_canary", false)); + swTest1.setChecked(prefs.getBoolean("test1", false)); + swTest2.setChecked(prefs.getBoolean("test2", false)); + swTest3.setChecked(prefs.getBoolean("test3", false)); + swTest4.setChecked(prefs.getBoolean("test4", false)); + swTest5.setChecked(prefs.getBoolean("test5", false)); + + swAutostart.setChecked(Helper.isComponentEnabled(getContext(), ReceiverAutoStart.class)); + swEmergency.setChecked(prefs.getBoolean("emergency_file", true)); + swWorkManager.setChecked(prefs.getBoolean("work_manager", true)); + swExternalStorage.setChecked(prefs.getBoolean("external_storage", false)); + + swIntegrity.setChecked(prefs.getBoolean("sqlite_integrity_check", true)); + swWal.setChecked(prefs.getBoolean("wal", true)); + swCheckpoints.setChecked(prefs.getBoolean("sqlite_checkpoints", true)); + swAnalyze.setChecked(prefs.getBoolean("sqlite_analyze", true)); + swAutoVacuum.setChecked(prefs.getBoolean("sqlite_auto_vacuum", false)); + swSyncExtra.setChecked(prefs.getBoolean("sqlite_sync_extra", true)); + + int sqlite_cache = prefs.getInt("sqlite_cache", DB.DEFAULT_CACHE_SIZE); + Integer cache_size = DB.getCacheSizeKb(getContext()); + if (cache_size == null) + cache_size = 2000; + tvSqliteCache.setText(getString(R.string.title_advanced_sqlite_cache, + NF.format(sqlite_cache), + Helper.humanReadableByteCount(cache_size * 1024L))); + sbSqliteCache.setProgress(sqlite_cache); + + int chunk_size = prefs.getInt("chunk_size", Core.DEFAULT_CHUNK_SIZE); + tvChunkSize.setText(getString(R.string.title_advanced_chunk_size, chunk_size)); + sbChunkSize.setProgress(chunk_size); + + int thread_range = prefs.getInt("thread_range", MessageHelper.DEFAULT_THREAD_RANGE); + int range = (int) Math.pow(2, thread_range); + tvThreadRange.setText(getString(R.string.title_advanced_thread_range, range)); + sbThreadRange.setProgress(thread_range); + + swUndoManager.setChecked(prefs.getBoolean("undo_manager", false)); + swBrowserZoom.setChecked(prefs.getBoolean("browser_zoom", false)); + swFakeDark.setChecked(prefs.getBoolean("fake_dark", false)); + swShowRecent.setChecked(prefs.getBoolean("show_recent", false)); + swModSeq.setChecked(prefs.getBoolean("use_modseq", true)); + swPreamble.setChecked(prefs.getBoolean("preamble", false)); + swUid.setChecked(prefs.getBoolean("uid_command", false)); + swExpunge.setChecked(prefs.getBoolean("perform_expunge", true)); + swUidExpunge.setChecked(prefs.getBoolean("uid_expunge", false)); + swAuthPlain.setChecked(prefs.getBoolean("auth_plain", true)); + swAuthLogin.setChecked(prefs.getBoolean("auth_login", true)); + swAuthNtlm.setChecked(prefs.getBoolean("auth_ntlm", true)); + swAuthSasl.setChecked(prefs.getBoolean("auth_sasl", true)); + swAuthApop.setChecked(prefs.getBoolean("auth_apop", false)); + swUseTop.setChecked(prefs.getBoolean("use_top", true)); + swKeepAlivePoll.setChecked(prefs.getBoolean("keep_alive_poll", false)); + swEmptyPool.setChecked(prefs.getBoolean("empty_pool", true)); + swIdleDone.setChecked(prefs.getBoolean("idle_done", true)); + swFastFetch.setChecked(prefs.getBoolean("fast_fetch", false)); + + int max_backoff_power = prefs.getInt("max_backoff_power", ServiceSynchronize.DEFAULT_BACKOFF_POWER - 3); + int max_backoff = (int) Math.pow(2, max_backoff_power + 3); + tvMaxBackoff.setText(getString(R.string.title_advanced_max_backoff, max_backoff)); + sbMaxBackOff.setProgress(max_backoff_power); + + swLogarithmicBackoff.setChecked(prefs.getBoolean("logarithmic_backoff", true)); + swExactAlarms.setChecked(prefs.getBoolean("exact_alarms", true)); + swNativeDkim.setEnabled(!BuildConfig.PLAY_STORE_RELEASE); + swNativeDkim.setChecked(prefs.getBoolean("native_dkim", false)); + swNativeArc.setEnabled(swNativeDkim.isEnabled() && swNativeDkim.isChecked()); + swNativeArc.setChecked(prefs.getBoolean("native_arc", true)); + etNativeArcWhitelist.setEnabled(swNativeDkim.isEnabled() && swNativeDkim.isChecked()); + etNativeArcWhitelist.setText(prefs.getString("native_arc_whitelist", null)); + swInfra.setChecked(prefs.getBoolean("infra", false)); + swDupMsgId.setChecked(prefs.getBoolean("dup_msgids", false)); + etKeywords.setText(prefs.getString("global_keywords", null)); + swTestIab.setChecked(prefs.getBoolean("test_iab", false)); + + tvProcessors.setText(getString(R.string.title_advanced_processors, Runtime.getRuntime().availableProcessors())); + tvMemoryClass.setText(getString(R.string.title_advanced_memory_class, + class_mb + " MB", + class_large_mb + " MB", + Helper.humanReadableByteCount(mi.totalMem))); + + String android_id; + try { + android_id = Settings.Secure.getString( + getContext().getContentResolver(), + Settings.Secure.ANDROID_ID); + if (android_id == null) + android_id = ""; + } catch (Throwable ex) { + Log.w(ex); + android_id = "?"; + } + tvAndroidId.setText(getString(R.string.title_advanced_android_id, android_id)); - tvFingerprint.setText(Helper.getFingerprint(getContext())); + tvFingerprint.setText(Helper.getFingerprint(getContext())); - Integer cursorWindowSize = null; - try { - //Field fCursorWindowSize = android.database.CursorWindow.class.getDeclaredField("sDefaultCursorWindowSize"); - //fCursorWindowSize.setAccessible(true); - //cursorWindowSize = fCursorWindowSize.getInt(null); + Integer cursorWindowSize = null; + try { + //Field fCursorWindowSize = android.database.CursorWindow.class.getDeclaredField("sDefaultCursorWindowSize"); + //fCursorWindowSize.setAccessible(true); + //cursorWindowSize = fCursorWindowSize.getInt(null); + } catch (Throwable ex) { + Log.w(ex); + } + tvCursorWindow.setText(getString(R.string.title_advanced_cursor_window, + cursorWindowSize == null ? "?" : Helper.humanReadableByteCount(cursorWindowSize, false))); + + cardDebug.setVisibility(swDebug.isChecked() || BuildConfig.DEBUG ? View.VISIBLE : View.GONE); } catch (Throwable ex) { - Log.w(ex); + Log.e(ex); } - tvCursorWindow.setText(getString(R.string.title_advanced_cursor_window, - cursorWindowSize == null ? "?" : Helper.humanReadableByteCount(cursorWindowSize, false))); - - cardDebug.setVisibility(swDebug.isChecked() || BuildConfig.DEBUG ? View.VISIBLE : View.GONE); } private void updateUsage() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java index b705960fdc..0b6ef84787 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java @@ -801,51 +801,55 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared } private void setOptions() { - if (view == null || getContext() == null) - return; - - boolean pro = ActivityBilling.isPro(getContext()); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - - swNewestFirst.setChecked(prefs.getBoolean("notify_newest_first", false)); - swNotifySummary.setChecked(prefs.getBoolean("notify_summary", false)); - - cbNotifyActionTrash.setChecked(prefs.getBoolean("notify_trash", true) || !pro); - cbNotifyActionJunk.setChecked(prefs.getBoolean("notify_junk", false) && pro); - cbNotifyActionBlockSender.setChecked(prefs.getBoolean("notify_block_sender", false) && pro); - cbNotifyActionArchive.setChecked(prefs.getBoolean("notify_archive", true) || !pro); - cbNotifyActionMove.setChecked(prefs.getBoolean("notify_move", false) && pro); - cbNotifyActionReply.setChecked(prefs.getBoolean("notify_reply", false) && pro); - cbNotifyActionReplyDirect.setChecked(prefs.getBoolean("notify_reply_direct", false) && pro); - cbNotifyActionFlag.setChecked(prefs.getBoolean("notify_flag", false) && pro); - cbNotifyActionSeen.setChecked(prefs.getBoolean("notify_seen", true) || !pro); - cbNotifyActionHide.setChecked(prefs.getBoolean("notify_hide", false) && pro); - cbNotifyActionSnooze.setChecked(prefs.getBoolean("notify_snooze", false) && pro); - swLight.setChecked(prefs.getBoolean("light", false)); - swNotifyScreenOn.setChecked(prefs.getBoolean("notify_screen_on", false)); - - swBadge.setChecked(prefs.getBoolean("badge", true)); - swUnseenIgnored.setChecked(prefs.getBoolean("unseen_ignored", false)); - swNotifyGrouping.setChecked(prefs.getBoolean("notify_grouping", true)); - swNotifyPrivate.setChecked(prefs.getBoolean("notify_private", true)); - swNotifyBackgroundOnly.setChecked(prefs.getBoolean("notify_background_only", false)); - swNotifyKnownOnly.setChecked(prefs.getBoolean("notify_known", false)); - swNotifySuppressInCall.setChecked(prefs.getBoolean("notify_suppress_in_call", false)); - swNotifySuppressInCar.setChecked(prefs.getBoolean("notify_suppress_in_car", false)); - swNotifyRemove.setChecked(prefs.getBoolean("notify_remove", true)); - swNotifyClear.setChecked(prefs.getBoolean("notify_clear", false)); - swNotifySubtext.setChecked(prefs.getBoolean("notify_subtext", true)); - swNotifyPreview.setChecked(prefs.getBoolean("notify_preview", true)); - swNotifyPreviewAll.setChecked(prefs.getBoolean("notify_preview_all", false)); - swNotifyPreviewOnly.setChecked(prefs.getBoolean("notify_preview_only", false)); - swNotifyTransliterate.setChecked(prefs.getBoolean("notify_transliterate", false)); - swWearablePreview.setChecked(prefs.getBoolean("wearable_preview", false)); - swMessagingStyle.setChecked(prefs.getBoolean("notify_messaging", false)); - swBiometricsNotify.setChecked(prefs.getBoolean("biometrics_notify", true)); - swBackground.setChecked(prefs.getBoolean("background_service", false)); - swAlertOnce.setChecked(!prefs.getBoolean("alert_once", true)); - - enableOptions(); + try { + if (view == null || getContext() == null) + return; + + boolean pro = ActivityBilling.isPro(getContext()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + swNewestFirst.setChecked(prefs.getBoolean("notify_newest_first", false)); + swNotifySummary.setChecked(prefs.getBoolean("notify_summary", false)); + + cbNotifyActionTrash.setChecked(prefs.getBoolean("notify_trash", true) || !pro); + cbNotifyActionJunk.setChecked(prefs.getBoolean("notify_junk", false) && pro); + cbNotifyActionBlockSender.setChecked(prefs.getBoolean("notify_block_sender", false) && pro); + cbNotifyActionArchive.setChecked(prefs.getBoolean("notify_archive", true) || !pro); + cbNotifyActionMove.setChecked(prefs.getBoolean("notify_move", false) && pro); + cbNotifyActionReply.setChecked(prefs.getBoolean("notify_reply", false) && pro); + cbNotifyActionReplyDirect.setChecked(prefs.getBoolean("notify_reply_direct", false) && pro); + cbNotifyActionFlag.setChecked(prefs.getBoolean("notify_flag", false) && pro); + cbNotifyActionSeen.setChecked(prefs.getBoolean("notify_seen", true) || !pro); + cbNotifyActionHide.setChecked(prefs.getBoolean("notify_hide", false) && pro); + cbNotifyActionSnooze.setChecked(prefs.getBoolean("notify_snooze", false) && pro); + swLight.setChecked(prefs.getBoolean("light", false)); + swNotifyScreenOn.setChecked(prefs.getBoolean("notify_screen_on", false)); + + swBadge.setChecked(prefs.getBoolean("badge", true)); + swUnseenIgnored.setChecked(prefs.getBoolean("unseen_ignored", false)); + swNotifyGrouping.setChecked(prefs.getBoolean("notify_grouping", true)); + swNotifyPrivate.setChecked(prefs.getBoolean("notify_private", true)); + swNotifyBackgroundOnly.setChecked(prefs.getBoolean("notify_background_only", false)); + swNotifyKnownOnly.setChecked(prefs.getBoolean("notify_known", false)); + swNotifySuppressInCall.setChecked(prefs.getBoolean("notify_suppress_in_call", false)); + swNotifySuppressInCar.setChecked(prefs.getBoolean("notify_suppress_in_car", false)); + swNotifyRemove.setChecked(prefs.getBoolean("notify_remove", true)); + swNotifyClear.setChecked(prefs.getBoolean("notify_clear", false)); + swNotifySubtext.setChecked(prefs.getBoolean("notify_subtext", true)); + swNotifyPreview.setChecked(prefs.getBoolean("notify_preview", true)); + swNotifyPreviewAll.setChecked(prefs.getBoolean("notify_preview_all", false)); + swNotifyPreviewOnly.setChecked(prefs.getBoolean("notify_preview_only", false)); + swNotifyTransliterate.setChecked(prefs.getBoolean("notify_transliterate", false)); + swWearablePreview.setChecked(prefs.getBoolean("wearable_preview", false)); + swMessagingStyle.setChecked(prefs.getBoolean("notify_messaging", false)); + swBiometricsNotify.setChecked(prefs.getBoolean("biometrics_notify", true)); + swBackground.setChecked(prefs.getBoolean("background_service", false)); + swAlertOnce.setChecked(!prefs.getBoolean("alert_once", true)); + + enableOptions(); + } catch (Throwable ex) { + Log.e(ex); + } } private void enableOptions() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java index ff7f2c6a1d..7fde44c7d5 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java @@ -550,68 +550,72 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer } private void setOptions() { - if (view == null || getContext() == null) - return; - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - - swConfirmLinks.setChecked(prefs.getBoolean("confirm_links", true)); - swSanitizeLinks.setChecked(prefs.getBoolean("sanitize_links", false)); - swSanitizeLinks.setEnabled(swConfirmLinks.isChecked()); - swCheckLinksDbl.setChecked(prefs.getBoolean("check_links_dbl", BuildConfig.PLAY_STORE_RELEASE)); - swCheckLinksDbl.setEnabled(swConfirmLinks.isChecked()); - swConfirmImages.setChecked(prefs.getBoolean("confirm_images", true)); - swAskImages.setChecked(prefs.getBoolean("ask_images", true)); - swAskImages.setEnabled(swConfirmImages.isChecked()); - swHtmlImages.setChecked(prefs.getBoolean("html_always_images", false)); - swConfirmHtml.setChecked(prefs.getBoolean("confirm_html", true)); - swAskHtml.setChecked(prefs.getBoolean("ask_html", true)); - swAskHtml.setEnabled(swConfirmHtml.isChecked()); - swDisableTracking.setChecked(prefs.getBoolean("disable_tracking", true)); - - String pin = prefs.getString("pin", null); - btnPin.setCompoundDrawablesRelativeWithIntrinsicBounds( - 0, 0, TextUtils.isEmpty(pin) ? 0 : R.drawable.twotone_check_12, 0); - - boolean biometrics = prefs.getBoolean("biometrics", false); - btnBiometrics.setText(biometrics - ? R.string.title_setup_biometrics_disable - : R.string.title_setup_biometrics_enable); - btnBiometrics.setEnabled(Helper.canAuthenticate(getContext())); - - int biometrics_timeout = prefs.getInt("biometrics_timeout", 2); - int[] biometricTimeoutValues = getResources().getIntArray(R.array.biometricsTimeoutValues); - for (int pos = 0; pos < biometricTimeoutValues.length; pos++) - if (biometricTimeoutValues[pos] == biometrics_timeout) { - spBiometricsTimeout.setSelection(pos); - break; - } - - swAutoLock.setChecked(prefs.getBoolean("autolock", true)); - swAutoLockNav.setChecked(prefs.getBoolean("autolock_nav", false)); - - swClientId.setChecked(prefs.getBoolean("client_id", true)); - swHideTimeZone.setChecked(prefs.getBoolean("hide_timezone", false)); - swDisplayHidden.setChecked(prefs.getBoolean("display_hidden", false)); - swIncognitoKeyboard.setChecked(prefs.getBoolean("incognito_keyboard", false)); - swSecure.setChecked(prefs.getBoolean("secure", false)); - - tvGenericUserAgent.setText(WebViewEx.getUserAgent(getContext())); - swGenericUserAgent.setChecked(prefs.getBoolean("generic_ua", false)); - swSafeBrowsing.setChecked(prefs.getBoolean("safe_browsing", false)); - swLoadEmoji.setChecked(prefs.getBoolean("load_emoji", false)); - - long time = prefs.getLong("disconnect_last", -1); - DateFormat DF = SimpleDateFormat.getDateTimeInstance(); - tvDisconnectBlacklistTime.setText(time < 0 ? null : DF.format(time)); - tvDisconnectBlacklistTime.setVisibility(time < 0 ? View.GONE : View.VISIBLE); - - swDisconnectAutoUpdate.setChecked(prefs.getBoolean("disconnect_auto_update", false)); - swDisconnectLinks.setChecked(prefs.getBoolean("disconnect_links", true)); - swDisconnectImages.setChecked(prefs.getBoolean("disconnect_images", false)); - - String mnemonic = prefs.getString("wipe_mnemonic", null); - swMnemonic.setChecked(mnemonic != null); - tvMnemonic.setText(mnemonic); + try { + if (view == null || getContext() == null) + return; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + swConfirmLinks.setChecked(prefs.getBoolean("confirm_links", true)); + swSanitizeLinks.setChecked(prefs.getBoolean("sanitize_links", false)); + swSanitizeLinks.setEnabled(swConfirmLinks.isChecked()); + swCheckLinksDbl.setChecked(prefs.getBoolean("check_links_dbl", BuildConfig.PLAY_STORE_RELEASE)); + swCheckLinksDbl.setEnabled(swConfirmLinks.isChecked()); + swConfirmImages.setChecked(prefs.getBoolean("confirm_images", true)); + swAskImages.setChecked(prefs.getBoolean("ask_images", true)); + swAskImages.setEnabled(swConfirmImages.isChecked()); + swHtmlImages.setChecked(prefs.getBoolean("html_always_images", false)); + swConfirmHtml.setChecked(prefs.getBoolean("confirm_html", true)); + swAskHtml.setChecked(prefs.getBoolean("ask_html", true)); + swAskHtml.setEnabled(swConfirmHtml.isChecked()); + swDisableTracking.setChecked(prefs.getBoolean("disable_tracking", true)); + + String pin = prefs.getString("pin", null); + btnPin.setCompoundDrawablesRelativeWithIntrinsicBounds( + 0, 0, TextUtils.isEmpty(pin) ? 0 : R.drawable.twotone_check_12, 0); + + boolean biometrics = prefs.getBoolean("biometrics", false); + btnBiometrics.setText(biometrics + ? R.string.title_setup_biometrics_disable + : R.string.title_setup_biometrics_enable); + btnBiometrics.setEnabled(Helper.canAuthenticate(getContext())); + + int biometrics_timeout = prefs.getInt("biometrics_timeout", 2); + int[] biometricTimeoutValues = getResources().getIntArray(R.array.biometricsTimeoutValues); + for (int pos = 0; pos < biometricTimeoutValues.length; pos++) + if (biometricTimeoutValues[pos] == biometrics_timeout) { + spBiometricsTimeout.setSelection(pos); + break; + } + + swAutoLock.setChecked(prefs.getBoolean("autolock", true)); + swAutoLockNav.setChecked(prefs.getBoolean("autolock_nav", false)); + + swClientId.setChecked(prefs.getBoolean("client_id", true)); + swHideTimeZone.setChecked(prefs.getBoolean("hide_timezone", false)); + swDisplayHidden.setChecked(prefs.getBoolean("display_hidden", false)); + swIncognitoKeyboard.setChecked(prefs.getBoolean("incognito_keyboard", false)); + swSecure.setChecked(prefs.getBoolean("secure", false)); + + tvGenericUserAgent.setText(WebViewEx.getUserAgent(getContext())); + swGenericUserAgent.setChecked(prefs.getBoolean("generic_ua", false)); + swSafeBrowsing.setChecked(prefs.getBoolean("safe_browsing", false)); + swLoadEmoji.setChecked(prefs.getBoolean("load_emoji", false)); + + long time = prefs.getLong("disconnect_last", -1); + DateFormat DF = SimpleDateFormat.getDateTimeInstance(); + tvDisconnectBlacklistTime.setText(time < 0 ? null : DF.format(time)); + tvDisconnectBlacklistTime.setVisibility(time < 0 ? View.GONE : View.VISIBLE); + + swDisconnectAutoUpdate.setChecked(prefs.getBoolean("disconnect_auto_update", false)); + swDisconnectLinks.setChecked(prefs.getBoolean("disconnect_links", true)); + swDisconnectImages.setChecked(prefs.getBoolean("disconnect_images", false)); + + String mnemonic = prefs.getString("wipe_mnemonic", null); + swMnemonic.setChecked(mnemonic != null); + tvMnemonic.setText(mnemonic); + } catch (Throwable ex) { + Log.e(ex); + } } } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index 65440fb0f8..8bef45f02e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -722,107 +722,111 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc } private void setOptions() { - if (view == null || getContext() == null) - return; + try { + if (view == null || getContext() == null) + return; + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + swKeyboard.setChecked(prefs.getBoolean("keyboard", true)); + swKeyboardNoFullscreen.setChecked(prefs.getBoolean("keyboard_no_fullscreen", false)); + swSuggestNames.setChecked(prefs.getBoolean("suggest_names", true)); + swSuggestSent.setChecked(prefs.getBoolean("suggest_sent", true)); + swSuggestReceived.setChecked(prefs.getBoolean("suggest_received", false)); + swSuggestFrequently.setChecked(prefs.getBoolean("suggest_frequently", false)); + swSuggestFrequently.setEnabled(swSuggestSent.isChecked() || swSuggestReceived.isChecked()); + swAutoIdentity.setChecked(prefs.getBoolean("auto_identity", false)); + swAutoIdentity.setEnabled(swSuggestSent.isChecked() || swSuggestReceived.isChecked()); + swSendChips.setChecked(prefs.getBoolean("send_chips", true)); + swSendReminders.setChecked(prefs.getBoolean("send_reminders", true)); + swSendPending.setChecked(prefs.getBoolean("send_pending", true)); + swAutoSaveParagraph.setChecked(prefs.getBoolean("auto_save_paragraph", true)); + swAutoSaveDot.setChecked(prefs.getBoolean("auto_save_dot", false)); + swDiscardDelete.setChecked(prefs.getBoolean("discard_delete", true)); + + int send_delayed = prefs.getInt("send_delayed", 0); + int[] sendDelayedValues = getResources().getIntArray(R.array.sendDelayedValues); + for (int pos = 0; pos < sendDelayedValues.length; pos++) + if (sendDelayedValues[pos] == send_delayed) { + spSendDelayed.setSelection(pos); + break; + } - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + String[] answerValues = getResources().getStringArray(R.array.answerValues); - swKeyboard.setChecked(prefs.getBoolean("keyboard", true)); - swKeyboardNoFullscreen.setChecked(prefs.getBoolean("keyboard_no_fullscreen", false)); - swSuggestNames.setChecked(prefs.getBoolean("suggest_names", true)); - swSuggestSent.setChecked(prefs.getBoolean("suggest_sent", true)); - swSuggestReceived.setChecked(prefs.getBoolean("suggest_received", false)); - swSuggestFrequently.setChecked(prefs.getBoolean("suggest_frequently", false)); - swSuggestFrequently.setEnabled(swSuggestSent.isChecked() || swSuggestReceived.isChecked()); - swAutoIdentity.setChecked(prefs.getBoolean("auto_identity", false)); - swAutoIdentity.setEnabled(swSuggestSent.isChecked() || swSuggestReceived.isChecked()); - swSendChips.setChecked(prefs.getBoolean("send_chips", true)); - swSendReminders.setChecked(prefs.getBoolean("send_reminders", true)); - swSendPending.setChecked(prefs.getBoolean("send_pending", true)); - swAutoSaveParagraph.setChecked(prefs.getBoolean("auto_save_paragraph", true)); - swAutoSaveDot.setChecked(prefs.getBoolean("auto_save_dot", false)); - swDiscardDelete.setChecked(prefs.getBoolean("discard_delete", true)); - - int send_delayed = prefs.getInt("send_delayed", 0); - int[] sendDelayedValues = getResources().getIntArray(R.array.sendDelayedValues); - for (int pos = 0; pos < sendDelayedValues.length; pos++) - if (sendDelayedValues[pos] == send_delayed) { - spSendDelayed.setSelection(pos); - break; - } - - String[] answerValues = getResources().getStringArray(R.array.answerValues); - - String answer_default = prefs.getString("answer_single", "menu"); - for (int pos = 0; pos < answerValues.length; pos++) - if (answerValues[pos].equals(answer_default)) { - spAnswerActionSingle.setSelection(pos); - break; - } - - boolean reply_all = prefs.getBoolean("reply_all", false); - String answer_action = prefs.getString("answer_action", reply_all ? "reply_all" : "reply"); - for (int pos = 0; pos < answerValues.length; pos++) - if (answerValues[pos].equals(answer_action)) { - spAnswerActionLong.setSelection(pos); - break; - } - - btnComposeColor.setColor(prefs.getInt("compose_color", Color.TRANSPARENT)); - - String compose_font = prefs.getString("compose_font", ""); - List fonts = StyleHelper.getFonts(getContext()); - for (int pos = 0; pos < fonts.size(); pos++) { - StyleHelper.FontDescriptor font = fonts.get(pos); - if (font.type.equals(compose_font)) { - spComposeFont.setSelection(pos + 1); - break; + String answer_default = prefs.getString("answer_single", "menu"); + for (int pos = 0; pos < answerValues.length; pos++) + if (answerValues[pos].equals(answer_default)) { + spAnswerActionSingle.setSelection(pos); + break; + } + + boolean reply_all = prefs.getBoolean("reply_all", false); + String answer_action = prefs.getString("answer_action", reply_all ? "reply_all" : "reply"); + for (int pos = 0; pos < answerValues.length; pos++) + if (answerValues[pos].equals(answer_action)) { + spAnswerActionLong.setSelection(pos); + break; + } + + btnComposeColor.setColor(prefs.getInt("compose_color", Color.TRANSPARENT)); + + String compose_font = prefs.getString("compose_font", ""); + List fonts = StyleHelper.getFonts(getContext()); + for (int pos = 0; pos < fonts.size(); pos++) { + StyleHelper.FontDescriptor font = fonts.get(pos); + if (font.type.equals(compose_font)) { + spComposeFont.setSelection(pos + 1); + break; + } } - } - swComposeMonospaced.setChecked(prefs.getBoolean("compose_monospaced", false)); - - swPrefixOnce.setChecked(prefs.getBoolean("prefix_once", true)); - swPrefixCount.setChecked(prefs.getBoolean("prefix_count", false)); - swPrefixCount.setEnabled(swPrefixOnce.isChecked()); - rgRe.check(prefs.getBoolean("alt_re", false) ? R.id.rbRe2 : R.id.rbRe1); - rgFwd.check(prefs.getBoolean("alt_fwd", false) ? R.id.rbFwd2 : R.id.rbFwd1); - - swSeparateReply.setChecked(prefs.getBoolean("separate_reply", false)); - swExtendedReply.setChecked(prefs.getBoolean("extended_reply", false)); - swWriteBelow.setChecked(prefs.getBoolean("write_below", false)); - swQuoteReply.setChecked(prefs.getBoolean("quote_reply", true)); - swQuoteLimit.setChecked(prefs.getBoolean("quote_limit", true)); - swResizeReply.setChecked(prefs.getBoolean("resize_reply", true)); - - int signature_location = prefs.getInt("signature_location", 1); - spSignatureLocation.setSelection(signature_location); - - swSignatureNew.setChecked(prefs.getBoolean("signature_new", true)); - swSignatureReply.setChecked(prefs.getBoolean("signature_reply", true)); - swSignatureReplyOnce.setChecked(prefs.getBoolean("signature_reply_once", false)); - swSignatureReplyOnce.setEnabled(swSignatureReply.isChecked()); - swSignatureForward.setChecked(prefs.getBoolean("signature_forward", true)); - - swAttachNew.setChecked(prefs.getBoolean("attach_new", true)); - swAutoLink.setChecked(prefs.getBoolean("auto_link", false)); - swPlainOnly.setChecked(prefs.getBoolean("plain_only", false)); - swPlainOnlyReply.setChecked(prefs.getBoolean("plain_only_reply", false)); - swFormatFlowed.setChecked(prefs.getBoolean("format_flowed", false)); - swUsenetSignature.setChecked(prefs.getBoolean("usenet_signature", false)); - swRemoveSignatures.setChecked(prefs.getBoolean("remove_signatures", false)); - swReceipt.setChecked(prefs.getBoolean("receipt_default", false)); - - int receipt_type = prefs.getInt("receipt_type", 2); - spReceiptType.setSelection(receipt_type); - - swReceiptLegacy.setChecked(prefs.getBoolean("receipt_legacy", false)); - - swForwardNew.setChecked(prefs.getBoolean("forward_new", true)); - swLookupMx.setChecked(prefs.getBoolean("lookup_mx", false)); - swReplyMove.setChecked(prefs.getBoolean("reply_move", false)); - swReplyMoveInbox.setChecked(prefs.getBoolean("reply_move_inbox", true)); - swReplyMoveInbox.setEnabled(swReplyMove.isChecked()); + swComposeMonospaced.setChecked(prefs.getBoolean("compose_monospaced", false)); + + swPrefixOnce.setChecked(prefs.getBoolean("prefix_once", true)); + swPrefixCount.setChecked(prefs.getBoolean("prefix_count", false)); + swPrefixCount.setEnabled(swPrefixOnce.isChecked()); + rgRe.check(prefs.getBoolean("alt_re", false) ? R.id.rbRe2 : R.id.rbRe1); + rgFwd.check(prefs.getBoolean("alt_fwd", false) ? R.id.rbFwd2 : R.id.rbFwd1); + + swSeparateReply.setChecked(prefs.getBoolean("separate_reply", false)); + swExtendedReply.setChecked(prefs.getBoolean("extended_reply", false)); + swWriteBelow.setChecked(prefs.getBoolean("write_below", false)); + swQuoteReply.setChecked(prefs.getBoolean("quote_reply", true)); + swQuoteLimit.setChecked(prefs.getBoolean("quote_limit", true)); + swResizeReply.setChecked(prefs.getBoolean("resize_reply", true)); + + int signature_location = prefs.getInt("signature_location", 1); + spSignatureLocation.setSelection(signature_location); + + swSignatureNew.setChecked(prefs.getBoolean("signature_new", true)); + swSignatureReply.setChecked(prefs.getBoolean("signature_reply", true)); + swSignatureReplyOnce.setChecked(prefs.getBoolean("signature_reply_once", false)); + swSignatureReplyOnce.setEnabled(swSignatureReply.isChecked()); + swSignatureForward.setChecked(prefs.getBoolean("signature_forward", true)); + + swAttachNew.setChecked(prefs.getBoolean("attach_new", true)); + swAutoLink.setChecked(prefs.getBoolean("auto_link", false)); + swPlainOnly.setChecked(prefs.getBoolean("plain_only", false)); + swPlainOnlyReply.setChecked(prefs.getBoolean("plain_only_reply", false)); + swFormatFlowed.setChecked(prefs.getBoolean("format_flowed", false)); + swUsenetSignature.setChecked(prefs.getBoolean("usenet_signature", false)); + swRemoveSignatures.setChecked(prefs.getBoolean("remove_signatures", false)); + swReceipt.setChecked(prefs.getBoolean("receipt_default", false)); + + int receipt_type = prefs.getInt("receipt_type", 2); + spReceiptType.setSelection(receipt_type); + + swReceiptLegacy.setChecked(prefs.getBoolean("receipt_legacy", false)); + + swForwardNew.setChecked(prefs.getBoolean("forward_new", true)); + swLookupMx.setChecked(prefs.getBoolean("lookup_mx", false)); + swReplyMove.setChecked(prefs.getBoolean("reply_move", false)); + swReplyMoveInbox.setChecked(prefs.getBoolean("reply_move_inbox", true)); + swReplyMoveInbox.setEnabled(swReplyMove.isChecked()); + } catch (Throwable ex) { + Log.e(ex); + } } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java index f9020f8bc7..9a6b1f2280 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java @@ -594,77 +594,81 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr } private void setOptions() { - if (view == null || getContext() == null) - return; + try { + if (view == null || getContext() == null) + return; - final Context context = getContext(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean pro = ActivityBilling.isPro(context); - - swEnabled.setChecked(prefs.getBoolean("enabled", true)); - swOptimize.setChecked(prefs.getBoolean("auto_optimize", false)); - - int pollInterval = ServiceSynchronize.getPollInterval(context); - int[] pollIntervalValues = getResources().getIntArray(R.array.pollIntervalValues); - for (int pos = 0; pos < pollIntervalValues.length; pos++) - if (pollIntervalValues[pos] == pollInterval) { - spPollInterval.setTag(pollInterval); - spPollInterval.setSelection(pos); - break; - } - - tvPollBattery.setVisibility(pollInterval > 0 && pollInterval < 15 ? View.VISIBLE : View.GONE); - grpExempted.setVisibility(pollInterval == 0 ? View.GONE : View.VISIBLE); - - swSchedule.setChecked(prefs.getBoolean("schedule", false) && pro); - swSchedule.setEnabled(pro); - - int schedule_start = prefs.getInt("schedule_start", 0); - int schedule_end = prefs.getInt("schedule_end", 0); - int schedule_start_weekend = prefs.getInt("schedule_start_weekend", schedule_start); - int schedule_end_weekend = prefs.getInt("schedule_end_weekend", schedule_end); - tvScheduleStart.setText(CalendarHelper.formatHour(context, schedule_start)); - tvScheduleEnd.setText(CalendarHelper.formatHour(context, schedule_end)); - tvScheduleStartWeekend.setText(CalendarHelper.formatHour(context, schedule_start_weekend)); - tvScheduleEndWeekend.setText(CalendarHelper.formatHour(context, schedule_end_weekend)); + final Context context = getContext(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean pro = ActivityBilling.isPro(context); + + swEnabled.setChecked(prefs.getBoolean("enabled", true)); + swOptimize.setChecked(prefs.getBoolean("auto_optimize", false)); + + int pollInterval = ServiceSynchronize.getPollInterval(context); + int[] pollIntervalValues = getResources().getIntArray(R.array.pollIntervalValues); + for (int pos = 0; pos < pollIntervalValues.length; pos++) + if (pollIntervalValues[pos] == pollInterval) { + spPollInterval.setTag(pollInterval); + spPollInterval.setSelection(pos); + break; + } - for (int i = 0; i < 7; i++) { - boolean weekend = CalendarHelper.isWeekend(context, i + 1); - cbDay[i].setTypeface(weekend ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT); - cbDay[i].setTextColor(weekend ? colorAccent : textColorTertiary); - cbDay[i].setChecked(prefs.getBoolean("schedule_day" + i, true)); + tvPollBattery.setVisibility(pollInterval > 0 && pollInterval < 15 ? View.VISIBLE : View.GONE); + grpExempted.setVisibility(pollInterval == 0 ? View.GONE : View.VISIBLE); + + swSchedule.setChecked(prefs.getBoolean("schedule", false) && pro); + swSchedule.setEnabled(pro); + + int schedule_start = prefs.getInt("schedule_start", 0); + int schedule_end = prefs.getInt("schedule_end", 0); + int schedule_start_weekend = prefs.getInt("schedule_start_weekend", schedule_start); + int schedule_end_weekend = prefs.getInt("schedule_end_weekend", schedule_end); + tvScheduleStart.setText(CalendarHelper.formatHour(context, schedule_start)); + tvScheduleEnd.setText(CalendarHelper.formatHour(context, schedule_end)); + tvScheduleStartWeekend.setText(CalendarHelper.formatHour(context, schedule_start_weekend)); + tvScheduleEndWeekend.setText(CalendarHelper.formatHour(context, schedule_end_weekend)); + + for (int i = 0; i < 7; i++) { + boolean weekend = CalendarHelper.isWeekend(context, i + 1); + cbDay[i].setTypeface(weekend ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT); + cbDay[i].setTextColor(weekend ? colorAccent : textColorTertiary); + cbDay[i].setChecked(prefs.getBoolean("schedule_day" + i, true)); + } + + swQuickSyncImap.setChecked(prefs.getBoolean("sync_quick_imap", false)); + swQuickSyncPop.setChecked(prefs.getBoolean("sync_quick_pop", true)); + swNodate.setChecked(prefs.getBoolean("sync_nodate", false)); + swUnseen.setChecked(prefs.getBoolean("sync_unseen", false)); + swFlagged.setChecked(prefs.getBoolean("sync_flagged", false)); + swDeleteUnseen.setChecked(prefs.getBoolean("delete_unseen", false)); + swSyncKept.setChecked(prefs.getBoolean("sync_kept", true)); + swGmailThread.setChecked(prefs.getBoolean("gmail_thread_id", false)); + swOutlookThread.setChecked(prefs.getBoolean("outlook_thread_id", false)); + swSubjectThreading.setChecked(prefs.getBoolean("subject_threading", false)); + swSubjectThreading.setEnabled(!swGmailThread.isChecked() && !swOutlookThread.isChecked()); + swSyncFolders.setChecked(prefs.getBoolean("sync_folders", true)); + swSyncFoldersPoll.setChecked(prefs.getBoolean("sync_folders_poll", false)); + swSyncFoldersPoll.setEnabled(swSyncFolders.isChecked()); + swSyncSharedFolders.setChecked(prefs.getBoolean("sync_shared_folders", false)); + swSyncSharedFolders.setEnabled(swSyncFolders.isChecked()); + swSyncAdded.setChecked(prefs.getBoolean("sync_added_folders", false)); + swSubscriptions.setChecked(prefs.getBoolean("subscriptions", false)); + swTuneKeepAlive.setChecked(prefs.getBoolean("tune_keep_alive", true)); + swCheckAuthentication.setChecked(prefs.getBoolean("check_authentication", true)); + swCheckTls.setChecked(prefs.getBoolean("check_tls", false)); + swCheckTls.setEnabled(swCheckAuthentication.isChecked()); + swCheckReply.setChecked(prefs.getBoolean("check_reply_domain", true)); + swCheckMx.setChecked(prefs.getBoolean("check_mx", false)); + swCheckBlocklist.setChecked(prefs.getBoolean("check_blocklist", false)); + swUseBlocklist.setChecked(prefs.getBoolean("use_blocklist", false)); + swUseBlocklist.setEnabled(swCheckBlocklist.isChecked()); + swUseBlocklistPop.setChecked(prefs.getBoolean("use_blocklist_pop", false)); + swUseBlocklistPop.setEnabled(swCheckBlocklist.isChecked()); + rvBlocklist.setAlpha(swCheckBlocklist.isChecked() ? 1.0f : Helper.LOW_LIGHT); + } catch (Throwable ex) { + Log.e(ex); } - - swQuickSyncImap.setChecked(prefs.getBoolean("sync_quick_imap", false)); - swQuickSyncPop.setChecked(prefs.getBoolean("sync_quick_pop", true)); - swNodate.setChecked(prefs.getBoolean("sync_nodate", false)); - swUnseen.setChecked(prefs.getBoolean("sync_unseen", false)); - swFlagged.setChecked(prefs.getBoolean("sync_flagged", false)); - swDeleteUnseen.setChecked(prefs.getBoolean("delete_unseen", false)); - swSyncKept.setChecked(prefs.getBoolean("sync_kept", true)); - swGmailThread.setChecked(prefs.getBoolean("gmail_thread_id", false)); - swOutlookThread.setChecked(prefs.getBoolean("outlook_thread_id", false)); - swSubjectThreading.setChecked(prefs.getBoolean("subject_threading", false)); - swSubjectThreading.setEnabled(!swGmailThread.isChecked() && !swOutlookThread.isChecked()); - swSyncFolders.setChecked(prefs.getBoolean("sync_folders", true)); - swSyncFoldersPoll.setChecked(prefs.getBoolean("sync_folders_poll", false)); - swSyncFoldersPoll.setEnabled(swSyncFolders.isChecked()); - swSyncSharedFolders.setChecked(prefs.getBoolean("sync_shared_folders", false)); - swSyncSharedFolders.setEnabled(swSyncFolders.isChecked()); - swSyncAdded.setChecked(prefs.getBoolean("sync_added_folders", false)); - swSubscriptions.setChecked(prefs.getBoolean("subscriptions", false)); - swTuneKeepAlive.setChecked(prefs.getBoolean("tune_keep_alive", true)); - swCheckAuthentication.setChecked(prefs.getBoolean("check_authentication", true)); - swCheckTls.setChecked(prefs.getBoolean("check_tls", false)); - swCheckTls.setEnabled(swCheckAuthentication.isChecked()); - swCheckReply.setChecked(prefs.getBoolean("check_reply_domain", true)); - swCheckMx.setChecked(prefs.getBoolean("check_mx", false)); - swCheckBlocklist.setChecked(prefs.getBoolean("check_blocklist", false)); - swUseBlocklist.setChecked(prefs.getBoolean("use_blocklist", false)); - swUseBlocklist.setEnabled(swCheckBlocklist.isChecked()); - swUseBlocklistPop.setChecked(prefs.getBoolean("use_blocklist_pop", false)); - swUseBlocklistPop.setEnabled(swCheckBlocklist.isChecked()); - rvBlocklist.setAlpha(swCheckBlocklist.isChecked() ? 1.0f : Helper.LOW_LIGHT); } public static class TimePickerFragment extends FragmentDialogBase implements TimePickerDialog.OnTimeSetListener {