/* * Copyright (C) 2007 Esmertec AG. Copyright (C) 2007 The Android Open Source * Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package info.guardianproject.otr.app.im.engine; import info.guardianproject.otr.app.im.plugin.xmpp.XmppAddress; import android.os.Parcel; import android.os.Parcelable; public class Contact extends ImEntity implements Parcelable { private Address mAddress; private String mName; private Presence mPresence; public Contact(Address address, String name) { mAddress = address; mName = name; mPresence = new Presence(); } public Contact(Parcel source) { mAddress = AddressParcelHelper.readFromParcel(source); mName = source.readString(); mPresence = new Presence(source); } public Address getAddress() { return mAddress; } public String getName() { return mName; } public void setName( String aName ) { mName = aName; } public Presence getPresence() { return mPresence; } public boolean equals(Object other) { return other instanceof Contact && mAddress.getBareAddress().equals(((Contact) other).getAddress().getBareAddress()); } public int hashCode() { return mAddress.hashCode(); } /* Set the presence of the Contact. Note that this method is public but not * provide to the user. * * @param presence the new presence */ public void setPresence(Presence presence) { mPresence = presence; if (mPresence != null && mPresence.getResource() != null) mAddress = new XmppAddress(mAddress.getBareAddress() + '/' + mPresence.getResource()); } public void writeToParcel(Parcel dest, int flags) { AddressParcelHelper.writeToParcel(dest, mAddress); dest.writeString(mName); mPresence.writeToParcel(dest, 0); } public int describeContents() { return 0; } public final static Parcelable.Creator<Contact> CREATOR = new Parcelable.Creator<Contact>() { public Contact createFromParcel(Parcel source) { return new Contact(source); } public Contact[] newArray(int size) { return new Contact[size]; } }; }