package com.openims.model;
import java.io.ByteArrayInputStream;
import java.lang.ref.SoftReference;
import java.util.HashMap;
import org.jivesoftware.smack.XMPPConnection;
import android.app.Application;
import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import com.openims.model.chat.VCardDataBase;
import com.smit.EasyLauncher.R;
public class MyApplication extends Application {
private final HashMap<String, SoftReference<Drawable>> cache =
new HashMap<String, SoftReference<Drawable>>();
private int nIndexAvater = 0;
private String mAdminJid = null;
private String serveName = null;
private XMPPConnection connection;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
@Override
public void onTerminate() {
super.onTerminate();
}
public Drawable getAvater(String jid){
SoftReference<Drawable> d = cache.get(jid);
// 1
if(d != null){
Drawable drawable = d.get();
if(drawable != null){
return drawable;
}else{
cache.remove(jid);
}
}
if(mAdminJid == null){
return null;
}
VCardDataBase vc = new VCardDataBase(MyApplication.this,mAdminJid);
Cursor c = vc.queryByJId(jid);
if(nIndexAvater == 0){
nIndexAvater = c.getColumnIndex(VCardDataBase.Avater);
}
// 2
if(c.getCount() == 0){
vc.close();
c.close();
return null;
}
c.moveToFirst();
byte[] b = c.getBlob(nIndexAvater);
// 3
Drawable draw;
if(b == null){
draw = getResources().getDrawable(R.drawable.icon);
}else{
draw = new BitmapDrawable(getResources(),new ByteArrayInputStream(b));
}
cache.put(jid, new SoftReference<Drawable>(draw));
c.close();
vc.close();
return draw;
}
public XMPPConnection getConnection() {
return connection;
}
public String getAdminJid(){
return mAdminJid;
}
public void setConnection(XMPPConnection connection,String adminJid) {
this.connection = connection;
this.mAdminJid = adminJid;
}
public String getServeName() {
return serveName;
}
public void setServeName(String serveName) {
this.serveName = serveName;
}
}