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}