blob: 69f209feba83c65a3b5a5d9f621a68f99ea15875 [file] [log] [blame]
Alexandre Savard166dbb62012-09-18 09:37:27 -04001/*
2 * Copyright (C) 2004-2012 Savoir-Faire Linux Inc.
3 *
alision11e8e162013-05-28 10:33:14 -04004 * Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
Alexandre Savard166dbb62012-09-18 09:37:27 -04005 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 *
20 * Additional permission under GNU GPL version 3 section 7:
21 *
22 * If you modify this program, or any covered work, by linking or
23 * combining it with the OpenSSL project's OpenSSL library (or a
24 * modified version of that library), containing parts covered by the
25 * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
26 * grants you additional permission to convey the resulting work.
27 * Corresponding Source for a non-source form of such a combination
28 * shall include the source code for the parts of OpenSSL used as well
29 * as that of the covered work.
30 */
alisionf76de3b2013-04-16 15:35:22 -040031package com.savoirfairelinux.sflphone.model;
Alexandre Savard166dbb62012-09-18 09:37:27 -040032
alisiond295ec22013-05-17 10:12:13 -040033import java.util.ArrayList;
Alexandre Savard166dbb62012-09-18 09:37:27 -040034
alisiond295ec22013-05-17 10:12:13 -040035import android.os.Parcel;
36import android.os.Parcelable;
37
38public class CallContact implements Parcelable {
39
alisiond8c83882013-05-17 17:00:42 -040040 private long id;
41 private String mDisplayName;
42 private long photo_id;
43 private ArrayList<Phone> phones, sip_phones;
44 private String mEmail;
alisiond295ec22013-05-17 10:12:13 -040045
alisiond8c83882013-05-17 17:00:42 -040046 private CallContact(long cID, String displayName, long photoID, ArrayList<Phone> p, ArrayList<Phone> sip, String mail) {
47 id = cID;
48 mDisplayName = displayName;
49 phones = p;
50 sip_phones = sip;
51 mEmail = mail;
52 photo_id = photoID;
53 }
Alexandre Savard166dbb62012-09-18 09:37:27 -040054
alisiond8c83882013-05-17 17:00:42 -040055 public CallContact(Parcel in) {
56 readFromParcel(in);
57 }
alisiond295ec22013-05-17 10:12:13 -040058
alisiond8c83882013-05-17 17:00:42 -040059 public long getId() {
60 return id;
61 }
alisiond295ec22013-05-17 10:12:13 -040062
alisiond8c83882013-05-17 17:00:42 -040063 public String getmDisplayName() {
64 return mDisplayName;
65 }
Alexandre Savard166dbb62012-09-18 09:37:27 -040066
alisiond8c83882013-05-17 17:00:42 -040067 public void setmDisplayName(String mDisplayName) {
68 this.mDisplayName = mDisplayName;
69 }
Alexandre Savard166dbb62012-09-18 09:37:27 -040070
alisiond8c83882013-05-17 17:00:42 -040071 public long getPhoto_id() {
72 return photo_id;
73 }
alisiond295ec22013-05-17 10:12:13 -040074
alisiond8c83882013-05-17 17:00:42 -040075 public void setPhoto_id(long photo_id) {
76 this.photo_id = photo_id;
77 }
alisiond295ec22013-05-17 10:12:13 -040078
alisiond8c83882013-05-17 17:00:42 -040079 public ArrayList<Phone> getPhones() {
80 return phones;
81 }
alisiond295ec22013-05-17 10:12:13 -040082
alisiond8c83882013-05-17 17:00:42 -040083 public void setPhones(ArrayList<Phone> phones) {
84 this.phones = phones;
85 }
alisiond295ec22013-05-17 10:12:13 -040086
alisiond8c83882013-05-17 17:00:42 -040087 public ArrayList<Phone> getSip_phones() {
88 return sip_phones;
89 }
alisiond295ec22013-05-17 10:12:13 -040090
alisiond8c83882013-05-17 17:00:42 -040091 public void setSip_phones(ArrayList<Phone> sip_phones) {
92 this.sip_phones = sip_phones;
93 }
alisiond295ec22013-05-17 10:12:13 -040094
alisiond8c83882013-05-17 17:00:42 -040095 public Phone getSipPhone() {
96 if (sip_phones.size() > 0) {
97 return sip_phones.get(0);
98 }
99 if (phones.size() > 0) {
100 return phones.get(0);
101 }
102 return null;
103 }
Alexandre Savard38d6a152012-09-18 13:33:02 -0400104
alisiond8c83882013-05-17 17:00:42 -0400105 public String getmEmail() {
106 return mEmail;
107 }
alisiond295ec22013-05-17 10:12:13 -0400108
alisiond8c83882013-05-17 17:00:42 -0400109 public void setmEmail(String mEmail) {
110 this.mEmail = mEmail;
111 }
alisiond295ec22013-05-17 10:12:13 -0400112
alisiond8c83882013-05-17 17:00:42 -0400113 @Override
114 public String toString() {
115 return mDisplayName;
116 }
alisiond295ec22013-05-17 10:12:13 -0400117
alisiond8c83882013-05-17 17:00:42 -0400118 public static class ContactBuilder {
alisiond295ec22013-05-17 10:12:13 -0400119
alisiond8c83882013-05-17 17:00:42 -0400120 long contactID;
121 String contactName;
122 long contactPhoto;
123 ArrayList<Phone> phones;
124 ArrayList<Phone> sip;
125 String contactMail;
126 boolean hasPhoto;
alisiond295ec22013-05-17 10:12:13 -0400127
alisiond8c83882013-05-17 17:00:42 -0400128 public ContactBuilder startNewContact(long id, String displayName, long photo_id) {
129 contactID = id;
130 contactName = displayName;
131 contactPhoto = photo_id;
132 phones = new ArrayList<Phone>();
133 sip = new ArrayList<Phone>();
134 return this;
135 }
alisiond295ec22013-05-17 10:12:13 -0400136
alisiond8c83882013-05-17 17:00:42 -0400137 public ContactBuilder addPhoneNumber(String num, int type) {
138 phones.add(new Phone(num, type));
139 return this;
140 }
alisiond295ec22013-05-17 10:12:13 -0400141
alisiond8c83882013-05-17 17:00:42 -0400142 public ContactBuilder addSipNumber(String num, int type) {
143 sip.add(new Phone(num, type));
144 return this;
145 }
alisiond295ec22013-05-17 10:12:13 -0400146
alisiond8c83882013-05-17 17:00:42 -0400147 public CallContact build() {
148 return new CallContact(contactID, contactName, contactPhoto, phones, sip, contactMail);
149 }
Adrien Béraud33268882013-05-18 03:41:15 +1000150
alisiond8c83882013-05-17 17:00:42 -0400151 public static ContactBuilder getInstance() {
152 return new ContactBuilder();
153 }
alisiond295ec22013-05-17 10:12:13 -0400154
alisionfde875f2013-05-28 17:01:54 -0400155 public static CallContact buildUnknownContact(String to) {
156 ArrayList<Phone> phones = new ArrayList<Phone>();
alision84813a12013-05-27 17:40:39 -0400157 phones.add(new Phone(to, 0));
158
159 return new CallContact(-1, to, 0, phones, new ArrayList<CallContact.Phone>(), "");
160 }
alision85704182013-05-29 15:23:03 -0400161
162 public static CallContact buildUserContact(String displayName) {
163 ArrayList<Phone> phones = new ArrayList<Phone>();
164
165 return new CallContact(-1, displayName, 0, phones, new ArrayList<CallContact.Phone>(), "");
166 }
alision84813a12013-05-27 17:40:39 -0400167
alisiond8c83882013-05-17 17:00:42 -0400168 }
alisiond295ec22013-05-17 10:12:13 -0400169
alisiond8c83882013-05-17 17:00:42 -0400170 @Override
171 public int describeContents() {
172 return 0;
173 }
alisiond295ec22013-05-17 10:12:13 -0400174
alisiond8c83882013-05-17 17:00:42 -0400175 @Override
176 public void writeToParcel(Parcel dest, int flags) {
177 dest.writeLong(id);
178 dest.writeString(mDisplayName);
179 dest.writeLong(photo_id);
180 dest.writeTypedList(phones);
alisiond295ec22013-05-17 10:12:13 -0400181
alisiond8c83882013-05-17 17:00:42 -0400182 dest.writeTypedList(sip_phones);
183
184 dest.writeString(mEmail);
185
alisiond295ec22013-05-17 10:12:13 -0400186
alisiond8c83882013-05-17 17:00:42 -0400187 }
alisiond295ec22013-05-17 10:12:13 -0400188
alisiond8c83882013-05-17 17:00:42 -0400189 private void readFromParcel(Parcel in) {
alisiond295ec22013-05-17 10:12:13 -0400190
alisiond8c83882013-05-17 17:00:42 -0400191 id = in.readLong();
192 mDisplayName = in.readString();
193 photo_id = in.readLong();
194 phones = new ArrayList<CallContact.Phone>();
195 sip_phones = new ArrayList<CallContact.Phone>();
196 in.readTypedList(phones, Phone.CREATOR);
197 in.readTypedList(sip_phones, Phone.CREATOR);
198 mEmail = in.readString();
199 }
alisiond295ec22013-05-17 10:12:13 -0400200
alisiond8c83882013-05-17 17:00:42 -0400201 public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
202 @Override
203 public CallContact createFromParcel(Parcel in) {
204 return new CallContact(in);
205 }
alisiond295ec22013-05-17 10:12:13 -0400206
alisiond8c83882013-05-17 17:00:42 -0400207 @Override
208 public CallContact[] newArray(int size) {
209 return new CallContact[size];
210 }
211 };
alisiond295ec22013-05-17 10:12:13 -0400212
alisiond8c83882013-05-17 17:00:42 -0400213 public static class Phone implements Parcelable {
alisiond295ec22013-05-17 10:12:13 -0400214
alisiond8c83882013-05-17 17:00:42 -0400215 int type;
216 String number;
alisiond295ec22013-05-17 10:12:13 -0400217
alisiond8c83882013-05-17 17:00:42 -0400218 public Phone(String num, int ty) {
219 type = ty;
220 number = num;
221 }
alisiond295ec22013-05-17 10:12:13 -0400222
alisiond8c83882013-05-17 17:00:42 -0400223 public Phone(Parcel in) {
224 readFromParcel(in);
225 }
alisiond295ec22013-05-17 10:12:13 -0400226
alisiond8c83882013-05-17 17:00:42 -0400227 @Override
228 public int describeContents() {
229 return 0;
230 }
alisiond295ec22013-05-17 10:12:13 -0400231
alisiond8c83882013-05-17 17:00:42 -0400232 @Override
233 public void writeToParcel(Parcel dest, int arg1) {
234 dest.writeInt(type);
235 dest.writeString(number);
236 }
alisiond295ec22013-05-17 10:12:13 -0400237
alisiond8c83882013-05-17 17:00:42 -0400238 private void readFromParcel(Parcel in) {
239 type = in.readInt();
240 number = in.readString();
241 }
alisiond295ec22013-05-17 10:12:13 -0400242
alision11e8e162013-05-28 10:33:14 -0400243 public static final Parcelable.Creator<Phone> CREATOR = new Parcelable.Creator<Phone>() {
alisiond8c83882013-05-17 17:00:42 -0400244 @Override
245 public Phone createFromParcel(Parcel in) {
246 return new Phone(in);
247 }
alisiond295ec22013-05-17 10:12:13 -0400248
alisiond8c83882013-05-17 17:00:42 -0400249 @Override
250 public Phone[] newArray(int size) {
251 return new Phone[size];
252 }
253 };
alisiond295ec22013-05-17 10:12:13 -0400254
alisiond8c83882013-05-17 17:00:42 -0400255 public int getType() {
256 return type;
257 }
258
259 public void setType(int type) {
260 this.type = type;
261 }
262
263 public String getNumber() {
264 return number;
265 }
266
267 public void setNumber(String number) {
268 this.number = number;
269 }
270
271 }
alisiond295ec22013-05-17 10:12:13 -0400272
Alexandre Savard166dbb62012-09-18 09:37:27 -0400273}