1f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira/* 2f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * Copyright (C) 2012 Google Inc. 3f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * Licensed to The Android Open Source Project. 4f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * 5f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 6f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * you may not use this file except in compliance with the License. 7f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * You may obtain a copy of the License at 8f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * 9f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 10f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * 11f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * Unless required by applicable law or agreed to in writing, software 12f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 13f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * See the License for the specific language governing permissions and 15f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira * limitations under the License. 16f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira */ 17ac09485a8283d3f9d5a8e0f5995938cc1a384be0Mindy Pereira 18f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereirapackage com.android.mail.ui; 19f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira 202a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantlerimport android.app.AlertDialog; 212a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantlerimport android.app.LoaderManager; 22f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereiraimport android.content.Context; 232a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantlerimport android.content.CursorLoader; 24f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereiraimport android.content.DialogInterface; 252a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantlerimport android.content.Loader; 26f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereiraimport android.database.Cursor; 278db7e407109532557718c6b8064792f2df7a073dMindy Pereiraimport android.net.Uri; 282a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantlerimport android.os.Bundle; 29f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira 30f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereiraimport com.android.mail.R; 31293ee6858b5b2b049610992114aa82495631a246Mindy Pereiraimport com.android.mail.providers.Conversation; 326778f4663a790d3e9d4c6a2f43292eef43c1e0bdMindy Pereiraimport com.android.mail.providers.Folder; 33f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereiraimport com.android.mail.providers.UIProvider; 34e7e0163126fa81af58ae6dbffc20adb610580fe2Scott Kennedyimport com.android.mail.providers.UIProvider.FolderType; 3541b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereiraimport com.android.mail.ui.FolderSelectorAdapter.FolderRow; 36935b993f6ebb1345e336b3fd996365b781a5e897Mindy Pereiraimport com.android.mail.utils.Utils; 37e7e0163126fa81af58ae6dbffc20adb610580fe2Scott Kennedyimport com.google.common.collect.ImmutableSet; 38f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira 3967d75721f73844754220e5e81a23c32a62be1723Mindy Pereiraimport java.util.Arrays; 40f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereiraimport java.util.HashMap; 4141b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereiraimport java.util.HashSet; 42b2033d855ab0f13e253e5403ce25989bcbc49488Andy Huangimport java.util.List; 4374098779f90c61487ff0b5bbb7a458f0a8818047Jin Caoimport java.util.Map; 4474098779f90c61487ff0b5bbb7a458f0a8818047Jin Caoimport java.util.Set; 45f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira 46ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal/** 479eb1c9a76a400f84c002b58c831119119ebf4870Mark Wei * Displays a folder selection dialog for the conversation provided. It allows 489eb1c9a76a400f84c002b58c831119119ebf4870Mark Wei * the user to mark folders to assign that conversation to. 49ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal */ 508f98ac013f775cdf186578018f926ac329070541Mark Weipublic class MultiFoldersSelectionDialog extends FolderSelectionDialog { 512a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler private boolean mSingle; 52eb86a56580c220e4442951e77e9e7c7658fbf09bVikram Aggarwal private final HashMap<Uri, FolderOperation> mOperations; 539eb1c9a76a400f84c002b58c831119119ebf4870Mark Wei 542a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler public MultiFoldersSelectionDialog() { 558f98ac013f775cdf186578018f926ac329070541Mark Wei mOperations = new HashMap<Uri, FolderOperation>(); 56ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal } 57ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal 582a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler private static final int FOLDER_LOADER_ID = 0; 592a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler private static final String FOLDER_QUERY_URI_TAG = "folderQueryUri"; 602a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 612a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler private static final String SAVESTATE_OPERATIONS_TAG = "operations"; 622a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 638f98ac013f775cdf186578018f926ac329070541Mark Wei @Override 642a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler public void onCreate(Bundle savedInstanceState) { 652a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler super.onCreate(savedInstanceState); 662a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 672a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mSingle = !mAccount 682a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler .supportsCapability(UIProvider.AccountCapabilities.MULTIPLE_FOLDERS_PER_CONV); 692a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mTitleId = R.string.change_folders_selection_dialog_title; 702a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 712a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler if (savedInstanceState != null) { 722a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final FolderOperation[] savedOps = (FolderOperation[]) 732a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler savedInstanceState.getParcelableArray(SAVESTATE_OPERATIONS_TAG); 742a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler for (final FolderOperation op : savedOps) { 752a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mOperations.put(op.mFolder.folderUri.fullUri, op); 76935b993f6ebb1345e336b3fd996365b781a5e897Mindy Pereira } 77293ee6858b5b2b049610992114aa82495631a246Mindy Pereira } 782a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 792a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final Bundle args = new Bundle(1); 802a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler args.putParcelable(FOLDER_QUERY_URI_TAG, !Utils.isEmpty(mAccount.fullFolderListUri) ? 812a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mAccount.fullFolderListUri : mAccount.folderListUri); 822a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final Context loaderContext = getActivity().getApplicationContext(); 832a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler getLoaderManager().initLoader(FOLDER_LOADER_ID, args, 842a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler new LoaderManager.LoaderCallbacks<Cursor>() { 852a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler @Override 862a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler public Loader<Cursor> onCreateLoader(int id, Bundle args) { 872a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final Uri queryUri = args.getParcelable(FOLDER_QUERY_URI_TAG); 882a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler return new CursorLoader(loaderContext, queryUri, 892a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler UIProvider.FOLDERS_PROJECTION, null, null, null); 902a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 912a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 922a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler @Override 932a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 942a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final Context context = getActivity(); 952a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler if (data == null || context == null) { 962a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler return; 972a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 982a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final AlertDialog dialog = (AlertDialog) getDialog(); 995291de861af3e7cf11719a71f0a236d76a79b327Martin Hibdon if (dialog == null) { 1005291de861af3e7cf11719a71f0a236d76a79b327Martin Hibdon // This could happen if the dialog is dismissed just before the 1015291de861af3e7cf11719a71f0a236d76a79b327Martin Hibdon // load finishes. 1025291de861af3e7cf11719a71f0a236d76a79b327Martin Hibdon return; 1035291de861af3e7cf11719a71f0a236d76a79b327Martin Hibdon } 1042a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // The number of view types changes here, so we have to reset the listview's 1052a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // adapter. 1062a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler dialog.getListView().setAdapter(null); 107cc2e1ee5ea19d1b166a7542ea03f4fd4e5c807e3Rohan Shah dialog.getListView().setDivider(null); 1082a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 1092a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final HashSet<String> checked = new HashSet<String>(); 1102a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler for (final Conversation conversation : mTarget) { 1112a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler final List<Folder> rawFolders = conversation.getRawFolders(); 1122a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler if (rawFolders != null && rawFolders.size() > 0) { 1132a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // Parse the raw folders and get all the uris. 1142a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler checked.addAll(Arrays.asList(Folder.getUriArray(rawFolders))); 1152a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } else { 1162a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // There are no folders for this conversation, so it must 1172a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // belong to the folder we are currently looking at. 1182a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler checked.add(mCurrentFolder.folderUri.fullUri.toString()); 1192a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 1202a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 12174098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao final Set<String> originalChecked = ImmutableSet.copyOf(checked); 12274098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao for (final Map.Entry<Uri, FolderOperation> entry : mOperations.entrySet()) { 12374098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao if (entry.getValue().mAdd) { 12474098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao checked.add(entry.getKey().toString()); 12574098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao } else { 12674098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao checked.remove(entry.getKey().toString()); 12774098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao } 1282a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 129872f34134c62338ed0d003a844d3db2ada030afaJin Cao mAdapter.clearSections(); 1302a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // TODO(mindyp) : bring this back in UR8 when Email providers 1312a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // will have divided folder sections. 1322a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler /* final String[] headers = mContext.getResources() 1332a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler .getStringArray(R.array.moveto_folder_sections); 1342a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // Currently, the number of adapters are assumed to match the 1352a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // number of headers in the string array. 1362a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mAdapter.addSection(new SystemFolderSelectorAdapter(mContext, 1372a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler foldersCursor, checked, R.layout.multi_folders_view, null)); 1382a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 1392a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // TODO(mindyp): we currently do not support frequently moved to 1402a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler // folders, at headers[1]; need to define what that means.*/ 14174098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao 14274098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao Cursor c = AddableFolderSelectorAdapter.filterFolders(data, 14374098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao ImmutableSet.of(FolderType.INBOX_SECTION), originalChecked, 14474098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao true /* includeOnlyInitiallySelected */); 14574098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao if (c.getCount() > 0) { 14674098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao mAdapter.addSection(new AddableFolderSelectorAdapter(context, c, 147106a12a1b6642e8c2f716aefa846d9664fbec158Andrew Sapperstein checked, R.layout.multi_folders_view)); 14874098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao } 14974098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao 15074098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao c = AddableFolderSelectorAdapter.filterFolders(data, 15174098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao ImmutableSet.of(FolderType.INBOX_SECTION), originalChecked, 15274098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao false /* includeOnlyInitiallySelected */); 15374098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao if (c.getCount() > 0) { 15474098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao mAdapter.addSection(new AddableFolderSelectorAdapter(context, c, 155106a12a1b6642e8c2f716aefa846d9664fbec158Andrew Sapperstein checked, R.layout.multi_folders_view)); 15674098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao } 1572a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 1582a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler dialog.getListView().setAdapter(mAdapter); 1592a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 1602a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 1612a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler @Override 1622a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler public void onLoaderReset(Loader<Cursor> loader) { 1632a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mAdapter.clearSections(); 1642a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 1652a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler }); 1662a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler } 1672a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler 1682a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler @Override 1692a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler public void onSaveInstanceState(Bundle outState) { 1702a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler super.onSaveInstanceState(outState); 1712a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler outState.putParcelableArray(SAVESTATE_OPERATIONS_TAG, 1722a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler mOperations.values().toArray(new FolderOperation[mOperations.size()])); 173f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira } 174f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira 1759eb1c9a76a400f84c002b58c831119119ebf4870Mark Wei @Override 1768f98ac013f775cdf186578018f926ac329070541Mark Wei protected void onListItemClick(int position) { 1778f98ac013f775cdf186578018f926ac329070541Mark Wei final Object item = mAdapter.getItem(position); 1788f98ac013f775cdf186578018f926ac329070541Mark Wei if (item instanceof FolderRow) { 1798f98ac013f775cdf186578018f926ac329070541Mark Wei update((FolderRow) item); 1808f98ac013f775cdf186578018f926ac329070541Mark Wei } 18141b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira } 18241b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira 18341b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira /** 18430fd47bf1947da5ad813cb957b6cbe569dce563aMindy Pereira * Call this to update the state of folders as a result of them being 18541b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira * selected / de-selected. 18641b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira * 18741b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira * @param row The item being updated. 18841b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira */ 1892a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler private void update(FolderSelectorAdapter.FolderRow row) { 19074098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao final boolean add = !row.isSelected(); 19141b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira if (mSingle) { 19241b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira if (!add) { 19341b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira // This would remove the check on a single radio button, so just 19441b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira // return. 19541b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira return; 19641b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira } 19741b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira // Clear any other checked items. 198ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal for (int i = 0, size = mAdapter.getCount(); i < size; i++) { 199ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal final Object item = mAdapter.getItem(i); 2005650bb59fd9bb351ee94e44a32256e717048ed63Mindy Pereira if (item instanceof FolderRow) { 20174098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao ((FolderRow)item).setIsSelected(false); 202ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal final Folder folder = ((FolderRow)item).getFolder(); 203259df5b9e11908c8ef7c91483924891dd96b3c27Scott Kennedy mOperations.put(folder.folderUri.fullUri, 204259df5b9e11908c8ef7c91483924891dd96b3c27Scott Kennedy new FolderOperation(folder, false)); 2055650bb59fd9bb351ee94e44a32256e717048ed63Mindy Pereira } 20641b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira } 20741b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira } 20874098779f90c61487ff0b5bbb7a458f0a8818047Jin Cao row.setIsSelected(add); 20941b1c8d641caf29a0699a8080f469b3984fe319eMindy Pereira mAdapter.notifyDataSetChanged(); 210ef78cb7a26ee6dc551f0e563216069fe68427316Vikram Aggarwal final Folder folder = row.getFolder(); 211259df5b9e11908c8ef7c91483924891dd96b3c27Scott Kennedy mOperations.put(folder.folderUri.fullUri, new FolderOperation(folder, add)); 212f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira } 213f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira 214f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira @Override 215f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira public void onClick(DialogInterface dialog, int which) { 216f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira switch (which) { 217f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira case DialogInterface.BUTTON_POSITIVE: 2182a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler getConversationUpdater().assignFolder(mOperations.values(), mTarget, mBatch, 2192a4be2459962700e1a38ba897de5d2f5913412f5Tony Mantler true /* showUndo */, false /* isMoveTo */); 220f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira break; 221f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira case DialogInterface.BUTTON_NEGATIVE: 222f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira break; 223f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira default: 224f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira break; 225f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira } 226f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira } 227f3dfb15b47aabd56fa7b7c99685ba6fad1d7e931Mindy Pereira} 228