package com.wise.wawc;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.wise.data.DevicesData;
import com.wise.pubclas.Constant;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import com.wise.sql.DBExcute;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout.LayoutParams;
public class Fragment_devices extends Fragment{
private static final int Get_data = 1;
LinearLayout ll_content;
GridView gv_activity_devices;
TextView tv_activity_devices_serial, tv_activity_devices_sim,
tv_activity_devices_status, tv_activity_devices_service_end_date,
tv_activity_devices_hardware_version,
tv_activity_devices_software_version;
List<DevicesData> devicesDatas = new ArrayList<DevicesData>();
DevicesAdapter devicesAdapter;
boolean isJump = true;// false绑定终端,true加载
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_devices, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ll_content = (LinearLayout) getActivity().findViewById(R.id.ll_content);
ImageView iv_activity_devices_menu = (ImageView) getActivity().findViewById(R.id.iv_activity_devices_menu);
iv_activity_devices_menu.setOnClickListener(onClickListener);
TextView tv_activity_devices_renewals = (TextView) getActivity().findViewById(R.id.tv_activity_devices_renewals);
tv_activity_devices_renewals.setOnClickListener(onClickListener);
gv_activity_devices = (GridView) getActivity().findViewById(R.id.gv_activity_devices);
tv_activity_devices_serial = (TextView) getActivity().findViewById(R.id.tv_activity_devices_serial);
tv_activity_devices_sim = (TextView) getActivity().findViewById(R.id.tv_activity_devices_sim);
tv_activity_devices_status = (TextView) getActivity().findViewById(R.id.tv_activity_devices_status);
tv_activity_devices_service_end_date = (TextView) getActivity().findViewById(R.id.tv_activity_devices_service_end_date);
tv_activity_devices_hardware_version = (TextView) getActivity().findViewById(R.id.tv_activity_devices_hardware_version);
tv_activity_devices_software_version = (TextView) getActivity().findViewById(R.id.tv_activity_devices_software_version);
Intent intent = getActivity().getIntent();
isJump = intent.getBooleanExtra("isJump", true);
System.out.println("isJump = " + isJump);
if (!isJump) {// 绑定终端
System.out.println("隐藏");
ll_content.setVisibility(View.GONE);
iv_activity_devices_menu.setImageResource(R.drawable.nav_back);
} else {
ll_content.setVisibility(View.VISIBLE);
iv_activity_devices_menu.setImageResource(R.drawable.side_left);
}
GetDevicesDB();
GetDevicesData();
registerBroadcastReceiver();
}
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_activity_devices_menu:
if (!isJump) {
getActivity().finish();
} else {
ActivityFactory.A.LeftMenu();
}
break;
case R.id.tv_activity_devices_renewals:
getActivity().startActivity(new Intent(getActivity(), OrderServiceActivity.class));
break;
}
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case Get_data:
jsonDevice(msg.obj.toString());
showGridView();
JudgeDevice(msg.obj.toString());
break;
default:
break;
}
}
};
private void showGridView() {
if (devicesDatas.size() > 0) {
showDevice(devicesDatas.get(0));
}
if (isJump) {
System.out.println("加载后面文件");
DevicesData devicesData = new DevicesData();
devicesData.setSerial("");
devicesData.setCheck(false);
devicesData.setType(1);
devicesDatas.add(devicesData);
}
devicesAdapter = new DevicesAdapter();
gv_activity_devices.setAdapter(devicesAdapter);
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
120, getResources().getDisplayMetrics());
LayoutParams params = new LayoutParams(((devicesDatas.size()
* (px + 10) + 10) + 10), LayoutParams.WRAP_CONTENT);
gv_activity_devices.setLayoutParams(params);
gv_activity_devices.setColumnWidth(px);
gv_activity_devices.setHorizontalSpacing(10);
gv_activity_devices.setStretchMode(GridView.NO_STRETCH);
gv_activity_devices.setNumColumns(devicesDatas.size());
gv_activity_devices.setOnItemClickListener(onItemClickListener);
}
int index = 0;
OnItemClickListener onItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (!isJump) {// 绑定终端
index = arg2;
backRequest(arg2);
} else {
if (arg2 == (devicesDatas.size() - 1)) {
showDialog();
} else {
for (int i = 0; i < devicesDatas.size(); i++) {
devicesDatas.get(i).setCheck(false);
}
showDevice(devicesDatas.get(arg2));
devicesDatas.get(arg2).setCheck(true);
devicesAdapter.notifyDataSetChanged();
}
}
}
};
private void showDevice(DevicesData devicesData) {
tv_activity_devices_serial.setText(devicesData.getSerial());
tv_activity_devices_sim.setText(devicesData.getSim());
tv_activity_devices_status.setText(devicesData.getStatus());
tv_activity_devices_service_end_date.setText(devicesData
.getService_end_date().substring(0, 10));
tv_activity_devices_hardware_version.setText(devicesData
.getHardware_version());
tv_activity_devices_software_version.setText(devicesData
.getSoftware_version());
}
boolean isHaveDevices = false;
private void GetDevicesDB() {
if(Variable.devicesDatas.size() == 0){
isHaveDevices = false;
ll_content.setVisibility(View.GONE);
}else{
isHaveDevices = true;
ll_content.setVisibility(View.VISIBLE);
devicesDatas.addAll(Variable.devicesDatas);
showGridView();
}
}
public void GetDevicesData() {
// TODO 我的终端
String url = Constant.BaseUrl + "customer/" + Variable.cust_id
+ "/device?auth_code=" + Variable.auth_code;
new Thread(new NetThread.GetDataThread(handler, url, Get_data)).start();
}
/**
* 判断更新还是插入
*
* @param result
*/
private void JudgeDevice(String result) {
if (isHaveDevices) {// 更新
UpdateDevice(result, "Devices");
} else {// 插入
InsertDevice(result, "Devices");
}
}
private void UpdateDevice(String result, String Title) {
DBExcute dbExcute = new DBExcute();
ContentValues values = new ContentValues();
values.put("Content", result);
dbExcute.UpdateDB(getActivity(), values, Title);
}
private void InsertDevice(String result, String Title) {
DBExcute dbExcute = new DBExcute();
ContentValues values = new ContentValues();
values.put("Cust_id", Variable.cust_id);
values.put("Title", Title);
values.put("Content", result);
dbExcute.InsertDB(getActivity(), values, Constant.TB_Base);
}
/**
* 解析终端数据
*
* @param result
*/
private void jsonDevice(String result) {
try {
devicesDatas.clear();
JSONArray jsonArray = new JSONArray(result);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
DevicesData devicesData = new DevicesData();
devicesData.setDevice_id(jsonObject.getString("device_id"));
devicesData.setHardware_version(jsonObject
.getString("hardware_version"));
devicesData.setSerial(jsonObject.getString("serial"));
devicesData.setService_end_date(jsonObject
.getString("service_end_date"));
devicesData.setSim(jsonObject.getString("sim"));
devicesData.setSoftware_version(jsonObject
.getString("software_version"));
devicesData.setStatus(jsonObject.getString("status"));
devicesData.setType(0);
devicesDatas.add(devicesData);
}
Variable.devicesDatas.clear();
Variable.devicesDatas.addAll(devicesDatas);
} catch (JSONException e) {
e.printStackTrace();
}
}
private class DevicesAdapter extends BaseAdapter {
private static final int VALUE_CAR = 0;
private static final int VALUE_ADD = 1;
LayoutInflater mInflater = LayoutInflater.from(getActivity());
@Override
public int getCount() {
return devicesDatas.size();
}
@Override
public Object getItem(int position) {
return devicesDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
ViewHolder holder = null;
ViewAdd viewAdd = null;
if (convertView == null) {
switch (type) {
case VALUE_CAR:
convertView = mInflater.inflate(R.layout.item_cars, null);
holder = new ViewHolder();
holder.tv_item_carnumber = (TextView) convertView
.findViewById(R.id.tv_item_carnumber);
holder.iv_item_cars = (ImageView) convertView
.findViewById(R.id.iv_item_cars);
holder.ll_item_cars = (LinearLayout) convertView
.findViewById(R.id.ll_item_cars);
convertView.setTag(holder);
break;
case VALUE_ADD:
convertView = mInflater.inflate(R.layout.item_add, null);
viewAdd = new ViewAdd();
convertView.setTag(viewAdd);
break;
}
} else {
switch (type) {
case VALUE_CAR:
holder = (ViewHolder) convertView.getTag();
break;
case VALUE_ADD:
viewAdd = (ViewAdd) convertView.getTag();
break;
}
}
switch (type) {
case VALUE_CAR:
DevicesData devicesData = devicesDatas.get(position);
holder.tv_item_carnumber.setText(devicesData.getSerial());
holder.iv_item_cars.setImageResource(R.drawable.icon_terminal);
if (devicesData.isCheck()) {
holder.ll_item_cars
.setBackgroundResource(R.drawable.bg_car_logo);
} else {
holder.ll_item_cars.setBackgroundResource(R.color.white);
}
break;
case VALUE_ADD:
break;
}
return convertView;
}
@Override
public int getItemViewType(int position) {
return devicesDatas.get(position).getType();
}
private class ViewHolder {
TextView tv_item_carnumber;
ImageView iv_item_cars;
LinearLayout ll_item_cars;
}
private class ViewAdd {
}
}
private void backRequest(int index) {
Intent intent = new Intent();
intent.putExtra("DeviceId", devicesDatas.get(index).getDevice_id());
intent.putExtra("Serial", devicesDatas.get(index).getSerial());
getActivity().setResult(7, intent);
getActivity().finish();
}
private void showDialog() {
new AlertDialog.Builder(getActivity())
.setTitle("列表框")
.setItems(new String[] { "添加终端", "订购终端" },
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
if (which == 0) {
getActivity()
.startActivity(new Intent(
getActivity(),
DevicesAddActivity.class));
} else {
getActivity().startActivity(new Intent(
getActivity(),
OrderDeviceActivity.class));
}
}
}).setNegativeButton("确定", null).show();
}
@Override
public void onDestroyView() {
super.onDestroyView();
getActivity().unregisterReceiver(broadcastReceiver);
}
private void registerBroadcastReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Constant.A_UpdateDevice);
getActivity().registerReceiver(broadcastReceiver, intentFilter);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(Constant.A_UpdateDevice)){
GetDevicesData();
}
}
};
}