package com.openims.view.chat;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.jivesoftware.smack.packet.Presence;
import android.app.Activity;
import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import com.smit.EasyLauncher.R;
import com.openims.model.chat.RosterDataBase;
import com.openims.model.chat.VCardDataBase;
import com.openims.utility.LogUtil;
import com.openims.utility.PushServiceUtil;
import com.openims.view.chat.OnAvater.OnAvaterListener;
public class ChatAccountInfFragment extends Fragment
implements OnClickListener, OnAvaterListener{
private static final String TAG = LogUtil
.makeLogTag(ChatAccountInfFragment.class);
private static final String PRE = "ChatAccountInfFragment--";
private Boolean mIsPresence = true;
private ImageView mAvater;
private String mYourJid;
private String mMyJid;
private Activity mActivity;
private OnAvater mOnAvater;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
Log.d(TAG, PRE + "onAttach");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, PRE + "onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, PRE + "onCreateView");
View v = inflater.inflate(R.layout.multi_chat_account_inf, container, false);
addListener(v);
VCardDataBase vc = new VCardDataBase(getActivity(),mMyJid);
Cursor c = vc.queryByJId(mYourJid);
int nIndexAvater = c.getColumnIndex(VCardDataBase.Avater);
int nIndexNickName = c.getColumnIndex(VCardDataBase.NICK);
int nIndexSex = c.getColumnIndex(VCardDataBase.SEX);
int nIndexJID = c.getColumnIndex(VCardDataBase.JID);
int nIndexBirthday = c.getColumnIndex(VCardDataBase.BIRTHDAY);
int nIndexMobile = c.getColumnIndex(VCardDataBase.MOB);
int nIndexEMAIL = c.getColumnIndex(VCardDataBase.EMAIL);
int nIndexWEIBO = c.getColumnIndex(VCardDataBase.WEIBO);
if(c.getCount() != 1){
vc.close();
return v;
}
c.moveToFirst();
byte[] a = c.getBlob(nIndexAvater);
if(a != null){
InputStream in = new ByteArrayInputStream(a);
BitmapDrawable drawable = new BitmapDrawable(in);
ColorMatrix cm1 = new ColorMatrix(new float[]{0.5f,0.5f,0.5f,0,0,
0.5f,0.5f,0.5f,0,0,
0.5f,0.5f,0.5f,0,0,
0,0,0,1,0,0,
0,0,0,0,1,0
});
drawable.setColorFilter(new ColorMatrixColorFilter(cm1));
ImageView avater = (ImageView)v.findViewById(R.id.avater);
avater.setImageDrawable(drawable);
}
String jid = c.getString(nIndexJID);
TextView tvjid = (TextView)v.findViewById(R.id.jid);
tvjid.setText(jid);
String nickName = c.getString(nIndexNickName);
if(nickName!=null && nickName.equals("null")==false){
TextView tvnick = (TextView)v.findViewById(R.id.nickName);
tvnick.append(nickName);
TextView userName = (TextView)v.findViewById(R.id.username);
userName.setText(nickName);
}
TextView geyan = (TextView)v.findViewById(R.id.geyan);
geyan.setText(R.string.geyan_default);
String sex = c.getString(nIndexSex);
if(sex!=null && sex.equals("null")==false){
TextView tvsex = (TextView)v.findViewById(R.id.sex);
tvsex.append(sex);
}
String state = c.getString(nIndexSex);
if(state!=null && state.equals("null")==false){
TextView tvstate = (TextView)v.findViewById(R.id.state);
tvstate.append(state);
}
String phone = c.getString(nIndexSex);
if(phone!=null && phone.equals("null")==false){
TextView tvphone = (TextView)v.findViewById(R.id.phone);
tvphone.append(phone);
}
String note = c.getString(nIndexSex);
if(note!=null && note.equals("null")==false){
TextView tvnote = (TextView)v.findViewById(R.id.note);
tvnote.append(note);
}
mAvater = (ImageView)v.findViewById(R.id.avater);
mAvater.setImageDrawable(mOnAvater.getAvater(mYourJid, this));
updatePresence();
vc.close();
return v;
}
private void addListener(View v){
View btn = v.findViewById(R.id.header_left);
btn.setOnClickListener(this);
v.findViewById(R.id.header_right).setOnClickListener(this);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, PRE + "onStart");
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, PRE + "onResume");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, PRE + "onPause");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, PRE + "onStop");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, PRE + "onDestroy");
}
@Override
public void onDetach() {
super.onDetach();
Log.d(TAG, PRE + "onDetach");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.header_left:
getFragmentManager().popBackStack();
break;
case R.id.header_right:
getFragmentManager().popBackStack();
break;
}
}
private void updateAvater(Drawable avater){
this.mAvater.setImageDrawable(avater);
if(mIsPresence){
mAvater.setColorFilter(null);
}else{
mAvater.setColorFilter(PushServiceUtil.GREY_COLOR_FILTER);
}
}
public void updatePresence(){
RosterDataBase roster = new RosterDataBase(mActivity,
mMyJid);
String presence = roster.getPresence(mYourJid);
roster.close();
if(presence.equals(Presence.Type.available.name())){
mIsPresence = true;
}else{
mIsPresence = false;
}
if(mIsPresence){
mAvater.setColorFilter(null);
}else{
mAvater.setColorFilter(PushServiceUtil.GREY_COLOR_FILTER);
}
}
@Override
public void avater(String avaterJid, Drawable avater) {
updateAvater(avater);
}
public void setOnAvater(OnAvater onAvater){
mOnAvater = onAvater;
}
public void setInf(String myJid,String yourJid){
mMyJid = myJid;
mYourJid = yourJid;
}
}