10dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuxpackage com.android.email.activity.setup; 20dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 30dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport android.app.Activity; 48c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantlerimport android.app.LoaderManager; 50dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport android.content.Context; 60dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport android.content.Intent; 78c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantlerimport android.content.Loader; 88c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantlerimport android.net.Uri; 90dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport android.os.AsyncTask; 100dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport android.os.Bundle; 110dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 120dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport com.android.emailcommon.provider.Account; 138c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantlerimport com.android.emailcommon.provider.EmailContent; 140dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuximport com.android.emailcommon.utility.IntentUtilities; 158c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantlerimport com.android.mail.ui.MailAsyncTaskLoader; 160dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 170dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux/** 180dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux * This activity is headless. It exists to load the Account object from the given account ID and 198c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler * then starts the {@link AccountServerSettingsActivity} activity with the incoming/outgoing 208c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler * settings fragment 210dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux */ 220dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieuxpublic class HeadlessAccountSettingsLoader extends Activity { 230dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 248c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler public static Uri getOutgoingSettingsUri(long accountId) { 258c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler final Uri.Builder baseUri = Uri.parse("auth://" + EmailContent.EMAIL_PACKAGE_NAME + 268c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler ".ACCOUNT_SETTINGS/outgoing/").buildUpon(); 278c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler IntentUtilities.setAccountId(baseUri, accountId); 288c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler return baseUri.build(); 298c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler } 308c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler 310dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux @Override 320dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux public void onCreate(Bundle savedInstanceState) { 330dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux super.onCreate(savedInstanceState); 340dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 350dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux final Intent i = getIntent(); 360dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux final long accountID = IntentUtilities.getAccountIdFromIntent(i); 370dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 388c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler if (savedInstanceState == null) { 398c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler new LoadAccountIncomingSettingsAsyncTask(getApplicationContext(), 408c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler "incoming".equals(i.getData().getLastPathSegment())) 410dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, accountID); 420dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux } 430dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux } 440dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 450dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux /** 460dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux * Asynchronously loads the Account object from its ID and then navigates to the AccountSettings 470dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux * fragment. 480dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux */ 490dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux private class LoadAccountIncomingSettingsAsyncTask extends AsyncTask<Long, Void, Account> { 500dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux private final Context mContext; 518c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler private final boolean mIncoming; 520dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 538c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler private LoadAccountIncomingSettingsAsyncTask(Context context, boolean incoming) { 540dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux mContext = context; 558c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler mIncoming = incoming; 560dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux } 570dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 580dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux protected Account doInBackground(Long... params) { 590dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux return Account.restoreAccountWithId(mContext, params[0]); 600dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux } 610dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 620dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux protected void onPostExecute(Account result) { 630dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux // create an Intent to view a new activity 648c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler final Intent intent; 658c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler if (mIncoming) { 668c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler intent = AccountServerSettingsActivity.getIntentForIncoming(mContext, result); 678c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler } else { 688c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler intent = AccountServerSettingsActivity.getIntentForOutgoing(mContext, result); 698c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler } 700dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 710dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 720dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux mContext.startActivity(intent); 730dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux 740dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux finish(); 750dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux } 760dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux } 770dffe3afd7a2fdfb394573aa0d8d06dd90e9fe12James Lemieux}