196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/*
296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License.
696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at
796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and
1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License.
1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */
1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage com.android.email;
1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport com.android.email.mail.Store;
2096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.Context;
2296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.SharedPreferences;
2396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.net.Uri;
2496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
2596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport java.util.Arrays;
2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport java.util.UUID;
2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/**
2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Account stores all of the settings for a single account defined by the user. It is able to save
3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * and delete itself given a Preferences to work with. Each account is defined by a UUID.
3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */
325e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadlerpublic class Account {
3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public static final int DELETE_POLICY_NEVER = 0;
3496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public static final int DELETE_POLICY_7DAYS = 1;
3596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public static final int DELETE_POLICY_ON_DELETE = 2;
3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
37ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler    public static final int CHECK_INTERVAL_NEVER = -1;
38ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler    public static final int CHECK_INTERVAL_PUSH = -2;
399197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
409197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_USER = -1;
419197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_1_DAY = 1;
429197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_3_DAYS = 2;
439197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_1_WEEK = 3;
449197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_2_WEEKS = 4;
459197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_1_MONTH = 5;
469197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public static final int SYNC_WINDOW_ALL = 6;
47cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler
485e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler    // These flags will never be seen in a "real" (legacy) account
495e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler    public static final int BACKUP_FLAGS_IS_BACKUP = 1;
505e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler    public static final int BACKUP_FLAGS_SYNC_CONTACTS = 2;
515e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler    public static final int BACKUP_FLAGS_IS_DEFAULT = 4;
52f3fcb8929e3690bc092aec0d4d643b346f079acdMarc Blank    public static final int BACKUP_FLAGS_SYNC_CALENDAR = 8;
535e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler
54cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler    // transient values - do not serialize
55cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler    private transient Preferences mPreferences;
5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
57cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler    // serialized values
5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mUuid;
5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mStoreUri;
6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mLocalStoreUri;
6196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mSenderUri;
6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mDescription;
6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mName;
6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mEmail;
6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    int mAutomaticCheckIntervalMinutes;
6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    long mLastAutomaticCheckTime;
6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    boolean mNotifyNewMail;
6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mDraftsFolderName;
6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mSentFolderName;
7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mTrashFolderName;
7196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mOutboxFolderName;
7296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    int mAccountNumber;
739e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma    boolean mVibrate;           // true: Always vibrate. false: Only when mVibrateWhenSilent.
749e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma    boolean mVibrateWhenSilent; // true: Vibrate even if !mVibrate. False: Require mVibrate.
7596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    String mRingtoneUri;
769197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    int mSyncWindow;
775e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler    int mBackupFlags;           // for account backups only
785e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler    String mProtocolVersion;    // for account backups only
79fc8d943a828cd79ff71c703ced37001bd5482173Andrew Stadler    int mSecurityFlags;         // for account backups only
80345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler    String mSignature;          // for account backups only
8196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
8296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
8396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * <pre>
8496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * 0 Never
8596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * 1 After 7 days
8696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * 2 When I delete from inbox
8796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * </pre>
8896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
8996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    int mDeletePolicy;
9096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
919197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    /**
929197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler     * All new fields should have named keys
939197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler     */
94550aa6163fdb9681d6adee018a313d5f82629b34Makoto Onuki    private static final String KEY_SYNC_WINDOW = ".syncWindow";
95550aa6163fdb9681d6adee018a313d5f82629b34Makoto Onuki    private static final String KEY_BACKUP_FLAGS = ".backupFlags";
96550aa6163fdb9681d6adee018a313d5f82629b34Makoto Onuki    private static final String KEY_PROTOCOL_VERSION = ".protocolVersion";
97550aa6163fdb9681d6adee018a313d5f82629b34Makoto Onuki    private static final String KEY_SECURITY_FLAGS = ".securityFlags";
98550aa6163fdb9681d6adee018a313d5f82629b34Makoto Onuki    private static final String KEY_SIGNATURE = ".signature";
99550aa6163fdb9681d6adee018a313d5f82629b34Makoto Onuki    private static final String KEY_VIBRATE_WHEN_SILENT = ".vibrateWhenSilent";
1009197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
10196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public Account(Context context) {
10296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        // TODO Change local store path to something readable / recognizable
10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mUuid = UUID.randomUUID().toString();
10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mLocalStoreUri = "local://localhost/" + context.getDatabasePath(mUuid + ".db");
10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAutomaticCheckIntervalMinutes = -1;
10696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccountNumber = -1;
10796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyNewMail = true;
10896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mVibrate = false;
1099e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma        mVibrateWhenSilent = false;
11096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mRingtoneUri = "content://settings/system/notification_sound";
1119197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindow = SYNC_WINDOW_USER;       // IMAP & POP3
1125e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        mBackupFlags = 0;
1135e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        mProtocolVersion = null;
114fc8d943a828cd79ff71c703ced37001bd5482173Andrew Stadler        mSecurityFlags = 0;
115345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        mSignature = null;
11696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
11796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    Account(Preferences preferences, String uuid) {
11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mUuid = uuid;
12096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        refresh(preferences);
12196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
12396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
12496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * Refresh the account from the stored settings.
12596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
12696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void refresh(Preferences preferences) {
127cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler        mPreferences = preferences;
1285293030ba0433c06ba3af371b809ab8586d775b4Andy Stadler
129c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mStoreUri = Utility.base64Decode(preferences.mSharedPreferences.getString(mUuid
130c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                + ".storeUri", null));
131c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mLocalStoreUri = preferences.mSharedPreferences.getString(mUuid + ".localStoreUri", null);
132c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
133c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        String senderText = preferences.mSharedPreferences.getString(mUuid + ".senderUri", null);
134c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        if (senderText == null) {
135c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            // Preference ".senderUri" was called ".transportUri" in earlier versions, so we'll
136c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            // do a simple upgrade here when necessary.
137c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            senderText = preferences.mSharedPreferences.getString(mUuid + ".transportUri", null);
138c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        }
139c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mSenderUri = Utility.base64Decode(senderText);
140c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
141c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mDescription = preferences.mSharedPreferences.getString(mUuid + ".description", null);
142c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mName = preferences.mSharedPreferences.getString(mUuid + ".name", mName);
143c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mEmail = preferences.mSharedPreferences.getString(mUuid + ".email", mEmail);
144c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mAutomaticCheckIntervalMinutes = preferences.mSharedPreferences.getInt(mUuid
145c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                + ".automaticCheckIntervalMinutes", -1);
146c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mLastAutomaticCheckTime = preferences.mSharedPreferences.getLong(mUuid
147c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                + ".lastAutomaticCheckTime", 0);
148c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mNotifyNewMail = preferences.mSharedPreferences.getBoolean(mUuid + ".notifyNewMail",
149c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                false);
150c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
151c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // delete policy was incorrectly set on earlier versions, so we'll upgrade it here.
152c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // rule:  if IMAP account and policy = 0 ("never"), change policy to 2 ("on delete")
153c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mDeletePolicy = preferences.mSharedPreferences.getInt(mUuid + ".deletePolicy", 0);
154c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        if (mDeletePolicy == DELETE_POLICY_NEVER &&
155c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                mStoreUri != null && mStoreUri.toString().startsWith(Store.STORE_SCHEME_IMAP)) {
156c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            mDeletePolicy = DELETE_POLICY_ON_DELETE;
15796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
158c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
159c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mDraftsFolderName = preferences.mSharedPreferences.getString(mUuid  + ".draftsFolderName",
160c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                "Drafts");
161c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mSentFolderName = preferences.mSharedPreferences.getString(mUuid  + ".sentFolderName",
162c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                "Sent");
163c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mTrashFolderName = preferences.mSharedPreferences.getString(mUuid  + ".trashFolderName",
164c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                "Trash");
165c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mOutboxFolderName = preferences.mSharedPreferences.getString(mUuid  + ".outboxFolderName",
166c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                "Outbox");
167c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mAccountNumber = preferences.mSharedPreferences.getInt(mUuid + ".accountNumber", 0);
168c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mVibrate = preferences.mSharedPreferences.getBoolean(mUuid + ".vibrate", false);
1699e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma        mVibrateWhenSilent = preferences.mSharedPreferences.getBoolean(mUuid +
1709e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma                KEY_VIBRATE_WHEN_SILENT, false);
171c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mRingtoneUri = preferences.mSharedPreferences.getString(mUuid  + ".ringtone",
172c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                "content://settings/system/notification_sound");
173c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
174c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        mSyncWindow = preferences.mSharedPreferences.getInt(mUuid + KEY_SYNC_WINDOW,
175c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                SYNC_WINDOW_USER);
1765e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler
1775e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        mBackupFlags = preferences.mSharedPreferences.getInt(mUuid + KEY_BACKUP_FLAGS, 0);
1785e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        mProtocolVersion = preferences.mSharedPreferences.getString(mUuid + KEY_PROTOCOL_VERSION,
1795e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler                null);
180fc8d943a828cd79ff71c703ced37001bd5482173Andrew Stadler        mSecurityFlags = preferences.mSharedPreferences.getInt(mUuid + KEY_SECURITY_FLAGS, 0);
181345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        mSignature = preferences.mSharedPreferences.getString(mUuid + KEY_SIGNATURE, null);
18296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
18396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
18496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getUuid() {
18596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mUuid;
18696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
18796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
18896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getStoreUri() {
18996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mStoreUri;
19096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
19196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
19296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setStoreUri(String storeUri) {
19396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mStoreUri = storeUri;
19496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
19596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
19696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getSenderUri() {
19796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mSenderUri;
19896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
19996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
20096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setSenderUri(String senderUri) {
20196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mSenderUri = senderUri;
20296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
20396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
20496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getDescription() {
20596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mDescription;
20696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
20796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
20896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setDescription(String description) {
20996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mDescription = description;
21096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
21196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
21296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getName() {
21396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mName;
21496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
21596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
21696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setName(String name) {
21796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mName = name;
21896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
21996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
22096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getEmail() {
22196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mEmail;
22296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
22396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
22496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setEmail(String email) {
22596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mEmail = email;
22696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
22796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
22896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public boolean isVibrate() {
22996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mVibrate;
23096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
23196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
23296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setVibrate(boolean vibrate) {
23396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mVibrate = vibrate;
23496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
23596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
2369e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma    public boolean isVibrateWhenSilent() {
2379e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma        return mVibrateWhenSilent;
2389e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma    }
2399e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma
2409e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma    public void setVibrateWhenSilent(boolean vibrateWhenSilent) {
2419e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma        mVibrateWhenSilent = vibrateWhenSilent;
2429e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma    }
2439e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma
24496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getRingtone() {
24596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mRingtoneUri;
24696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
24796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
24896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setRingtone(String ringtoneUri) {
24996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mRingtoneUri = ringtoneUri;
25096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
25196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
25296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void delete(Preferences preferences) {
253c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        String[] uuids = preferences.mSharedPreferences.getString("accountUuids", "").split(",");
254c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        StringBuffer sb = new StringBuffer();
255c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        for (int i = 0, length = uuids.length; i < length; i++) {
256c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            if (!uuids[i].equals(mUuid)) {
257c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                if (sb.length() > 0) {
258c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                    sb.append(',');
25996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                }
260c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                sb.append(uuids[i]);
26196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            }
26296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
263c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        String accountUuids = sb.toString();
264c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        SharedPreferences.Editor editor = preferences.mSharedPreferences.edit();
265c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString("accountUuids", accountUuids);
266c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
267c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".storeUri");
268c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".localStoreUri");
269c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".senderUri");
270c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".description");
271c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".name");
272c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".email");
273c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".automaticCheckIntervalMinutes");
274c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".lastAutomaticCheckTime");
275c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".notifyNewMail");
276c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".deletePolicy");
277c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".draftsFolderName");
278c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".sentFolderName");
279c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".trashFolderName");
280c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".outboxFolderName");
281c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".accountNumber");
282c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".vibrate");
2839e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma        editor.remove(mUuid + KEY_VIBRATE_WHEN_SILENT);
284c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".ringtone");
285c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + KEY_SYNC_WINDOW);
2865e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        editor.remove(mUuid + KEY_BACKUP_FLAGS);
2875e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        editor.remove(mUuid + KEY_PROTOCOL_VERSION);
288fc8d943a828cd79ff71c703ced37001bd5482173Andrew Stadler        editor.remove(mUuid + KEY_SECURITY_FLAGS);
289345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        editor.remove(mUuid + KEY_SIGNATURE);
290c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
291c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // also delete any deprecated fields
292c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".transportUri");
293c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
294c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.commit();
29596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
29696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
29796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void save(Preferences preferences) {
298cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler        mPreferences = preferences;
299cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler
300c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        if (!preferences.mSharedPreferences.getString("accountUuids", "").contains(mUuid)) {
301c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            /*
302c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * When the account is first created we assign it a unique account number. The
303c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * account number will be unique to that account for the lifetime of the account.
304c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * So, we get all the existing account numbers, sort them ascending, loop through
305c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * the list and check if the number is greater than 1 + the previous number. If so
306c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * we use the previous number + 1 as the account number. This refills gaps.
307c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * mAccountNumber starts as -1 on a newly created account. It must be -1 for this
308c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * algorithm to work.
309c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             *
310c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             * I bet there is a much smarter way to do this. Anyone like to suggest it?
311c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler             */
312c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            Account[] accounts = preferences.getAccounts();
313c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            int[] accountNumbers = new int[accounts.length];
314c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            for (int i = 0; i < accounts.length; i++) {
315c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                accountNumbers[i] = accounts[i].getAccountNumber();
316c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            }
317c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            Arrays.sort(accountNumbers);
318c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            for (int accountNumber : accountNumbers) {
319c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                if (accountNumber > mAccountNumber + 1) {
320c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                    break;
32196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                }
322c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler                mAccountNumber = accountNumber;
32396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            }
324c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            mAccountNumber++;
325c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
326c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            String accountUuids = preferences.mSharedPreferences.getString("accountUuids", "");
327c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            accountUuids += (accountUuids.length() != 0 ? "," : "") + mUuid;
3285293030ba0433c06ba3af371b809ab8586d775b4Andy Stadler            SharedPreferences.Editor editor = preferences.mSharedPreferences.edit();
329c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler            editor.putString("accountUuids", accountUuids);
3305293030ba0433c06ba3af371b809ab8586d775b4Andy Stadler            editor.commit();
3315293030ba0433c06ba3af371b809ab8586d775b4Andy Stadler        }
332c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
333c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        SharedPreferences.Editor editor = preferences.mSharedPreferences.edit();
334c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
335c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".storeUri", Utility.base64Encode(mStoreUri));
336c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".localStoreUri", mLocalStoreUri);
337c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".senderUri", Utility.base64Encode(mSenderUri));
338c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".description", mDescription);
339c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".name", mName);
340c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".email", mEmail);
341c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putInt(mUuid + ".automaticCheckIntervalMinutes", mAutomaticCheckIntervalMinutes);
342c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putLong(mUuid + ".lastAutomaticCheckTime", mLastAutomaticCheckTime);
343c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putBoolean(mUuid + ".notifyNewMail", mNotifyNewMail);
344c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putInt(mUuid + ".deletePolicy", mDeletePolicy);
345c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".draftsFolderName", mDraftsFolderName);
346c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".sentFolderName", mSentFolderName);
347c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".trashFolderName", mTrashFolderName);
348c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".outboxFolderName", mOutboxFolderName);
349c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putInt(mUuid + ".accountNumber", mAccountNumber);
350c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putBoolean(mUuid + ".vibrate", mVibrate);
3519e2ddca59d048fc9ac55278b193ee36b330a7981Jim Shuma        editor.putBoolean(mUuid + KEY_VIBRATE_WHEN_SILENT, mVibrateWhenSilent);
352c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putString(mUuid + ".ringtone", mRingtoneUri);
353c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.putInt(mUuid + KEY_SYNC_WINDOW, mSyncWindow);
3545e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        editor.putInt(mUuid + KEY_BACKUP_FLAGS, mBackupFlags);
3555e91cccd4b530eb2aeace5c5bf4f3328a5b5d69dAndrew Stadler        editor.putString(mUuid + KEY_PROTOCOL_VERSION, mProtocolVersion);
356fc8d943a828cd79ff71c703ced37001bd5482173Andrew Stadler        editor.putInt(mUuid + KEY_SECURITY_FLAGS, mSecurityFlags);
357345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        editor.putString(mUuid + KEY_SIGNATURE, mSignature);
358c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
359c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // The following fields are *not* written because they need to be more fine-grained
360c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // and not risk rewriting with old data.
361c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // editor.putString(mUuid + PREF_TAG_STORE_PERSISTENT, mStorePersistent);
362c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
363c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        // also delete any deprecated fields
364c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.remove(mUuid + ".transportUri");
365c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler
366c2887cd81de8867092136e69a19c1e771a35a66aAndy Stadler        editor.commit();
36796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
36896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
369cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7Andy Stadler    @Override
37096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String toString() {
37196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mDescription;
37296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
37396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
37496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public Uri getContentUri() {
37596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return Uri.parse("content://accounts/" + getUuid());
37696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
37796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
37896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getLocalStoreUri() {
37996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mLocalStoreUri;
38096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
38196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
38296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setLocalStoreUri(String localStoreUri) {
38396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mLocalStoreUri = localStoreUri;
38496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
38596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
38696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
38796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * Returns -1 for never.
38896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
38996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public int getAutomaticCheckIntervalMinutes() {
39096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mAutomaticCheckIntervalMinutes;
39196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
39296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
39396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
39496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * @param automaticCheckIntervalMinutes or -1 for never.
39596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
39696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setAutomaticCheckIntervalMinutes(int automaticCheckIntervalMinutes) {
39796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mAutomaticCheckIntervalMinutes = automaticCheckIntervalMinutes;
39896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
39996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
40096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public long getLastAutomaticCheckTime() {
40196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mLastAutomaticCheckTime;
40296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
40396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
40496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setLastAutomaticCheckTime(long lastAutomaticCheckTime) {
40596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mLastAutomaticCheckTime = lastAutomaticCheckTime;
40696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
40796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
40896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public boolean isNotifyNewMail() {
40996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mNotifyNewMail;
41096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
41196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
41296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setNotifyNewMail(boolean notifyNewMail) {
41396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mNotifyNewMail = notifyNewMail;
41496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
41596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
41696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public int getDeletePolicy() {
41796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mDeletePolicy;
41896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
41996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
42096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setDeletePolicy(int deletePolicy) {
42196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        this.mDeletePolicy = deletePolicy;
42296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
42396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
42496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getDraftsFolderName() {
42596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mDraftsFolderName;
42696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
42796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
42896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setDraftsFolderName(String draftsFolderName) {
42996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mDraftsFolderName = draftsFolderName;
43096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
43196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
43296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getSentFolderName() {
43396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mSentFolderName;
43496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
43596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
43696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setSentFolderName(String sentFolderName) {
43796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mSentFolderName = sentFolderName;
43896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
43996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
44096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getTrashFolderName() {
44196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mTrashFolderName;
44296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
44396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
44496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setTrashFolderName(String trashFolderName) {
44596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mTrashFolderName = trashFolderName;
44696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
44796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
44896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public String getOutboxFolderName() {
44996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mOutboxFolderName;
45096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
45196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
45296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void setOutboxFolderName(String outboxFolderName) {
45396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mOutboxFolderName = outboxFolderName;
45496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
45596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
45696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public int getAccountNumber() {
45796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return mAccountNumber;
45896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
45996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4609197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public int getSyncWindow() {
4619197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        return mSyncWindow;
4629197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    }
4639197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
4649197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    public void setSyncWindow(int window) {
4659197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindow = window;
4669197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    }
4679197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
468842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler    public int getBackupFlags() {
469842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler        return mBackupFlags;
470842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler    }
471842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler
472842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler    public void setBackupFlags(int flags) {
473842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler        mBackupFlags = flags;
474842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler    }
475842ac048287480e438a4049e95d6cbe116d9f31fAndrew Stadler
47696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    @Override
47796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public boolean equals(Object o) {
47896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (o instanceof Account) {
47996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            return ((Account)o).mUuid.equals(mUuid);
48096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
48196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return super.equals(o);
48296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
48396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
484