| /* |
| * Copyright (C) 2009 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.example.android.contactmanager; |
| |
| import android.app.Activity; |
| import android.content.Intent; |
| import android.database.Cursor; |
| import android.net.Uri; |
| import android.os.Bundle; |
| import android.provider.ContactsContract; |
| import android.util.Log; |
| import android.view.View; |
| import android.widget.Button; |
| import android.widget.CheckBox; |
| import android.widget.CompoundButton; |
| import android.widget.CompoundButton.OnCheckedChangeListener; |
| import android.widget.ListView; |
| import android.widget.SimpleCursorAdapter; |
| |
| public final class ContactManager extends Activity |
| { |
| |
| public static final String TAG = "ContactManager"; |
| |
| private Button mAddAccountButton; |
| private ListView mContactList; |
| private boolean mShowInvisible; |
| private CheckBox mShowInvisibleControl; |
| |
| /** |
| * Called when the activity is first created. Responsible for initializing the UI. |
| */ |
| @Override |
| public void onCreate(Bundle savedInstanceState) |
| { |
| Log.v(TAG, "Activity State: onCreate()"); |
| super.onCreate(savedInstanceState); |
| setContentView(R.layout.contact_manager); |
| |
| // Obtain handles to UI objects |
| mAddAccountButton = (Button) findViewById(R.id.addContactButton); |
| mContactList = (ListView) findViewById(R.id.contactList); |
| mShowInvisibleControl = (CheckBox) findViewById(R.id.showInvisible); |
| |
| // Initialize class properties |
| mShowInvisible = false; |
| mShowInvisibleControl.setChecked(mShowInvisible); |
| |
| // Register handler for UI elements |
| mAddAccountButton.setOnClickListener(new View.OnClickListener() { |
| public void onClick(View v) { |
| Log.d(TAG, "mAddAccountButton clicked"); |
| launchContactAdder(); |
| } |
| }); |
| mShowInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() { |
| public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
| Log.d(TAG, "mShowInvisibleControl changed: " + isChecked); |
| mShowInvisible = isChecked; |
| populateContactList(); |
| } |
| }); |
| |
| // Populate the contact list |
| populateContactList(); |
| } |
| |
| /** |
| * Populate the contact list based on account currently selected in the account spinner. |
| */ |
| private void populateContactList() { |
| // Build adapter with contact entries |
| Cursor cursor = getContacts(); |
| String[] fields = new String[] { |
| ContactsContract.Data.DISPLAY_NAME |
| }; |
| SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor, |
| fields, new int[] {R.id.contactEntryText}); |
| mContactList.setAdapter(adapter); |
| } |
| |
| /** |
| * Obtains the contact list for the currently selected account. |
| * |
| * @return A cursor for for accessing the contact list. |
| */ |
| private Cursor getContacts() |
| { |
| // Run query |
| Uri uri = ContactsContract.Contacts.CONTENT_URI; |
| String[] projection = new String[] { |
| ContactsContract.Contacts._ID, |
| ContactsContract.Contacts.DISPLAY_NAME |
| }; |
| String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" + |
| (mShowInvisible ? "0" : "1") + "'"; |
| String[] selectionArgs = null; |
| String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; |
| |
| return managedQuery(uri, projection, selection, selectionArgs, sortOrder); |
| } |
| |
| /** |
| * Launches the ContactAdder activity to add a new contact to the selected accont. |
| */ |
| protected void launchContactAdder() { |
| Intent i = new Intent(this, ContactAdder.class); |
| startActivity(i); |
| } |
| } |