package org.pccpa.frage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.pccpa.ContactActivity;
import org.pccpa.DB;
import org.pccpa.R;
import org.pccpa.api.Client;
import org.pccpa.api.Contact;
import org.pccpa.api.EmployeeItem;
import android.R.string;
import android.app.DialogFragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.os.Bundle;
import android.os.StrictMode.VmPolicy;
import android.text.Editable;
import android.text.Html;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView;
import com.actionbarsherlock.app.SherlockListFragment;
import com.actionbarsherlock.internal.widget.IcsAdapterView;
import com.kull.StringHelper;
import com.kull.android.ContextHelper;
import com.kull.android.SQLiteOrmHelper;
import com.kull.android.image.ImageProcessor;
import com.kull.android.widget.AsyncImageView;
import com.kull.android.widget.ListItemAdapter;
public class ContactListFragment extends SherlockListFragment
implements OnScrollListener,OnItemSelectedListener,OnItemClickListener,TextWatcher{
private ContactListAdapter adapter;
SQLiteOrmHelper sqLiteOrmHelper;
private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
adapter=new ContactListAdapter(getActivity(),this);
adapter.items=ContactActivity.CONTACT_ALL;
this.setListAdapter(adapter);
sqLiteOrmHelper=DB.local.createSqLiteOrmHelper(getActivity());
getListView().setOnScrollListener(this);
//getListView().setOnItemSelectedListener(this);
//getListView().setOnItemClickListener(this);
}
public void loadItems(List<Contact> items){
adapter.items=items;
this.setListAdapter(adapter);
}
@Override
public void onScrollStateChanged(AbsListView viewGroup, int scrollState) {
// TODO Auto-generated method stub
if (getListView() == viewGroup) {
searchAsyncImageViews(viewGroup, scrollState == OnScrollListener.SCROLL_STATE_FLING);
}
}
private void searchAsyncImageViews(ViewGroup viewGroup, boolean pause) {
final int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
AsyncImageView image = (AsyncImageView) viewGroup.getChildAt(i).findViewById(org.pccpa.R.id.async_image);
if (image != null) {
image.setPaused(pause);
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Contact contact= adapter.getItem(position);
ContactInfoDialog dialog=new ContactInfoDialog();
dialog.set_contact(contact);
dialog.show(this.getFragmentManager(), "��ϸ��Ϣ");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(getActivity(), position+"", 5000).show();
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
Contact contact= adapter.getItem(position);
ContactInfoDialog dialog=new ContactInfoDialog();
dialog.set_contact(contact);
dialog.show(this.getFragmentManager(), "��ϸ��Ϣ");
}
public class ContactListAdapter extends ListItemAdapter<Contact> {
private ImageProcessor _imageProcessor;
//private AsyncImageLoader asyncImageLoader;
private Options options;
private ContactListFragment contactListFragment;
public ContactListAdapter(Context context,ContactListFragment contactListFragment) {
super(context);
this.contactListFragment=contactListFragment;
// TODO Auto-generated constructor stub
//_imageProcessor= new im
//asyncImageLoader=new AsyncImageLoader(_context);
//asyncImageLoader.setCache2File(true);
options=new Options();
//options.inJustDecodeBounds = true;
// options.inSampleSize = 4; //width��hight��Ϊԭ����ʮ��һ
options.inPreferredConfig = Bitmap.Config.RGB_565;
//options.inPurgeable = true;
//options.inInputShareable = true;
options.inDither = true;
options.inScaled = true;
options.inDensity = DisplayMetrics.DENSITY_MEDIUM;
options.inTargetDensity = context.getResources().getDisplayMetrics().densityDpi;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
Contact e=getItem(position);
return Long.parseLong(e.getEID());
}
class ViewHolder{
public AsyncImageView imageView;
public TextView txvEmName,txvEmMobile;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final Contact m=getItem(position);
final ViewHolder holder;
//if(convertView==null){
convertView=_inflater.inflate(R.layout.listitem_contact, parent,false);
holder=new ViewHolder();
holder.imageView=(AsyncImageView)convertView.findViewById(R.id.async_image);
//holder.imageView.setImageProcessor(_imageProcessor);
holder.txvEmName=(TextView)convertView.findViewById(R.id.txvEmName);
holder.txvEmMobile=(TextView)convertView.findViewById(R.id.txvMobile);
//holder.btnTel=(Button)convertView.findViewById(R.id.btnTel);
Contact.setupImageView(parent.getContext(),m,holder.imageView, options);
final String num=StringHelper.concat(m.getEMobile(),",",m.getEMobileShort(),",",m.getETelWork(),",",m.getETelWorkShort());
holder.txvEmName.setText(
Html.fromHtml(
MessageFormat.format("{2} <span style='font-size=0.8em'>{0} {1}</span> ", m.getAreaName(),m.getDepartName(),m.getEUserName())
)
);
holder.txvEmMobile.setText(StringHelper.concat(num));
//holder.btnTel.setText("����");
//holder.btnTel.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
//attemptLogin();
// _contextHelper.toTel(num);
// }
//})
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContactInfoCardDialog dialog=new ContactInfoCardDialog();
dialog.setOptions(options);
dialog.set_contact(m);
dialog.setParent(contactListFragment);
//dialog.setStyle(DialogFragment.STYLE_NO_TITLE, android.R.sty);
dialog.show(getFragmentManager(), "��ϸ��Ϣ");
//Toast.makeText(_context, m.getEUserName(), 2000).show();
}
});
convertView.setTag(holder);
//}else{
// holder=(ViewHolder)convertView.getTag();
//}
return convertView;
}
}
boolean isSearching=false;
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
//Toast.makeText(getActivity(),"beforeTextChanged:"+ s, 2000).show();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
//Toast.makeText(getActivity(),"onTextChanged "+ s+" "+start+" "+before+" "+count, 1000).show();
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!isSearching){
isSearching=true;
doSearch(s.toString());
}
}
private synchronized void doSearch(String keyword){
if(keyword.length()==0){
adapter.items=ContactActivity.CONTACT_ALL;
this.setListAdapter(adapter);
}else{
String like="%"+keyword+"%";
try {
List<Contact> cs=sqLiteOrmHelper.select(Contact.class,
new String[]{"*"},
"eusername||','||rankname||','||areaname||','||departname||','||email||','||emobile||','||emobileshort||','||etelwork||','||etelworkshort like ? "
,new String[]{like});
adapter.items=cs;
this.setListAdapter(adapter);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
isSearching=false;
;
}
public void loadAreaContacts(String areaname,String areaid){
try {
ContactActivity.CONTACT_ALL=DB.local.selectAreaContacts(getActivity(), areaid);
loadItems(ContactActivity.CONTACT_ALL);
//Toast.makeText(getActivity(),area.getAreaName()+ "����"+ContactActivity.CONTACT_ALL.size()+"����¼", 3000).show();
ContextHelper.makeText(getActivity(),3000,"{0} ���� {1} ����¼",
areaname,ContactActivity.CONTACT_ALL.size()
).show();
} catch (Exception e) {
// TODO Auto-generated catch block
ContextHelper.makeText(getActivity(),3000,e).show();
}
}
public void loadAreaRankContacts(String areaname,String rname,String areaid,String rid){
try {
ContactActivity.CONTACT_ALL=DB.local.selectAreaRankContacts(getActivity(), areaid,rid);
loadItems(ContactActivity.CONTACT_ALL);
//Toast.makeText(getActivity(),area.getAreaName()+ "����"+ContactActivity.CONTACT_ALL.size()+"����¼", 3000).show();
ContextHelper.makeText(getActivity(),3000,"{0} {1} ���� {2} ����¼",
areaname,rname,ContactActivity.CONTACT_ALL.size()
).show();
} catch (Exception e) {
// TODO Auto-generated catch block
ContextHelper.makeText(getActivity(),3000,e).show();
}
}
public void loadDeptContacts(String aname,String dname,String id){
try {
ContactActivity.CONTACT_ALL=DB.local.selectDeptContacts(getActivity(), id);
loadItems(ContactActivity.CONTACT_ALL);
//Toast.makeText(getActivity(),area.getAreaName()+ "����"+ContactActivity.CONTACT_ALL.size()+"����¼", 3000).show();
ContextHelper.makeText(getActivity(),3000,"{0} {1} ���� {2} ����¼",
aname,dname,ContactActivity.CONTACT_ALL.size()
).show();
} catch (Exception e) {
// TODO Auto-generated catch block
ContextHelper.makeText(getActivity(),3000,e).show();
}
}
}