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