package com.bestapp.yikuair.fragments;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import android.os.Bundle;
import android.os.IBinder;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bestapp.yikuair.R;
import com.bestapp.yikuair.fragments.MessageFragment.MessageBroadcastReceiver;
import com.bestapp.yikuair.utils.CompareStrUtil;
import com.bestapp.yikuair.utils.MessageInfo;
import com.bestapp.yikuair.utils.MyDateTime;
import com.bestapp.yikuair.utils.SharedPreferencesUtil;
import com.bestapp.yikuair.utils.StringWidthWeightRandom;
import com.bestapp.yikuair.utils.UserInfo;
public class ScheduleAddActivity extends Activity {
private int currentIndex;
private GroupResultBroadcastReceiver gbr = null;
private RelativeLayout rl_add_member;
private ClientSocket client;
private ViewPager mTabPager;
private LinearLayout mTab1, mTab2, mTab3;
private TextView scheduleType;
private View view_task, view_meeting, view_other;
private ImageButton sendBtn;
private EditText scheduleTitle;
private TextView scheduleBeginDate, scheduleBeginTime, scheduleEndDate,
scheduleEndTime;
private String receiveBeginDate, receiveEndDate, beginDate, endDate, bDate,
eDate, beginTime, endTime, title, itemId;
private EditText scheduleAddress;
private ImageView addMember;
private LinkedHashMap<String, String> nameIdMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> nameIdTaskMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> nameIdMeetingMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> nameIdOtherMap = new LinkedHashMap<String, String>();
private static final int CONTACT_REQUEST_CODE = 1;
private static final int CHAT_RESULT_CODE = 2;
private ArrayList<String> memberValueList = new ArrayList<String>();
private ArrayList<String> memberIdList = new ArrayList<String>();
private int type = 0;
private String[] nameStr;
private String[] idStr;
private LinearLayout ll_begin, ll_end, ll_all_day, viewGroup, ll_tt_begin,
ll_tt_end;
private boolean isMeetingAllDayPressed = false;
private boolean isOtherAllDayPressed = false;
private MyDateTime mPopupWindow;
private boolean isBeginPressed = false;
private boolean isEndPressed = false;
private Dialog mDialog;
private String sendTitle, sendAddress, sendBeginDate, sendEndDate;
private String ids, names;
private boolean isExist; // for me
private String groupId;
public static ScheduleAddActivity instance = null;
public boolean isFromChat;
private ImageButton left_btn;
private String currentDate;
private MessageBroadcastReceiver mbr;
private SharedPreferencesUtil shared;
private String sendItemId;
private String scheType;
private String msgType;// group or individual
private final static String YIKUAIR_GROUP = "yikuair_group";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
instance = this;
client = new ClientSocket(this);
setContentView(R.layout.schedule_add);
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
initView();
currentDate = getIntent().getStringExtra("currentDate");
Log.e("test", "currentDate is " + currentDate);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
nameStr = bundle.getStringArray("nameStr");
idStr = bundle.getStringArray("idStr");
}
isFromChat = getIntent().getBooleanExtra("isFromChat", false);
receiveBeginDate = bDate = getIntent().getStringExtra("beginDate");
receiveEndDate = eDate = getIntent().getStringExtra("endDate");
title = getIntent().getStringExtra("title");
itemId = getIntent().getStringExtra("ItemId");
type = getIntent().getIntExtra("type", 0);
Log.i("test", "beginDate: " + bDate);
Log.i("test", "endDate: " + eDate);
Log.i("test", "title: " + title);
Log.i("test", "type: " + type);
Log.i("test", "itemId :" + itemId);
if (bDate != null && type != MessageInfo.TASK) {
beginTime = MessageInfo.formatTime(bDate);
bDate = MessageInfo.formatDate(bDate, type);
Log.i("test", "format bdate :" + bDate);
}
if (eDate != null) {
endTime = MessageInfo.formatTime(eDate);
eDate = MessageInfo.formatDate(eDate, type);
Log.i("test", "format eDate :" + eDate);
}
currentIndex = type;
if (type == 0)
switchView();
else
mTabPager.setCurrentItem(type);
if (nameStr != null)
restoreScrollView();
shared = new SharedPreferencesUtil(this);
}
class GroupResultBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.i("test", "receive group result broadcast");
int resultCode = arg1.getIntExtra("code", 0);
int token = arg1.getIntExtra("token", 0);
groupId = arg1.getStringExtra("group_id");
if (resultCode == 200) {
if (token == 15) {
Log.i("test", "token == 15....................");
if (MessageInfo.groupMap != null
&& !MessageInfo.groupMap.containsKey(groupId)) {
MessageInfo.groupMap.put(groupId, ids);
if (shared == null)
shared = new SharedPreferencesUtil(
ScheduleAddActivity.this);
shared.saveGroupMaptoShared(MessageInfo.groupMap,
UserInfo.db_id + "_" + YIKUAIR_GROUP);
}
String sendBDate = beginDate;
String sendEDate = endDate;
if (ll_tt_begin != null
&& ll_tt_begin.getVisibility() == View.GONE) {
String[] tempBegin = beginDate.split(" ");
String[] tempEnd = endDate.split(" ");
if (tempBegin != null && tempBegin.length > 1) {
sendBDate = tempBegin[0];
sendEDate = tempEnd[0];
}
}
scheType = "";
msgType = "2";// group
if (currentIndex == MessageInfo.TASK) {
scheType = "2";
} else if (currentIndex == MessageInfo.MEETING) {
scheType = "1";
} else {
scheType = "3";
}
sendItemId = StringWidthWeightRandom.getNextString();
if (client == null)
client = new ClientSocket(ScheduleAddActivity.this);
client.sendMessage(sendTitle, 13, sendItemId,
UserInfo.db_id, groupId,
MessageInfo.StringToLong(sendBDate),
MessageInfo.StringToLong(sendEDate), sendAddress,
scheType, msgType, null, false);
}
}
}
}
public class MessageBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("test", "scheduleaddactivity receive broadcast**************");
ChatMsgEntity entity = new ChatMsgEntity();
Bundle bundle = intent.getExtras();
Serializable data = bundle.getSerializable("message");
mDialog.dismiss();
if (data == null) {
return;
}
String taskId = ((ChatMsgEntity) data).getScheduleTaskId();
String nameStr = "";
if (memberValueList.size() == 1) {
nameStr = memberValueList.get(0);
} else if (memberValueList.size() > 1) {
nameStr = names;
}
ChatMsgEntity msgEntity = new ChatMsgEntity();
String content = "";
if (currentIndex == MessageInfo.TASK) {
content = getResources().getString(R.string.message_item_task);
} else if (currentIndex == MessageInfo.MEETING) {
content = getResources().getString(
R.string.message_item_meeting);
} else {
content = getResources().getString(R.string.message_item_other);
}
msgEntity.setContent(content);
msgEntity.setTime(MessageInfo.getChatTime());
msgEntity.setFullTime(MessageInfo.getMessageFullTime());
/**************************************/
String[] tempName = nameStr.split("、");
if (tempName.length == 2) {
if (tempName[0].equals("我")) {
nameStr = tempName[1];
} else if (tempName[1].equals("我")) {
nameStr = tempName[0];
}
}
msgEntity.setName(nameStr);
/*************************************/
msgEntity.setScheduleItemId(sendItemId);
msgEntity.setScheduleTaskId(taskId);// taskId..............
ArrayList<String> idList = new ArrayList<String>();
for (int i = 0; i < memberIdList.size(); i++) {
if (memberIdList.get(i).equals(UserInfo.db_id))
continue;
idList.add(memberIdList.get(i));
}
if (idList.size() > 0) {
if (idList.size() == 1) {
msgEntity.setSenderId(UserInfo.db_id);
msgEntity.setReceiverId(idList.get(0));
} else {
msgEntity.setChatType(MessageInfo.GROUP);
msgEntity.setReceiverId(groupId);
}
Log.e("test", "receiver :" + msgEntity.getReceiverId());
msgEntity.setType(MessageInfo.SCHEDULE);
msgEntity.setIsAdd(false);
msgEntity.setIsComing(false);
msgEntity.setStatus(MessageInfo.SEND_MESSAGE);
MessageInfo.messageEntityList.add(msgEntity);
}
if (isExist) {
String[] memberId = new String[memberIdList.size()];
String[] memberName = new String[memberIdList.size()];
for (int i = 0; i < memberIdList.size(); i++) {
memberId[i] = memberIdList.get(i);
memberName[i] = memberValueList.get(i);
}
MessageInfo.scheduleList.add(new ScheduleItemInfo(
UserInfo.realName/*
* getResources()
* .getString(R.string.me)
*/, sendTitle, beginDate, endDate,
memberName, memberId, UserInfo.db_id, currentIndex,
sendItemId, false, sendAddress, taskId, groupId));
}
// save entity to shared...................
List<ChatMsgEntity> mDataArrays = new ArrayList<ChatMsgEntity>();
ChatMsgEntity messageEntity = new ChatMsgEntity();
messageEntity.setTime(MessageInfo.getChatTime());
messageEntity.setType(MessageInfo.SCHEDULE);
messageEntity.setIsComing(false);
messageEntity.setBackground(R.drawable.ima_sent);
messageEntity.setChatState(getResources().getString(R.string.sent));
messageEntity.setMsguuid(sendItemId);
String sendBDate = beginDate;
String sendEDate = endDate;
if (ll_tt_begin != null && ll_tt_begin.getVisibility() == View.GONE) {
String[] tempBegin = beginDate.split(" ");
String[] tempEnd = endDate.split(" ");
if (tempBegin != null && tempBegin.length > 1) {
sendBDate = tempBegin[0];
sendEDate = tempEnd[0];
}
}
/************************/
/****************************************/
messageEntity.setGroupIds(ids);
messageEntity.setGroupNames(names);
/****************************************/
messageEntity.setBeginDate(beginDate);
messageEntity.setEndDate(endDate);
messageEntity.setScheduleTitle(sendTitle);
messageEntity.setScheduleBeginTime(sendBDate);
messageEntity.setScheduleEndTime(sendEDate);
messageEntity.setScheduleAddress(sendAddress);
messageEntity.setScheduleType(currentIndex);
/******************************************/
messageEntity.setScheduleItemId(sendItemId);
if (currentIndex == MessageInfo.TASK) {
entity.setContent(getResources().getString(
R.string.message_item_task));
} else if (currentIndex == MessageInfo.MEETING) {
entity.setContent(getResources().getString(
R.string.message_item_meeting));
} else {
entity.setContent(getResources().getString(
R.string.message_item_other));
}
/************************/
if (shared.readDataFromShared(ids + "_" + UserInfo.db_id) != null) {
mDataArrays = shared.readDataFromShared(ids + "_"
+ UserInfo.db_id);
mDataArrays.add(messageEntity);
} else {
mDataArrays.add(messageEntity);
}
Log.e("test",
"*****************************************************");
Log.e("test", "ids :::" + ids);
Log.e("test", "count is " + mDataArrays.size());
Log.e("test", "key :" + ids + "_" + UserInfo.db_id);
shared.saveDatatoShared(ids + "_" + UserInfo.db_id, mDataArrays);
shared.saveGroupInfo(ids + "_" + UserInfo.db_id, groupId);
finish();
overridePendingTransition(R.anim.in_from_left, R.anim.out_of_right);
}
}
public void showRoundProcessDialog() {
mDialog.show();
mDialog.setCanceledOnTouchOutside(false);
mDialog.setContentView(R.layout.schedule_loading_dialog);
}
public void sendSchedule(boolean isGroupChat) {
String id = null;
sendItemId = null;
String[] memberId = new String[memberIdList.size()];
String[] memberName = new String[memberIdList.size()];
boolean isDel = false;
if (nameStr == null) {
nameStr = new String[] { UserInfo.realName /*
* getResources().getString
* (R.string.me)
*/};
}
if (idStr == null) {
idStr = new String[] { UserInfo.db_id };
}
for (int i = 0; i < memberIdList.size(); i++) {
memberId[i] = memberIdList.get(i);
memberName[i] = memberValueList.get(i);
}
if (memberId.length == 1 && memberId[0].equals(UserInfo.db_id))
id = UserInfo.db_id;
else
id = ids;// StringWidthWeightRandom.getNextString();
Log.i("test", "recevietitle:" + title);
Log.i("test", "sendtitle:" + sendTitle);
Log.i("test", "receivebegindate:" + receiveBeginDate);
Log.i("test", "sendbeginDATE:" + beginDate);
Log.i("test", "receviveendDATE:" + receiveEndDate);
Log.i("test", "sendEndDate:" + endDate);
Log.i("test", "recevietype:" + type);
Log.i("test", "sendtype:" + currentIndex);
Log.i("test", "isExist : " + isExist);
Log.i("test",
"compareName:"
+ CompareStrUtil.romove(
CompareStrUtil.toArrayList(memberId),
CompareStrUtil.toArrayList(idStr)).size());
Log.i("test",
"compareId:"
+ CompareStrUtil.romove(
CompareStrUtil.toArrayList(memberName),
CompareStrUtil.toArrayList(nameStr)).size());
if (itemId != null) {
Log.i("test", "isDel.............");
Log.i("test", "itemid : " + itemId);
sendItemId = itemId;
isDel = true;
} else {
Log.i("test", "not isDel...........");
sendItemId = StringWidthWeightRandom.getNextString();
isDel = false;
}
if (isExist) {
Log.e("test", "sendAddress... ::" + sendAddress);
Log.e("test", "schedulebegindate :" + beginDate);
MessageInfo.scheduleList.add(new ScheduleItemInfo(
UserInfo.realName/*
* getResources() .getString(R.string.me)
*/, sendTitle, beginDate, endDate,
memberName, memberId, UserInfo.db_id, currentIndex,
sendItemId, isDel, sendAddress, null, groupId));
}
Log.e("test", "memberId :" + memberId);
Log.e("test", "memberName :" + memberName);
if (id != null && id.equals(UserInfo.db_id)) {
finish();
overridePendingTransition(R.anim.in_from_left, R.anim.out_of_right);
return;
}
Log.i("test", "endDate :" + endDate);
Log.i("test", "id is " + id);
Log.i("test", "currentId" + currentIndex);
Log.e("test", "beginDate :" + beginDate);
String sendBDate = beginDate;
String sendEDate = endDate;
if (ll_tt_begin != null && ll_tt_begin.getVisibility() == View.GONE) {
String[] tempBegin = beginDate.split(" ");
String[] tempEnd = endDate.split(" ");
if (tempBegin != null && tempBegin.length > 1) {
sendBDate = tempBegin[0];
sendEDate = tempEnd[0];
}
}
ChatMsgEntity entity = new ChatMsgEntity();
entity.setScheduleTitle(sendTitle);
entity.setScheduleEndTime(sendEDate/* endDate */);
entity.setScheduleBeginTime(sendBDate/* beginDate */);
entity.setScheduleAddress(sendAddress);
entity.setType(MessageInfo.SCHEDULE);
entity.setmemberIdList(memberIdList);
entity.setScheduleType(currentIndex);
entity.setMsguuid(sendItemId);
entity.setIsComing(false);
/***************************************/
entity.setBeginDate(beginDate);
entity.setEndDate(endDate);
/*************************************/
entity.setScheduleItemId(sendItemId);
Intent intent1 = new Intent(ScheduleAddActivity.this,
ChatActivity.class);
intent1.putExtra("name", names);
intent1.putExtra("Id", id);
if (!isGroupChat) {
Log.i("test", "id :" + id);
entity.setChatType(MessageInfo.INDIVIDUAL);
entity.setReceiverId(id);
} else if (isGroupChat) {
Log.e("test", "groupId .......:" + groupId);
entity.setChatType(MessageInfo.GROUP);
entity.setReceiverId(groupId);
intent1.putExtra("group_id", groupId);
}
/****************************************/
if (isFromChat) {
intent1.putExtra("ScheduleToChatMessage", (Serializable) entity);
setResult(3, intent1);
finish();
overridePendingTransition(R.anim.in_from_up, R.anim.out_of_down);
}
/****************************************/
else {
intent1.putExtra("schedulemessage", (Serializable) entity);
String nameStr = "";
if (memberValueList.size() == 1) {
nameStr = memberValueList.get(0);
} else if (memberValueList.size() > 1) {
nameStr = names;
}
ChatMsgEntity msgEntity = new ChatMsgEntity();
String content = "";
if (currentIndex == MessageInfo.TASK) {
content = getResources().getString(R.string.message_item_task);
} else if (currentIndex == MessageInfo.MEETING) {
content = getResources().getString(
R.string.message_item_meeting);
} else {
content = getResources().getString(R.string.message_item_other);
}
msgEntity.setContent(content);
msgEntity.setTime(MessageInfo.getChatTime());
msgEntity.setFullTime(MessageInfo.getMessageFullTime());
msgEntity.setName(nameStr);
/*************************************/
msgEntity.setScheduleItemId(sendItemId);
ArrayList<String> idList = new ArrayList<String>();
for (int i = 0; i < memberIdList.size(); i++) {
if (memberIdList.get(i).equals(UserInfo.db_id))
continue;
idList.add(memberIdList.get(i));
}
if (idList.size() > 0) {
if (idList.size() == 1) {
msgEntity.setSenderId(UserInfo.db_id);
msgEntity.setReceiverId(idList.get(0));
} else {
msgEntity.setChatType(MessageInfo.GROUP);
msgEntity.setReceiverId(groupId);
}
Log.e("test", "receiver :" + msgEntity.getReceiverId());
msgEntity.setType(MessageInfo.SCHEDULE);
msgEntity.setIsAdd(false);
msgEntity.setIsComing(false);
msgEntity.setStatus(MessageInfo.SEND_MESSAGE);
MessageInfo.messageEntityList.add(msgEntity);
} else {
msgEntity.setSenderId(UserInfo.db_id);
}
// startActivity(intent1);
// finish();
// overridePendingTransition(R.anim.in_from_right,
// R.anim.out_of_left);
}
}
public void initView() {
mDialog = new AlertDialog.Builder(this).create();
left_btn = (ImageButton) findViewById(R.id.scheduleadd_left_btn);
left_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (!isFromChat) {
backToSchedule();
} else {
Intent intent = new Intent();
ChatMsgEntity entity = null;
intent.putExtra("ScheduleToChatMessage",
(Serializable) entity);
setResult(3, intent);
finish();
overridePendingTransition(R.anim.in_from_up,
R.anim.out_of_down);
}
}
});
mTabPager = (ViewPager) findViewById(R.id.scheduleadd_tabpager);
mTabPager.setOnPageChangeListener(new MyOnPageChangeListener());
scheduleType = (TextView) findViewById(R.id.tv_schedule_type);
sendBtn = (ImageButton) findViewById(R.id.scheduleadd_right_btn);
mTab1 = (LinearLayout) findViewById(R.id.schedule_add_task);
mTab2 = (LinearLayout) findViewById(R.id.schedule_add_meeting);
mTab3 = (LinearLayout) findViewById(R.id.schedule_add_other);
mTab1.setOnClickListener(new MyOnClickListener(0));
mTab2.setOnClickListener(new MyOnClickListener(1));
mTab3.setOnClickListener(new MyOnClickListener(2));
mTab1.setBackgroundResource(R.drawable.taskitem_background_pressed);
nameIdTaskMap.put(UserInfo.db_id, UserInfo.realName/*
* getResources().
* getString
* (R.string.me)
*/);
nameIdMeetingMap.put(UserInfo.db_id, UserInfo.realName
/* getResources().getString(R.string.me) */);
nameIdOtherMap.put(UserInfo.db_id, UserInfo.realName/*
* getResources()
* .getString
* (R.string.me)
*/);
LayoutInflater mLi = LayoutInflater.from(this);
view_task = mLi.inflate(R.layout.schedule_task, null);
view_meeting = mLi.inflate(R.layout.schedule_meeting, null);
view_other = mLi.inflate(R.layout.schedule_other, null);
final ArrayList<View> views = new ArrayList<View>();
views.add(view_task);
views.add(view_meeting);
views.add(view_other);
sendBtn.setOnClickListener(btnClick);
PagerAdapter mPagerAdapter = new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getCount() {
return views.size();
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(views.get(position));
}
@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(views.get(position));
return views.get(position);
}
};
mTabPager.setAdapter(mPagerAdapter);
}
public void backToSchedule() {
finish();
overridePendingTransition(R.anim.in_from_left, R.anim.out_of_right);
}
@SuppressWarnings("unchecked")
public void restoreScrollView() {
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
for (int i = 0; i < nameStr.length; i++) {
map.put(idStr[i], nameStr[i]);
}
if (isFromChat) {
nameIdTaskMap = (LinkedHashMap<String, String>) map.clone();
nameIdMeetingMap = (LinkedHashMap<String, String>) map.clone();
nameIdOtherMap = (LinkedHashMap<String, String>) map.clone();
} else {
if (type == MessageInfo.TASK)
nameIdTaskMap = (LinkedHashMap<String, String>) map.clone();
else if (type == MessageInfo.MEETING)
nameIdMeetingMap = (LinkedHashMap<String, String>) map.clone();
else
nameIdOtherMap = (LinkedHashMap<String, String>) map.clone();
}
setScrollView(map);
}
public void switchView() {
View view = null;
if (currentIndex == MessageInfo.TASK) {
view = view_task;
ll_end = (LinearLayout) view.findViewById(R.id.ll_end);
scheduleEndDate = (TextView) view
.findViewById(R.id.schedule_end_date);
if (scheduleEndDate.getText().toString().length() == 0)
scheduleEndDate.setText(currentDate/* MessageInfo.getTaskDate() */
+ " " + MessageInfo.getTime());
} else {
if (currentIndex == MessageInfo.MEETING) {
view = view_meeting;
} else {
view = view_other;
}
ll_tt_begin = (LinearLayout) view.findViewById(R.id.ll_tt_begin);
ll_tt_end = (LinearLayout) view.findViewById(R.id.ll_tt_end);
scheduleAddress = (EditText) view
.findViewById(R.id.schedule_address);
ll_begin = (LinearLayout) view.findViewById(R.id.ll_begin);
ll_end = (LinearLayout) view.findViewById(R.id.ll_end);
scheduleBeginDate = (TextView) view
.findViewById(R.id.schedule_begin_date);
scheduleBeginTime = (TextView) view
.findViewById(R.id.schedule_begin_time);
if (scheduleBeginDate.getText().toString().length() == 0
|| scheduleBeginTime.getText().toString().length() == 0) {
scheduleBeginDate.setText(MessageInfo.getScheduleDate(true,
currentDate)/* MessageInfo.getScheduleDate(true) */);
scheduleBeginTime.setText(MessageInfo.getTime());
}
scheduleEndDate = (TextView) view
.findViewById(R.id.schedule_end_date);
scheduleEndTime = (TextView) view
.findViewById(R.id.schedule_end_time);
if (scheduleEndDate.getText().toString().length() == 0
|| scheduleEndTime.getText().toString().length() == 0) {
scheduleEndDate.setText(MessageInfo.getScheduleDate(true,
currentDate)/* MessageInfo.getScheduleDate(true) */);
scheduleEndTime.setText(MessageInfo.getTime());
}
ll_all_day = (LinearLayout) view.findViewById(R.id.ll_all_day);
ll_all_day.setOnClickListener(btnClick);
ll_begin.setOnClickListener(btnClick);
}
scheduleTitle = (EditText) view.findViewById(R.id.schedule_title);
if (!isFromChat) {
rl_add_member = (RelativeLayout) view
.findViewById(R.id.rl_add_member);
rl_add_member.setOnClickListener(btnClick);
}
ll_end.setOnClickListener(btnClick);
if (bDate == null) {
beginDate = currentDate/* MessageInfo.getChatDate() */+ " "
+ MessageInfo.getTime();
} else {
beginDate = receiveBeginDate;
}
if (eDate == null) {
endDate = currentDate/* MessageInfo.getChatDate() */+ " "
+ MessageInfo.getTime();
} else {
endDate = receiveEndDate;
}
if (currentIndex == type && title != null && title.length() > 0) {
scheduleTitle.setText(title);
}
viewGroup = (LinearLayout) view.findViewById(R.id.ll_view_group);
addMember = (ImageView) view.findViewById(R.id.iv_add_member);
addMember.setOnClickListener(btnClick);
if (isFromChat) {
addMember.setVisibility(View.GONE);
}
if (currentIndex == type) {
if (eDate != null)
scheduleEndDate.setText(eDate);
if (type != MessageInfo.TASK && bDate != null && beginTime != null
&& endTime != null) {
scheduleBeginDate.setText(bDate);
scheduleBeginTime.setText(beginTime);
scheduleEndTime.setText(endTime);
}
}
if (currentIndex == 0)
setScrollView(nameIdTaskMap);
else if (currentIndex == 1)
setScrollView(nameIdMeetingMap);
else
setScrollView(nameIdOtherMap);
}
@SuppressWarnings("unchecked")
private void addMember() {
Intent intent = new Intent();
if (currentIndex == MessageInfo.TASK) {
nameIdMap = (LinkedHashMap<String, String>) nameIdTaskMap.clone();
} else if (currentIndex == MessageInfo.MEETING) {
nameIdMap = (LinkedHashMap<String, String>) nameIdMeetingMap
.clone();
} else {
nameIdMap = (LinkedHashMap<String, String>) nameIdOtherMap.clone();
}
MessageInfo.nameIdMap = (LinkedHashMap<String, String>) nameIdMap
.clone();
intent.setClass(ScheduleAddActivity.this, SelectMemberActivity.class);
startActivityForResult(intent, CONTACT_REQUEST_CODE);
overridePendingTransition(R.anim.in_from_down, R.anim.out_of_up);
}
public long compDate(String s1, String s2) {
long d_value = 0;
Log.e("test", "s1 :" + s1);
Log.e("test", "s2 :" + s2);
try {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date1 = new Date();
Date date2 = new Date();
date1 = sf.parse(s1);
date2 = sf.parse(s2);
d_value = ((date2.getTime() - date1.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
Log.i("test", "dvalue :" + d_value);
return d_value;
}
/*
* 获取PopupWindow实例
*/
private void getPopupWindowInstance(String str, String currentTime,
String comparedTime, boolean isBtime) {
if (null != mPopupWindow) {
mPopupWindow = null;
}
initPopuptWindow(str, currentTime, comparedTime, isBtime);
}
/*
* 创建PopupWindow
*/
private void initPopuptWindow(String str, String currentTime,
String comparedTime, boolean isBtime) {
mPopupWindow = new MyDateTime(this, btnClick, str, currentTime,
comparedTime, isBtime);
}
private OnClickListener btnClick = new OnClickListener() {
@SuppressLint("NewApi")
public void onClick(View v) {
switch (v.getId()) {
case R.id.ll_begin:
ll_begin.setBackgroundResource(R.drawable.begin_time_selected);
isBeginPressed = true;
if (isEndPressed) {
ll_end.setBackgroundResource(R.drawable.end_time_normal);
isEndPressed = false;
}
getPopupWindowInstance("开始时间", beginDate, null, true);
mPopupWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);
break;
case R.id.ll_end:
if (currentIndex != MessageInfo.TASK) {
ll_end.setBackgroundResource(R.drawable.end_time_selected);
isEndPressed = true;
}
if (isBeginPressed) {
ll_begin.setBackgroundResource(R.drawable.begin_time_normal);
isBeginPressed = false;
}
getPopupWindowInstance("结束时间", endDate, beginDate, false);
mPopupWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);
break;
case R.id.button_cancel:
mPopupWindow.dismiss();
break;
case R.id.button_ok:
int year = MyDateTime.getYear();
int month = MyDateTime.getMonth();
int day = MyDateTime.getDay();
int hour = MyDateTime.getHour();
int minute = MyDateTime.getMin();
String time = "";
String date = "";
String min = "";
String hou = "";
String m = "";
String d = "";
if (month < 10) {
m = String.valueOf(0) + String.valueOf(month);
} else {
m = String.valueOf(month);
}
if (day < 10) {
d = String.valueOf(0) + String.valueOf(day);
} else {
d = String.valueOf(day);
}
if (minute < 10) {
min = String.valueOf(0) + String.valueOf(minute);
} else {
min = String.valueOf(minute);
}
if (hour < 13) {
hou = hour < 10 ? String.valueOf(0) + String.valueOf(hour)
: String.valueOf(hour);
time = getResources().getString(R.string.morning) + " "
+ String.valueOf(hou) + ":" + min;
} else {
hou = hour - 12 < 10 ? String.valueOf(0)
+ String.valueOf(hour - 12) : String
.valueOf(hour - 12);
time = getResources().getString(R.string.afternoon) + " "
+ String.valueOf(hou) + ":" + min;
}
String selectedDate = String.valueOf(year) + "-" + m + "-" + d
+ " " + time;
Log.i("test", "selectedDate 2:" + selectedDate);
String selectedTitle = MyDateTime.getTitle();
String selDate = String.valueOf(year) + "-"
+ String.valueOf(month) + "-" + String.valueOf(day)
+ " " + String.valueOf(hour) + ":"
+ String.valueOf(minute);
Log.e("test", "beginDate :" + beginDate);
Log.e("test", "endDate :" + endDate);
Log.e("test", "selDate :" + selDate);
if (selectedTitle != null && selectedTitle.equals("开始时间")) {
String currentDate = MessageInfo.getScheduleToday();
if (compDate(currentDate, selDate) < 0) {
Toast.makeText(
getApplication(),
getApplication().getString(
R.string.schedule_begintime_error),
Toast.LENGTH_SHORT).show();
return;
}
String[] resultEnd = endDate.split(" ");
String reDate = "";
if (resultEnd != null && resultEnd.length > 2) {
if (resultEnd[1].equals("上午")) {
reDate = resultEnd[0] + " " + resultEnd[2];
} else {
String[] strTime = resultEnd[2].split(":");
if (strTime != null && strTime.length > 1) {
reDate = resultEnd[0]
+ " "
+ String.valueOf(Integer
.valueOf(strTime[0]) + 12)
+ ":" + strTime[1];
}
}
}
Log.e("test", "reDate ::::::::::::" + reDate);
if (compDate(selDate, reDate) < 0) {// *************************************
scheduleEndTime.setText(time);
scheduleEndDate.setText(MessageInfo.getWeek(String
.valueOf(year)
+ "-"
+ String.valueOf(month)
+ "-" + String.valueOf(day))
+ " "
+ m
+ "-"
+ d);
endDate = selectedDate;
}
} else if (selectedTitle != null
&& selectedTitle.equals("结束时间")) {
Log.e("test", "test....beginDate::" + beginDate);
String[] resultBegin = beginDate.split(" ");
String resultDate = "";
if (resultBegin != null && resultBegin.length > 2) {
if (resultBegin[1].equals("上午")) {
resultDate = resultBegin[0] + " " + resultBegin[2];
} else {
String[] strTime = resultBegin[2].split(":");
if (strTime != null && strTime.length > 1) {
resultDate = resultBegin[0]
+ " "
+ String.valueOf(Integer
.valueOf(strTime[0]) + 12)
+ ":" + strTime[1];
}
}
}
Log.e("test", "resultDate ::::" + resultDate);
Log.e("test", "selDate :::::" + selDate);
// Log.e("test", "d_value ::" + compDate(resultDate,
// selDate));
if (compDate(resultDate, selDate) < 0) {
Toast.makeText(
getApplication(),
getApplication().getString(
R.string.schedule_endtime_error),
Toast.LENGTH_SHORT).show();
return;
}
}
String mon = "";
String da = "";
if (month < 10) {
mon = String.valueOf(0) + String.valueOf(month);
} else {
mon = String.valueOf(month);
}
if (day < 10) {
da = String.valueOf(0) + String.valueOf(day);
} else {
da = String.valueOf(day);
}
if (currentIndex == MessageInfo.TASK) {
date = String.valueOf(year)
+ getResources().getString(R.string.year) + mon
+ getResources().getString(R.string.month) + da
+ getResources().getString(R.string.seven) + " "
+ time;
} else {
date = MessageInfo
.getWeek(String.valueOf(year) + "-"
+ String.valueOf(month) + "-"
+ String.valueOf(day))
+ " " + mon + "-" + da;
if (isBeginPressed)
scheduleBeginTime.setText(time);
else
scheduleEndTime.setText(time);
}
if (isBeginPressed)
scheduleBeginDate.setText(date);
else
scheduleEndDate.setText(date);
if (currentIndex == 0)
scheduleEndDate.setTextColor(Color.BLACK);
if (isBeginPressed) {
beginDate = selectedDate;
} else {
endDate = selectedDate;
Log.i("test", "selectedDate :" + endDate);
}
mPopupWindow.dismiss();
break;
case R.id.ll_all_day:
if (currentIndex == MessageInfo.MEETING) {
if (isMeetingAllDayPressed) {
ll_all_day
.setBackgroundResource(R.drawable.all_day_normal);
ll_tt_begin.setVisibility(View.VISIBLE);
ll_tt_end.setVisibility(View.VISIBLE);
isMeetingAllDayPressed = false;
} else {
ll_all_day
.setBackgroundResource(R.drawable.all_day_selected);
ll_tt_begin.setVisibility(View.GONE);
ll_tt_end.setVisibility(View.GONE);
isMeetingAllDayPressed = true;
}
} else {
if (isOtherAllDayPressed) {
ll_all_day
.setBackgroundResource(R.drawable.all_day_normal);
ll_tt_begin.setVisibility(View.VISIBLE);
ll_tt_end.setVisibility(View.VISIBLE);
isOtherAllDayPressed = false;
} else {
ll_all_day
.setBackgroundResource(R.drawable.all_day_selected);
ll_tt_begin.setVisibility(View.GONE);
ll_tt_end.setVisibility(View.GONE);
isOtherAllDayPressed = true;
}
}
break;
case R.id.rl_add_member:
addMember();
break;
case R.id.iv_add_member:
addMember();
break;
case R.id.scheduleadd_right_btn:
try {
ids = "";
names = "";
sendTitle = scheduleTitle.getText().toString();
String[] memberId = new String[memberIdList.size()];
String[] memberName = new String[memberIdList.size()];
String scheduleType = "";
if (scheduleTitle.getText().toString().length() == 0) {
Toast.makeText(ScheduleAddActivity.this,
getResources().getString(R.string.title_error),
Toast.LENGTH_LONG).show();
return;
} else if (memberIdList.size() == 0) {
Toast.makeText(
ScheduleAddActivity.this,
getResources().getString(
R.string.participant_error),
Toast.LENGTH_LONG).show();
return;
} else if (beginDate.equals(receiveBeginDate)
&& endDate.equals(receiveEndDate)
&& sendTitle.equals(title)
&& type == currentIndex
&& CompareStrUtil.romove(
CompareStrUtil.toArrayList(memberId),
CompareStrUtil.toArrayList(idStr)).size() == 0
&& CompareStrUtil.romove(
CompareStrUtil.toArrayList(memberName),
CompareStrUtil.toArrayList(nameStr)).size() == 0) {
Toast.makeText(
ScheduleAddActivity.this,
getResources().getString(
R.string.schedule_error),
Toast.LENGTH_LONG).show();
return;
} else if (memberIdList.size() == 0
|| memberValueList.size() == 0) {
Toast.makeText(
ScheduleAddActivity.this,
getResources().getString(
R.string.schedule_member_error),
Toast.LENGTH_LONG).show();
return;
}
for (int i = 0; i < memberIdList.size(); i++) {
if (memberIdList.get(i).equals(UserInfo.db_id)) {
isExist = true;
}
if (i == memberIdList.size() - 1) {
ids += memberIdList.get(i);
names += memberValueList.get(i);
} else {
ids += memberIdList.get(i) + "、";
names += memberValueList.get(i) + "、";
}
}
if (currentIndex != MessageInfo.TASK) {
if (currentIndex == MessageInfo.MEETING)
scheduleType = "1";
else
scheduleType = "3";
if (scheduleAddress.getText() == null
|| scheduleAddress.getText().toString()
.length() > 0)
sendAddress = scheduleAddress.getText().toString();
else
sendAddress = "";
} else {
scheduleType = "2";
}
Log.i("test", "ids :" + ids);
Log.i("test", "names : " + names);
Log.i("test", "begindate :" + beginDate);
Log.i("test", "endDate :" + endDate);
if (isFromChat) {
String sendBDate = beginDate;
String sendEDate = endDate;
if (ll_tt_begin != null
&& ll_tt_begin.getVisibility() == View.GONE) {
String[] tempBegin = beginDate.split(" ");
String[] tempEnd = endDate.split(" ");
if (tempBegin != null && tempBegin.length > 1) {
sendBDate = tempBegin[0];
sendEDate = tempEnd[0];
}
}
sendItemId = StringWidthWeightRandom.getNextString();
Intent intent1 = new Intent(ScheduleAddActivity.this,
ChatActivity.class);
ChatMsgEntity entity = new ChatMsgEntity();
entity.setScheduleTitle(sendTitle);
entity.setScheduleEndTime(sendEDate/* endDate */);
entity.setScheduleBeginTime(sendBDate/* beginDate */);
entity.setScheduleAddress(sendAddress);
entity.setType(MessageInfo.SCHEDULE);
entity.setmemberIdList(memberIdList);
entity.setScheduleType(currentIndex);
entity.setMsguuid(sendItemId);
entity.setIsComing(false);
/***************************************/
entity.setBeginDate(beginDate);
entity.setEndDate(endDate);
/*************************************/
entity.setScheduleItemId(sendItemId);
intent1.putExtra("ScheduleToChatMessage",
(Serializable) entity);
setResult(3, intent1);
finish();
overridePendingTransition(R.anim.in_from_up,
R.anim.out_of_down);
return;
}
sendBeginDate = MessageInfo.StringToLong(beginDate);
sendEndDate = MessageInfo.StringToLong(endDate);
if (isExist) {
if (memberIdList.size() > 2) {
showRoundProcessDialog();
if (client == null)
client = new ClientSocket(
ScheduleAddActivity.this);
client.sendMessage(null, 15,
StringWidthWeightRandom.getNextString(),
UserInfo.db_id, ids.replace("、", ","),
sendBeginDate, sendEndDate, sendAddress,
scheduleType, "2", null, false);
} else {
for (int i = 0; i < memberIdList.size(); i++) {
if (!memberIdList.get(i).equals(UserInfo.db_id)) {
ids = memberIdList.get(i);
names = memberValueList.get(i);
}
}
/**********************************/
if (memberIdList.size() > 1) {
String sendBDate = beginDate;
String sendEDate = endDate;
if (ll_tt_begin != null
&& ll_tt_begin.getVisibility() == View.GONE) {
String[] tempBegin = beginDate.split(" ");
String[] tempEnd = endDate.split(" ");
if (tempBegin != null
&& tempBegin.length > 1) {
sendBDate = tempBegin[0];
sendEDate = tempEnd[0];
}
}
scheType = "";
msgType = "1";// group
if (currentIndex == MessageInfo.TASK) {
scheType = "2";
} else if (currentIndex == MessageInfo.MEETING) {
scheType = "1";
} else {
scheType = "3";
}
sendItemId = StringWidthWeightRandom
.getNextString();
if (client == null)
client = new ClientSocket(
ScheduleAddActivity.this);
client.sendMessage(sendTitle, 13, sendItemId,
UserInfo.db_id, ids,
MessageInfo.StringToLong(sendBDate),
MessageInfo.StringToLong(sendEDate),
sendAddress, scheType, msgType, null,
false);
showRoundProcessDialog();
} else
sendSchedule(false);
}
} else {
if (memberIdList.size() > 1) {
showRoundProcessDialog();
if (client == null)
client = new ClientSocket(
ScheduleAddActivity.this);
client.sendMessage(null, 15,
StringWidthWeightRandom.getNextString(),
UserInfo.db_id, ids.replace("、", ","),
sendBeginDate, sendEndDate, sendAddress,
scheduleType, "2", null, false);
} else {
sendSchedule(false);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
@SuppressWarnings("unchecked")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CONTACT_REQUEST_CODE:
if (resultCode == RESULT_OK) {
Log.i("test", "size :" + MessageInfo.nameIdMap.size());
nameIdMap = (LinkedHashMap<String, String>) MessageInfo.nameIdMap
.clone();
if (nameIdMap != null) {
if (currentIndex == 0) {
nameIdTaskMap = (LinkedHashMap<String, String>) nameIdMap
.clone();
} else if (currentIndex == 1) {
nameIdMeetingMap = (LinkedHashMap<String, String>) nameIdMap
.clone();
} else {
nameIdOtherMap = (LinkedHashMap<String, String>) nameIdMap
.clone();
}
if (nameIdMap != null) {
setScrollView(nameIdMap);
}
}
}
break;
case CHAT_RESULT_CODE:
String nameStr = "";
if (memberValueList.size() == 1) {
nameStr = memberValueList.get(0);
} else if (memberValueList.size() > 1) {
nameStr = names;
}
ChatMsgEntity msgEntity = new ChatMsgEntity();
String content = "";
if (currentIndex == MessageInfo.TASK) {
content = getResources().getString(R.string.message_item_task);
} else if (currentIndex == MessageInfo.MEETING) {
content = getResources().getString(
R.string.message_item_meeting);
} else {
content = getResources().getString(R.string.message_item_other);
}
msgEntity.setContent(content);
msgEntity.setTime(data.getExtras().getString("time"));
msgEntity.setFullTime(data.getExtras().getString("fullTime"));
Log.i("test", "format time :" + data.getExtras().getString("time"));
Log.e("test", "member size :" + memberIdList.size());
msgEntity.setName(nameStr);
ArrayList<String> idList = new ArrayList<String>();
for (int i = 0; i < memberIdList.size(); i++) {
if (memberIdList.get(i).equals(UserInfo.db_id))
continue;
idList.add(memberIdList.get(i));
}
if (idList.size() > 0) {
if (idList.size() == 1) {
msgEntity.setSenderId(UserInfo.db_id);
msgEntity.setReceiverId(idList.get(0));
} else {
msgEntity.setChatType(MessageInfo.GROUP);
msgEntity.setReceiverId(groupId);
}
Log.e("test", "receiver :" + msgEntity.getReceiverId());
msgEntity.setType(MessageInfo.SCHEDULE);
msgEntity.setIsAdd(false);
msgEntity.setIsComing(false);
msgEntity.setStatus(MessageInfo.SEND_MESSAGE);
MessageInfo.messageEntityList.add(msgEntity);
} else {
msgEntity.setSenderId(UserInfo.db_id);
}
break;
}
}
public void setScrollView(LinkedHashMap<String, String> map) {
memberValueList.clear();
memberIdList.clear();
viewGroup.removeAllViews();
Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String) map.get(key);
memberValueList.add(value);
memberIdList.add(key);
}
for (int i = 0; i < memberValueList.size(); i++) {
View view = LayoutInflater.from(this).inflate(
R.layout.schedule_member_item, null);
TextView tv = (TextView) view.findViewById(R.id.member_name);
tv.setText(memberValueList.get(i));
viewGroup.addView(view);
}
}
public void setTabStatus(int index) {
if (index == 0) {
scheduleType.setText(getResources().getString(R.string.task));
mTab1.setBackgroundResource(R.drawable.taskitem_background_pressed);
mTab2.setBackgroundResource(R.drawable.taskitem_background_normal);
mTab3.setBackgroundResource(R.drawable.taskitem_background_normal);
} else if (index == 1) {
scheduleType.setText(getResources().getString(R.string.meeting));
mTab1.setBackgroundResource(R.drawable.taskitem_background_normal);
mTab2.setBackgroundResource(R.drawable.taskitem_background_pressed);
mTab3.setBackgroundResource(R.drawable.taskitem_background_normal);
} else {
scheduleType.setText(getResources().getString(R.string.other));
mTab1.setBackgroundResource(R.drawable.taskitem_background_normal);
mTab2.setBackgroundResource(R.drawable.taskitem_background_normal);
mTab3.setBackgroundResource(R.drawable.taskitem_background_pressed);
}
}
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
currentIndex = index;
setTabStatus(index);
mTabPager.setCurrentItem(index);
}
};
public class MyOnPageChangeListener implements OnPageChangeListener {
@Override
public void onPageSelected(int arg0) {
currentIndex = arg0;
switchView();
setTabStatus(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
}
@Override
public void onBackPressed() {
if (!isFromChat)
backToSchedule();
else {
Intent intent = new Intent();
ChatMsgEntity entity = null;
intent.putExtra("ScheduleToChatMessage", (Serializable) entity);
setResult(3, intent);
finish();
overridePendingTransition(R.anim.in_from_up, R.anim.out_of_down);
}
}
@Override
public void onStart() {
super.onStart();
if (UserInfo.isHomePressed) {
UserInfo.isSendBroadCast = false;
if (client == null)
client = new ClientSocket(this);
client.sendMessage(null, 0,
StringWidthWeightRandom.getNextString(), null, null, null,
null, null, null, null, null, true);
}
Log.i("test", "scheduleaddactivity onStart");
// register broadcast
if (gbr == null) {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MessageInfo.GroupBroadCastName);
gbr = new GroupResultBroadcastReceiver();
registerReceiver(gbr, intentFilter);
}
if (mbr == null) {
IntentFilter intentFilter2 = new IntentFilter();
intentFilter2.addAction(MessageInfo.ScheduleResultBroadCast);
mbr = new MessageBroadcastReceiver();
registerReceiver(mbr, intentFilter2);
}
}
@Override
public void onResume() {
super.onResume();
Log.i("test", "scheduleaddactivity onResume");
}
@Override
public void onPause() {
super.onPause();
if (gbr != null) {
unregisterReceiver(gbr);
gbr = null;
}
if (mbr != null) {
unregisterReceiver(mbr);
mbr = null;
}
Log.i("test", "scheduleaddactivity onPause..................");
}
@Override
public void onStop() {
super.onStop();
Log.i("test", "scheduleaddactivity onStop");
}
@Override
public void onDestroy() {
super.onDestroy();
// unregisterReceiver(gbr);
// unregisterReceiver(mbr);
Log.i("test", "scheduleaddactivity onDestroy");
}
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (mPopupWindow != null)
mPopupWindow.dismiss();
View v = getCurrentFocus();
hideSoftInput(v.getWindowToken());
}
return super.dispatchTouchEvent(ev);
}
public void hideSoftInput(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}