package com.bestapp.yikuair.fragments;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.bestapp.yikuair.R;
import com.bestapp.yikuair.database.DBOpenHelper;
import com.bestapp.yikuair.utils.MessageInfo;
import com.bestapp.yikuair.utils.SharedPreferencesUtil;
import com.bestapp.yikuair.utils.StringWidthWeightRandom;
import com.bestapp.yikuair.utils.UserInfo;
public class ScheduleAdapter extends BaseAdapter {
private List<ScheduleItemInfo> arrays = null;
private Context mContext;
private String beginDate, endDate, title, address, itemId, taskId, groupId;
private boolean isFromChat = false;
private String[] nameStr;
private String[] idStr;
private int type;
public ImageLoader imageLoader;
private DBOpenHelper dbOpenHelper;
private Cursor cursor;
private SharedPreferencesUtil shared;
private ClientSocket client;
public ScheduleAdapter(Context mContext, List<ScheduleItemInfo> arrays) {
this.mContext = mContext;
this.arrays = arrays;
this.imageLoader = new ImageLoader(mContext);
shared = new SharedPreferencesUtil(mContext);
client = new ClientSocket(mContext);
}
public int getViewTypeCount() {
return 2;
}
public int getCount() {
return this.arrays.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View view, ViewGroup arg2) {
ViewHolder viewHolder = null;
viewHolder = new ViewHolder();
if (arrays.get(position).getType() == MessageInfo.TODOITEM) {
view = LayoutInflater.from(mContext).inflate(
R.layout.schedule_task_layout, null);
viewHolder.itemTitle = (TextView) view
.findViewById(R.id.tv_item_title);
return view;
} else {
view = LayoutInflater.from(mContext).inflate(
R.layout.schedule_item, null);
}
viewHolder.sponsorHead = (ImageView) view
.findViewById(R.id.sponsor_head);
viewHolder.sponsorName = (TextView) view
.findViewById(R.id.sponsor_name);
viewHolder.scheduleContent = (TextView) view
.findViewById(R.id.schedule_content);
viewHolder.scheduleTime = (TextView) view
.findViewById(R.id.schedule_time);
viewHolder.btnDel = (Button) view.findViewById(R.id.del);
viewHolder.ivResume = (ImageView) view.findViewById(R.id.iv_resume);
viewHolder.cancelLine = (LinearLayout) view
.findViewById(R.id.ll_cancel_line);
viewHolder.editItem = (ImageView) view.findViewById(R.id.iv_edit_item);
viewHolder.nameStr = arrays.get(position).getMemberName();
viewHolder.idStr = arrays.get(position).getmemberId();
viewHolder.beginDate = arrays.get(position).getScheduleBeginTime();
viewHolder.endDate = arrays.get(position).getScheduleEndTime();
viewHolder.type = arrays.get(position).getType();
viewHolder.title = arrays.get(position).getScheduleContent();
viewHolder.itemId = arrays.get(position).getItemId();
viewHolder.address = arrays.get(position).getAddress();
viewHolder.isFromChat = arrays.get(position).getIsFromChat();
viewHolder.taskId = arrays.get(position).getTaskId();
viewHolder.groupId = arrays.get(position).getGroupId();
view.setTag(viewHolder);
view.setOnClickListener(new OnClickListener() {
@SuppressLint("ResourceAsColor")
public void onClick(View view) {
final ViewHolder holder = (ViewHolder) view.getTag();
beginDate = holder.beginDate;
endDate = holder.endDate;
nameStr = holder.nameStr;
idStr = holder.idStr;
type = holder.type;
title = holder.title;
itemId = holder.itemId;
address = holder.address;
isFromChat = holder.isFromChat;
taskId = holder.taskId;
groupId = holder.groupId;
Log.e("test", "title: " + title);
Log.e("test", "type :" + type);
Log.e("test", "itmeId :" + itemId);
if (type == MessageInfo.TASK) {
Intent intent = new Intent(mContext,
ScheduleTaskActivity.class);
Bundle bundle = new Bundle();
bundle.putStringArray("nameStr", nameStr);
bundle.putStringArray("idStr", idStr);
// intent.putExtra("beginDate", beginDate);
intent.putExtra("endDate", endDate);
intent.putExtra("type", type);
intent.putExtra("ItemId", itemId);
intent.putExtra("title", title);
intent.putExtra("isFromChat", isFromChat);
intent.putExtra("taskId", taskId);
intent.putExtra("groupId", groupId);
intent.putExtras(bundle);
mContext.startActivity(intent);
((Activity) mContext).overridePendingTransition(
R.anim.in_from_down, R.anim.out_of_up);
} else if (type == MessageInfo.MEETING) {
Intent intent = new Intent(mContext,
ScheduleMeetingActivity.class);
Bundle bundle = new Bundle();
bundle.putStringArray("nameStr", nameStr);
bundle.putStringArray("idStr", idStr);
intent.putExtra("beginDate", beginDate);
intent.putExtra("endDate", endDate);
intent.putExtra("type", type);
intent.putExtra("address", address);
intent.putExtra("isFromChat", isFromChat);
intent.putExtra("ItemId", itemId);
intent.putExtra("title", title);
intent.putExtra("taskId", taskId);
intent.putExtra("groupId", groupId);
intent.putExtras(bundle);
Log.e("test", "title :" + title);
Log.e("test", "address :" + address);
mContext.startActivity(intent);
((Activity) mContext).overridePendingTransition(
R.anim.in_from_down, R.anim.out_of_up);
} else if (type == MessageInfo.OTHER) {
Intent intent = new Intent(mContext,
ScheduleOtherActivity.class);
Bundle bundle = new Bundle();
bundle.putStringArray("nameStr", nameStr);
bundle.putStringArray("idStr", idStr);
intent.putExtra("beginDate", beginDate);
intent.putExtra("endDate", endDate);
intent.putExtra("type", type);
intent.putExtra("address", address);
intent.putExtra("isFromChat", isFromChat);
intent.putExtra("ItemId", itemId);
intent.putExtra("title", title);
intent.putExtra("taskId", taskId);
intent.putExtra("groupId", groupId);
intent.putExtras(bundle);
mContext.startActivity(intent);
((Activity) mContext).overridePendingTransition(
R.anim.in_from_down, R.anim.out_of_up);
}
}
});
view.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
final ViewHolder holder = (ViewHolder) v.getTag();
if (holder.btnDel.getVisibility() == View.VISIBLE) {
holder.btnDel.setVisibility(View.GONE);
holder.ivResume.setVisibility(View.GONE);
holder.scheduleTime.setVisibility(View.VISIBLE);
} else {
holder.scheduleTime.setVisibility(View.GONE);
holder.btnDel.setVisibility(View.VISIBLE);
holder.ivResume.setVisibility(View.VISIBLE);
}
return true;
}
});
viewHolder.sponsorName.setText(this.arrays.get(position)
.getSponsorName());
viewHolder.scheduleContent.setText(this.arrays.get(position)
.getScheduleContent());
int type = arrays.get(position).getType();
if (type == MessageInfo.TASK) {
viewHolder.scheduleTime.setText(getFormatedTime(arrays
.get(position).getScheduleEndTime(), true));
} else {
viewHolder.scheduleTime.setText(getFormatedTime(arrays
.get(position).getScheduleBeginTime(), false));
}
if (viewHolder.sponsorName.getText() != null
&& viewHolder.sponsorName.getText().toString()
.equals(UserInfo.realName)) {
if (UserInfo.LocalphotoPath != null
&& UserInfo.LocalphotoPath.length() != 0) {
Log.e("test", "localpath :" + UserInfo.LocalphotoPath);
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(UserInfo.LocalphotoPath, opts);
opts.inSampleSize = computeSampleSize(opts, -1, 128 * 128);
opts.inJustDecodeBounds = false;
try {
Bitmap bmp = BitmapFactory.decodeFile(
UserInfo.LocalphotoPath, opts);
viewHolder.sponsorHead.setImageBitmap(bmp);
} catch (OutOfMemoryError err) {
}
} else {
if (UserInfo.sex.equals("0"))
viewHolder.sponsorHead.setImageDrawable(mContext
.getResources().getDrawable(R.drawable.ico_girl));
else
viewHolder.sponsorHead.setImageDrawable(mContext
.getResources().getDrawable(R.drawable.ico_boy));
}
} else {
if (getHeadUrlFromDB(this.arrays.get(position).getId()) != null
&& getHeadUrlFromDB(this.arrays.get(position).getId())
.length() > 0) {
String headUrl = "http://" + UserInfo.downloadImgUrl
+ getHeadUrlFromDB(this.arrays.get(position).getId());
imageLoader.DisplayImage(headUrl, (Activity) mContext,
viewHolder.sponsorHead);
} else {
if (getSexFromDB(this.arrays.get(position).getId()).equals("0"))
viewHolder.sponsorHead.setImageDrawable(mContext
.getResources().getDrawable(R.drawable.ico_girl));
else
viewHolder.sponsorHead.setImageDrawable(mContext
.getResources().getDrawable(R.drawable.ico_boy));
}
}
/*
* if (str != null && str.length > 2)
* viewHolder.scheduleEndTime.setText(str[1] + " " + str[2]); else
* viewHolder.scheduleEndTime.setText(mContext.getResources()
* .getString(R.string.today));// handle exception to avoid // null
*/
viewHolder.btnDel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String ids = "";
boolean isGroup = false;
for (int i = 0; i < arrays.get(position).getmemberId().length; i++) {
if (arrays.get(position).getmemberId().length == 2) {
if (arrays.get(position).getmemberId()[0]
.equals(UserInfo.db_id))
ids = arrays.get(position).getmemberId()[1];
else if (arrays.get(position).getmemberId()[1]
.equals(UserInfo.db_id))
ids = arrays.get(position).getmemberId()[0];
break;
} else {
isGroup = true;
if (i == arrays.get(position).getmemberId().length - 1)
ids += arrays.get(position).getmemberId()[i];
else
ids += arrays.get(position).getmemberId()[i] + "、";
}
}
if (shared == null)
shared = new SharedPreferencesUtil(mContext);
List<ChatMsgEntity> mDataArrays = new ArrayList<ChatMsgEntity>();
Log.e("test", "ids ::" + ids);
if (shared.readDataFromShared(ids + "_" + UserInfo.db_id) != null) {
mDataArrays = shared.readDataFromShared(ids + "_"
+ UserInfo.db_id);
for (int i = 0; i < mDataArrays.size(); i++) {
Log.e("test", "itemId :"
+ mDataArrays.get(i).getScheduleItemId());
if (arrays.get(position).getItemId()
.equals(mDataArrays.get(i).getScheduleItemId())) {
mDataArrays.remove(i);
shared.saveDatatoShared(ids + "_" + UserInfo.db_id,
mDataArrays);
break;
}
}
}
String msguuid = StringWidthWeightRandom.getNextString();
if (isGroup) {
String groupId = "";
HashMap<String, String> groupMap = (HashMap<String, String>) MessageInfo.groupMap
.clone();
Set set = groupMap.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String) groupMap.get(key);
if (value.equals(ids))
groupId = key;
}
client.sendMessage(arrays.get(position).getTaskId(), 23,
msguuid, UserInfo.db_id, groupId, null, null, null,
null, "2", null, false);
} else {
client.sendMessage(arrays.get(position).getTaskId(), 23,
msguuid, UserInfo.db_id, ids, null, null, null,
null, "1", null, false);
}
String begintime = arrays.get(position).getScheduleBeginTime();
String[] str = begintime.split(" ");
if (str != null && str.length > 2)
begintime = str[0];
String id = arrays.get(position).getItemId();
int taskId = 0, taskCount = 0;
boolean isDel = false;
if (MessageInfo.map.containsKey(begintime)) {
List<ScheduleItemInfo> list = MessageInfo.map
.get(begintime);
taskId = list.size();
for (int j = 0; j < list.size(); j++) {
if (list.get(j).getType() == MessageInfo.TASK) {
taskId = j;
break;
} else if (list.get(j).getType() != MessageInfo.TODOITEM
&& list.get(j).getItemId().equals(id)
&& list.get(j).getType() != MessageInfo.TASK)
MessageInfo.map.get(begintime).remove(j);
}
taskCount = list.size() - taskId;
// Log.i("test", "teskCount :" + taskCount);
for (int i = taskId; i < list.size(); i++) {
if (list.get(i).getItemId().equals(id)) {
if (taskCount == 1) {
MessageInfo.map.get(begintime).remove(i - 1);
MessageInfo.map.get(begintime).remove(i - 1);
isDel = true;
} else
MessageInfo.map.get(begintime).remove(i);
}
}
}
arrays.remove(position);
if (isDel)
arrays.remove(position - 1);
notifyDataSetChanged();
}
});
return view;
}
final static class ViewHolder {
TextView itemTitle;
TextView sponsorName;
TextView scheduleContent;
TextView scheduleTime;
Button btnDel;
LinearLayout cancelLine;
RelativeLayout rlBottom;
ImageView editItem;
ImageView ivResume;
ImageView sponsorHead;
String[] nameStr;
String[] idStr;
String beginDate;
String endDate;
String title;
String address;
String itemId;
String taskId;
String groupId;
boolean isFromChat;
int type;
}
private String getFormatedTime(String scheduleTime, boolean isTask) {
String date = "";
String time = "";
String noon = "";
Log.e("test", "scheduletime :::" + scheduleTime);
String[] str = scheduleTime.split(" ");
if (str != null && str.length > 2) {
String[] tempDate = str[0].split("-");
if (tempDate != null && tempDate.length > 2) {
date = tempDate[1] + "-" + tempDate[2];
}
if (str[1].equals(mContext.getResources().getString(
R.string.morning))) {
time = str[2];
} else {
String[] tempTime = str[2].split(":");
if (tempTime != null && tempTime.length > 1) {
time = String.valueOf(Integer.valueOf(tempTime[0]) + 12)
+ ":" + tempTime[1];
}
}
}
if (isTask) {
noon = mContext.getResources().getString(R.string.schedule_endTime);
} else {
noon = mContext.getResources().getString(
R.string.schedule_begintime);
}
return date + " " + time + " " + noon;
}
public String getHeadUrlFromDB(String dbId) {
if (dbId == null)
return "";
dbOpenHelper = new DBOpenHelper(mContext);
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
String name = "";
cursor = db.rawQuery("select * from contactsTable where dbid=?",
new String[] { dbId });
if (cursor.moveToFirst()) {
name = cursor.getString(8);
}
Log.e("test", "headurl :: " + name);
dbOpenHelper.close();
cursor.close();
return name;
}
public String getSexFromDB(String dbId) {
if (dbId == null)
return "";
dbOpenHelper = new DBOpenHelper(mContext);
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
String name = "";
cursor = db.rawQuery("select * from contactsTable where dbid=?",
new String[] { dbId });
if (cursor.moveToFirst()) {
name = cursor.getString(13);
}
dbOpenHelper.close();
cursor.close();
return name;
}
public static int computeSampleSize(BitmapFactory.Options options,
int minSideLength, int maxNumOfPixels) {
int initialSize = computeInitialSampleSize(options, minSideLength,
maxNumOfPixels);
int roundedSize;
if (initialSize <= 8) {
roundedSize = 1;
while (roundedSize < initialSize) {
roundedSize <<= 1;
}
} else {
roundedSize = (initialSize + 7) / 8 * 8;
}
return roundedSize;
}
private static int computeInitialSampleSize(BitmapFactory.Options options,
int minSideLength, int maxNumOfPixels) {
double w = options.outWidth;
double h = options.outHeight;
int lowerBound = (maxNumOfPixels == -1) ? 1 : (int) Math.ceil(Math
.sqrt(w * h / maxNumOfPixels));
int upperBound = (minSideLength == -1) ? 128 : (int) Math.min(
Math.floor(w / minSideLength), Math.floor(h / minSideLength));
if (upperBound < lowerBound) {
return lowerBound;
}
if ((maxNumOfPixels == -1) && (minSideLength == -1)) {
return 1;
} else if (minSideLength == -1) {
return lowerBound;
} else {
return upperBound;
}
}
private void setAppearAnim(View view) {
Animation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
alphaAnimation.setDuration(500);
view.startAnimation(alphaAnimation);
}
private void setDisappearAnim(View view) {
Animation alphaAnimation = new AlphaAnimation(1.0f, 0.1f);
alphaAnimation.setDuration(500);
view.startAnimation(alphaAnimation);
}
}