summaryrefslogtreecommitdiffstats
path: root/src/com/android/email
diff options
context:
space:
mode:
authorJorge Ruesga <jorge@ruesga.com>2015-05-01 21:35:23 +0200
committerSteve Kondik <steve@cyngn.com>2015-10-18 14:05:32 -0700
commit08ace26ed605946d788ce56f5c9aefc65131a63b (patch)
treef1014dc39087078bf19111b76427ab58ba78ad4b /src/com/android/email
parent3b1b30873e9c07139e2cc9fdaa796151592fea69 (diff)
downloadandroid_packages_apps_Email-08ace26ed605946d788ce56f5c9aefc65131a63b.tar.gz
android_packages_apps_Email-08ace26ed605946d788ce56f5c9aefc65131a63b.tar.bz2
android_packages_apps_Email-08ace26ed605946d788ce56f5c9aefc65131a63b.zip
email: imap push
Change-Id: I8a184a5644e4322ee65d969e14cd47fe119f5df2 Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
Diffstat (limited to 'src/com/android/email')
-rw-r--r--src/com/android/email/activity/setup/AccountCheckSettingsFragment.java4
-rw-r--r--src/com/android/email/activity/setup/AccountSettingsFragment.java40
-rw-r--r--src/com/android/email/activity/setup/AccountSetupFinal.java2
-rw-r--r--src/com/android/email/activity/setup/AccountSetupOptionsFragment.java24
4 files changed, 57 insertions, 13 deletions
diff --git a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
index a9c1a9691..f11f54cd2 100644
--- a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
+++ b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
@@ -417,6 +417,10 @@ public class AccountCheckSettingsFragment extends Fragment {
EmailServiceProxy.VALIDATE_BUNDLE_ERROR_MESSAGE);
return new MessagingException(resultCode, errorMessage);
}
+
+ // Save account capabilities
+ mAccount.mCapabilities = bundle.getInt(
+ EmailServiceProxy.SETTINGS_BUNDLE_CAPABILITIES, 0);
}
final EmailServiceInfo info;
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);
+ }
}
diff --git a/src/com/android/email/activity/setup/AccountSetupFinal.java b/src/com/android/email/activity/setup/AccountSetupFinal.java
index adaa32aa1..5386a7e4a 100644
--- a/src/com/android/email/activity/setup/AccountSetupFinal.java
+++ b/src/com/android/email/activity/setup/AccountSetupFinal.java
@@ -917,7 +917,7 @@ public class AccountSetupFinal extends AccountSetupActivity
public void setDefaultsForProtocol(Account account) {
final EmailServiceUtils.EmailServiceInfo info = mSetupData.getIncomingServiceInfo(this);
if (info == null) return;
- account.mSyncInterval = info.defaultSyncInterval;
+ account.setSyncInterval(info.defaultSyncInterval);
account.mSyncLookback = info.defaultLookback;
if (info.offerLocalDeletes) {
account.setDeletePolicy(info.defaultLocalDeletes);
diff --git a/src/com/android/email/activity/setup/AccountSetupOptionsFragment.java b/src/com/android/email/activity/setup/AccountSetupOptionsFragment.java
index 9d048c119..287a0d323 100644
--- a/src/com/android/email/activity/setup/AccountSetupOptionsFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupOptionsFragment.java
@@ -29,8 +29,13 @@ import com.android.email.activity.UiUtilities;
import com.android.email.service.EmailServiceUtils;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.Policy;
+import com.android.emailcommon.service.EmailServiceProxy;
import com.android.emailcommon.service.SyncWindow;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
public class AccountSetupOptionsFragment extends AccountSetupFragment {
private Spinner mCheckFrequencyView;
private Spinner mSyncWindowView;
@@ -90,11 +95,24 @@ public class AccountSetupOptionsFragment extends AccountSetupFragment {
final CharSequence[] frequencyEntries = serviceInfo.syncIntervalStrings;
// Now create the array used by the sync interval Spinner
- final SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length];
+ int checkIntervalPushPos = -1;
+ SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length];
for (int i = 0; i < frequencyEntries.length; i++) {
- checkFrequencies[i] = new SpinnerOption(
- Integer.valueOf(frequencyValues[i].toString()), frequencyEntries[i].toString());
+ Integer value = Integer.valueOf(frequencyValues[i].toString());
+ if (value.intValue() == Account.CHECK_INTERVAL_PUSH) {
+ checkIntervalPushPos = i;
+ }
+ checkFrequencies[i] = new SpinnerOption(value, frequencyEntries[i].toString());
}
+
+ // Ensure that push capability is supported by the server
+ boolean hasPushCapability = account.hasCapability(EmailServiceProxy.CAPABILITY_PUSH);
+ if (!hasPushCapability && checkIntervalPushPos != -1) {
+ List<SpinnerOption> options = new ArrayList<>(Arrays.asList(checkFrequencies));
+ options.remove(checkIntervalPushPos);
+ checkFrequencies = options.toArray(new SpinnerOption[options.size()]);
+ }
+
final ArrayAdapter<SpinnerOption> checkFrequenciesAdapter =
new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_item,
checkFrequencies);