• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.contacts.common.list;
18 
19 import android.content.Context;
20 import android.util.AttributeSet;
21 import android.util.Log;
22 import android.view.View;
23 import android.widget.ImageView;
24 import android.widget.LinearLayout;
25 import android.widget.RadioButton;
26 import android.widget.TextView;
27 
28 import com.android.contacts.common.R;
29 import com.android.contacts.common.model.AccountTypeManager;
30 import com.android.contacts.common.model.account.AccountType;
31 
32 /**
33  * Contact list filter parameters.
34  */
35 public class ContactListFilterView extends LinearLayout {
36 
37     private static final String TAG = ContactListFilterView.class.getSimpleName();
38 
39     private ImageView mIcon;
40     private TextView mAccountType;
41     private TextView mAccountUserName;
42     private RadioButton mRadioButton;
43     private ContactListFilter mFilter;
44     private boolean mSingleAccount;
45 
ContactListFilterView(Context context)46     public ContactListFilterView(Context context) {
47         super(context);
48     }
49 
ContactListFilterView(Context context, AttributeSet attrs)50     public ContactListFilterView(Context context, AttributeSet attrs) {
51         super(context, attrs);
52     }
53 
setContactListFilter(ContactListFilter filter)54     public void setContactListFilter(ContactListFilter filter) {
55         mFilter = filter;
56     }
57 
getContactListFilter()58     public ContactListFilter getContactListFilter() {
59         return mFilter;
60     }
61 
setSingleAccount(boolean flag)62     public void setSingleAccount(boolean flag) {
63         this.mSingleAccount = flag;
64     }
65 
66     @Override
setActivated(boolean activated)67     public void setActivated(boolean activated) {
68         super.setActivated(activated);
69         if (mRadioButton != null) {
70             mRadioButton.setChecked(activated);
71         } else {
72             // We're guarding against null-pointer exceptions,
73             // but otherwise this code is not expected to work
74             // properly if the button hasn't been initialized.
75             Log.wtf(TAG, "radio-button cannot be activated because it is null");
76         }
77     }
78 
bindView(AccountTypeManager accountTypes)79     public void bindView(AccountTypeManager accountTypes) {
80         if (mAccountType == null) {
81             mIcon = (ImageView) findViewById(R.id.icon);
82             mAccountType = (TextView) findViewById(R.id.accountType);
83             mAccountUserName = (TextView) findViewById(R.id.accountUserName);
84             mRadioButton = (RadioButton) findViewById(R.id.radioButton);
85             mRadioButton.setChecked(isActivated());
86         }
87 
88         if (mFilter == null) {
89             mAccountType.setText(R.string.contactsList);
90             return;
91         }
92 
93         mAccountUserName.setVisibility(View.GONE);
94         switch (mFilter.filterType) {
95             case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
96                 bindView(0, R.string.list_filter_all_accounts);
97                 break;
98             }
99             case ContactListFilter.FILTER_TYPE_STARRED: {
100                 bindView(R.drawable.ic_menu_star_holo_light, R.string.list_filter_all_starred);
101                 break;
102             }
103             case ContactListFilter.FILTER_TYPE_CUSTOM: {
104                 bindView(R.drawable.ic_menu_settings_holo_light, R.string.list_filter_customize);
105                 break;
106             }
107             case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
108                 bindView(0, R.string.list_filter_phones);
109                 break;
110             }
111             case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {
112                 bindView(0, R.string.list_filter_single);
113                 break;
114             }
115             case ContactListFilter.FILTER_TYPE_ACCOUNT: {
116                 mAccountUserName.setVisibility(View.VISIBLE);
117                 mIcon.setVisibility(View.VISIBLE);
118                 if (mFilter.icon != null) {
119                     mIcon.setImageDrawable(mFilter.icon);
120                 } else {
121                     mIcon.setImageResource(R.drawable.unknown_source);
122                 }
123                 final AccountType accountType =
124                         accountTypes.getAccountType(mFilter.accountType, mFilter.dataSet);
125                 mAccountUserName.setText(mFilter.accountName);
126                 mAccountType.setText(accountType.getDisplayLabel(getContext()));
127                 break;
128             }
129         }
130     }
131 
bindView(int iconResource, int textResource)132     private void bindView(int iconResource, int textResource) {
133         if (iconResource != 0) {
134             mIcon.setVisibility(View.VISIBLE);
135             mIcon.setImageResource(iconResource);
136         } else {
137             mIcon.setVisibility(View.GONE);
138         }
139 
140         mAccountType.setText(textResource);
141     }
142 }
143