1326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde/*
2326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* Copyright (C) 2014 Samsung System LSI
3326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* Licensed under the Apache License, Version 2.0 (the "License");
4326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* you may not use this file except in compliance with the License.
5326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* You may obtain a copy of the License at
6326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde*
7326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde*      http://www.apache.org/licenses/LICENSE-2.0
8326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde*
9326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* Unless required by applicable law or agreed to in writing, software
10326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* distributed under the License is distributed on an "AS IS" BASIS,
11326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* See the License for the specific language governing permissions and
13326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde* limitations under the License.
14326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde*/
15326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
16326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bondepackage com.android.bluetooth.map;
17326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
18326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bondeimport android.graphics.drawable.Drawable;
19326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bondeimport android.util.Log;
20326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
21326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde/**
22326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde * Class to contain all the info about the items of the Map Email Settings Menu.
23326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde * It can be used for both Email Apps (group Parent item) and Accounts (Group child Item).
24326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde *
25326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde */
26326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bondepublic class BluetoothMapEmailSettingsItem implements Comparable<BluetoothMapEmailSettingsItem>{
27326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private static final String TAG = "BluetoothMapEmailSettingsItem";
28326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
29326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private static final boolean D = BluetoothMapService.DEBUG;
30326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private static final boolean V = BluetoothMapService.VERBOSE;
31326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
32326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    protected boolean mIsChecked;
33326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private String mName;
34326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private String mPackageName;
35326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private String mId;
36326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private String mProviderAuthority;
37326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    private Drawable mIcon;
38326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String mBase_uri;
39326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String mBase_uri_no_account;
40326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public BluetoothMapEmailSettingsItem(String id, String name, String packageName, String authority, Drawable icon) {
41326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mName = name;
42326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mIcon = icon;
43326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mPackageName = packageName;
44326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mId = id;
45326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mProviderAuthority = authority;
46326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mBase_uri_no_account = "content://" + authority;
47326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mBase_uri = mBase_uri_no_account + "/"+id;
48326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
49326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
50326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public long getAccountId() {
51326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if(mId != null) {
52326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return Long.parseLong(mId);
53326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        }
54326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return -1;
55326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
56326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
57326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    @Override
58326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public int compareTo(BluetoothMapEmailSettingsItem other) {
59326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
60326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if(!other.mId.equals(this.mId)){
61326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if(V) Log.d(TAG, "Wrong id : " + this.mId + " vs " + other.mId);
62326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return -1;
63326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        }
64326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if(!other.mName.equals(this.mName)){
65326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if(V) Log.d(TAG, "Wrong name : " + this.mName + " vs " + other.mName);
66326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return -1;
67326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        }
68326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if(!other.mPackageName.equals(this.mPackageName)){
69326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if(V) Log.d(TAG, "Wrong packageName : " + this.mPackageName + " vs " + other.mPackageName);
70326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde             return -1;
71326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        }
72326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if(!other.mProviderAuthority.equals(this.mProviderAuthority)){
73326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if(V) Log.d(TAG, "Wrong providerName : " + this.mProviderAuthority + " vs " + other.mProviderAuthority);
74326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return -1;
75326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        }
76326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if(other.mIsChecked != this.mIsChecked){
77326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if(V) Log.d(TAG, "Wrong isChecked : " + this.mIsChecked + " vs " + other.mIsChecked);
78326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return -1;
79326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        }
80326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return 0;
81326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
82326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
83326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    @Override
84326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public int hashCode() {
85326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        final int prime = 31;
86326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        int result = 1;
87326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        result = prime * result + ((mId == null) ? 0 : mId.hashCode());
88326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        result = prime * result + ((mName == null) ? 0 : mName.hashCode());
89326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        result = prime * result
90326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde                + ((mPackageName == null) ? 0 : mPackageName.hashCode());
91326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        result = prime * result
92326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde                + ((mProviderAuthority == null) ? 0 : mProviderAuthority.hashCode());
93326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return result;
94326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
95326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
96326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    @Override
97326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public boolean equals(Object obj) {
98326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (this == obj)
99326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return true;
100326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (obj == null)
101326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return false;
102326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (getClass() != obj.getClass())
103326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return false;
104326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        BluetoothMapEmailSettingsItem other = (BluetoothMapEmailSettingsItem) obj;
105326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (mId == null) {
106326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if (other.mId != null)
107326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde                return false;
108326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        } else if (!mId.equals(other.mId))
109326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return false;
110326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (mName == null) {
111326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if (other.mName != null)
112326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde                return false;
113326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        } else if (!mName.equals(other.mName))
114326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return false;
115326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (mPackageName == null) {
116326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if (other.mPackageName != null)
117326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde                return false;
118326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        } else if (!mPackageName.equals(other.mPackageName))
119326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return false;
120326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        if (mProviderAuthority == null) {
121326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            if (other.mProviderAuthority != null)
122326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde                return false;
123326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        } else if (!mProviderAuthority.equals(other.mProviderAuthority))
124326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde            return false;
125326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return true;
126326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
127326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
128326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    @Override
129326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String toString() {
130326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return mName + " (" + mBase_uri + ")";
131326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
132326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
133326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public Drawable getIcon() {
134326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return mIcon;
135326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
136326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
137326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public void setIcon(Drawable icon) {
138326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mIcon = icon;
139326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
140326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
141326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String getName() {
142326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return mName;
143326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
144326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
145326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public void setName(String name) {
146326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mName = name;
147326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
148326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
149326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String getId() {
150326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return mId;
151326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
152326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
153326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public void setId(String id) {
154326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mId = id;
155326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
156326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
157326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String getPackageName() {
158326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return mPackageName;
159326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
160326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
161326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public void setPackageName(String packageName) {
162326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mPackageName = packageName;
163326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
164326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
165326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public String getProviderAuthority() {
166326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        return mProviderAuthority;
167326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
168326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde
169326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    public void setProviderAuthority(String providerAuthority) {
170326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde        this.mProviderAuthority = providerAuthority;
171326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde    }
172326b5e610063ac24c0ba467ac585bd4c7f618a67Casper Bonde}