package com.basic.security.fragment;
|
|
import android.text.TextUtils;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.AdapterView;
|
import android.widget.ArrayAdapter;
|
import android.widget.BaseAdapter;
|
import android.widget.Button;
|
import android.widget.CheckBox;
|
import android.widget.CompoundButton;
|
import android.widget.EditText;
|
import android.widget.GridView;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.ListView;
|
import android.widget.RadioButton;
|
import android.widget.RelativeLayout;
|
import android.widget.Spinner;
|
import android.widget.TextView;
|
|
import com.basic.security.R;
|
import com.basic.security.base.BaseFragment;
|
import com.basic.security.manager.impl.cblite.BusinessDetailManager;
|
import com.basic.security.manager.impl.cblite.BusinessListManager;
|
import com.basic.security.manager.impl.cblite.BusinessManager;
|
import com.basic.security.manager.impl.cblite.TimeManager;
|
import com.basic.security.model.ModelAdapter;
|
import com.basic.security.utils.DateEditUtil;
|
import com.basic.security.utils.DateUtil;
|
import com.basic.security.utils.KeyboardUtil;
|
import com.basic.security.utils.ToastUtil;
|
|
import org.androidannotations.annotations.Click;
|
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.ViewById;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 新建业务表名称页面
|
*/
|
@EFragment(R.layout.fragment_rule_detail)
|
public class RuleDetailFragment extends BaseFragment {
|
@ViewById
|
public RelativeLayout rl_check_hint;
|
// 新增的逻辑业务,业务表
|
@ViewById
|
EditText et_business_name, et_only_allow_start, et_only_allow_end, et_search_device,
|
et_access_hint, et_not_reached_time_hint, et_not_reached_time_remind, et_confirm_pass_hint;
|
@ViewById
|
RadioButton rb_only_allow, rb_choose_from_time_rule, rb_check_all_device;
|
@ViewById
|
LinearLayout ll_choose_from_time_rule;
|
@ViewById
|
ListView lv_choose_from_time_rule, lv_choose_from_all_device;
|
@ViewById
|
ImageView iv_search_device, iv_access_hint_check, iv_access_hint_show, iv_not_reached_time_check,
|
iv_not_reached_time_show, iv_confirm_pass_check, iv_confirm_pass_show;
|
@ViewById
|
Button btn_reset, btn_save_business, btn_check_message_save, btn_check_message_cancel;
|
@ViewById
|
CheckBox ck_access_table_name, ck_access_identity, ck_access_name, ck_confirm_pass_identity, ck_confirm_pass_name;
|
@ViewById
|
GridView gv_hint;
|
@ViewById
|
Spinner time_unit;
|
|
private AllDeviceAdapter allDeviceAdapter;
|
private ModelAdapter businessDocument;
|
private boolean createNew;
|
private String checkedTimeRuleId = ""; // 选中时间规则的id
|
private Map<String, ModelAdapter> checkDeviceMap = new HashMap<>();
|
private List<String> applyDeviceList;
|
private String remindTime = "分钟";
|
private List<ModelAdapter> allTimeRule;
|
private TimeRuleAdapter timeRuleAdapter;
|
private int intTag = -1;
|
private int intAccessPassTag = 0; // 允许通行的标识
|
private int intNotReachTimeTag = 1; // 未到通行时间的标识
|
private int intConfirmPassTag = 2; // 确认通行的标识
|
private List<String> mList = new ArrayList();
|
private List<String> currentCheckedMessages = new ArrayList();
|
private boolean showData = false; // 此参数为了让获取设备列表数据回显
|
private int temple = -1;
|
|
@Click
|
void rb_only_allow() {
|
rb_only_allow.setChecked(true);
|
rb_choose_from_time_rule.setChecked(false);
|
ll_choose_from_time_rule.setVisibility(View.GONE);
|
}
|
|
@Click
|
void rb_choose_from_time_rule() {
|
rb_only_allow.setChecked(false);
|
rb_choose_from_time_rule.setChecked(true);
|
ll_choose_from_time_rule.setVisibility(View.VISIBLE);
|
}
|
|
@Click
|
void et_only_allow_start() {
|
KeyboardUtil.hideSoftKeyboard();
|
DateEditUtil.showStartAndEndDate(et_only_allow_start, et_only_allow_end);
|
}
|
|
@Click
|
void et_only_allow_end() {
|
KeyboardUtil.hideSoftKeyboard();
|
DateEditUtil.showDate(et_only_allow_end);
|
}
|
|
@Click
|
void rb_check_all_device() {
|
rb_check_all_device.setChecked(true);
|
allDeviceAdapter.checked(true);
|
allDeviceAdapter.notifyDataSetChanged();
|
}
|
|
@Click
|
void btn_reset() {
|
rb_check_all_device.setChecked(false);
|
allDeviceAdapter.checked(false);
|
allDeviceAdapter.notifyDataSetChanged();
|
}
|
|
@Click
|
void iv_access_hint_check() {
|
KeyboardUtil.hideSoftKeyboard();
|
intTag = intAccessPassTag;
|
showPopupWindow(intTag);
|
}
|
|
@Click
|
void iv_access_hint_show() {
|
KeyboardUtil.hideSoftKeyboard();
|
String message = "";
|
if (ck_access_table_name.isChecked()) {
|
message = "家长会 ";
|
}
|
if (ck_access_identity.isChecked()) {
|
message = message + "家长 ";
|
}
|
if (ck_access_name.isChecked()) {
|
message = message + "刘克 ";
|
}
|
if (!TextUtils.isEmpty(et_access_hint.getText().toString().trim())) {
|
message = message + et_access_hint.getText().toString().trim();
|
}
|
if (!TextUtils.isEmpty(message)) {
|
ToastUtil.show(message);
|
}
|
}
|
|
@Click
|
void iv_not_reached_time_check() {
|
KeyboardUtil.hideSoftKeyboard();
|
intTag = intNotReachTimeTag;
|
showPopupWindow(intTag);
|
}
|
|
@Click
|
void iv_not_reached_time_show() {
|
KeyboardUtil.hideSoftKeyboard();
|
ToastUtil.show(et_not_reached_time_hint.getText().toString());
|
}
|
|
@Click
|
void iv_confirm_pass_check() {
|
KeyboardUtil.hideSoftKeyboard();
|
intTag = intConfirmPassTag;
|
showPopupWindow(intTag);
|
}
|
|
@Click
|
void iv_confirm_pass_show() {
|
KeyboardUtil.hideSoftKeyboard();
|
String message = "";
|
if (ck_confirm_pass_identity.isChecked()) {
|
message = "家长 ";
|
}
|
if (ck_confirm_pass_name.isChecked()) {
|
message = message + "刘克 ";
|
}
|
if (!TextUtils.isEmpty(et_confirm_pass_hint.getText().toString().trim())) {
|
message = message + et_confirm_pass_hint.getText().toString().trim();
|
}
|
if (!TextUtils.isEmpty(message)) {
|
ToastUtil.show(message);
|
}
|
}
|
|
@Click
|
void btn_save_business() { // 点击保存 1 选中
|
if (businessDocument == null) {
|
businessDocument = new ModelAdapter();
|
}
|
String business_name = et_business_name.getText().toString().trim();
|
if (TextUtils.isEmpty(business_name)) {
|
ToastUtil.show("业务表名称不能为空");
|
return;
|
}
|
if (createNew) {
|
List<ModelAdapter> businessList = BusinessListManager.getBusinessList();
|
for (ModelAdapter businessName : businessList) {
|
if (business_name.equals(businessName.getString("business_name"))) {
|
ToastUtil.show("已有此业务表名称,请更改业务表名称");
|
return;
|
}
|
}
|
}
|
businessDocument.setString("business_name", business_name);
|
if (rb_only_allow.isChecked()) {
|
businessDocument.setString("only_allow", "1");
|
businessDocument.setString("choose_from_time_rule", "0");
|
String startTime = et_only_allow_start.getText().toString().trim();
|
String endTime = et_only_allow_end.getText().toString().trim();
|
businessDocument.setString("only_allow_start", DateUtil.getDefaultTimeStamp(startTime) + "");
|
businessDocument.setString("only_allow_end", DateUtil.getDefaultTimeStamp(endTime) + "");
|
}
|
if (rb_choose_from_time_rule.isChecked()) {
|
businessDocument.setString("choose_from_time_rule", "1");
|
businessDocument.setString("only_allow", "0");
|
businessDocument.setString("checked_time_rule_id", checkedTimeRuleId);
|
}
|
// 存储选择的设备(ids,ids,ids....)
|
saveCheckedDevice(businessDocument);
|
businessDocument.setString("access_identity", ck_access_identity.isChecked() ? "1" : "0");
|
businessDocument.setString("access_table_name", ck_access_table_name.isChecked() ? "1" : "0");
|
businessDocument.setString("access_name", ck_access_name.isChecked() ? "1" : "0");
|
String access_hint = et_access_hint.getText().toString().trim();
|
if (TextUtils.isEmpty(access_hint)) {
|
ToastUtil.show("允许通行提示语不能为空");
|
return;
|
}
|
businessDocument.setString("access_hint", access_hint);
|
String not_reached_time_hint = et_not_reached_time_hint.getText().toString().trim();
|
if (TextUtils.isEmpty(not_reached_time_hint)) {
|
ToastUtil.show("未到通行时间提示语不能为空");
|
return;
|
}
|
businessDocument.setString("not_reached_time_hint", not_reached_time_hint);
|
// 存储时多少时间前开始提示,时间单位为秒
|
String not_reached_time_remind = et_not_reached_time_remind.getText().toString().trim();
|
if (TextUtils.isEmpty(not_reached_time_remind)) {
|
ToastUtil.show("开始时间前提示时间不能为空");
|
return;
|
}
|
businessDocument.setString("not_reached_time_remind", not_reached_time_remind);
|
businessDocument.setString("time_unit", remindTime);
|
businessDocument.setString("confirm_pass_identity", ck_confirm_pass_identity.isChecked() ? "1" : "0");
|
businessDocument.setString("confirm_pass_name", ck_confirm_pass_name.isChecked() ? "1" : "0");
|
String confirm_pass_hint = et_confirm_pass_hint.getText().toString().trim();
|
if (TextUtils.isEmpty(confirm_pass_hint)) {
|
ToastUtil.show("确认通行提示语不能为空");
|
return;
|
}
|
businessDocument.setString("confirm_pass_hint", confirm_pass_hint);
|
businessDocument.setString("create_time", System.currentTimeMillis() + "");
|
businessDocument.setString("table", "business");
|
BusinessManager.saveBusiness(businessDocument);
|
ToastUtil.show("保存成功");
|
|
showFragment(mainActivity().fragment_rule_list);
|
|
}
|
|
private void saveCheckedDevice(ModelAdapter businessDocument) { // 此业务表应用到那些设备
|
applyDeviceList = BusinessDetailManager.getDeviceByBusiness(businessDocument.getId());
|
for (String checkedDeviceId : checkDeviceMap.keySet()) {
|
if (!TextUtils.isEmpty(checkedDeviceId)) {
|
applyDeviceList.remove(checkedDeviceId);
|
BusinessDetailManager.save(businessDocument.getId(), checkedDeviceId);
|
}
|
}
|
for (String deviceId : applyDeviceList) {
|
BusinessDetailManager.delete(businessDocument.getId(), deviceId);
|
}
|
}
|
|
@Override
|
public void hide() {
|
super.hide();
|
intTag = -1;
|
}
|
|
@Override
|
public void show() { // 数据回显
|
checkedTimeRuleId = "";
|
if (businessDocument == null) {
|
businessDocument = new ModelAdapter();
|
et_only_allow_start.setText(DateUtil.formatTime(DateUtil.getTimesMorning(), "yyyy/MM/dd HH:mm"));
|
et_only_allow_end.setText(DateUtil.formatTime(DateUtil.getTimesNight(), "yyyy/MM/dd HH:mm"));
|
rb_only_allow();
|
showData = false;
|
} else {
|
if ("1".equals(businessDocument.getString("choose_from_time_rule"))) { // 选中从时间规则中选取
|
checkedTimeRuleId = businessDocument.getString("checked_time_rule_id");
|
rb_choose_from_time_rule();
|
} else {
|
String start_time = DateUtil.formatTime(Long.parseLong(businessDocument.getString("only_allow_start")), "yyyy/MM/dd HH:mm");
|
String end_time = DateUtil.formatTime(Long.parseLong(businessDocument.getString("only_allow_end")), "yyyy/MM/dd HH:mm");
|
et_only_allow_start.setText(start_time);
|
et_only_allow_end.setText(end_time);
|
rb_only_allow();
|
}
|
remindTime = businessDocument.getString("time_unit");
|
applyDeviceList = BusinessDetailManager.getDeviceByBusiness(businessDocument.getId());
|
showData = true;
|
}
|
//优化后代码
|
et_business_name.setText(businessDocument.getString("business_name"));
|
et_search_device.setText("");
|
et_access_hint.setText(businessDocument.getString("access_hint")
|
== "" ? "欢迎光临" : businessDocument.getString("access_hint"));
|
et_not_reached_time_hint.setText(businessDocument.getString("not_reached_time_hint")
|
== "" ? "未到通行时间,请稍后" : businessDocument.getString("not_reached_time_hint"));
|
et_not_reached_time_remind.setText(businessDocument.getString("not_reached_time_remind")
|
== "" ? "30" : businessDocument.getString("not_reached_time_remind"));
|
et_confirm_pass_hint.setText(businessDocument.getString("confirm_pass_hint")
|
== "" ? "业务表确认通行" : businessDocument.getString("confirm_pass_hint"));
|
ck_access_identity.setChecked("1".equals(businessDocument.getString("access_identity")) ? true : false);
|
ck_access_table_name.setChecked("1".equals(businessDocument.getString("access_table_name")) ? true : false);
|
ck_access_name.setChecked("1".equals(businessDocument.getString("access_name")) ? true : false);
|
ck_confirm_pass_identity.setChecked("1".equals(businessDocument.getString("confirm_pass_identity")) ? true : false);
|
ck_confirm_pass_name.setChecked("1".equals(businessDocument.getString("confirm_pass_name")) ? true : false);
|
|
aboutTimeRule();
|
aboutAllDevice();
|
timeUnitCombox();
|
}
|
|
private void aboutTimeRule() {
|
allTimeRule = TimeManager.getAllUseTimeRule();
|
timeRuleAdapter = new TimeRuleAdapter(allTimeRule);
|
lv_choose_from_time_rule.setAdapter(timeRuleAdapter);
|
lv_choose_from_time_rule.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
checkedTimeRuleId = allTimeRule.get(position).getId();
|
timeRuleAdapter.notifyDataSetChanged();
|
}
|
});
|
}
|
|
private void timeUnitCombox() {
|
String[] arr = {"分钟", "小时", "天"};
|
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), R.layout.spinner_item, arr);
|
time_unit.setPopupBackgroundResource(R.color.press_menu_text);
|
time_unit.setAdapter(adapter);
|
time_unit.setSelection(Arrays.binarySearch(arr, remindTime), true);
|
time_unit.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
@Override
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
remindTime = arr[position];
|
}
|
|
@Override
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
}
|
});
|
|
}
|
|
private void aboutAllDevice() {
|
List<ModelAdapter> allDevice = new ArrayList<>();
|
allDevice.clear();
|
allDevice = BusinessDetailManager.getDeviceDataList();
|
// List<ModelAdapter> documents = BusinessDetailManager.getDeviceDataList();
|
// for (ModelAdapter device : documents) {
|
// allDevice.add(device);
|
// }
|
allDeviceAdapter = new AllDeviceAdapter(allDevice);
|
lv_choose_from_all_device.setAdapter(allDeviceAdapter);
|
}
|
|
private void showPopupWindow(int tag) {
|
mList.clear();
|
currentCheckedMessages.clear();
|
if (tag == intAccessPassTag) {
|
for (int i = 0; i < 5; i++) {
|
mList.add("欢迎光临" + i);
|
}
|
} else if (tag == intNotReachTimeTag) {
|
for (int i = 0; i < 6; i++) {
|
mList.add("未到通行时间" + i);
|
}
|
} else if (tag == intConfirmPassTag) {
|
for (int i = 0; i < 7; i++) {
|
mList.add("确认通行" + i);
|
}
|
}
|
rl_check_hint.setVisibility(View.VISIBLE);
|
gv_hint.setAdapter(new gridViewAdapter());
|
|
}
|
|
@Click
|
void btn_check_message_save() {
|
temple = -1;
|
if (currentCheckedMessages.size() > 1) {
|
ToastUtil.show("只能选一个");
|
return;
|
}
|
rl_check_hint.setVisibility(View.GONE);
|
if (currentCheckedMessages.size() == 1) {
|
if (intTag == intAccessPassTag) {
|
et_access_hint.setText(currentCheckedMessages.get(0));
|
} else if (intTag == intNotReachTimeTag) {
|
et_not_reached_time_hint.setText(currentCheckedMessages.get(0));
|
} else if (intTag == intConfirmPassTag) {
|
et_confirm_pass_hint.setText(currentCheckedMessages.get(0));
|
}
|
}
|
intTag = -1;
|
}
|
|
@Click
|
void btn_check_message_cancel() {
|
temple = -1;
|
rl_check_hint.setVisibility(View.GONE);
|
intTag = -1;
|
}
|
|
public void setBusinessDetailDocument(ModelAdapter businessDocument, boolean needCreateNew) {
|
createNew = needCreateNew; // 是新建的还是编辑以前的
|
this.businessDocument = businessDocument;
|
}
|
|
// 时间规则的适配器
|
private class TimeRuleAdapter extends BaseAdapter {
|
private List<ModelAdapter> timeRuleList;
|
|
|
public TimeRuleAdapter(List<ModelAdapter> timeRuleList) {
|
this.timeRuleList = timeRuleList;
|
}
|
|
@Override
|
public int getCount() {
|
return timeRuleList == null ? 0 : timeRuleList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return timeRuleList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder = null;
|
if (convertView == null) {
|
viewHolder = new ViewHolder();
|
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.business_time_rule, null);
|
viewHolder.radio_button = convertView.findViewById(R.id.radio_button);
|
viewHolder.tv_message = convertView.findViewById(R.id.tv_message);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
viewHolder.tv_message.setText(timeRuleList.get(position).getString("time_rule_name"));
|
// if (businessDocument == null) { // 假如是新建的业务表,清空选中状态
|
viewHolder.radio_button.setChecked(false);
|
// }
|
if (timeRuleList.get(position).getId().equals(checkedTimeRuleId)) {
|
viewHolder.radio_button.setChecked(true);
|
}
|
|
return convertView;
|
}
|
|
class ViewHolder {
|
RadioButton radio_button;
|
TextView tv_message;
|
}
|
}
|
|
// 所有设备的适配器
|
private class AllDeviceAdapter extends BaseAdapter {
|
private List<ModelAdapter> allDevice;
|
private boolean allChecked;
|
|
public AllDeviceAdapter(List<ModelAdapter> allDevice) {
|
this.allDevice = allDevice;
|
}
|
|
public void checked(boolean checkedAll) {
|
allChecked = checkedAll;
|
}
|
|
@Override
|
public int getCount() {
|
return allDevice == null ? 0 : allDevice.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return allDevice.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {//item_identity_list
|
View view;
|
ViewHolder viewHolder;
|
if (convertView == null) {
|
//加载子布局
|
viewHolder = new ViewHolder();
|
view = LayoutInflater.from(getContext()).inflate(R.layout.item_identity_list, parent, false);
|
viewHolder.checkBox = view.findViewById(R.id.item_ck);
|
view.setTag(viewHolder);
|
} else {
|
view = convertView;
|
viewHolder = (ViewHolder) view.getTag();
|
}
|
viewHolder.checkBox.setText(" " + allDevice.get(position).getString("name"));
|
|
if (allChecked) {
|
viewHolder.checkBox.setChecked(true);
|
} else {
|
viewHolder.checkBox.setChecked(false);
|
}
|
// 回显数据
|
if (showData && applyDeviceList != null && applyDeviceList.contains(allDevice.get(position).getId())) {
|
viewHolder.checkBox.setChecked(true);
|
// showData = false;
|
}
|
|
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
if (isChecked) {
|
if (!checkDeviceMap.containsKey(allDevice.get(position).getId())) {
|
checkDeviceMap.put(allDevice.get(position).getId(), allDevice.get(position));
|
}
|
} else {
|
checkDeviceMap.remove(allDevice.get(position).getId());
|
}
|
}
|
});
|
return view;
|
}
|
|
class ViewHolder {
|
CheckBox checkBox;
|
}
|
}
|
|
// 选择提示语的适配器
|
private class gridViewAdapter extends BaseAdapter {
|
|
@Override
|
public int getCount() {
|
return mList == null ? 0 : mList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return mList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder = null;
|
if (convertView == null) {
|
//加载子布局
|
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_identity_list, parent, false);
|
viewHolder = new ViewHolder();
|
viewHolder.checkBox = convertView.findViewById(R.id.item_ck);
|
convertView.setTag(viewHolder);
|
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
viewHolder.checkBox.setText(mList.get(position));
|
// 设置单选
|
viewHolder.checkBox.setId(position * 9);
|
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
if (isChecked) {//如果是选中状态
|
currentCheckedMessages.clear();
|
currentCheckedMessages.add(mList.get(position));
|
if (temple != -1) {//temp不为-1,说明已经进行过点击事件
|
CheckBox tempButton = getActivity().findViewById(temple);
|
if (tempButton != null) {
|
tempButton.setChecked(false);//取到上一次点击的RadioButton,并设置为未选中状态
|
}
|
}
|
temple = buttonView.getId();//将temp重新赋值,记录下本次点击的RadioButton
|
}
|
}
|
});
|
|
if (position == temple) {
|
viewHolder.checkBox.setChecked(true);//将本次点击的RadioButton设置为选中状态
|
} else {
|
viewHolder.checkBox.setChecked(false);
|
}
|
return convertView;
|
}
|
|
class ViewHolder {
|
private CheckBox checkBox;
|
}
|
|
}
|
|
// 以下为规则详情,现在没用
|
/*@ViewById
|
RadioButton no_limit_times, limit_times, no_limit_time, limit_time, all_device, part_device;
|
|
@ViewById
|
EditText allow_start_time, allow_end_time, days, times, rule_name;
|
|
@ViewById
|
Button save, cancel;
|
|
@ViewById
|
EditText search_text, verify_pass_tip;
|
|
@ViewById
|
ListView device_location;
|
|
@ViewById
|
View times_limit_layout, time_limit_layout;
|
|
@ViewById
|
CheckBox show_identity;
|
private List<DeviceItem> showList = new ArrayList<>();
|
private List<DeviceItem> totalList = new ArrayList<>();
|
private deviceListAdapter adapter;
|
ModelAdapter mutableDocument = new ModelAdapter();
|
private boolean isNew = false;
|
|
@Click
|
void limit_times() {
|
no_limit_times.setChecked(!limit_times.isChecked());
|
if (limit_times.isChecked()) { // 如果选中默认10天10次
|
days.setFaceDetailUI("10");
|
times.setFaceDetailUI("10");
|
} else {
|
days.setFaceDetailUI("");
|
times.setFaceDetailUI("");
|
}
|
times_limit_layout.setVisibility(View.VISIBLE);
|
}
|
|
@Click
|
void no_limit_times() {
|
limit_times.setChecked(!no_limit_times.isChecked());
|
times_limit_layout.setVisibility(View.GONE);
|
}
|
|
@Click
|
void limit_time() {
|
no_limit_time.setChecked(!limit_time.isChecked());
|
time_limit_layout.setVisibility(View.VISIBLE);
|
}
|
|
@Click
|
void no_limit_time() {
|
limit_time.setChecked(!no_limit_time.isChecked());
|
time_limit_layout.setVisibility(View.GONE);
|
}
|
|
@Click
|
void allow_start_time() {
|
DateEditUtil.showStartAndEndDate(allow_start_time, allow_end_time);
|
}
|
|
@Click
|
void allow_end_time() {
|
DateEditUtil.showDate(allow_end_time);
|
}
|
|
@Click
|
void all_device() {
|
if (all_device.isChecked()) {
|
device_location.setVisibility(View.INVISIBLE);
|
|
}
|
}
|
|
@Click
|
void part_device() {
|
if (part_device.isChecked()) {
|
device_location.setVisibility(View.VISIBLE);
|
LoadDeviceList();
|
}
|
}
|
|
private TextWatcher watcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
|
String key = search_text.getText().toString().toLowerCase();
|
showList.clear();
|
for (DeviceItem item : totalList) {
|
if (item.getName().toLowerCase().contains(key) || item.getDevice_id().toLowerCase().contains(key) || item.getDevice_address().toLowerCase().contains(key)) {
|
showList.add(item);
|
}
|
}
|
adapter.notifyDataSetChanged();
|
}
|
};
|
|
@Override
|
public void show() {
|
super.show();
|
inSave = false;
|
if (search_text != null) {
|
search_text.setFaceDetailUI("");
|
search_text.addTextChangedListener(watcher);
|
}
|
}
|
|
@Override
|
public void hide() {
|
super.hide();
|
if (search_text != null) {
|
search_text.removeTextChangedListener(watcher);
|
}
|
}
|
|
@Click
|
void cancel() {
|
mainActivity().showFragment(mainActivity().fragment_rule_list);
|
}
|
|
private boolean inSave = false;
|
|
@Click
|
void save() {
|
synchronized (this) {
|
if (inSave) {
|
return;
|
} else {
|
inSave = true;
|
}
|
}
|
|
if (mutableDocument == null) {
|
mutableDocument = new ModelAdapter();
|
mutableDocument.setString("table", "identity");
|
}
|
String name = rule_name.getText().toString().trim();
|
if (TextUtils.isEmpty(name)) {
|
ToastUtil.show("规则名称不能为空!");
|
inSave = false;
|
return;
|
}
|
|
List<ModelAdapter> ruleList = RuleManager.getRuleList();
|
for (ModelAdapter ruleName : ruleList) {
|
if (name.equals(ruleName.getString("name"))) {
|
if (isNew) {
|
ToastUtil.show("规则列表中已包含此规则,请更改规则名称!");
|
inSave = false;
|
return;
|
} else {
|
// if (!Objects.equals(mutableDocument.getId(), ruleName.getId())) {
|
// ToastUtil.show("规则列表中已包含此规则,请更改规则名称!");
|
// inSave = false;
|
// return;
|
// }
|
}
|
}
|
}
|
|
if ("管理员".equals(mutableDocument.getString("name")) || "黑名单".equals(mutableDocument.getString("name"))
|
|| "自助注册".equals(mutableDocument.getString("name"))) {
|
if (!mutableDocument.getString("name").equals(name)) {
|
ToastUtil.show("此规则名称不可更改!");
|
inSave = false;
|
return;
|
}
|
|
}
|
if ("管理员".equals(mutableDocument.getString("name"))) {
|
if (!show_identity.isChecked()) {
|
ToastUtil.show("请选中验证时显示身份 !");
|
inSave = false;
|
return;
|
}
|
}
|
mutableDocument.setString("name", name);
|
if (show_identity.isChecked()) { // 1显示,0不显示
|
mutableDocument.setString("show_identity", "1");
|
} else {
|
mutableDocument.setString("show_identity", "0");
|
}
|
|
if (no_limit_time.isChecked()) { // 1就是限制,0不限制
|
mutableDocument.setString("limit_time", "0");
|
} else {
|
String begin_time = allow_start_time.getText().toString().trim();
|
String end_time = allow_end_time.getText().toString().trim();
|
mutableDocument.setString("limit_time", "1");
|
mutableDocument.setString("begin_time", DateUtil.getDefaultTimeStamp(begin_time) + "");
|
mutableDocument.setString("end_time", DateUtil.getDefaultTimeStamp(end_time) + "");
|
}
|
|
if (no_limit_times.isChecked()) {// 1就是限制,0不限制
|
mutableDocument.setString("limit_count", "0");
|
} else {
|
|
String per_days = days.getText().toString().trim();
|
String per_count = times.getText().toString().trim();
|
mutableDocument.setString("limit_count", "1");
|
mutableDocument.setString("per_days", per_days);
|
mutableDocument.setString("per_count", per_count);
|
}
|
|
if (all_device.isChecked()) { // 是否应用到全部设备
|
|
mutableDocument.setString("apply_type", "0");
|
mutableDocument.setString("apply_device_ids", "");
|
|
} else {
|
|
mutableDocument.setString("apply_type", "1");
|
|
StringBuilder ids = new StringBuilder();
|
for (DeviceItem item : totalList) {
|
if (item.isCheck()) {
|
ids.append(item.getDevice_id()).append(",");
|
}
|
}
|
|
mutableDocument.setString("apply_device_ids", ids.toString());
|
}
|
String strHint = verify_pass_tip.getText().toString().trim();
|
mutableDocument.setString("hint", strHint);
|
mutableDocument.setString("device_id", DeviceManager.getDeviceId());
|
mutableDocument.setString("company_id", DeviceManager.getCompareId());
|
RuleDetailManager.save(mutableDocument);
|
|
ToastUtil.show("保存成功");
|
|
((RuleListFragment) mainActivity().fragment_rule_list).refreshList();
|
|
mainActivity().showFragment(mainActivity().fragment_rule_list);// 回到规则列表页面
|
|
// inSave = false;
|
}
|
|
@AfterViews
|
void init() {
|
|
no_limit_times.setChecked(true);
|
no_limit_time.setChecked(true);
|
all_device.setChecked(true);
|
adapter = new deviceListAdapter(showList);
|
device_location.setAdapter(adapter);
|
adapter.notifyDataSetChanged();
|
|
allow_start_time.setFaceDetailUI(DateUtil.formatTime(System.currentTimeMillis(), "yyyy/MM/dd HH:mm"));
|
allow_end_time.setFaceDetailUI(DateUtil.formatTime(System.currentTimeMillis(), "yyyy/MM/dd HH:mm"));
|
|
time_limit_layout.setVisibility(limit_time.isChecked() ? View.VISIBLE : View.GONE);
|
times_limit_layout.setVisibility(limit_times.isChecked() ? View.VISIBLE : View.GONE);
|
device_location.setVisibility(all_device.isChecked() ? View.INVISIBLE : View.VISIBLE);
|
}
|
|
private void LoadDeviceList() {
|
|
showList.clear();
|
totalList.clear();
|
|
List<ModelAdapter> documents = RuleDetailManager.getDeviceDataList();
|
String device_ids = mutableDocument.getString("apply_device_ids");
|
for (ModelAdapter d : documents) {
|
|
DeviceItem deviceItem = new DeviceItem();
|
deviceItem.setName(d.getString("name"));
|
deviceItem.setDevice_address(d.getString("address"));
|
deviceItem.setDevice_id(d.getString("device_id"));
|
if (TextUtils.isEmpty(device_ids)) {
|
deviceItem.setCheck(false);
|
} else {
|
if (device_ids.contains(deviceItem.getDevice_id())) {
|
deviceItem.setCheck(true);
|
} else {
|
deviceItem.setCheck(false);
|
}
|
}
|
if (DeviceManager.getDeviceId().equals(deviceItem.getDevice_id())) {
|
deviceItem.setSelf(true);
|
} else {
|
deviceItem.setSelf(false);
|
}
|
totalList.add(deviceItem);
|
}
|
showList.addAll(totalList);
|
adapter.notifyDataSetChanged();
|
}
|
|
|
@UiThread
|
public void showRuleDetail(ModelAdapter mutableDocument) {
|
rule_name.setFaceDetailUI(mutableDocument.getString("name"));
|
verify_pass_tip.setFaceDetailUI(mutableDocument.getString("hint"));
|
if ("1".equals(mutableDocument.getString("show_identity"))) {
|
show_identity.setChecked(true);
|
} else {
|
show_identity.setChecked(false);
|
}
|
if ("0".equals(mutableDocument.getString("limit_time"))) {
|
no_limit_time.setChecked(true);
|
limit_time.setChecked(false);
|
time_limit_layout.setVisibility(View.GONE);
|
} else {
|
time_limit_layout.setVisibility(View.VISIBLE);
|
no_limit_time.setChecked(false);
|
limit_time.setChecked(true);
|
long s_time = Long.parseLong(mutableDocument.getString("begin_time"));
|
long e_time = Long.parseLong(mutableDocument.getString("end_time"));
|
|
allow_start_time.setFaceDetailUI(DateUtil.formatTime(s_time, "yyyy/MM/dd HH:mm"));
|
allow_end_time.setFaceDetailUI(DateUtil.formatTime(e_time, "yyyy/MM/dd HH:mm"));
|
}
|
|
if ("0".equals(mutableDocument.getString("limit_count"))) {
|
no_limit_times.setChecked(true);
|
limit_times.setChecked(false);
|
times_limit_layout.setVisibility(View.GONE);
|
} else {
|
times_limit_layout.setVisibility(View.VISIBLE);
|
no_limit_times.setChecked(false);
|
limit_times.setChecked(true);
|
mutableDocument.setString("limit_count", "1");
|
days.setFaceDetailUI(mutableDocument.getString("per_days"));
|
times.setFaceDetailUI(mutableDocument.getString("per_count"));
|
}
|
|
if ("0".equals(mutableDocument.getString("apply_type"))) {
|
all_device.setChecked(true);
|
part_device.setChecked(false);
|
|
device_location.setVisibility(View.INVISIBLE);
|
} else {
|
all_device.setChecked(false);
|
part_device.setChecked(true);
|
device_location.setVisibility(View.VISIBLE);
|
}
|
|
LoadDeviceList();
|
}
|
|
public void setRuleDetailDocument(ModelAdapter mutableDocument) {
|
if (mutableDocument != null) {
|
isNew = false;
|
this.mutableDocument = mutableDocument;
|
showRuleDetail(mutableDocument);
|
} else {
|
isNew = true;
|
this.mutableDocument = new ModelAdapter();
|
this.mutableDocument.setString("table", "identity");
|
rule_name.setFaceDetailUI("");
|
show_identity.setChecked(false);
|
|
no_limit_time.setChecked(true);
|
limit_time.setChecked(false);
|
time_limit_layout.setVisibility(View.INVISIBLE);
|
|
no_limit_times.setChecked(true);
|
limit_times.setChecked(false);
|
times_limit_layout.setVisibility(View.INVISIBLE);
|
|
all_device.setChecked(true);
|
part_device.setChecked(false);
|
device_location.setVisibility(View.INVISIBLE);
|
|
verify_pass_tip.setFaceDetailUI("");
|
|
}
|
}
|
|
// 显示设备列表
|
private class deviceListAdapter extends BaseAdapter {
|
|
private List<DeviceItem> list;
|
|
deviceListAdapter(List<DeviceItem> list) {
|
this.list = list;
|
}
|
|
@Override
|
public int getCount() {
|
return list.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return list.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
|
ViewHolder vh = null;
|
|
if (convertView == null) {
|
vh = new ViewHolder();
|
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.rule_for_time_detail_item, null);
|
vh.check = convertView.findViewById(R.id.check);
|
vh.device_address = convertView.findViewById(R.id.device_address);
|
vh.device_id = convertView.findViewById(R.id.device_id);
|
vh.is_self = convertView.findViewById(R.id.is_self);
|
convertView.setTag(vh);
|
} else {
|
vh = (ViewHolder) convertView.getTag();
|
}
|
|
final DeviceItem item = list.get(position);
|
|
vh.check.setFaceDetailUI(item.getName());
|
vh.check.setChecked(item.isCheck());
|
vh.device_address.setFaceDetailUI(item.getDevice_address());
|
vh.device_id.setFaceDetailUI(item.getDevice_id());
|
|
if (item.isSelf()) {
|
vh.is_self.setVisibility(View.VISIBLE);
|
} else {
|
vh.is_self.setVisibility(View.INVISIBLE);
|
}
|
final ViewHolder finalVh = vh;
|
vh.check.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
item.setCheck(finalVh.check.isChecked());
|
|
for (DeviceItem t : totalList) {
|
if (item.getDevice_id().equals(t.getDevice_id())) {
|
t.setCheck(finalVh.check.isChecked());
|
}
|
}
|
adapter.notifyDataSetChanged();
|
}
|
});
|
|
return convertView;
|
}
|
|
class ViewHolder {
|
CheckBox check;
|
TextView device_id, device_address;
|
ImageView is_self;
|
}
|
}*/
|
|
}
|