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, icon, appType, null,
     61                 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, icon, appType, uci,
     68                 uciPrefix);
     69     }
     70 
     71     public long getAccountId() {
     72         if (mId != null) {
     73             return Long.parseLong(mId);
     74         }
     75         return -1;
     76     }
     77 
     78     public String getUci() {
     79         return mUci;
     80     }
     81 
     82     public String getUciPrefix() {
     83         return mUciPrefix;
     84     }
     85 
     86     public String getUciFull() {
     87         if (mUci == null) {
     88             return null;
     89         }
     90         if (mUciPrefix == null) {
     91             return null;
     92         }
     93         return new StringBuilder(mUciPrefix).append(":").append(mUci).toString();
     94     }
     95 
     96     @Override
     97     public int compareTo(BluetoothMapAccountItem other) {
     98 
     99         if (!other.mId.equals(this.mId)) {
    100             if (V) {
    101                 Log.d(TAG, "Wrong id : " + this.mId + " vs " + other.mId);
    102             }
    103             return -1;
    104         }
    105         if (!other.mName.equals(this.mName)) {
    106             if (V) {
    107                 Log.d(TAG, "Wrong name : " + this.mName + " vs " + other.mName);
    108             }
    109             return -1;
    110         }
    111         if (!other.mPackageName.equals(this.mPackageName)) {
    112             if (V) {
    113                 Log.d(TAG,
    114                         "Wrong packageName : " + this.mPackageName + " vs " + other.mPackageName);
    115             }
    116             return -1;
    117         }
    118         if (!other.mProviderAuthority.equals(this.mProviderAuthority)) {
    119             if (V) {
    120                 Log.d(TAG, "Wrong providerName : " + this.mProviderAuthority + " vs "
    121                         + other.mProviderAuthority);
    122             }
    123             return -1;
    124         }
    125         if (other.mIsChecked != this.mIsChecked) {
    126             if (V) {
    127                 Log.d(TAG, "Wrong isChecked : " + this.mIsChecked + " vs " + other.mIsChecked);
    128             }
    129             return -1;
    130         }
    131         if (!other.mType.equals(this.mType)) {
    132             if (V) {
    133                 Log.d(TAG, "Wrong appType : " + this.mType + " vs " + other.mType);
    134             }
    135             return -1;
    136         }
    137         return 0;
    138     }
    139 
    140     @Override
    141     public int hashCode() {
    142         final int prime = 31;
    143         int result = 1;
    144         result = prime * result + ((mId == null) ? 0 : mId.hashCode());
    145         result = prime * result + ((mName == null) ? 0 : mName.hashCode());
    146         result = prime * result + ((mPackageName == null) ? 0 : mPackageName.hashCode());
    147         result =
    148                 prime * result + ((mProviderAuthority == null) ? 0 : mProviderAuthority.hashCode());
    149         return result;
    150     }
    151 
    152     @Override
    153     public boolean equals(Object obj) {
    154         if (this == obj) {
    155             return true;
    156         }
    157         if (obj == null) {
    158             return false;
    159         }
    160         if (getClass() != obj.getClass()) {
    161             return false;
    162         }
    163         BluetoothMapAccountItem other = (BluetoothMapAccountItem) obj;
    164         if (mId == null) {
    165             if (other.mId != null) {
    166                 return false;
    167             }
    168         } else if (!mId.equals(other.mId)) {
    169             return false;
    170         }
    171         if (mName == null) {
    172             if (other.mName != null) {
    173                 return false;
    174             }
    175         } else if (!mName.equals(other.mName)) {
    176             return false;
    177         }
    178         if (mPackageName == null) {
    179             if (other.mPackageName != null) {
    180                 return false;
    181             }
    182         } else if (!mPackageName.equals(other.mPackageName)) {
    183             return false;
    184         }
    185         if (mProviderAuthority == null) {
    186             if (other.mProviderAuthority != null) {
    187                 return false;
    188             }
    189         } else if (!mProviderAuthority.equals(other.mProviderAuthority)) {
    190             return false;
    191         }
    192         if (mType == null) {
    193             if (other.mType != null) {
    194                 return false;
    195             }
    196         } else if (!mType.equals(other.mType)) {
    197             return false;
    198         }
    199         return true;
    200     }
    201 
    202     @Override
    203     public String toString() {
    204         return mName + " (" + mBase_uri + ")";
    205     }
    206 
    207     public Drawable getIcon() {
    208         return mIcon;
    209     }
    210 
    211     public String getName() {
    212         return mName;
    213     }
    214 
    215     public String getId() {
    216         return mId;
    217     }
    218 
    219     public String getPackageName() {
    220         return mPackageName;
    221     }
    222 
    223     public String getProviderAuthority() {
    224         return mProviderAuthority;
    225     }
    226 
    227     public BluetoothMapUtils.TYPE getType() {
    228         return mType;
    229     }
    230 
    231 }
    232