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