1e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank/* 2e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * Copyright (C) 2010 The Android Open Source Project 3e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * 4e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * Licensed under the Apache License, Version 2.0 (the "License"); 5e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * you may not use this file except in compliance with the License. 6e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * You may obtain a copy of the License at 7e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * 8e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * http://www.apache.org/licenses/LICENSE-2.0 9e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * 10e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * Unless required by applicable law or agreed to in writing, software 11e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * distributed under the License is distributed on an "AS IS" BASIS, 12e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * See the License for the specific language governing permissions and 14e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank * limitations under the License. 15e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank */ 16e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 17e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankpackage com.android.email.activity.setup; 18e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 19f5418f1f93b02e7fab9f15eb201800b65510998eMarc Blankimport com.android.emailcommon.provider.Account; 20aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blankimport com.android.emailcommon.provider.Policy; 21e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 22f020910461908681978a9e0f8f98b748853b0e39Andy Stadlerimport android.accounts.AccountAuthenticatorResponse; 23e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankimport android.os.Bundle; 24e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankimport android.os.Parcel; 25e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankimport android.os.Parcelable; 26e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 27e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankpublic class SetupData implements Parcelable { 28e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // The "extra" name for the Bundle saved with SetupData 29e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final String EXTRA_SETUP_DATA = "com.android.email.setupdata"; 30e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 31e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // NORMAL is the standard entry from the Email app; EAS and POP_IMAP are used when entering via 32e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Settings -> Accounts 33c5c44eed77b851e71803b972fb76fd91d5338fefBen Komalo public static final int FLOW_MODE_UNSPECIFIED = -1; 34e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int FLOW_MODE_NORMAL = 0; 35e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int FLOW_MODE_ACCOUNT_MANAGER_EAS = 1; 36d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_ACCOUNT_MANAGER_POP_IMAP = 2; 37e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int FLOW_MODE_EDIT = 3; 38d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_FORCE_CREATE = 4; 39e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // The following two modes are used to "pop the stack" and return from the setup flow. We 40e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // either return to the caller (if we're in an account type flow) or go to the message list 41d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_RETURN_TO_CALLER = 5; 42d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_RETURN_TO_MESSAGE_LIST = 6; 43e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 44e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // For debug logging 45d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler private static final String[] FLOW_MODES = {"normal", "eas", "pop/imap", "edit", "force", 46d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler "rtc", "rtl"}; 47e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 48e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Mode bits for AccountSetupCheckSettings, indicating the type of check requested 49e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_INCOMING = 1; 50e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_OUTGOING = 2; 51e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_AUTODISCOVER = 4; 52e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 53e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // All access will be through getters/setters 54e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private int mFlowMode = FLOW_MODE_NORMAL; 55e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private Account mAccount; 56e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private String mUsername; 57e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private String mPassword; 58e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private int mCheckSettingsMode = 0; 59e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private boolean mAllowAutodiscover = true; 60aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank private Policy mPolicy; 61e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private boolean mAutoSetup = false; 62e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private boolean mDefault = false; 63f020910461908681978a9e0f8f98b748853b0e39Andy Stadler private AccountAuthenticatorResponse mAccountAuthenticatorResponse = null; 64e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 65e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // We only have one instance of SetupData; if/when the process is destroyed, this data will be 66e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // saved in the savedInstanceState Bundle 67e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private static SetupData INSTANCE = null; 68e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 69e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static synchronized SetupData getInstance() { 70e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (INSTANCE == null) { 71e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank INSTANCE = new SetupData(); 72e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 73e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return INSTANCE; 74e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 75e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 76e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Don't allow instantiation outside of this class 77e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private SetupData() { 78e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 79e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 80e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public int getFlowMode() { 81e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mFlowMode; 82e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 83e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 84e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void setFlowMode(int mFlowMode) { 85e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank getInstance().mFlowMode = mFlowMode; 86e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 87e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 88e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public Account getAccount() { 89e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mAccount; 90e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 91e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 92e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void setAccount(Account mAccount) { 93e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank getInstance().mAccount = mAccount; 94e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 95e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 96e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public String getUsername() { 97e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mUsername; 98e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 99e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 100e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void setUsername(String mUsername) { 101e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank getInstance().mUsername = mUsername; 102e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 103e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 104e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public String getPassword() { 105e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mPassword; 106e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 107e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 108e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void setPassword(String mPassword) { 109e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank getInstance().mPassword = mPassword; 110e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 111e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 112e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void setCheckSettingsMode(int mCheckSettingsMode) { 113e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank getInstance().mCheckSettingsMode = mCheckSettingsMode; 114e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 115e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 116e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public boolean isCheckIncoming() { 117e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return (getInstance().mCheckSettingsMode & CHECK_INCOMING) != 0; 118e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 119e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 120e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public boolean isCheckOutgoing() { 121e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return (getInstance().mCheckSettingsMode & CHECK_OUTGOING) != 0; 122e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 123e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public boolean isCheckAutodiscover() { 124e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return (getInstance().mCheckSettingsMode & CHECK_AUTODISCOVER) != 0; 125e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 126e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public boolean isAllowAutodiscover() { 127e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mAllowAutodiscover; 128e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 129e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 130e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void setAllowAutodiscover(boolean mAllowAutodiscover) { 131e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank getInstance().mAllowAutodiscover = mAllowAutodiscover; 132e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 133e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 134aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank static public Policy getPolicy() { 135aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank return getInstance().mPolicy; 136e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 137e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 138aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank static public void setPolicy(Policy policy) { 139aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank SetupData data = getInstance(); 140aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank data.mPolicy = policy; 141aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank data.mAccount.mPolicy = policy; 142e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 143e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 144e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public boolean isAutoSetup() { 145e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mAutoSetup; 146e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 147e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 148aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank static public void setAutoSetup(boolean autoSetup) { 149aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank getInstance().mAutoSetup = autoSetup; 150e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 151e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 152e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public boolean isDefault() { 153e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance().mDefault; 154e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 155e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 156aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank static public void setDefault(boolean _default) { 157aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank getInstance().mDefault = _default; 158e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 159e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 160f020910461908681978a9e0f8f98b748853b0e39Andy Stadler static public AccountAuthenticatorResponse getAccountAuthenticatorResponse() { 161f020910461908681978a9e0f8f98b748853b0e39Andy Stadler return getInstance().mAccountAuthenticatorResponse; 162f020910461908681978a9e0f8f98b748853b0e39Andy Stadler } 163f020910461908681978a9e0f8f98b748853b0e39Andy Stadler 164f020910461908681978a9e0f8f98b748853b0e39Andy Stadler static public void setAccountAuthenticatorResponse(AccountAuthenticatorResponse response) { 165f020910461908681978a9e0f8f98b748853b0e39Andy Stadler getInstance().mAccountAuthenticatorResponse = response; 166f020910461908681978a9e0f8f98b748853b0e39Andy Stadler } 167f020910461908681978a9e0f8f98b748853b0e39Andy Stadler 168e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static void init(int flowMode) { 169e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank SetupData data = getInstance(); 170e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank data.commonInit(); 171e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank data.mFlowMode = flowMode; 172e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 173e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 174e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static void init(int flowMode, Account account) { 175e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank SetupData data = getInstance(); 176e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank data.commonInit(); 177e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank data.mFlowMode = flowMode; 178e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank data.mAccount = account; 179e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 180e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 181e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank void commonInit() { 182aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank mPolicy = null; 183e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mAutoSetup = false; 184e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mAllowAutodiscover = true; 185e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mCheckSettingsMode = 0; 186e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mAccount = new Account(); 187e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mDefault = false; 188e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mUsername = null; 189e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mPassword = null; 190f020910461908681978a9e0f8f98b748853b0e39Andy Stadler mAccountAuthenticatorResponse = null; 191e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 192e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 193e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Parcelable methods 194e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public int describeContents() { 195e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return 0; 196e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 197e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 198e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final Parcelable.Creator<SetupData> CREATOR = 199e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank new Parcelable.Creator<SetupData>() { 200e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public SetupData createFromParcel(Parcel in) { 201e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return new SetupData(in); 202e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 203e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 204e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public SetupData[] newArray(int size) { 205e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return new SetupData[size]; 206e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 207e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank }; 208e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 209e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public void writeToParcel(Parcel dest, int flags) { 210e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mFlowMode); 211e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeParcelable(mAccount, 0); 212e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeString(mUsername); 213e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeString(mPassword); 214e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mCheckSettingsMode); 215e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mAllowAutodiscover ? 1 : 0); 216aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank dest.writeParcelable(mPolicy, 0); 217e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mAutoSetup ? 1 : 0); 218e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mDefault ? 1 : 0); 219f020910461908681978a9e0f8f98b748853b0e39Andy Stadler dest.writeParcelable(mAccountAuthenticatorResponse, 0); 220e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 221e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 222e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public SetupData(Parcel in) { 223bbe25adfc87bf72cd031969bb736833780c1dd1dMakoto Onuki ClassLoader loader = getClass().getClassLoader(); 224e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mFlowMode = in.readInt(); 225bbe25adfc87bf72cd031969bb736833780c1dd1dMakoto Onuki mAccount = in.readParcelable(loader); 226e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mUsername = in.readString(); 227e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mPassword = in.readString(); 228e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mCheckSettingsMode = in.readInt(); 229e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mAllowAutodiscover = in.readInt() == 1; 230aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank mPolicy = in.readParcelable(loader); 231e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mAutoSetup = in.readInt() == 1; 232e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mDefault = in.readInt() == 1; 233f020910461908681978a9e0f8f98b748853b0e39Andy Stadler mAccountAuthenticatorResponse = in.readParcelable(loader); 234e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 235e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 236e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Save/restore our SetupData (used in AccountSetupActivity) 237e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public void save(Bundle bundle) { 238e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank bundle.putParcelable(EXTRA_SETUP_DATA, getInstance()); 239e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 240e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 241e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank static public synchronized SetupData restore(Bundle bundle) { 242e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (bundle != null && bundle.containsKey(EXTRA_SETUP_DATA)) { 243e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank INSTANCE = bundle.getParcelable(EXTRA_SETUP_DATA); 244e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return INSTANCE; 245e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } else { 246e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return getInstance(); 247e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 248e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 249e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 250e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static String debugString() { 251e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank StringBuilder sb = new StringBuilder("SetupData"); 252e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank SetupData data = getInstance(); 253e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":flow=" + FLOW_MODES[data.mFlowMode]); 254e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":acct=" + (data.mAccount == null ? "none" : data.mAccount.mId)); 255e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (data.mUsername != null) { 256e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":user=" + data.mUsername); 257e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 258e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (data.mPassword != null) { 259e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":pass=" + data.mPassword); 260e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 261e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":a/d=" + data.mAllowAutodiscover); 262e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":auto=" + data.mAutoSetup); 263e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":default=" + data.mDefault); 264e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank sb.append(":check="); 265e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (SetupData.isCheckIncoming()) sb.append("in+"); 266e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (SetupData.isCheckOutgoing()) sb.append("out+"); 267e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank if (SetupData.isCheckAutodiscover()) sb.append("a/d"); 268aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank sb.append(":policy=" + (data.mPolicy == null ? "none" : "exists")); 269e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return sb.toString(); 270e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 271e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank} 272