blob: 18743c65ea97f5ec3ace9fa7dc65295fbf53b99e [file] [log] [blame]
/*
* Copyright (C) 2012 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.contacts.common.util;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import com.android.contacts.common.R;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
/** Utility class for account filter manipulation. */
public class AccountFilterUtil {
public static final String EXTRA_CONTACT_LIST_FILTER = "contactListFilter";
private static final String TAG = AccountFilterUtil.class.getSimpleName();
/**
* Find TextView with the id "account_filter_header" and set correct text for the account filter
* header.
*
* @param filterContainer View containing TextView with id "account_filter_header"
* @return true when header text is set in the call. You may use this for conditionally showing or
* hiding this entire view.
*/
public static boolean updateAccountFilterTitleForPeople(
View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) {
return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, false);
}
/**
* Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean,
* boolean)}, but for Phone UI.
*/
public static boolean updateAccountFilterTitleForPhone(
View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) {
return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, true);
}
private static boolean updateAccountFilterTitle(
View filterContainer,
ContactListFilter filter,
boolean showTitleForAllAccounts,
boolean forPhone) {
final Context context = filterContainer.getContext();
final TextView headerTextView =
(TextView) filterContainer.findViewById(R.id.account_filter_header);
boolean textWasSet = false;
if (filter != null) {
if (forPhone) {
if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
if (showTitleForAllAccounts) {
headerTextView.setText(R.string.list_filter_phones);
textWasSet = true;
}
} else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
headerTextView.setText(
context.getString(R.string.listAllContactsInAccount, filter.accountName));
textWasSet = true;
} else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
headerTextView.setText(R.string.listCustomView);
textWasSet = true;
} else {
Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected.");
}
} else {
if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
if (showTitleForAllAccounts) {
headerTextView.setText(R.string.list_filter_all_accounts);
textWasSet = true;
}
} else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
headerTextView.setText(
context.getString(R.string.listAllContactsInAccount, filter.accountName));
textWasSet = true;
} else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
headerTextView.setText(R.string.listCustomView);
textWasSet = true;
} else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
headerTextView.setText(R.string.listSingleContact);
textWasSet = true;
} else {
Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected.");
}
}
} else {
Log.w(TAG, "Filter is null.");
}
return textWasSet;
}
/** This will update filter via a given ContactListFilterController. */
public static void handleAccountFilterResult(
ContactListFilterController filterController, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
final ContactListFilter filter = data.getParcelableExtra(EXTRA_CONTACT_LIST_FILTER);
if (filter == null) {
return;
}
if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
filterController.selectCustomFilter();
} else {
filterController.setContactListFilter(filter, true);
}
}
}
}