diff options
Diffstat (limited to 'src/com/android/email/provider/FolderPickerActivity.java')
-rw-r--r-- | src/com/android/email/provider/FolderPickerActivity.java | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/src/com/android/email/provider/FolderPickerActivity.java b/src/com/android/email/provider/FolderPickerActivity.java deleted file mode 100644 index 8e0598b24..000000000 --- a/src/com/android/email/provider/FolderPickerActivity.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. - * Licensed to The Android Open Source Project. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.email.provider; - -import android.app.Activity; -import android.app.ProgressDialog; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.content.Intent; -import android.database.ContentObserver; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; - -import com.android.email.R; -import com.android.emailcommon.provider.Account; -import com.android.emailcommon.provider.EmailContent; -import com.android.emailcommon.provider.Mailbox; -import com.android.emailcommon.provider.EmailContent.AccountColumns; -import com.android.emailcommon.provider.EmailContent.MailboxColumns; -import com.android.mail.providers.Folder; -import com.android.mail.utils.LogUtils; - -public class FolderPickerActivity extends Activity implements FolderPickerCallback { - private static final String TAG = "FolderPickerActivity"; - public static final String MAILBOX_TYPE_EXTRA = "mailbox_type"; - - private long mAccountId; - private int mMailboxType; - private AccountObserver mAccountObserver; - private String mAccountName; - private boolean mInSetup = true; - - @Override - public void onCreate(Bundle bundle) { - super.onCreate(bundle); - Intent i = getIntent(); - Uri uri = i.getData(); - int headerId; - final com.android.mail.providers.Account uiAccount; - // If we've gotten a Uri, then this is a call from the UI in response to setupIntentUri - // in an account (meaning the account requires setup) - if (uri != null) { - String id = uri.getQueryParameter("account"); - if (id == null) { - LogUtils.w(TAG, "No account # in Uri?"); - finish(); - return; - } - try { - mAccountId = Long.parseLong(id); - } catch (NumberFormatException e) { - LogUtils.w(TAG, "Invalid account # in Uri?"); - finish(); - return; - } - // We act a bit differently if we're coming to set up the trash after account creation - mInSetup = !i.hasExtra(MAILBOX_TYPE_EXTRA); - mMailboxType = i.getIntExtra(MAILBOX_TYPE_EXTRA, Mailbox.TYPE_TRASH); - long trashMailboxId = Mailbox.findMailboxOfType(this, mAccountId, Mailbox.TYPE_TRASH); - // If we already have a trash mailbox, we're done (if in setup; a race?) - if (trashMailboxId != Mailbox.NO_MAILBOX && mInSetup) { - LogUtils.w(TAG, "Trash folder already exists"); - finish(); - return; - } - Account account = Account.restoreAccountWithId(this, mAccountId); - if (account == null) { - LogUtils.w(TAG, "No account?"); - finish(); - } else { - mAccountName = account.mDisplayName; - // Two possibilities here; either we have our folder list, or we don't - if ((account.mFlags & Account.FLAGS_INITIAL_FOLDER_LIST_LOADED) != 0) { - // If we've got them, just start up the picker dialog - startPickerForAccount(); - } else { - // Otherwise, wait for the folders to show up - waitForFolders(); - } - } - } else { - // In this case, we're coming from Settings - uiAccount = i.getParcelableExtra(EmailProvider.PICKER_UI_ACCOUNT); - mAccountName = uiAccount.getDisplayName(); - mAccountId = Long.parseLong(uiAccount.uri.getLastPathSegment()); - mMailboxType = i.getIntExtra(EmailProvider.PICKER_MAILBOX_TYPE, -1); - headerId = i.getIntExtra(EmailProvider.PICKER_HEADER_ID, 0); - if (headerId == 0) { - finish(); - return; - } - startPicker(uiAccount.folderListUri, headerId); - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - // Clean up - if (mAccountObserver != null) { - getContentResolver().unregisterContentObserver(mAccountObserver); - mAccountObserver = null; - } - if (mWaitingForFoldersDialog != null) { - mWaitingForFoldersDialog.dismiss(); - mWaitingForFoldersDialog = null; - } - } - - private class AccountObserver extends ContentObserver { - private final Context mContext; - - public AccountObserver(Context context, Handler handler) { - super(handler); - mContext = context; - } - - @Override - public void onChange(boolean selfChange) { - Account account = Account.restoreAccountWithId(mContext, mAccountId); - // All we care about is whether the folder list is now loaded - if ((account.mFlags & Account.FLAGS_INITIAL_FOLDER_LIST_LOADED) != 0 && - (mAccountObserver != null)) { - mContext.getContentResolver().unregisterContentObserver(mAccountObserver); - mAccountObserver = null; - // Bring down the ProgressDialog and show the picker - if (mWaitingForFoldersDialog != null) { - mWaitingForFoldersDialog.dismiss(); - mWaitingForFoldersDialog = null; - } - startPickerForAccount(); - } - } - } - - private ProgressDialog mWaitingForFoldersDialog; - - private void waitForFolders() { - /// Show "Waiting for folders..." dialog - mWaitingForFoldersDialog = new ProgressDialog(this); - mWaitingForFoldersDialog.setIndeterminate(true); - mWaitingForFoldersDialog.setMessage(getString(R.string.account_waiting_for_folders_msg)); - mWaitingForFoldersDialog.show(); - - // Listen for account changes - mAccountObserver = new AccountObserver(this, new Handler()); - Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, mAccountId); - getContentResolver().registerContentObserver(uri, false, mAccountObserver); - } - - private void startPickerForAccount() { - int headerId = R.string.trash_folder_selection_title; - Uri uri = Uri.parse("content://" + EmailContent.AUTHORITY + "/uifullfolders/" + mAccountId); - startPicker(uri, headerId); - } - - private void startPicker(Uri uri, int headerId) { - String header = getString(headerId, mAccountName); - FolderPickerDialog dialog = - new FolderPickerDialog(this, uri, this, header, !mInSetup); - dialog.show(); - } - - @Override - public void select(Folder folder) { - String folderId = folder.folderUri.fullUri.getLastPathSegment(); - Long id = Long.parseLong(folderId); - ContentValues values = new ContentValues(); - - // If we already have a mailbox of this type, change it back to generic mail type - Mailbox ofType = Mailbox.restoreMailboxOfType(this, mAccountId, mMailboxType); - if (ofType != null) { - values.put(MailboxColumns.TYPE, Mailbox.TYPE_MAIL); - getContentResolver().update( - ContentUris.withAppendedId(Mailbox.CONTENT_URI, ofType.mId), values, - null, null); - } - - // Change this mailbox to be of the desired type - Mailbox mailbox = Mailbox.restoreMailboxWithId(this, id); - if (mailbox != null) { - values.put(MailboxColumns.TYPE, mMailboxType); - getContentResolver().update( - ContentUris.withAppendedId(Mailbox.CONTENT_URI, mailbox.mId), values, - null, null); - values.clear(); - // Touch the account so that UI won't bring up this picker again - Account account = Account.restoreAccountWithId(this, mAccountId); - values.put(AccountColumns.FLAGS, account.mFlags); - getContentResolver().update( - ContentUris.withAppendedId(Account.CONTENT_URI, account.mId), values, - null, null); - } - finish(); - } - - @Override - public void cancel() { - finish(); - } -} |