/**
* VenueBookingFragment.java[v 1.0.0]
* class:com.bdyjy.fragment,VenueBookingFragment
* �ܺ� create at 2016-4-5 ����2:50:41
*/
package com.bdyjy.fragment;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.bdyjy.R;
import com.bdyjy.activity.MainActivity;
import com.bdyjy.constants.HandlerOrder;
import com.bdyjy.entity.venue.Data;
import com.bdyjy.entity.venue.ListRoom;
import com.bdyjy.entity.venue.VenueQueryResultBean;
import com.bdyjy.util.DateUtil;
import com.bdyjy.util.DialogUtil;
import com.bdyjy.util.OkHttpUtils;
import com.bdyjy.util.SPUtils;
/**
* com.bdyjy.fragment.VenueBookingFragment
*
* @author �ܺ�<br/>
* create at 2016-4-5 ����2:50:41
*/
public class VenueBookingFragment extends Fragment
{
private MainActivity ctx;
// private List<VenueRecordBean> list = new ArrayList<VenueRecordBean>();
private Map<String, String> map = new HashMap<String, String>();
private String date = DateUtil.getDateOfToday();
List<Data> list;
private Handler handler = null;
private List<ListRoom> listRoom;
private void initHandler()
{
handler = new Handler(ctx.getMainLooper())
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case HandlerOrder.TOAST:
Toast.makeText(ctx, toastMsg, Toast.LENGTH_LONG).show();
break;
case HandlerOrder.UPDATE_LISTVIEW:// ��ȡ���ݳɹ�֮�ص����������ͼ
initTable();
break;
case HandlerOrder.PROCESSBAR_SHOW:
ctx.showRoundProcessDialog();
break;
case HandlerOrder.PROCESSBAR_HIDE:
ctx.hideRoundProcessDialog();
break;
case HandlerOrder.PUBLIC_FLAG:
TextView tv_v1 = (TextView) viewMain
.findViewById(R.id.tv_v1);
TextView tv_v2 = (TextView) viewMain
.findViewById(R.id.tv_v2);
TextView tv_v3 = (TextView) viewMain
.findViewById(R.id.tv_v3);
tv_v1.setText(listRoom.get(0).getName());
tv_v2.setText(listRoom.get(1).getName());
tv_v3.setText(listRoom.get(2).getName());
break;
}
}
};
}
// // ���������
// private Dialog mDialog;
//
// public void showRoundProcessDialog()
// {
// mDialog = new AlertDialog.Builder(ctx).create();
// mDialog.setCancelable(false);
// // mDialog.setOnKeyListener(keyListener);
// mDialog.show();
// // ע��˴�Ҫ����show֮�� ����ᱨ�쳣
// mDialog.setContentView(R.layout.loading_process_dialog_anim);
// }
//
// public void hideRoundProcessDialog()
// {
// if (null != mDialog && mDialog.isShowing())
// mDialog.hide();
// }
/**
*
*/
public VenueBookingFragment(MainActivity ctx)
{
this.ctx = ctx;
initHandler();
}
private View viewMain;
private LayoutInflater inflater;
@SuppressLint("InflateParams")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
this.inflater = inflater;
viewMain = inflater.inflate(R.layout.venue_booking, null);
// �����������
TextView tv = (TextView) viewMain.findViewById(R.id.tv_title);
tv.setText("����Ԥ��");
// ���ذ�ť����¼�
viewMain.findViewById(R.id.tv_back).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
if ("lake".equals(MainActivity.orderFrom))
{
ctx.jumpToLakesideFragment();
MainActivity.orderFrom = "";
} else
{
ctx.jumpToFirstPageFregment();
}
}
});
viewMain.findViewById(R.id.ll_my).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
ctx.jumpToVenueBookingMyFregment();
}
});
// ���������л�Ч��
final View ll_1 = viewMain.findViewById(R.id.ll_1);
final View ll_2 = viewMain.findViewById(R.id.ll_2);
ll_1.setOnClickListener(new OnClickListener()
{
@SuppressLint("NewApi")
@Override
public void onClick(View v)
{
ll_1.setBackground(getResources().getDrawable(
R.drawable.selected_item_bg2));
ll_2.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg2));
// �������²�ѯ����
TextView tv_date = (TextView) viewMain
.findViewById(R.id.tv_today_date);
date = tv_date.getText().toString();
System.out.println("date:" + date);
queryVenue(date);
}
});
ll_2.setOnClickListener(new OnClickListener()
{
@SuppressLint("NewApi")
@Override
public void onClick(View v)
{
ll_2.setBackground(getResources().getDrawable(
R.drawable.selected_item_bg2));
ll_1.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg2));
TextView tv_date = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_date);
date = tv_date.getText().toString();
queryVenue(date);
}
});
// Ԥ����ť����¼�
viewMain.findViewById(R.id.ll_book_now).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
// ����Ƿ��Ѿ�ѡ���˳���
if (map.size() > 0)
{
MainActivity.venueBookingResultMap = map;
MainActivity.order_data_from = "VenueBookingFragment";// ��ǣ��Ǵ�list������
ctx.jumpToVenueBookingPayMyFregment();
} else
{
Toast.makeText(ctx, "�㻹ûѡ��", Toast.LENGTH_SHORT)
.show();
}
}
});
//
View ll_pervious = viewMain.findViewById(R.id.ll_previous);
View ll_next = viewMain.findViewById(R.id.ll_next);
// �����ǰһ�죬��ǰ��ʾ��2�����ڣ�����ǰŲһ�죬�������¸�������
ll_pervious.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
offset--;// ����ƫ����
TextView tv_today_day = (TextView) viewMain
.findViewById(R.id.tv_today_day);
tv_today_day.setText(DateUtil.getDayOfTodayByOffset(offset));
// ���켸��
TextView tv_today_date = (TextView) viewMain
.findViewById(R.id.tv_today_date);
tv_today_date.setText(DateUtil.getDateOfTodayByOffset(offset));
// �������ڼ�
TextView tv_tomorrow_day = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_day);
tv_tomorrow_day.setText(DateUtil
.getDayOfTomorrowByOffset(offset));
// ���켸��
TextView tv_tomorrow_date = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_date);
tv_tomorrow_date.setText(DateUtil
.getDateOfTomorrowByOffset(offset));
// ���Ҹ��µ�ǰ����
date = tv_today_date.getText().toString();
queryVenue(date);
}
});
// ����һ�죬ͬ��,���Ųһ�첢�����¸�������
ll_next.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
offset++;
TextView tv_today_day = (TextView) viewMain
.findViewById(R.id.tv_today_day);
tv_today_day.setText(DateUtil.getDayOfTodayByOffset(offset));
// ���켸��
TextView tv_today_date = (TextView) viewMain
.findViewById(R.id.tv_today_date);
tv_today_date.setText(DateUtil.getDateOfTodayByOffset(offset));
// �������ڼ�
TextView tv_tomorrow_day = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_day);
tv_tomorrow_day.setText(DateUtil
.getDayOfTomorrowByOffset(offset));
// ���켸��
TextView tv_tomorrow_date = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_date);
tv_tomorrow_date.setText(DateUtil
.getDateOfTomorrowByOffset(offset));
date = tv_tomorrow_date.getText().toString();
queryVenue(date);
}
});
// TODO ���Dz��Դ���
queryVenue(date);
return viewMain;
}
// �������װ�Ӻ�̨һ����ȡ�������ݵķ���
String toastMsg;
int offset = 0;// ����ƫ����
/**
* �̣߳����ҵ�ǰ����Ԥ�����
*
* @param id
*/
private void queryVenue(final String date)
{
new Thread()
{
@Override
public void run()
{
// ����get����
String res = null;
// ��sharePreference��ȡ��֮ǰ�洢�IJ���
String token = (String) SPUtils.get(ctx, "token", "");
String singnature = (String) SPUtils.get(ctx, "singnature", "");
String st = (String) SPUtils.get(ctx, "st", "");
String httpStr = "/admin/appointmenrecord/initByDate.do?appDate="
+ date
+ "&token="
+ token
+ "&singnature="
+ singnature + "&st=" + st;
System.out.println(httpStr);
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance().doGet(ctx, httpStr);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
toastMsg = "��ȡ����ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
VenueQueryResultBean bean = JSON.parseObject(res,
VenueQueryResultBean.class);
// ����ֵ������JSON��ʽ�����ݣ���Ҫ���������
if (res.trim().length() == 0)
{
toastMsg = "��ȡ����ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
String app_result_key = bean.getApp_result_key();
if ("0".equals(app_result_key))// ���������������ŵ�����,
// ��ô��Ҫ������ȡ�����ŵı��⣬���ݣ���ʾ�ڽ�����
{
list = bean.getData();// �������Ҫչʾ������
// TODO
listRoom = bean.getListRoom();
handler.sendEmptyMessage(HandlerOrder.PUBLIC_FLAG);
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
}
}
}.start();
}
/**
* �����ݼ��ص������
*
* @param list
*/
@SuppressLint("InflateParams")
private void initTable()
{
// ÿһ�θ���table���ݣ���Ҫ�Ȱ� �ɵ��ύ�������
if (map != null)
{
map.clear();
}
LinearLayout ll_item_list = (LinearLayout) viewMain
.findViewById(R.id.ll_item_list);
ll_item_list.removeAllViews();
// ����ѡ������趨:��ȡ�������������ڣ����һ������
// �������ڼ�
TextView tv_today_day = (TextView) viewMain
.findViewById(R.id.tv_today_day);
tv_today_day.setText(DateUtil.getDayOfTodayByOffset(offset));
// ���켸��
TextView tv_today_date = (TextView) viewMain
.findViewById(R.id.tv_today_date);
tv_today_date.setText(DateUtil.getDateOfTodayByOffset(offset));
// �������ڼ�
TextView tv_tomorrow_day = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_day);
tv_tomorrow_day.setText(DateUtil.getDayOfTomorrowByOffset(offset));
// ���켸��
TextView tv_tomorrow_date = (TextView) viewMain
.findViewById(R.id.tv_tomorrow_date);
tv_tomorrow_date.setText(DateUtil.getDateOfTomorrowByOffset(offset));
// ���س�������
int index = 0;
for (Data d : list)
{
String timeId = d.getId();// TODO �������ʱ��id
String time = d.getStartTime() + " - " + d.getEndTime();// ʱ���ֵ
View sperator = inflater.inflate(R.layout.item_sperator, null);
ll_item_list.addView(sperator);
View item = inflater.inflate(R.layout.venue_booking_item1, null);
TextView tv_time = (TextView) item.findViewWithTag("time");
tv_time.setText(time);
// �������ȡͨ��tag����ȡ�ڵ㣬Ȼ������¼�
String sx1 = "�����_";
String sx2 = "�����_";
String sx3 = "����_";
String[] tags =
{ sx1 + index, sx2 + index, sx3 + index };
item.findViewWithTag(sx1).setTag(sx1 + index);
item.findViewWithTag(sx2).setTag(sx2 + index);
item.findViewWithTag(sx3).setTag(sx3 + index);
// ����Ӽ����¼�֮ǰ���ȶ�ѡ���tag���б��
List<ListRoom> listRoom = d.getListRoom();// ����ÿ�����ݵ���Ϣ
String[] flags = new String[3];
String[] prices = new String[3];
String[] roomId = new String[3];
for (int ix = 0; ix < listRoom.size(); ix++)
{
flags[ix] = listRoom.get(ix).getFlag();// ����״̬��-1�ѹ��� 0��ԤԼ 1��ԤԼ
prices[ix] = listRoom.get(ix).getPrice();// ԤԼ�۸�
roomId[ix] = listRoom.get(ix).getId();// ����id
}
// TEST ���Դ���
// flags = new String[]
// { "0", "0", "0" };
for (int iy = 0; iy < tags.length; iy++)
{
View iv = item.findViewWithTag(tags[iy]);
// ���ж�״̬�������0����ԤԼ����ֱ�Ӹ������¼����������0����ֱ�չʾ��Ӧ���ݣ��ѹ��ڣ���ԤԼ��
if (flags[iy].equals("0"))
{
setItemCanAppointment(iv);
iv.setOnClickListener(new MyOnClickListener(ll_item_list,
item, tags, tags[iy], timeId, time, prices[iy],
roomId[iy]));
} else if (flags[iy].equals("-1"))// �ѹ���
{
// ֻ��ʾ�ѹ���view������������
// �л�item״̬
setItemExpired(iv);
} else if (flags[iy].equals("1"))// ��ԤԼ
{
// ֻ��ʾ��ԤԼview������������
setItemAppointmented(iv);
}
}
ll_item_list.addView(item);
index++;
}
}
/**
* ����Ϊ��ԤԼ
*/
private void setItemCanAppointment(View v)
{
View v_checked = v.findViewWithTag("checked");
v_checked.setVisibility(View.GONE);
View v_not_checked = v.findViewWithTag("not_checked");
v_not_checked.setVisibility(View.VISIBLE);
View v_expired = v.findViewWithTag("expired");
v_expired.setVisibility(View.GONE);
View v_appointmented = v.findViewWithTag("appointmented");
v_appointmented.setVisibility(View.GONE);
}
/**
* ����Ϊ�ѹ���
*/
private void setItemExpired(View v)
{
View v_checked = v.findViewWithTag("checked");
v_checked.setVisibility(View.GONE);
View v_not_checked = v.findViewWithTag("not_checked");
v_not_checked.setVisibility(View.GONE);
View v_expired = v.findViewWithTag("expired");
v_expired.setVisibility(View.VISIBLE);
View v_appointmented = v.findViewWithTag("appointmented");
v_appointmented.setVisibility(View.GONE);
}
/**
* ����Ϊ��ԤԼ
*/
private void setItemAppointmented(View v)
{
View v_checked = v.findViewWithTag("checked");
v_checked.setVisibility(View.GONE);
View v_not_checked = v.findViewWithTag("not_checked");
v_not_checked.setVisibility(View.GONE);
View v_expired = v.findViewWithTag("expired");
v_expired.setVisibility(View.GONE);
View v_appointmented = v.findViewWithTag("appointmented");
v_appointmented.setVisibility(View.VISIBLE);
}
private class MyOnClickListener implements OnClickListener
{
View ll_item_list;
String thisTag;
String[] tags;
View item;
String timeId;
String timeStr;
String price;
String roomId;
MyOnClickListener(View ll_item_list, View item, String[] tags,
String thisTag, String timeId, String timeStr, String price,
String roomId)
{
this.ll_item_list = ll_item_list;
this.item = item;
this.tags = tags;
this.thisTag = thisTag;
this.timeId = timeId;
this.timeStr = timeStr;
this.price = price;
this.roomId = roomId;
}
private final static int STATUS_CHECKED = 1;
private final static int STATUS_NOT_CHECKED = 0;
/**
* ��ȡ��ǰ��������Ҫѡ�У�����Ҫȡ����ѡ�з���1��ȡ������0
*
* @param v
* @return
*/
private int getAction(View v)
{
int x = -1;
// ��ȡ ��ǰ����
View v_checked = v.findViewWithTag("checked");
if (v_checked.getVisibility() == View.VISIBLE)
{
x = STATUS_NOT_CHECKED;
} else
{
x = STATUS_CHECKED;
}
View v_not_checked = v.findViewWithTag("not_checked");
if (v_not_checked.getVisibility() == View.VISIBLE)
{
x = STATUS_CHECKED;
} else
{
x = STATUS_NOT_CHECKED;
}
return x;
}
private void switchToChecked(View v)
{
View v_checked = v.findViewWithTag("checked");
v_checked.setVisibility(View.VISIBLE);
View v_not_checked = v.findViewWithTag("not_checked");
v_not_checked.setVisibility(View.GONE);
}
private void switchToNotChecked(View v)
{
View v_checked = v.findViewWithTag("checked");
v_checked.setVisibility(View.GONE);
View v_not_checked = v.findViewWithTag("not_checked");
v_not_checked.setVisibility(View.VISIBLE);
}
@Override
public void onClick(View v)
{
int x = getAction(v);
String mapkey = date + "&" + timeId + "&" + timeStr;
if (x == STATUS_CHECKED)// ���������ѡ�е�ǰ��
{
if (map.size() == 1)// ���map���Ѿ���һ��ѡ�еļ�¼����ǰ��Ҫ����һ��ѡ�м�¼�Ļ����ж������Ƿ���ͬһ�����أ��������ͬһ�����أ���ȡ���Ѿ�ѡ�е��Ǹ���
{
String already_checked_item_tag = null;// �Ѿ�ѡ�е�item��tag
String time = null;
// ���ж������Ƿ���ͬһ������
for (String key : map.keySet())
{
time = key;
already_checked_item_tag = map.get(key);
}
String sux = already_checked_item_tag.split("&")[0]
.split("_")[0];
String sux2 = thisTag.split("_")[0];
if (sux.equals(sux2))// ���ж������Ƿ���ͬһ������
{
// �����ͬһ�����أ���������
} else
{
// �������ͬһ�����أ���ȡ��֮ǰ���Ǹ�
switchToNotChecked(ll_item_list
.findViewWithTag(already_checked_item_tag
.split("&")[0]));
map.remove(time);
}
}
if (map.size() == 2)
{
Toast.makeText(ctx, "���ѡ��2��ʱ��,����ȡ��֮����ѡ������",
Toast.LENGTH_SHORT).show();
return;
}
switchToChecked(v);
for (String tag : tags)// ���Ҽ�⣬�����ǰ���ر�ѡ�����������Զ���������¼�
{
if (!tag.equals(thisTag))
{
switchToNotChecked(item.findViewWithTag(tag));
}
}
map.put(mapkey, thisTag + "&" + price + "&" + roomId);
} else
{
map.remove(mapkey);
switchToNotChecked(v);
}
System.out.println("ͨ��Map.keySet����key��value��");
for (String key : map.keySet())
{
System.out.println("key= " + key + " and value= "
+ map.get(key));
}
}
}
}