summaryrefslogtreecommitdiffstats
path: root/src/com/android/email/activity/setup/AccountSettingsFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/email/activity/setup/AccountSettingsFragment.java')
-rw-r--r--src/com/android/email/activity/setup/AccountSettingsFragment.java40
1 files changed, 31 insertions, 9 deletions
diff --git a/src/com/android/email/activity/setup/AccountSettingsFragment.java b/src/com/android/email/activity/setup/AccountSettingsFragment.java
index 97d4f9ea8..26e476455 100644
--- a/src/com/android/email/activity/setup/AccountSettingsFragment.java
+++ b/src/com/android/email/activity/setup/AccountSettingsFragment.java
@@ -69,6 +69,7 @@ import com.android.emailcommon.provider.EmailContent;
import com.android.emailcommon.provider.EmailContent.AccountColumns;
import com.android.emailcommon.provider.Mailbox;
import com.android.emailcommon.provider.Policy;
+import com.android.emailcommon.service.EmailServiceProxy;
import com.android.mail.preferences.AccountPreferences;
import com.android.mail.preferences.FolderPreferences;
import com.android.mail.preferences.FolderPreferences.NotificationLight;
@@ -84,7 +85,9 @@ import com.android.mail.utils.LogUtils;
import com.android.mail.utils.NotificationUtils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -243,10 +246,7 @@ public class AccountSettingsFragment extends MailAccountPrefsFragment
final CharSequence [] syncIntervals =
savedInstanceState.getCharSequenceArray(SAVESTATE_SYNC_INTERVALS);
mCheckFrequency = (ListPreference) findPreference(PREFERENCE_FREQUENCY);
- if (mCheckFrequency != null) {
- mCheckFrequency.setEntries(syncIntervalStrings);
- mCheckFrequency.setEntryValues(syncIntervals);
- }
+ fillCheckFrecuency(syncIntervalStrings, syncIntervals);
}
}
@@ -382,16 +382,15 @@ public class AccountSettingsFragment extends MailAccountPrefsFragment
final android.accounts.Account androidAcct = new android.accounts.Account(
mAccount.mEmailAddress, mServiceInfo.accountType);
if (Integer.parseInt(summary) == Account.CHECK_INTERVAL_NEVER) {
- // Disable syncing from the account manager. Leave the current sync frequency
- // in the database.
+ // Disable syncing from the account manager.
ContentResolver.setSyncAutomatically(androidAcct, EmailContent.AUTHORITY,
false);
} else {
// Enable syncing from the account manager.
ContentResolver.setSyncAutomatically(androidAcct, EmailContent.AUTHORITY,
true);
- cv.put(AccountColumns.SYNC_INTERVAL, Integer.parseInt(summary));
}
+ cv.put(AccountColumns.SYNC_INTERVAL, Integer.parseInt(summary));
}
} else if (key.equals(PREFERENCE_SYNC_WINDOW)) {
final String summary = newValue.toString();
@@ -749,8 +748,7 @@ public class AccountSettingsFragment extends MailAccountPrefsFragment
R.string.preferences_signature_summary_not_set);
mCheckFrequency = (ListPreference) findPreference(PREFERENCE_FREQUENCY);
- mCheckFrequency.setEntries(mServiceInfo.syncIntervalStrings);
- mCheckFrequency.setEntryValues(mServiceInfo.syncIntervals);
+ fillCheckFrecuency(mServiceInfo.syncIntervalStrings, mServiceInfo.syncIntervals);
if (mServiceInfo.syncContacts || mServiceInfo.syncCalendar) {
// This account allows syncing of contacts and/or calendar, so we will always have
// separate preferences to enable or disable syncing of email, contacts, and calendar.
@@ -1182,4 +1180,28 @@ public class AccountSettingsFragment extends MailAccountPrefsFragment
}
mInboxLights.setOn(notificationLight.mOn);
}
+
+ private void fillCheckFrecuency(CharSequence[] labels, CharSequence[] values) {
+ if (mCheckFrequency == null) {
+ return;
+ }
+
+ // Check push capability prior to include as an option
+ if (mAccount != null) {
+ boolean hasPushCapability = mAccount.hasCapability(EmailServiceProxy.CAPABILITY_PUSH);
+ List<CharSequence> valuesList = new ArrayList<>(Arrays.asList(values));
+ int checkIntervalPushPos = valuesList.indexOf(
+ String.valueOf(Account.CHECK_INTERVAL_PUSH));
+ if (!hasPushCapability && checkIntervalPushPos != -1) {
+ List<CharSequence> labelsList = new ArrayList<>(Arrays.asList(labels));
+ labelsList.remove(checkIntervalPushPos);
+ valuesList.remove(checkIntervalPushPos);
+ labels = labelsList.toArray(new CharSequence[labelsList.size()]);
+ values = valuesList.toArray(new CharSequence[valuesList.size()]);
+ }
+ }
+ mCheckFrequency.setEntries(labels);
+ mCheckFrequency.setEntryValues(values);
+ mCheckFrequency.setDefaultValue(values);
+ }
}