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