Home | History | Annotate | Download | only in list
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.contacts.common.list;
     17 
     18 import android.provider.ContactsContract.Directory;
     19 
     20 import com.android.common.widget.CompositeCursorAdapter;
     21 
     22 /**
     23  * Model object for a {@link Directory} row.
     24  */
     25 public final class DirectoryPartition extends CompositeCursorAdapter.Partition {
     26 
     27     public static final int STATUS_NOT_LOADED = 0;
     28     public static final int STATUS_LOADING = 1;
     29     public static final int STATUS_LOADED = 2;
     30 
     31     public static final int RESULT_LIMIT_DEFAULT = -1;
     32 
     33     private long mDirectoryId;
     34     private String mContentUri;
     35     private String mDirectoryType;
     36     private String mDisplayName;
     37     private int mStatus;
     38     private boolean mPriorityDirectory;
     39     private boolean mPhotoSupported;
     40     private int mResultLimit = RESULT_LIMIT_DEFAULT;
     41     private boolean mDisplayNumber = true;
     42 
     43     private String mLabel;
     44 
     45     public DirectoryPartition(boolean showIfEmpty, boolean hasHeader) {
     46         super(showIfEmpty, hasHeader);
     47     }
     48 
     49     /**
     50      * Directory ID, see {@link Directory}.
     51      */
     52     public long getDirectoryId() {
     53         return mDirectoryId;
     54     }
     55 
     56     public void setDirectoryId(long directoryId) {
     57         this.mDirectoryId = directoryId;
     58     }
     59 
     60     /**
     61      * Directory type resolved from {@link Directory#PACKAGE_NAME} and
     62      * {@link Directory#TYPE_RESOURCE_ID};
     63      */
     64     public String getDirectoryType() {
     65         return mDirectoryType;
     66     }
     67 
     68     public void setDirectoryType(String directoryType) {
     69         this.mDirectoryType = directoryType;
     70     }
     71 
     72     /**
     73      * See {@link Directory#DISPLAY_NAME}.
     74      */
     75     public String getDisplayName() {
     76         return mDisplayName;
     77     }
     78 
     79     public void setDisplayName(String displayName) {
     80         this.mDisplayName = displayName;
     81     }
     82 
     83     public int getStatus() {
     84         return mStatus;
     85     }
     86 
     87     public void setStatus(int status) {
     88         mStatus = status;
     89     }
     90 
     91     public boolean isLoading() {
     92         return mStatus == STATUS_NOT_LOADED || mStatus == STATUS_LOADING;
     93     }
     94 
     95     /**
     96      * Returns true if this directory should be loaded before non-priority directories.
     97      */
     98     public boolean isPriorityDirectory() {
     99         return mPriorityDirectory;
    100     }
    101 
    102     public void setPriorityDirectory(boolean priorityDirectory) {
    103         mPriorityDirectory = priorityDirectory;
    104     }
    105 
    106     /**
    107      * Returns true if this directory supports photos.
    108      */
    109     public boolean isPhotoSupported() {
    110         return mPhotoSupported;
    111     }
    112 
    113     public void setPhotoSupported(boolean flag) {
    114         this.mPhotoSupported = flag;
    115     }
    116 
    117     /**
    118      * Max number of results for this directory. Defaults to {@link #RESULT_LIMIT_DEFAULT} which
    119      * implies using the adapter's
    120      * {@link com.android.contacts.common.list.ContactListAdapter#getDirectoryResultLimit()}
    121      */
    122     public int getResultLimit() {
    123         return mResultLimit;
    124     }
    125 
    126     public void setResultLimit(int resultLimit) {
    127         mResultLimit = resultLimit;
    128     }
    129 
    130     /**
    131      * Used by extended directories to specify a custom content URI. Extended directories MUST have
    132      * a content URI
    133      */
    134     public String getContentUri() {
    135         return mContentUri;
    136     }
    137 
    138     public void setContentUri(String contentUri) {
    139         mContentUri = contentUri;
    140     }
    141 
    142     /**
    143      * A label to display in the header next to the display name.
    144      */
    145     public String getLabel() {
    146         return mLabel;
    147     }
    148 
    149     public void setLabel(String label) {
    150         mLabel = label;
    151     }
    152 
    153     @Override
    154     public String toString() {
    155         return "DirectoryPartition{" +
    156                 "mDirectoryId=" + mDirectoryId +
    157                 ", mContentUri='" + mContentUri + '\'' +
    158                 ", mDirectoryType='" + mDirectoryType + '\'' +
    159                 ", mDisplayName='" + mDisplayName + '\'' +
    160                 ", mStatus=" + mStatus +
    161                 ", mPriorityDirectory=" + mPriorityDirectory +
    162                 ", mPhotoSupported=" + mPhotoSupported +
    163                 ", mResultLimit=" + mResultLimit +
    164                 ", mLabel='" + mLabel + '\'' +
    165                 '}';
    166     }
    167 
    168     /**
    169      * Whether or not to display the phone number in app that have that option - Dialer. If false,
    170      * Phone Label should be used instead of Phone Number.
    171      */
    172     public boolean isDisplayNumber() {
    173         return mDisplayNumber;
    174     }
    175 
    176     public void setDisplayNumber(boolean displayNumber) {
    177         mDisplayNumber = displayNumber;
    178     }
    179 }
    180