1bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/* 2bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Copyright (C) 2011 The Android Open Source Project 3bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 4bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Licensed under the Apache License, Version 2.0 (the "License"); 5bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * you may not use this file except in compliance with the License. 6bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * You may obtain a copy of the License at 7bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 8bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 9bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 10bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Unless required by applicable law or agreed to in writing, software 11bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 12bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * See the License for the specific language governing permissions and 14bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * limitations under the License. 15bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 16bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 17bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpackage com.android.email.activity; 18bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 19bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.email.R; 20bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.emailcommon.provider.Account; 21bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.emailcommon.utility.EmailAsyncTask; 22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.emailcommon.utility.Utility; 23bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.google.common.annotations.VisibleForTesting; 24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 25bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.app.Activity; 26bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.content.Context; 27bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.content.Intent; 28bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.net.Uri; 29bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.os.Bundle; 30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 31bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/** 32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * A dummy activity to support old-style (pre-honeycomb) account shortcuts. 33bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic class MessageList extends Activity { 35bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @VisibleForTesting 36bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook static final String EXTRA_ACCOUNT_ID = "com.android.email.activity._ACCOUNT_ID"; 37bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private final EmailAsyncTask.Tracker mTaskTracker = new EmailAsyncTask.Tracker(); 39bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 40bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @Override 41bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void onCreate(Bundle savedInstanceState) { 42bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook super.onCreate(savedInstanceState); 43bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 44bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook final Activity me = this; 45bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook new EmailAsyncTask<Void, Void, Long>(mTaskTracker) { 46bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @Override 47bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected Long doInBackground(Void... params) { 48bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return getAccountFromIntent(me, getIntent()); 49bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 50bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 51bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @Override 52bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void onSuccess(Long accountId) { 53bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if ((accountId == null) || (accountId == Account.NO_ACCOUNT)) { 54bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook // Account deleted? 55bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook Utility.showToast(me, R.string.toast_account_not_found); 56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook Welcome.actionStart(me); 57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } else { 58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook Welcome.actionOpenAccountInbox(me, accountId); 59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 60bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook finish(); 61bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 62bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook }.executeParallel(); 63bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 64bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 65bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @Override 66bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected void onDestroy() { 67bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook mTaskTracker.cancellAllInterrupt(); 68bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook super.onDestroy(); 69bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 70bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 71bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @VisibleForTesting 72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook static long getAccountFromIntent(Context context, Intent i) { 73bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook final Uri uri = i.getData(); 74bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (uri == null) { 75bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return Account.NO_ACCOUNT; 76bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 77bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return Account.getAccountIdFromShortcutSafeUri(context, uri); 78bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 79bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 80bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 81bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Create a froyo/gingerbread style account shortcut intent. Used by unit tests and 82bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * test code in {@link ShortcutPicker}. 83bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 84bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook @VisibleForTesting 85bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook static Intent createFroyoIntent(Context context, Account account) { 86bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook final Intent intent = new Intent(context, MessageList.class); 87bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 88bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook intent.putExtra(EXTRA_ACCOUNT_ID, account.mId); 89bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook intent.setData(account.getShortcutSafeUri()); 90bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 91bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return intent; 92bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 93bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook} 94