summaryrefslogtreecommitdiffstats
path: root/src/com/android/contacts/common/list/ProfileAndContactsLoader.java
diff options
context:
space:
mode:
authorChiao Cheng <chiaocheng@google.com>2012-11-01 13:41:51 -0700
committerChiao Cheng <chiaocheng@google.com>2012-11-05 11:30:11 -0800
commitd6bba124836ec2f528b329759e38fda6297fec49 (patch)
tree8e4ac867a8b1c5bfdacf7f60eb8ec1b48c0b84b6 /src/com/android/contacts/common/list/ProfileAndContactsLoader.java
parent72b7e32840720b40f55cfd5b2fc61576a8e70f21 (diff)
downloadandroid_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.java90
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();
+ }
+ }
+}