Home | History | Annotate | Download | only in map
      1 /*
      2 * Copyright (C) 2014 Samsung System LSI
      3 * Licensed under the Apache License, Version 2.0 (the "License");
      4 * you may not use this file except in compliance with the License.
      5 * You may obtain a copy of the License at
      6 *
      7 *      http://www.apache.org/licenses/LICENSE-2.0
      8 *
      9 * Unless required by applicable law or agreed to in writing, software
     10 * distributed under the License is distributed on an "AS IS" BASIS,
     11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 * See the License for the specific language governing permissions and
     13 * limitations under the License.
     14 */
     15 
     16 package com.android.bluetooth.map;
     17 
     18 import android.graphics.drawable.Drawable;
     19 import android.util.Log;
     20 
     21 /**
     22  * Class to contain all the info about the items of the Map Email Settings Menu.
     23  * It can be used for both Email Apps (group Parent item) and Accounts (Group child Item).
     24  *
     25  */
     26 public class BluetoothMapAccountItem implements Comparable<BluetoothMapAccountItem>{
     27     private static final String TAG = "BluetoothMapAccountItem";
     28 
     29     private static final boolean D = BluetoothMapService.DEBUG;
     30     private static final boolean V = BluetoothMapService.VERBOSE;
     31 
     32     protected boolean mIsChecked;
     33     private final String mName;
     34     private final String mPackageName;
     35     private final String mId;
     36     private final String mProviderAuthority;
     37     private final Drawable mIcon;
     38     private final BluetoothMapUtils.TYPE mType;
     39     public final String mBase_uri;
     40     public final String mBase_uri_no_account;
     41     private final String mUci;
     42     private final String mUciPrefix;
     43 
     44     public BluetoothMapAccountItem(String id, String name, String packageName, String authority,
     45             Drawable icon, BluetoothMapUtils.TYPE appType, String uci, String uciPrefix) {
     46         this.mName = name;
     47         this.mIcon = icon;
     48         this.mPackageName = packageName;
     49         this.mId = id;
     50         this.mProviderAuthority = authority;
     51         this.mType = appType;
     52         this.mBase_uri_no_account = "content://" + authority;
     53         this.mBase_uri = mBase_uri_no_account + "/"+id;
     54         this.mUci = uci;
     55         this.mUciPrefix = uciPrefix;
     56     }
     57 
     58     public static BluetoothMapAccountItem create(String id, String name, String packageName,
     59             String authority, Drawable icon, BluetoothMapUtils.TYPE appType) {
     60         return new BluetoothMapAccountItem(id, name, packageName, authority,
     61                 icon, appType, null, null);
     62     }
     63 
     64     public static BluetoothMapAccountItem create(String id, String name, String packageName,
     65             String authority, Drawable icon, BluetoothMapUtils.TYPE appType, String uci,
     66             String uciPrefix) {
     67         return new BluetoothMapAccountItem(id, name, packageName, authority,
     68                 icon, appType, uci, uciPrefix);
     69     }
     70     public long getAccountId() {
     71         if(mId != null) {
     72             return Long.parseLong(mId);
     73         }
     74         return -1;
     75     }
     76 
     77     public String getUci() {
     78         return mUci;
     79     }
     80 
     81     public String getUciPrefix(){
     82         return mUciPrefix;
     83     }
     84 
     85     public String getUciFull(){
     86         if(mUci == null)
     87             return null;
     88         if(mUciPrefix == null)
     89             return null;
     90         return new StringBuilder(mUciPrefix).append(":").append(mUci).toString();
     91     }
     92 
     93     @Override
     94     public int compareTo(BluetoothMapAccountItem other) {
     95 
     96         if(!other.mId.equals(this.mId)){
     97             if(V) Log.d(TAG, "Wrong id : " + this.mId + " vs " + other.mId);
     98             return -1;
     99         }
    100         if(!other.mName.equals(this.mName)){
    101             if(V) Log.d(TAG, "Wrong name : " + this.mName + " vs " + other.mName);
    102             return -1;
    103         }
    104         if(!other.mPackageName.equals(this.mPackageName)){
    105             if(V) Log.d(TAG, "Wrong packageName : " + this.mPackageName + " vs "
    106                     + other.mPackageName);
    107              return -1;
    108         }
    109         if(!other.mProviderAuthority.equals(this.mProviderAuthority)){
    110             if(V) Log.d(TAG, "Wrong providerName : " + this.mProviderAuthority + " vs "
    111                     + other.mProviderAuthority);
    112             return -1;
    113         }
    114         if(other.mIsChecked != this.mIsChecked){
    115             if(V) Log.d(TAG, "Wrong isChecked : " + this.mIsChecked + " vs " + other.mIsChecked);
    116             return -1;
    117         }
    118         if(!other.mType.equals(this.mType)){
    119             if(V) Log.d(TAG, "Wrong appType : " + this.mType + " vs " + other.mType);
    120              return -1;
    121         }
    122         return 0;
    123     }
    124 
    125     @Override
    126     public int hashCode() {
    127         final int prime = 31;
    128         int result = 1;
    129         result = prime * result + ((mId == null) ? 0 : mId.hashCode());
    130         result = prime * result + ((mName == null) ? 0 : mName.hashCode());
    131         result = prime * result
    132                 + ((mPackageName == null) ? 0 : mPackageName.hashCode());
    133         result = prime * result
    134                 + ((mProviderAuthority == null) ? 0 : mProviderAuthority.hashCode());
    135         return result;
    136     }
    137 
    138     @Override
    139     public boolean equals(Object obj) {
    140         if (this == obj)
    141             return true;
    142         if (obj == null)
    143             return false;
    144         if (getClass() != obj.getClass())
    145             return false;
    146         BluetoothMapAccountItem other = (BluetoothMapAccountItem) obj;
    147         if (mId == null) {
    148             if (other.mId != null)
    149                 return false;
    150         } else if (!mId.equals(other.mId))
    151             return false;
    152         if (mName == null) {
    153             if (other.mName != null)
    154                 return false;
    155         } else if (!mName.equals(other.mName))
    156             return false;
    157         if (mPackageName == null) {
    158             if (other.mPackageName != null)
    159                 return false;
    160         } else if (!mPackageName.equals(other.mPackageName))
    161             return false;
    162         if (mProviderAuthority == null) {
    163             if (other.mProviderAuthority != null)
    164                 return false;
    165         } else if (!mProviderAuthority.equals(other.mProviderAuthority))
    166             return false;
    167         if (mType == null) {
    168             if (other.mType != null)
    169                 return false;
    170         } else if (!mType.equals(other.mType))
    171             return false;
    172         return true;
    173     }
    174 
    175     @Override
    176     public String toString() {
    177         return mName + " (" + mBase_uri + ")";
    178     }
    179 
    180     public Drawable getIcon() {
    181         return mIcon;
    182     }
    183 
    184     public String getName() {
    185         return mName;
    186     }
    187 
    188     public String getId() {
    189         return mId;
    190     }
    191 
    192     public String getPackageName() {
    193         return mPackageName;
    194     }
    195 
    196     public String getProviderAuthority() {
    197         return mProviderAuthority;
    198     }
    199 
    200     public BluetoothMapUtils.TYPE getType() {
    201         return mType;
    202     }
    203 
    204 }
    205