1d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng/*
2d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * Copyright (C) 2010 The Android Open Source Project
3d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng *
4d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License");
5d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * you may not use this file except in compliance with the License.
6d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * You may obtain a copy of the License at
7d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng *
8d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng *      http://www.apache.org/licenses/LICENSE-2.0
9d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng *
10d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * Unless required by applicable law or agreed to in writing, software
11d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS,
12d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * See the License for the specific language governing permissions and
14d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * limitations under the License.
15d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng */
16d6bba124836ec2f528b329759e38fda6297fec49Chiao Chengpackage com.android.contacts.common.list;
17d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
18d6bba124836ec2f528b329759e38fda6297fec49Chiao Chengimport android.provider.ContactsContract.Directory;
19d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
20d6bba124836ec2f528b329759e38fda6297fec49Chiao Chengimport com.android.common.widget.CompositeCursorAdapter;
21d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
22d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng/**
23d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng * Model object for a {@link Directory} row.
24d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng */
25d6bba124836ec2f528b329759e38fda6297fec49Chiao Chengpublic final class DirectoryPartition extends CompositeCursorAdapter.Partition {
26d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
27d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public static final int STATUS_NOT_LOADED = 0;
28d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public static final int STATUS_LOADING = 1;
29d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public static final int STATUS_LOADED = 2;
30d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
31ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    public static final int RESULT_LIMIT_DEFAULT = -1;
32ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad
33d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    private long mDirectoryId;
34768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    private String mContentUri;
35d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    private String mDirectoryType;
36d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    private String mDisplayName;
37d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    private int mStatus;
38d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    private boolean mPriorityDirectory;
39d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    private boolean mPhotoSupported;
40ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    private int mResultLimit = RESULT_LIMIT_DEFAULT;
416af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert    private boolean mDisplayNumber = true;
42d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
43768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    private String mLabel;
44768324c2d917f9ce79747007c57efcefbc06b472Alon Albert
45d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public DirectoryPartition(boolean showIfEmpty, boolean hasHeader) {
46d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        super(showIfEmpty, hasHeader);
47d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
48d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
49d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    /**
50d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     * Directory ID, see {@link Directory}.
51d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     */
52d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public long getDirectoryId() {
53d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mDirectoryId;
54d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
55d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
56d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public void setDirectoryId(long directoryId) {
57d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        this.mDirectoryId = directoryId;
58d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
59d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
60d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    /**
61d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     * Directory type resolved from {@link Directory#PACKAGE_NAME} and
62d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     * {@link Directory#TYPE_RESOURCE_ID};
63d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     */
64d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public String getDirectoryType() {
65d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mDirectoryType;
66d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
67d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
68d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public void setDirectoryType(String directoryType) {
69d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        this.mDirectoryType = directoryType;
70d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
71d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
72d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    /**
73d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     * See {@link Directory#DISPLAY_NAME}.
74d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     */
75d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public String getDisplayName() {
76d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mDisplayName;
77d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
78d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
79d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public void setDisplayName(String displayName) {
80d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        this.mDisplayName = displayName;
81d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
82d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
83d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public int getStatus() {
84d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mStatus;
85d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
86d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
87d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public void setStatus(int status) {
88d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        mStatus = status;
89d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
90d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
91d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public boolean isLoading() {
92d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mStatus == STATUS_NOT_LOADED || mStatus == STATUS_LOADING;
93d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
94d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
95d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    /**
96d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     * Returns true if this directory should be loaded before non-priority directories.
97d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     */
98d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public boolean isPriorityDirectory() {
99d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mPriorityDirectory;
100d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
101d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
102d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public void setPriorityDirectory(boolean priorityDirectory) {
103d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        mPriorityDirectory = priorityDirectory;
104d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
105d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
106d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    /**
107d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     * Returns true if this directory supports photos.
108d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng     */
109d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public boolean isPhotoSupported() {
110d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        return mPhotoSupported;
111d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
112d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng
113d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    public void setPhotoSupported(boolean flag) {
114d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng        this.mPhotoSupported = flag;
115d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng    }
116ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad
117ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    /**
118ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad     * Max number of results for this directory. Defaults to {@link #RESULT_LIMIT_DEFAULT} which
119ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad     * implies using the adapter's
120ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad     * {@link com.android.contacts.common.list.ContactListAdapter#getDirectoryResultLimit()}
121ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad     */
122ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    public int getResultLimit() {
123ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad        return mResultLimit;
124ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    }
125ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad
126ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    public void setResultLimit(int resultLimit) {
127ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad        mResultLimit = resultLimit;
128ad582fa758c6a276c26c5cc52079613a653c81bfBen Gilad    }
129768324c2d917f9ce79747007c57efcefbc06b472Alon Albert
130768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    /**
131768324c2d917f9ce79747007c57efcefbc06b472Alon Albert     * Used by extended directories to specify a custom content URI. Extended directories MUST have
132768324c2d917f9ce79747007c57efcefbc06b472Alon Albert     * a content URI
133768324c2d917f9ce79747007c57efcefbc06b472Alon Albert     */
134768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    public String getContentUri() {
135768324c2d917f9ce79747007c57efcefbc06b472Alon Albert        return mContentUri;
136768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    }
137768324c2d917f9ce79747007c57efcefbc06b472Alon Albert
138768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    public void setContentUri(String contentUri) {
139768324c2d917f9ce79747007c57efcefbc06b472Alon Albert        mContentUri = contentUri;
140768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    }
141768324c2d917f9ce79747007c57efcefbc06b472Alon Albert
142768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    /**
143768324c2d917f9ce79747007c57efcefbc06b472Alon Albert     * A label to display in the header next to the display name.
144768324c2d917f9ce79747007c57efcefbc06b472Alon Albert     */
145768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    public String getLabel() {
146768324c2d917f9ce79747007c57efcefbc06b472Alon Albert        return mLabel;
147768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    }
148768324c2d917f9ce79747007c57efcefbc06b472Alon Albert
149768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    public void setLabel(String label) {
150768324c2d917f9ce79747007c57efcefbc06b472Alon Albert        mLabel = label;
151768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    }
152768324c2d917f9ce79747007c57efcefbc06b472Alon Albert
153768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    @Override
154768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    public String toString() {
155768324c2d917f9ce79747007c57efcefbc06b472Alon Albert        return "DirectoryPartition{" +
156768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                "mDirectoryId=" + mDirectoryId +
157768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mContentUri='" + mContentUri + '\'' +
158768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mDirectoryType='" + mDirectoryType + '\'' +
159768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mDisplayName='" + mDisplayName + '\'' +
160768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mStatus=" + mStatus +
161768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mPriorityDirectory=" + mPriorityDirectory +
162768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mPhotoSupported=" + mPhotoSupported +
163768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mResultLimit=" + mResultLimit +
164768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                ", mLabel='" + mLabel + '\'' +
165768324c2d917f9ce79747007c57efcefbc06b472Alon Albert                '}';
166768324c2d917f9ce79747007c57efcefbc06b472Alon Albert    }
1676af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert
1686af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert    /**
1696af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert     * Whether or not to display the phone number in app that have that option - Dialer. If false,
1706af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert     * Phone Label should be used instead of Phone Number.
1716af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert     */
1726af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert    public boolean isDisplayNumber() {
1736af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert        return mDisplayNumber;
1746af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert    }
1756af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert
1766af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert    public void setDisplayNumber(boolean displayNumber) {
1776af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert        mDisplayNumber = displayNumber;
1786af66a800ccf7599ea37374c8fc99a1489ef8fcbAlon Albert    }
179d6bba124836ec2f528b329759e38fda6297fec49Chiao Cheng}
180