package com.hacktoolkit.android.models;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import org.json.JSONException;
import org.json.JSONObject;
import com.hacktoolkit.android.utils.BitmapUtils;
import com.hacktoolkit.android.utils.ContactsUtils;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Parcel;
import android.os.Parcelable;
public class HTKContact implements Parcelable {
HashMap<String, Object> data;
public static final Parcelable.Creator<HTKContact> CREATOR = new Parcelable.Creator<HTKContact>() {
public HTKContact createFromParcel(Parcel in) {
HTKContact contact = new HTKContact(in);
return contact;
}
public HTKContact[] newArray(int size) {
HTKContact[] arr = new HTKContact[size];
return arr;
}
};
public HTKContact() {
this.data = new HashMap<String, Object>();
this.setMetaData("selected", false);
}
public HTKContact(Parcel parcel) {
this();
String jsonString = parcel.readString();
JSONObject json = null;
try {
json = new JSONObject(jsonString);
} catch (JSONException jsone) {
// unable to convert string to JSON
}
if (json != null) {
Iterator<String> keysIter = json.keys();
while (keysIter.hasNext()) {
String key = keysIter.next();
try {
Object value = json.get(key);
this.setData(key, value);
} catch (JSONException jsone) {
// unable to read this key
}
}
}
}
public JSONObject toJSON() {
JSONObject json = new JSONObject();
for (String key : data.keySet()) {
try {
json.put(key, this.getData(key));
} catch (JSONException jsone) {
// unable to serialize this key
}
}
return json;
}
public void setData(String key, Object value) {
data.put(key, value);
}
public Object getData(String key) {
Object value = data.get(key);
return value;
}
private String getMetaKey(String key) {
String metaKey = String.format("meta_%s", key);
return metaKey;
}
public void setMetaData(String key, Object value) {
data.put(getMetaKey(key), value);
}
public Object getMetaData(String key) {
Object value = data.get(getMetaKey(key));
return value;
}
public long getId() {
long id = (Integer) this.getData("id");
return id;
}
public Bitmap getAvatar(Activity activity) {
Bitmap avatar = getAvatar(activity, true);
return avatar;
}
public Bitmap getAvatar(Activity activity, boolean rounded) {
InputStream photoInputStream = ContactsUtils.openPhoto(activity, this.getId());
Bitmap avatar = BitmapFactory.decodeStream(photoInputStream);
if (rounded) {
Bitmap roundedAvatar = BitmapUtils.getRoundedShape(avatar);
avatar = roundedAvatar;
}
return avatar;
}
public void setSelected(boolean selected) {
setMetaData("selected", selected);
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(this.toJSON().toString());
}
}