132f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro/* 232f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * Copyright (C) 2011 The Android Open Source Project 332f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * 432f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * Licensed under the Apache License, Version 2.0 (the "License"); 532f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * you may not use this file except in compliance with the License. 632f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * You may obtain a copy of the License at 732f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * 832f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * http://www.apache.org/licenses/LICENSE-2.0 932f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * 1032f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * Unless required by applicable law or agreed to in writing, software 1132f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * distributed under the License is distributed on an "AS IS" BASIS, 1232f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1332f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * See the License for the specific language governing permissions and 1432f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro * limitations under the License 1532f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro */ 1632f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaropackage com.android.contacts; 1732f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro 187979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaroimport com.android.contacts.list.ContactTileView; 197979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro 2032f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaroimport android.content.Context; 2132f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaroimport android.content.CursorLoader; 220c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaroimport android.net.Uri; 230c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaroimport android.provider.ContactsContract; 2492cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaroimport android.provider.ContactsContract.CommonDataKinds.Phone; 2532f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaroimport android.provider.ContactsContract.Contacts; 2632f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro 2732f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro/** 287979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro * Used to create {@link CursorLoader}s to load different groups of {@link ContactTileView}s 2932f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro */ 307979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaropublic final class ContactTileLoaderFactory { 3132f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro 3232f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro public final static int CONTACT_ID = 0; 3332f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro public final static int DISPLAY_NAME = 1; 3432f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro public final static int STARRED = 2; 3532f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro public final static int PHOTO_URI = 3; 36b961b3b6dae6e3f1b6096631f130c38bfa33267cFrank Sposaro public final static int LOOKUP_KEY = 4; 37595d6ea70e5d557b78b5e9f13019f2c4cef99f0eFrank Sposaro public final static int CONTACT_PRESENCE = 5; 38595d6ea70e5d557b78b5e9f13019f2c4cef99f0eFrank Sposaro public final static int CONTACT_STATUS = 6; 3932f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro 4092cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro // Only used for StrequentPhoneOnlyLoader 4192cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro public final static int PHONE_NUMBER = 5; 4292cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro public final static int PHONE_NUMBER_TYPE = 6; 4392cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro public final static int PHONE_NUMBER_LABEL = 7; 4492cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro 4532f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro private static final String[] COLUMNS = new String[] { 4692cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts._ID, // ..........................................0 4792cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.DISPLAY_NAME, // .................................1 4892cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.STARRED, // ......................................2 4992cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.PHOTO_URI, // ....................................3 5092cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.LOOKUP_KEY, // ...................................4 5192cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.CONTACT_PRESENCE, // .............................5 5292cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.CONTACT_STATUS, // ...............................6 5392cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro }; 5492cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro 5592cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro /** 5692cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro * Projection used for the {@link Contacts#CONTENT_STREQUENT_URI} 5792cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro * query when {@link ContactsContract#STREQUENT_PHONE_ONLY} flag 5892cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro * is set to true. The main difference is the lack of presence 5992cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro * and status data and the addition of phone number and label. 6092cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro */ 6192cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro private static final String[] COLUMNS_PHONE_ONLY = new String[] { 6292cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts._ID, // ..........................................0 6392cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.DISPLAY_NAME, // .................................1 6492cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.STARRED, // ......................................2 6592cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.PHOTO_URI, // ....................................3 6692cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Contacts.LOOKUP_KEY, // ...................................4 6792cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Phone.NUMBER, // ..........................................5 6892cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Phone.TYPE, // ............................................6 6992cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro Phone.LABEL // ............................................7 7032f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro }; 7132f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro 727979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro public static CursorLoader createStrequentLoader(Context context) { 737979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro return new CursorLoader(context, Contacts.CONTENT_STREQUENT_URI, COLUMNS, null, null, null); 747979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro } 757979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro 760c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaro public static CursorLoader createStrequentPhoneOnlyLoader(Context context) { 770c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaro Uri uri = Contacts.CONTENT_STREQUENT_URI.buildUpon() 780c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaro .appendQueryParameter(ContactsContract.STREQUENT_PHONE_ONLY, "true").build(); 790c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaro 8092cb150070f90dfe3c0d39abee9e9c1692a034e5Frank Sposaro return new CursorLoader(context, uri, COLUMNS_PHONE_ONLY, null, null, null); 810c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaro } 820c07935a3d838ed24db7d20df839be97fe4c625aFrank Sposaro 837979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro public static CursorLoader createStarredLoader(Context context) { 847979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro return new CursorLoader(context, Contacts.CONTENT_URI, COLUMNS, 857979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro Contacts.STARRED + "=?", new String[]{"1"}, Contacts.DISPLAY_NAME + " ASC"); 867979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro } 877979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro 887979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro public static CursorLoader createFrequentLoader(Context context) { 89a883c7ee29fa61bc8a7447faebfaf2da32ea6547Frank Sposaro return new CursorLoader(context, Contacts.CONTENT_FREQUENT_URI, COLUMNS, 907979ea27c046dfc2d9305b3282233046acef6ec4Frank Sposaro Contacts.STARRED + "=?", new String[]{"0"}, null); 9132f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro } 9232f395567c9d103e9101c2549f76945c9dee20b5Frank Sposaro} 93