package safeluck.drive.evaluation.fragment;
|
|
import android.content.Context;
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.util.Log;
|
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.CheckBox;
|
import android.widget.CompoundButton;
|
import android.widget.LinearLayout;
|
import android.widget.ListView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.appcompat.widget.AppCompatSpinner;
|
import androidx.appcompat.widget.Toolbar;
|
import androidx.lifecycle.ViewModelProviders;
|
|
import com.anyun.basecommonlib.MyLog;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
|
import me.yokeyword.fragmentation.SupportFragment;
|
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
|
import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel;
|
import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig;
|
import safeluck.drive.evaluation.R;
|
import safeluck.drive.evaluation.app;
|
import safeluck.drive.evaluation.bean.SignalConfigBean;
|
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
|
import safeluck.drive.evaluation.util.DataInitKt;
|
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/3/27. 17:29:43
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public class SignalConfigFragment extends SupportFragment implements View.OnClickListener {
|
|
|
private static final int INDEX = 1;
|
private static final int HIGHLEVEL = 2;
|
private static final int MAINBOARD = 3;
|
|
private ArrayAdapter adapter1;
|
private ArrayAdapter adapter2;
|
private String[] arr_strs;
|
|
|
private List<SignalConfigBean> signalConfiglist =new ArrayList<>();
|
List<SingalConfig> list = new ArrayList<>();//要发送给remoteservice的信号配置,有可能发不出去
|
private ListView listView;
|
private LinearLayout linearLayout;
|
private static final String TAG = SignalConfigFragment.class.getSimpleName();
|
SignalConfigViewModel signalConfigViewModel;
|
public static SupportFragment newInstance(){
|
return new SignalConfigFragment();
|
}
|
@Nullable
|
@Override
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
View view = inflater.inflate(R.layout.layout_signal_config,container,false);
|
initView(view);
|
return view;
|
}
|
|
private void initView(View view) {
|
arr_strs = getResources().getStringArray(R.array.signals_name);
|
|
linearLayout = view.findViewById(R.id.ll_container);
|
listView =view.findViewById(R.id.lv_signalconf);
|
view.findViewById(R.id.btn_save_signals).setOnClickListener(this);
|
listView.setDivider(null);
|
final MySignalsAdapter mySignalsAdapter = new MySignalsAdapter(_mActivity);
|
|
signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class);
|
signalConfigViewModel.getSignalConfigs().observe(this, singalConfigs -> {
|
list.clear();
|
signalConfiglist.clear();
|
|
|
MyLog.i(TAG,"信号配置发生变化"+singalConfigs.size());
|
for (int i = 0; i < singalConfigs.size(); i++) {
|
SingalConfig singalConfig = singalConfigs.get(i);
|
i++;
|
if (i<singalConfigs.size()){
|
SingalConfig singalConfig1 = singalConfigs.get(i);
|
signalConfiglist .add(new SignalConfigBean(singalConfig.getSignalName(),singalConfig1.getSignalName(),singalConfig.getHighLevel()==1?true:false,singalConfig.getMainBoard()==1?true:false,
|
singalConfig1.getHighLevel()==1?true:false,singalConfig1.getMainBoard()==1?true:false,singalConfig.getIndex(),singalConfig1.getIndex()));
|
mySignalsAdapter.notifyDataSetChanged();
|
}
|
|
}
|
});
|
|
|
|
listView.setAdapter(mySignalsAdapter);
|
|
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()){
|
case R.id.btn_save_signals:
|
Toast.makeText(_mActivity, "发送信号配置", Toast.LENGTH_SHORT).show();
|
CThreadPoolExecutor.runInBackground(()->{
|
MyLog.i("click时间,发送信号");
|
DataInitKt.sendSignalConfigToRemote(app.getAppContext());
|
});
|
|
break;
|
}
|
}
|
|
|
private class MySignalsAdapter extends BaseAdapter{
|
private Context context;
|
|
|
public MySignalsAdapter(Context context) {
|
this.context = context;
|
}
|
|
@Override
|
public int getCount() {
|
return signalConfiglist.size();
|
}
|
|
@Override
|
public SignalConfigBean getItem(int position) {
|
return signalConfiglist.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
final ViewHolder viewHolder;
|
if (convertView == null){
|
convertView = LayoutInflater.from(context).inflate(R.layout.layout_signal_conf_item,null);
|
viewHolder = new ViewHolder(convertView);
|
|
|
|
viewHolder.checkBox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox3.getTag();
|
|
signalConfigBean.setThree(isChecked);
|
signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2+1);
|
|
}
|
});
|
viewHolder.checkBox1.setOnCheckedChangeListener((buttonView,isChecked)-> {
|
SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox1.getTag();
|
signalConfigBean.setOne(isChecked);
|
signalConfigViewModel.updateHightlevel(isChecked?1:0,position*2);
|
|
|
});
|
viewHolder.checkBox1.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox3.setTag(signalConfiglist.get(position));
|
|
adapter1 = new ArrayAdapter<String>(_mActivity,R.layout.spinner_item,arr_strs);
|
adapter1.setDropDownViewResource(R.layout.dropdown_stytle);
|
adapter2 = new ArrayAdapter<String>(_mActivity,R.layout.spinner_item,arr_strs);
|
adapter2.setDropDownViewResource(R.layout.dropdown_stytle);
|
viewHolder.editText1.setAdapter(adapter1);
|
viewHolder.editText2.setAdapter(adapter2);
|
|
|
viewHolder.editText1.setTag(position*2+1);
|
viewHolder.editText2.setTag((2*(1+position)));
|
|
viewHolder.editText1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
@Override
|
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
int index = (int) viewHolder.editText1.getTag();
|
CThreadPoolExecutor.runInBackground(new Runnable() {
|
@Override
|
public void run() {
|
|
int indexPre = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName2Index(arr_strs[pos]);
|
int fun_id = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(arr_strs[pos]);
|
Log.i(TAG,String.format("Spinner1 index=%d,fun_id=%d对应的信号名称=%s,index" ,index,fun_id,arr_strs[pos]));
|
String siname=WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName(index);
|
int fun_idpRe= WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(siname);
|
Log.i(TAG,index+" "+siname+ " arr-Strs[pos]="+arr_strs[pos]+ " "+pos);
|
if (siname!=null&&siname.equals(arr_strs[pos])){
|
|
}else{
|
Log.i(TAG,String.format("把%s信号的index=%d改为%d",siname,index,indexPre));
|
Log.i(TAG,String.format("把%s信号的index=%d改为%d",arr_strs[pos],indexPre,index));
|
WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(indexPre,fun_idpRe);
|
WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(index,fun_id);
|
// signalConfigViewModel.updateindex(indexPre,getSigal2Pos(siname));
|
}
|
|
Log.i(TAG,String.format("Spinner1 index=%d,fun_id=%d对应的信号名称=%s,index" +
|
"pre=%d,indexpreName=%s",index,pos
|
,arr_strs[pos],indexPre,siname));
|
// signalConfigViewModel.updateindex(index,pos);
|
}
|
});
|
|
}
|
|
@Override
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
}
|
});
|
viewHolder.editText2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
@Override
|
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
int index = (int) viewHolder.editText2.getTag();
|
CThreadPoolExecutor.runInBackground(new Runnable() {
|
@Override
|
public void run() {
|
|
int indexPre = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName2Index(arr_strs[pos]);
|
int fun_id = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(arr_strs[pos]);
|
Log.i(TAG,String.format("Spinner2 index=%d,fun_id=%d对应的信号名称=%s,index" ,index,fun_id,arr_strs[pos]));
|
String siname=WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getSignalName(index);
|
int fun_idpRe= WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().getFun_idBySignalName(siname);
|
Log.i(TAG,index+" sp2 "+siname+ " arr-Strs[pos]="+arr_strs[pos]+ " "+pos);
|
if (siname!=null&&siname.equals(arr_strs[pos])){
|
|
}else{
|
Log.i(TAG,String.format("sp2把%s信号的index=%d改为%d",siname,index,indexPre));
|
Log.i(TAG,String.format("sp2把%s信号的index=%d改为%d",arr_strs[pos],indexPre,index));
|
WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(indexPre,fun_idpRe);
|
WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getSignalConfigDao().updateindex(index,fun_id);
|
// signalConfigViewModel.updateindex(indexPre,getSigal2Pos(siname));
|
}
|
|
Log.i(TAG,String.format("Spinner2 index=%d,fun_id=%d对应的信号名称=%s,index" +
|
"pre=%d,indexpreName=%s",index,pos
|
,arr_strs[pos],indexPre,siname));
|
}
|
});
|
|
}
|
|
@Override
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
}
|
});
|
|
|
convertView.setTag(viewHolder);
|
}else {
|
|
viewHolder = (ViewHolder) convertView.getTag();
|
viewHolder.checkBox1.setTag(signalConfiglist.get(position));
|
viewHolder.checkBox3.setTag(signalConfiglist.get(position));
|
|
viewHolder.editText1.setTag(position*2+1);
|
viewHolder.editText2.setTag((2*(1+position)));
|
}
|
|
|
|
|
|
final SignalConfigBean signalConfigItem = getItem(position);
|
viewHolder.textView1.setText(String.valueOf(position*2+1));
|
viewHolder.textView2.setText(String.valueOf(2*(1+position)));
|
|
|
CThreadPoolExecutor.runInBackground(new Runnable() {
|
@Override
|
public void run() {
|
|
String signName1=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName(position*2+1);
|
String s2=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName((position+1)*2);
|
|
getActivity().runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
Log.i(TAG,"CThreadPoolExecutor position="+position+ " s1="+signName1+" s2="+s2);
|
viewHolder.editText1.setSelection(getSigal2Pos(signName1),true);
|
viewHolder.editText2.setSelection(getSigal2Pos(s2),true);
|
}
|
});
|
|
}
|
});
|
|
|
|
viewHolder.checkBox1.setChecked(signalConfigItem.isOne());
|
viewHolder.checkBox3.setChecked(signalConfigItem.isThree());
|
return convertView;
|
}
|
|
|
class ViewHolder{
|
CheckBox checkBox1;
|
CheckBox checkBox3;
|
AppCompatSpinner editText1;
|
AppCompatSpinner editText2;
|
TextView textView1;
|
TextView textView2;
|
|
|
public ViewHolder(final View convertView) {
|
checkBox1 = convertView.findViewById(R.id.signal_check_1);
|
checkBox3 = convertView.findViewById(R.id.signal_check_3);
|
|
editText1 = convertView.findViewById(R.id.et_signal1_port);
|
editText2 = convertView.findViewById(R.id.et_signal2_port);
|
|
|
|
|
|
|
|
textView1 = convertView.findViewById(R.id.tv_signal_1);
|
textView2 = convertView.findViewById(R.id.tv_signal_2);
|
}
|
}
|
}
|
|
private int getSigal2Pos(String signalConfigItem) {
|
for (int i = 0; i < arr_strs.length; i++) {
|
if (arr_strs[i].equals(signalConfigItem)){
|
return i;
|
}else{
|
continue;
|
}
|
}
|
return -1;
|
}
|
|
}
|