126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov/* 226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * 426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * you may not use this file except in compliance with the License. 626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * You may obtain a copy of the License at 726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * 826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * 1026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 1126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 1226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * See the License for the specific language governing permissions and 1426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * limitations under the License. 1526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov */ 1626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 1726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovpackage com.android.contacts; 1826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 1926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.accounts.Account; 2026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.accounts.AccountManager; 2126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.content.ContentResolver; 2226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.content.Context; 2326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.content.IContentService; 2426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.os.RemoteException; 2526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.provider.ContactsContract; 2626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.telephony.TelephonyManager; 2726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.util.AttributeSet; 2826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.util.Log; 2926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.widget.ScrollView; 3026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovimport android.widget.TextView; 3126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 3226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov/** 3326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov * Displays a message when there is nothing to display in a contact list. 3426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov */ 3526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikovpublic class ContactListEmptyView extends ScrollView { 3626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 3726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov private static final String TAG = "ContactListEmptyView"; 3826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 3926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov public ContactListEmptyView(Context context, AttributeSet attrs) { 4026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov super(context, attrs); 4126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 4226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 4326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov public void hide() { 4426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov TextView empty = (TextView) findViewById(R.id.emptyText); 4526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setVisibility(GONE); 4626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 4726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 48807a0fe5e54980b1cd8e97590d5b465ca9d6dea5Dmitri Plotnikov public void show(boolean searchMode, boolean displayOnlyPhones, 4926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov boolean isFavoritesMode, boolean isQueryMode, boolean isShortcutAction, 5026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov boolean isMultipleSelectionEnabled, boolean showSelectedOnly) { 5126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (searchMode) { 5226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov return; 5326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 5426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 5526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov TextView empty = (TextView) findViewById(R.id.emptyText); 5626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov Context context = getContext(); 5726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (displayOnlyPhones) { 5826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsWithPhoneNumbers)); 5926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else if (isFavoritesMode) { 6026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noFavoritesHelpText)); 6126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else if (isQueryMode) { 6226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noMatchingContacts)); 6326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } if (isMultipleSelectionEnabled) { 6426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (showSelectedOnly) { 6526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.no_contacts_selected)); 6626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else { 6726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsWithPhoneNumbers)); 6826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 6926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else { 7026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov TelephonyManager telephonyManager = 7126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 7226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov boolean hasSim = telephonyManager.hasIccCard(); 7326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (isSyncActive()) { 7426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (isShortcutAction) { 7526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov // Help text is the same no matter whether there is SIM or not. 7626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText( 7726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov context.getText(R.string.noContactsHelpTextWithSyncForCreateShortcut)); 7826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else if (hasSim) { 7926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsHelpTextWithSync)); 8026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else { 8126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsNoSimHelpTextWithSync)); 8226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 8326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else { 8426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (isShortcutAction) { 8526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov // Help text is the same no matter whether there is SIM or not. 8626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsHelpTextForCreateShortcut)); 8726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else if (hasSim) { 8826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsHelpText)); 8926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } else { 9026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setText(context.getText(R.string.noContactsNoSimHelpText)); 9126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 9226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 9326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 9426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov empty.setVisibility(VISIBLE); 9526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 9626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov 9726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov private boolean isSyncActive() { 9826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov Account[] accounts = AccountManager.get(getContext()).getAccounts(); 9926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (accounts != null && accounts.length > 0) { 10026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov IContentService contentService = ContentResolver.getContentService(); 10126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov for (Account account : accounts) { 10226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov try { 10326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov if (contentService.isSyncActive(account, ContactsContract.AUTHORITY)) { 10426cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov return true; 10526cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 10626cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } catch (RemoteException e) { 10726cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov Log.e(TAG, "Could not get the sync status"); 10826cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 10926cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 11026cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 11126cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov return false; 11226cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov } 11326cda1a38eb348cf4e7d17a711d420207c66d45dDmitri Plotnikov} 114