package com.fsck.k9.activity.setup; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.text.TextUtils; import android.widget.Toast; import com.fsck.k9.K9; import com.fsck.k9.K9.NotificationHideSubject; import com.fsck.k9.K9.NotificationQuickDelete; import com.fsck.k9.K9.SplitViewMode; import com.fsck.k9.Preferences; import com.fsck.k9.R; import com.fsck.k9.activity.ColorPickerDialog; import com.fsck.k9.activity.K9PreferenceActivity; import com.fsck.k9.controller.MessagingController; import com.fsck.k9.helper.FileBrowserHelper; import com.fsck.k9.helper.FileBrowserHelper.FileBrowserFailOverCallback; import com.fsck.k9.preferences.CheckBoxListPreference; import com.fsck.k9.preferences.TimePickerPreference; import com.fsck.k9.service.MailService; import com.fsck.k9.view.MessageWebView; public class Prefs extends K9PreferenceActivity { /** * Immutable empty {@link CharSequence} array */ private static final CharSequence[] EMPTY_CHAR_SEQUENCE_ARRAY = new CharSequence[0]; /* * Keys of the preferences defined in res/xml/global_preferences.xml */ private static final String PREFERENCE_LANGUAGE = "language"; private static final String PREFERENCE_THEME = "theme"; private static final String PREFERENCE_MESSAGE_VIEW_THEME = "messageViewTheme"; private static final String PREFERENCE_FIXED_MESSAGE_THEME = "fixedMessageViewTheme"; private static final String PREFERENCE_COMPOSER_THEME = "messageComposeTheme"; private static final String PREFERENCE_FONT_SIZE = "font_size"; private static final String PREFERENCE_ANIMATIONS = "animations"; private static final String PREFERENCE_GESTURES = "gestures"; private static final String PREFERENCE_VOLUME_NAVIGATION = "volumeNavigation"; private static final String PREFERENCE_START_INTEGRATED_INBOX = "start_integrated_inbox"; private static final String PREFERENCE_CONFIRM_ACTIONS = "confirm_actions"; private static final String PREFERENCE_NOTIFICATION_HIDE_SUBJECT = "notification_hide_subject"; private static final String PREFERENCE_MEASURE_ACCOUNTS = "measure_accounts"; private static final String PREFERENCE_COUNT_SEARCH = "count_search"; private static final String PREFERENCE_HIDE_SPECIAL_ACCOUNTS = "hide_special_accounts"; private static final String PREFERENCE_MESSAGELIST_CHECKBOXES = "messagelist_checkboxes"; private static final String PREFERENCE_MESSAGELIST_PREVIEW_LINES = "messagelist_preview_lines"; private static final String PREFERENCE_MESSAGELIST_SENDER_ABOVE_SUBJECT = "messagelist_sender_above_subject"; private static final String PREFERENCE_MESSAGELIST_STARS = "messagelist_stars"; private static final String PREFERENCE_MESSAGELIST_SHOW_CORRESPONDENT_NAMES = "messagelist_show_correspondent_names"; private static final String PREFERENCE_MESSAGELIST_SHOW_CONTACT_NAME = "messagelist_show_contact_name"; private static final String PREFERENCE_MESSAGELIST_CONTACT_NAME_COLOR = "messagelist_contact_name_color"; private static final String PREFERENCE_MESSAGELIST_SHOW_CONTACT_PICTURE = "messagelist_show_contact_picture"; private static final String PREFERENCE_MESSAGELIST_COLORIZE_MISSING_CONTACT_PICTURES = "messagelist_colorize_missing_contact_pictures"; private static final String PREFERENCE_MESSAGEVIEW_FIXEDWIDTH = "messageview_fixedwidth_font"; private static final String PREFERENCE_MESSAGEVIEW_VISIBLE_REFILE_ACTIONS = "messageview_visible_refile_actions"; private static final String PREFERENCE_MESSAGEVIEW_RETURN_TO_LIST = "messageview_return_to_list"; private static final String PREFERENCE_MESSAGEVIEW_SHOW_NEXT = "messageview_show_next"; private static final String PREFERENCE_QUIET_TIME_ENABLED = "quiet_time_enabled"; private static final String PREFERENCE_QUIET_TIME_STARTS = "quiet_time_starts"; private static final String PREFERENCE_QUIET_TIME_ENDS = "quiet_time_ends"; private static final String PREFERENCE_NOTIF_QUICK_DELETE = "notification_quick_delete"; private static final String PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT = "messageview_mobile_layout"; private static final String PREFERENCE_AUTOFIT_WIDTH = "messageview_autofit_width"; private static final String PREFERENCE_BACKGROUND_OPS = "background_ops"; private static final String PREFERENCE_GALLERY_BUG_WORKAROUND = "use_gallery_bug_workaround"; private static final String PREFERENCE_DEBUG_LOGGING = "debug_logging"; private static final String PREFERENCE_SENSITIVE_LOGGING = "sensitive_logging"; private static final String PREFERENCE_ATTACHMENT_DEF_PATH = "attachment_default_path"; private static final String PREFERENCE_BACKGROUND_AS_UNREAD_INDICATOR = "messagelist_background_as_unread_indicator"; private static final String PREFERENCE_THREADED_VIEW = "threaded_view"; private static final String PREFERENCE_FOLDERLIST_WRAP_NAME = "folderlist_wrap_folder_name"; private static final String PREFERENCE_SPLITVIEW_MODE = "splitview_mode"; private static final int ACTIVITY_CHOOSE_FOLDER = 1; // Named indices for the mVisibleRefileActions field private static final int VISIBLE_REFILE_ACTIONS_DELETE = 0; private static final int VISIBLE_REFILE_ACTIONS_ARCHIVE = 1; private static final int VISIBLE_REFILE_ACTIONS_MOVE = 2; private static final int VISIBLE_REFILE_ACTIONS_COPY = 3; private static final int VISIBLE_REFILE_ACTIONS_SPAM = 4; private ListPreference mLanguage; private ListPreference mTheme; private CheckBoxPreference mFixedMessageTheme; private ListPreference mMessageTheme; private ListPreference mComposerTheme; private CheckBoxPreference mAnimations; private CheckBoxPreference mGestures; private CheckBoxListPreference mVolumeNavigation; private CheckBoxPreference mStartIntegratedInbox; private CheckBoxListPreference mConfirmActions; private ListPreference mNotificationHideSubject; private CheckBoxPreference mMeasureAccounts; private CheckBoxPreference mCountSearch; private CheckBoxPreference mHideSpecialAccounts; private ListPreference mPreviewLines; private CheckBoxPreference mSenderAboveSubject; private CheckBoxPreference mCheckboxes; private CheckBoxPreference mStars; private CheckBoxPreference mShowCorrespondentNames; private CheckBoxPreference mShowContactName; private CheckBoxPreference mChangeContactNameColor; private CheckBoxPreference mShowContactPicture; private CheckBoxPreference mColorizeMissingContactPictures; private CheckBoxPreference mFixedWidth; private CheckBoxPreference mReturnToList; private CheckBoxPreference mShowNext; private CheckBoxPreference mMobileOptimizedLayout; private CheckBoxPreference mAutofitWidth; private ListPreference mBackgroundOps; private CheckBoxPreference mUseGalleryBugWorkaround; private CheckBoxPreference mDebugLogging; private CheckBoxPreference mSensitiveLogging; private CheckBoxPreference mWrapFolderNames; private CheckBoxListPreference mVisibleRefileActions; private CheckBoxPreference mQuietTimeEnabled; private com.fsck.k9.preferences.TimePickerPreference mQuietTimeStarts; private com.fsck.k9.preferences.TimePickerPreference mQuietTimeEnds; private ListPreference mNotificationQuickDelete; private Preference mAttachmentPathPreference; private CheckBoxPreference mBackgroundAsUnreadIndicator; private CheckBoxPreference mThreadedView; private ListPreference mSplitViewMode; public static void actionPrefs(Context context) { Intent i = new Intent(context, Prefs.class); context.startActivity(i); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.global_preferences); mLanguage = (ListPreference) findPreference(PREFERENCE_LANGUAGE); List entryVector = new ArrayList(Arrays.asList(mLanguage.getEntries())); List entryValueVector = new ArrayList(Arrays.asList(mLanguage.getEntryValues())); String supportedLanguages[] = getResources().getStringArray(R.array.supported_languages); HashSet supportedLanguageSet = new HashSet(Arrays.asList(supportedLanguages)); for (int i = entryVector.size() - 1; i > -1; --i) { if (!supportedLanguageSet.contains(entryValueVector.get(i))) { entryVector.remove(i); entryValueVector.remove(i); } } initListPreference(mLanguage, K9.getK9Language(), entryVector.toArray(EMPTY_CHAR_SEQUENCE_ARRAY), entryValueVector.toArray(EMPTY_CHAR_SEQUENCE_ARRAY)); mTheme = setupListPreference(PREFERENCE_THEME, themeIdToName(K9.getK9Theme())); mFixedMessageTheme = (CheckBoxPreference) findPreference(PREFERENCE_FIXED_MESSAGE_THEME); mFixedMessageTheme.setChecked(K9.useFixedMessageViewTheme()); mMessageTheme = setupListPreference(PREFERENCE_MESSAGE_VIEW_THEME, themeIdToName(K9.getK9MessageViewThemeSetting())); mComposerTheme = setupListPreference(PREFERENCE_COMPOSER_THEME, themeIdToName(K9.getK9ComposerThemeSetting())); findPreference(PREFERENCE_FONT_SIZE).setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { onFontSizeSettings(); return true; } }); mAnimations = (CheckBoxPreference)findPreference(PREFERENCE_ANIMATIONS); mAnimations.setChecked(K9.showAnimations()); mGestures = (CheckBoxPreference)findPreference(PREFERENCE_GESTURES); mGestures.setChecked(K9.gesturesEnabled()); mVolumeNavigation = (CheckBoxListPreference)findPreference(PREFERENCE_VOLUME_NAVIGATION); mVolumeNavigation.setItems(new CharSequence[] {getString(R.string.volume_navigation_message), getString(R.string.volume_navigation_list)}); mVolumeNavigation.setCheckedItems(new boolean[] {K9.useVolumeKeysForNavigationEnabled(), K9.useVolumeKeysForListNavigationEnabled()}); mStartIntegratedInbox = (CheckBoxPreference)findPreference(PREFERENCE_START_INTEGRATED_INBOX); mStartIntegratedInbox.setChecked(K9.startIntegratedInbox()); mConfirmActions = (CheckBoxListPreference) findPreference(PREFERENCE_CONFIRM_ACTIONS); boolean canDeleteFromNotification = MessagingController.platformSupportsExtendedNotifications(); CharSequence[] confirmActionEntries = new CharSequence[canDeleteFromNotification ? 4 : 3]; boolean[] confirmActionValues = new boolean[canDeleteFromNotification ? 4 : 3]; int index = 0; confirmActionEntries[index] = getString(R.string.global_settings_confirm_action_delete); confirmActionValues[index++] = K9.confirmDelete(); confirmActionEntries[index] = getString(R.string.global_settings_confirm_action_delete_starred); confirmActionValues[index++] = K9.confirmDeleteStarred(); if (canDeleteFromNotification) { confirmActionEntries[index] = getString(R.string.global_settings_confirm_action_delete_notif); confirmActionValues[index++] = K9.confirmDeleteFromNotification(); } confirmActionEntries[index] = getString(R.string.global_settings_confirm_action_spam); confirmActionValues[index++] = K9.confirmSpam(); mConfirmActions.setItems(confirmActionEntries); mConfirmActions.setCheckedItems(confirmActionValues); mNotificationHideSubject = setupListPreference(PREFERENCE_NOTIFICATION_HIDE_SUBJECT, K9.getNotificationHideSubject().toString()); mMeasureAccounts = (CheckBoxPreference)findPreference(PREFERENCE_MEASURE_ACCOUNTS); mMeasureAccounts.setChecked(K9.measureAccounts()); mCountSearch = (CheckBoxPreference)findPreference(PREFERENCE_COUNT_SEARCH); mCountSearch.setChecked(K9.countSearchMessages()); mHideSpecialAccounts = (CheckBoxPreference)findPreference(PREFERENCE_HIDE_SPECIAL_ACCOUNTS); mHideSpecialAccounts.setChecked(K9.isHideSpecialAccounts()); mPreviewLines = setupListPreference(PREFERENCE_MESSAGELIST_PREVIEW_LINES, Integer.toString(K9.messageListPreviewLines())); mSenderAboveSubject = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_SENDER_ABOVE_SUBJECT); mSenderAboveSubject.setChecked(K9.messageListSenderAboveSubject()); mCheckboxes = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_CHECKBOXES); mCheckboxes.setChecked(K9.messageListCheckboxes()); mStars = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_STARS); mStars.setChecked(K9.messageListStars()); mShowCorrespondentNames = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_SHOW_CORRESPONDENT_NAMES); mShowCorrespondentNames.setChecked(K9.showCorrespondentNames()); mShowContactName = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_SHOW_CONTACT_NAME); mShowContactName.setChecked(K9.showContactName()); mShowContactPicture = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_SHOW_CONTACT_PICTURE); mShowContactPicture.setChecked(K9.showContactPicture()); mColorizeMissingContactPictures = (CheckBoxPreference)findPreference( PREFERENCE_MESSAGELIST_COLORIZE_MISSING_CONTACT_PICTURES); mColorizeMissingContactPictures.setChecked(K9.isColorizeMissingContactPictures()); mBackgroundAsUnreadIndicator = (CheckBoxPreference)findPreference(PREFERENCE_BACKGROUND_AS_UNREAD_INDICATOR); mBackgroundAsUnreadIndicator.setChecked(K9.useBackgroundAsUnreadIndicator()); mChangeContactNameColor = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_CONTACT_NAME_COLOR); mChangeContactNameColor.setChecked(K9.changeContactNameColor()); mThreadedView = (CheckBoxPreference) findPreference(PREFERENCE_THREADED_VIEW); mThreadedView.setChecked(K9.isThreadedViewEnabled()); if (K9.changeContactNameColor()) { mChangeContactNameColor.setSummary(R.string.global_settings_registered_name_color_changed); } else { mChangeContactNameColor.setSummary(R.string.global_settings_registered_name_color_default); } mChangeContactNameColor.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { final Boolean checked = (Boolean) newValue; if (checked) { onChooseContactNameColor(); mChangeContactNameColor.setSummary(R.string.global_settings_registered_name_color_changed); } else { mChangeContactNameColor.setSummary(R.string.global_settings_registered_name_color_default); } mChangeContactNameColor.setChecked(checked); return false; } }); mFixedWidth = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGEVIEW_FIXEDWIDTH); mFixedWidth.setChecked(K9.messageViewFixedWidthFont()); mReturnToList = (CheckBoxPreference) findPreference(PREFERENCE_MESSAGEVIEW_RETURN_TO_LIST); mReturnToList.setChecked(K9.messageViewReturnToList()); mShowNext = (CheckBoxPreference) findPreference(PREFERENCE_MESSAGEVIEW_SHOW_NEXT); mShowNext.setChecked(K9.messageViewShowNext()); mMobileOptimizedLayout = (CheckBoxPreference) findPreference(PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT); if (!MessageWebView.isSingleColumnLayoutSupported()) { PreferenceCategory prefs = (PreferenceCategory) findPreference("messageview_preferences"); prefs.removePreference(mMobileOptimizedLayout); } else { mMobileOptimizedLayout.setChecked(K9.mobileOptimizedLayout()); } mAutofitWidth = (CheckBoxPreference) findPreference(PREFERENCE_AUTOFIT_WIDTH); mAutofitWidth.setChecked(K9.autofitWidth()); mQuietTimeEnabled = (CheckBoxPreference) findPreference(PREFERENCE_QUIET_TIME_ENABLED); mQuietTimeEnabled.setChecked(K9.getQuietTimeEnabled()); mQuietTimeStarts = (TimePickerPreference) findPreference(PREFERENCE_QUIET_TIME_STARTS); mQuietTimeStarts.setDefaultValue(K9.getQuietTimeStarts()); mQuietTimeStarts.setSummary(K9.getQuietTimeStarts()); mQuietTimeStarts.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { final String time = (String) newValue; mQuietTimeStarts.setSummary(time); return false; } }); mQuietTimeEnds = (TimePickerPreference) findPreference(PREFERENCE_QUIET_TIME_ENDS); mQuietTimeEnds.setSummary(K9.getQuietTimeEnds()); mQuietTimeEnds.setDefaultValue(K9.getQuietTimeEnds()); mQuietTimeEnds.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { final String time = (String) newValue; mQuietTimeEnds.setSummary(time); return false; } }); mNotificationQuickDelete = setupListPreference(PREFERENCE_NOTIF_QUICK_DELETE, K9.getNotificationQuickDeleteBehaviour().toString()); if (!MessagingController.platformSupportsExtendedNotifications()) { PreferenceScreen prefs = (PreferenceScreen) findPreference("notification_preferences"); prefs.removePreference(mNotificationQuickDelete); mNotificationQuickDelete = null; } mBackgroundOps = setupListPreference(PREFERENCE_BACKGROUND_OPS, K9.getBackgroundOps().toString()); // In ICS+ there is no 'background data' setting that apps can chose to ignore anymore. So // we hide that option for "Background Sync". if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { CharSequence[] oldEntries = mBackgroundOps.getEntries(); CharSequence[] newEntries = new CharSequence[3]; // Use "When 'Auto-sync' is checked" instead of "When 'Background data' & 'Auto-sync' // are checked" as description. newEntries[0] = getString(R.string.background_ops_auto_sync_only); newEntries[1] = oldEntries[2]; newEntries[2] = oldEntries[3]; CharSequence[] oldValues = mBackgroundOps.getEntryValues(); CharSequence[] newValues = new CharSequence[3]; newValues[0] = oldValues[1]; newValues[1] = oldValues[2]; newValues[2] = oldValues[3]; mBackgroundOps.setEntries(newEntries); mBackgroundOps.setEntryValues(newValues); // Since ConnectivityManager.getBackgroundDataSetting() always returns 'true' on ICS+ // we map WHEN_CHECKED to ALWAYS. if (K9.getBackgroundOps() == K9.BACKGROUND_OPS.WHEN_CHECKED) { mBackgroundOps.setValue(K9.BACKGROUND_OPS.ALWAYS.toString()); mBackgroundOps.setSummary(mBackgroundOps.getEntry()); } } mUseGalleryBugWorkaround = (CheckBoxPreference)findPreference(PREFERENCE_GALLERY_BUG_WORKAROUND); mUseGalleryBugWorkaround.setChecked(K9.useGalleryBugWorkaround()); mDebugLogging = (CheckBoxPreference)findPreference(PREFERENCE_DEBUG_LOGGING); mSensitiveLogging = (CheckBoxPreference)findPreference(PREFERENCE_SENSITIVE_LOGGING); mDebugLogging.setChecked(K9.DEBUG); mSensitiveLogging.setChecked(K9.DEBUG_SENSITIVE); mAttachmentPathPreference = findPreference(PREFERENCE_ATTACHMENT_DEF_PATH); mAttachmentPathPreference.setSummary(K9.getAttachmentDefaultPath()); mAttachmentPathPreference .setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { FileBrowserHelper .getInstance() .showFileBrowserActivity(Prefs.this, new File(K9.getAttachmentDefaultPath()), ACTIVITY_CHOOSE_FOLDER, callback); return true; } FileBrowserFailOverCallback callback = new FileBrowserFailOverCallback() { @Override public void onPathEntered(String path) { mAttachmentPathPreference.setSummary(path); K9.setAttachmentDefaultPath(path); } @Override public void onCancel() { // canceled, do nothing } }; }); mWrapFolderNames = (CheckBoxPreference)findPreference(PREFERENCE_FOLDERLIST_WRAP_NAME); mWrapFolderNames.setChecked(K9.wrapFolderNames()); mVisibleRefileActions = (CheckBoxListPreference) findPreference(PREFERENCE_MESSAGEVIEW_VISIBLE_REFILE_ACTIONS); CharSequence[] visibleRefileActionsEntries = new CharSequence[5]; visibleRefileActionsEntries[VISIBLE_REFILE_ACTIONS_DELETE] = getString(R.string.delete_action); visibleRefileActionsEntries[VISIBLE_REFILE_ACTIONS_ARCHIVE] = getString(R.string.archive_action); visibleRefileActionsEntries[VISIBLE_REFILE_ACTIONS_MOVE] = getString(R.string.move_action); visibleRefileActionsEntries[VISIBLE_REFILE_ACTIONS_COPY] = getString(R.string.copy_action); visibleRefileActionsEntries[VISIBLE_REFILE_ACTIONS_SPAM] = getString(R.string.spam_action); boolean[] visibleRefileActionsValues = new boolean[5]; visibleRefileActionsValues[VISIBLE_REFILE_ACTIONS_DELETE] = K9.isMessageViewDeleteActionVisible(); visibleRefileActionsValues[VISIBLE_REFILE_ACTIONS_ARCHIVE] = K9.isMessageViewArchiveActionVisible(); visibleRefileActionsValues[VISIBLE_REFILE_ACTIONS_MOVE] = K9.isMessageViewMoveActionVisible(); visibleRefileActionsValues[VISIBLE_REFILE_ACTIONS_COPY] = K9.isMessageViewCopyActionVisible(); visibleRefileActionsValues[VISIBLE_REFILE_ACTIONS_SPAM] = K9.isMessageViewSpamActionVisible(); mVisibleRefileActions.setItems(visibleRefileActionsEntries); mVisibleRefileActions.setCheckedItems(visibleRefileActionsValues); mSplitViewMode = (ListPreference) findPreference(PREFERENCE_SPLITVIEW_MODE); initListPreference(mSplitViewMode, K9.getSplitViewMode().name(), mSplitViewMode.getEntries(), mSplitViewMode.getEntryValues()); } private static String themeIdToName(K9.Theme theme) { switch (theme) { case DARK: return "dark"; case USE_GLOBAL: return "global"; default: return "light"; } } private static K9.Theme themeNameToId(String theme) { if (TextUtils.equals(theme, "dark")) { return K9.Theme.DARK; } else if (TextUtils.equals(theme, "global")) { return K9.Theme.USE_GLOBAL; } else { return K9.Theme.LIGHT; } } private void saveSettings() { SharedPreferences preferences = Preferences.getPreferences(this).getPreferences(); K9.setK9Language(mLanguage.getValue()); K9.setK9Theme(themeNameToId(mTheme.getValue())); K9.setUseFixedMessageViewTheme(mFixedMessageTheme.isChecked()); K9.setK9MessageViewThemeSetting(themeNameToId(mMessageTheme.getValue())); K9.setK9ComposerThemeSetting(themeNameToId(mComposerTheme.getValue())); K9.setAnimations(mAnimations.isChecked()); K9.setGesturesEnabled(mGestures.isChecked()); K9.setUseVolumeKeysForNavigation(mVolumeNavigation.getCheckedItems()[0]); K9.setUseVolumeKeysForListNavigation(mVolumeNavigation.getCheckedItems()[1]); K9.setStartIntegratedInbox(!mHideSpecialAccounts.isChecked() && mStartIntegratedInbox.isChecked()); K9.setNotificationHideSubject(NotificationHideSubject.valueOf(mNotificationHideSubject.getValue())); int index = 0; K9.setConfirmDelete(mConfirmActions.getCheckedItems()[index++]); K9.setConfirmDeleteStarred(mConfirmActions.getCheckedItems()[index++]); if (MessagingController.platformSupportsExtendedNotifications()) { K9.setConfirmDeleteFromNotification(mConfirmActions.getCheckedItems()[index++]); } K9.setConfirmSpam(mConfirmActions.getCheckedItems()[index++]); K9.setMeasureAccounts(mMeasureAccounts.isChecked()); K9.setCountSearchMessages(mCountSearch.isChecked()); K9.setHideSpecialAccounts(mHideSpecialAccounts.isChecked()); K9.setMessageListPreviewLines(Integer.parseInt(mPreviewLines.getValue())); K9.setMessageListCheckboxes(mCheckboxes.isChecked()); K9.setMessageListStars(mStars.isChecked()); K9.setShowCorrespondentNames(mShowCorrespondentNames.isChecked()); K9.setMessageListSenderAboveSubject(mSenderAboveSubject.isChecked()); K9.setShowContactName(mShowContactName.isChecked()); K9.setShowContactPicture(mShowContactPicture.isChecked()); K9.setColorizeMissingContactPictures(mColorizeMissingContactPictures.isChecked()); K9.setUseBackgroundAsUnreadIndicator(mBackgroundAsUnreadIndicator.isChecked()); K9.setThreadedViewEnabled(mThreadedView.isChecked()); K9.setChangeContactNameColor(mChangeContactNameColor.isChecked()); K9.setMessageViewFixedWidthFont(mFixedWidth.isChecked()); K9.setMessageViewReturnToList(mReturnToList.isChecked()); K9.setMessageViewShowNext(mShowNext.isChecked()); K9.setMobileOptimizedLayout(mMobileOptimizedLayout.isChecked()); K9.setAutofitWidth(mAutofitWidth.isChecked()); K9.setQuietTimeEnabled(mQuietTimeEnabled.isChecked()); K9.setMessageViewDeleteActionVisible( mVisibleRefileActions.getCheckedItems()[VISIBLE_REFILE_ACTIONS_DELETE]); K9.setMessageViewArchiveActionVisible( mVisibleRefileActions.getCheckedItems()[VISIBLE_REFILE_ACTIONS_ARCHIVE]); K9.setMessageViewMoveActionVisible( mVisibleRefileActions.getCheckedItems()[VISIBLE_REFILE_ACTIONS_MOVE]); K9.setMessageViewCopyActionVisible( mVisibleRefileActions.getCheckedItems()[VISIBLE_REFILE_ACTIONS_COPY]); K9.setMessageViewSpamActionVisible( mVisibleRefileActions.getCheckedItems()[VISIBLE_REFILE_ACTIONS_SPAM]); K9.setQuietTimeStarts(mQuietTimeStarts.getTime()); K9.setQuietTimeEnds(mQuietTimeEnds.getTime()); K9.setWrapFolderNames(mWrapFolderNames.isChecked()); if (mNotificationQuickDelete != null) { K9.setNotificationQuickDeleteBehaviour( NotificationQuickDelete.valueOf(mNotificationQuickDelete.getValue())); } K9.setSplitViewMode(SplitViewMode.valueOf(mSplitViewMode.getValue())); K9.setAttachmentDefaultPath(mAttachmentPathPreference.getSummary().toString()); boolean needsRefresh = K9.setBackgroundOps(mBackgroundOps.getValue()); K9.setUseGalleryBugWorkaround(mUseGalleryBugWorkaround.isChecked()); if (!K9.DEBUG && mDebugLogging.isChecked()) { Toast.makeText(this, R.string.debug_logging_enabled, Toast.LENGTH_LONG).show(); } K9.DEBUG = mDebugLogging.isChecked(); K9.DEBUG_SENSITIVE = mSensitiveLogging.isChecked(); Editor editor = preferences.edit(); K9.save(editor); editor.commit(); if (needsRefresh) { MailService.actionReset(this, null); } } @Override protected void onPause() { saveSettings(); super.onPause(); } private void onFontSizeSettings() { FontSizeSettings.actionEditSettings(this); } private void onChooseContactNameColor() { new ColorPickerDialog(this, new ColorPickerDialog.OnColorChangedListener() { public void colorChanged(int color) { K9.setContactNameColor(color); } }, K9.getContactNameColor()).show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case ACTIVITY_CHOOSE_FOLDER: if (resultCode == RESULT_OK && data != null) { // obtain the filename Uri fileUri = data.getData(); if (fileUri != null) { String filePath = fileUri.getPath(); if (filePath != null) { mAttachmentPathPreference.setSummary(filePath.toString()); K9.setAttachmentDefaultPath(filePath.toString()); } } } break; } super.onActivityResult(requestCode, resultCode, data); } }