diff options
author | Chiao Cheng <chiaocheng@google.com> | 2012-11-01 13:41:51 -0700 |
---|---|---|
committer | Chiao Cheng <chiaocheng@google.com> | 2012-11-05 11:30:11 -0800 |
commit | d6bba124836ec2f528b329759e38fda6297fec49 (patch) | |
tree | 8e4ac867a8b1c5bfdacf7f60eb8ec1b48c0b84b6 /src/com/android/contacts/common/list/ProfileAndContactsLoader.java | |
parent | 72b7e32840720b40f55cfd5b2fc61576a8e70f21 (diff) | |
download | android_packages_apps_ContactsCommon-d6bba124836ec2f528b329759e38fda6297fec49.tar.gz android_packages_apps_ContactsCommon-d6bba124836ec2f528b329759e38fda6297fec49.tar.bz2 android_packages_apps_ContactsCommon-d6bba124836ec2f528b329759e38fda6297fec49.zip |
Moving ContactListItemView and dependent classes.
Further clean-up of PhoneFavoriteFragment in Dialer app to move all necessary
dependencies into Contacts Common package.
Bug: 6993891
Change-Id: Ie310707da47d5e5c91e281d140f11e1eb47a5118
Diffstat (limited to 'src/com/android/contacts/common/list/ProfileAndContactsLoader.java')
-rw-r--r-- | src/com/android/contacts/common/list/ProfileAndContactsLoader.java | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/com/android/contacts/common/list/ProfileAndContactsLoader.java b/src/com/android/contacts/common/list/ProfileAndContactsLoader.java new file mode 100644 index 00000000..9d2bbbb1 --- /dev/null +++ b/src/com/android/contacts/common/list/ProfileAndContactsLoader.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2011 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.list; + +import android.content.Context; +import android.content.CursorLoader; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.database.MergeCursor; +import android.os.Bundle; +import android.provider.ContactsContract.Profile; + +import com.google.common.collect.Lists; + +import java.util.List; + +/** + * A loader for use in the default contact list, which will also query for the user's profile + * if configured to do so. + */ +public class ProfileAndContactsLoader extends CursorLoader { + + private boolean mLoadProfile; + private String[] mProjection; + + public ProfileAndContactsLoader(Context context) { + super(context); + } + + public void setLoadProfile(boolean flag) { + mLoadProfile = flag; + } + + public void setProjection(String[] projection) { + super.setProjection(projection); + mProjection = projection; + } + + @Override + public Cursor loadInBackground() { + // First load the profile, if enabled. + List<Cursor> cursors = Lists.newArrayList(); + if (mLoadProfile) { + cursors.add(loadProfile()); + } + final Cursor contactsCursor = super.loadInBackground(); + cursors.add(contactsCursor); + return new MergeCursor(cursors.toArray(new Cursor[cursors.size()])) { + @Override + public Bundle getExtras() { + // Need to get the extras from the contacts cursor. + return contactsCursor.getExtras(); + } + }; + } + + /** + * Loads the profile into a MatrixCursor. + */ + private MatrixCursor loadProfile() { + Cursor cursor = getContext().getContentResolver().query(Profile.CONTENT_URI, mProjection, + null, null, null); + try { + MatrixCursor matrix = new MatrixCursor(mProjection); + Object[] row = new Object[mProjection.length]; + while (cursor.moveToNext()) { + for (int i = 0; i < row.length; i++) { + row[i] = cursor.getString(i); + } + matrix.addRow(row); + } + return matrix; + } finally { + cursor.close(); + } + } +} |