1ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng/* 2ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Copyright (C) 2012 The Android Open Source Project 3ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * 4ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 5ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * you may not use this file except in compliance with the License. 6ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * You may obtain a copy of the License at 7ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * 8ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * http://www.apache.org/licenses/LICENSE-2.0 9ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * 10ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Unless required by applicable law or agreed to in writing, software 11ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS, 12ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * See the License for the specific language governing permissions and 14ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * limitations under the License. 15ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 16ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 17ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengpackage com.android.contacts.common.util; 18ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 19ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.app.Activity; 20ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.app.Fragment; 21ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.content.Context; 22ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.content.Intent; 23ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.util.Log; 24ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.view.View; 25ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport android.widget.TextView; 26ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 27ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport com.android.contacts.common.R; 28ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport com.android.contacts.common.list.AccountFilterActivity; 29ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport com.android.contacts.common.list.ContactListFilter; 30ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengimport com.android.contacts.common.list.ContactListFilterController; 31ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 32ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng/** 33ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Utility class for account filter manipulation. 34ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 35ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Chengpublic class AccountFilterUtil { 36ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng private static final String TAG = AccountFilterUtil.class.getSimpleName(); 37ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 38ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng /** 39ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Find TextView with the id "account_filter_header" and set correct text for the account 40ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * filter header. 41ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * 42ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * @param filterContainer View containing TextView with id "account_filter_header" 43ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * @return true when header text is set in the call. You may use this for conditionally 44ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * showing or hiding this entire view. 45ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 46ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng public static boolean updateAccountFilterTitleForPeople(View filterContainer, 47ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng ContactListFilter filter, boolean showTitleForAllAccounts) { 48ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, false); 49ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 50ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 51ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng /** 52ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean, 53ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * boolean)}, but for Phone UI. 54ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 55ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng public static boolean updateAccountFilterTitleForPhone(View filterContainer, 56ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng ContactListFilter filter, boolean showTitleForAllAccounts) { 57ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng return updateAccountFilterTitle( 58ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng filterContainer, filter, showTitleForAllAccounts, true); 59ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 60ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 61ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng private static boolean updateAccountFilterTitle(View filterContainer, 62ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng ContactListFilter filter, boolean showTitleForAllAccounts, 63ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng boolean forPhone) { 64ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng final Context context = filterContainer.getContext(); 65ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng final TextView headerTextView = (TextView) 66ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng filterContainer.findViewById(R.id.account_filter_header); 67ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 68ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng boolean textWasSet = false; 69ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (filter != null) { 70ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (forPhone) { 71ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) { 72ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (showTitleForAllAccounts) { 73ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(R.string.list_filter_phones); 74ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 75ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 76ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) { 77ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(context.getString( 78ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng R.string.listAllContactsInAccount, filter.accountName)); 79ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 80ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { 81ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(R.string.listCustomView); 82ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 83ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else { 84ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected."); 85ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 86ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else { 87ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) { 88ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (showTitleForAllAccounts) { 89ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(R.string.list_filter_all_accounts); 90ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 91ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 92ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) { 93ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(context.getString( 94ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng R.string.listAllContactsInAccount, filter.accountName)); 95ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 96ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { 97ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(R.string.listCustomView); 98ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 99ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) { 100ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng headerTextView.setText(R.string.listSingleContact); 101ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng textWasSet = true; 102ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else { 103ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected."); 104ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 105ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 106ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else { 107ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng Log.w(TAG, "Filter is null."); 108ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 109ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng return textWasSet; 110ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 111ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 112ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng /** 113ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Launches account filter setting Activity using 114ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * {@link Activity#startActivityForResult(Intent, int)}. 115ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * 116ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * @param activity 117ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * @param requestCode requestCode for {@link Activity#startActivityForResult(Intent, int)} 118ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * @param currentFilter currently-selected filter, so that it can be displayed as activated. 119ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 120ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng public static void startAccountFilterActivityForResult( 121ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng Activity activity, int requestCode, ContactListFilter currentFilter) { 122ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng final Intent intent = new Intent(activity, AccountFilterActivity.class); 123ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng intent.putExtra(AccountFilterActivity.KEY_EXTRA_CURRENT_FILTER, currentFilter); 124ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng activity.startActivityForResult(intent, requestCode); 125ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 126ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 127ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng /** 128ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Very similar to 129ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * {@link #startAccountFilterActivityForResult(Activity, int, ContactListFilter)} 130ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * but uses Fragment instead. 131ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 132ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng public static void startAccountFilterActivityForResult( 133ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng Fragment fragment, int requestCode, ContactListFilter currentFilter) { 134ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng final Activity activity = fragment.getActivity(); 135ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (activity != null) { 136ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng final Intent intent = new Intent(activity, AccountFilterActivity.class); 137ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng intent.putExtra(AccountFilterActivity.KEY_EXTRA_CURRENT_FILTER, currentFilter); 138ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng fragment.startActivityForResult(intent, requestCode); 139ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else { 140ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng Log.w(TAG, "getActivity() returned null. Ignored"); 141ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 142ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 143ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng 144ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng /** 145ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * Useful method to handle onActivityResult() for 146ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * {@link #startAccountFilterActivityForResult(Activity, int)} or 147ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * {@link #startAccountFilterActivityForResult(Fragment, int)}. 148ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * 149ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng * This will update filter via a given ContactListFilterController. 150ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng */ 151ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng public static void handleAccountFilterResult( 152ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng ContactListFilterController filterController, int resultCode, Intent data) { 153ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (resultCode == Activity.RESULT_OK) { 154ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng final ContactListFilter filter = (ContactListFilter) 155ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng data.getParcelableExtra(AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER); 156ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (filter == null) { 157ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng return; 158ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 159ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) { 160ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng filterController.selectCustomFilter(); 161ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } else { 162ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng filterController.setContactListFilter(filter, true); 163ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 164ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 165ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng } 166ba2c125b07086a88a3517fcf381a3a400c42afd3Chiao Cheng} 167