From 8f876d4b0a3375fd1987a76045480a5d85824ca8 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 26 Oct 2022 18:15:15 +0800 Subject: [PATCH] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89=E5=BD=95?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseConfigView.kt | 23 +++++-- .../badcase/biz/CaseTopicListDialog.java | 69 ++++++++++++++++--- .../badcase/biz/adapter/TopicListAdapter.kt | 26 +++++-- .../main/res/layout/layout_badcase_config.xml | 1 + .../core/data/badcase/RecordTypeEntity.kt | 2 +- .../eagle/core/data/badcase/TopicEntity.kt | 3 + 6 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index 21cc2a280a..e437709f0d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -8,6 +8,7 @@ import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity +import com.mogo.eagle.core.data.badcase.TopicEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager @@ -156,6 +157,20 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter +// val list = ArrayList() +// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) +// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) +// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) +// list.add(TopicEntity("/record_cache/task",false,true)) +// list.add(TopicEntity("/sensor/rainmode",false,true)) +// list.add(TopicEntity("/record_cache/master/task",false,true)) +// list.add(TopicEntity("/telematics/trip_info_event",false,true)) +// list.add(TopicEntity("/telematics/light",false,true)) +// list.add(TopicEntity("/guardian/aicloud_state",false,true)) +// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) +// recordTemplateAdapter?.setData(recordTypesList) +// recordTemplateAdapter?.notifyDataSetChanged() + } fun setClickListener(clickListener: ClickListener) { @@ -163,9 +178,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } private fun showCaseTopicListDialog(recordTypeEntity: RecordTypeEntity){ - if(caseTopicListDialog == null){ - caseTopicListDialog = CaseTopicListDialog(context) - } + caseTopicListDialog = CaseTopicListDialog(context) caseTopicListDialog?.setData(recordTypeEntity) caseTopicListDialog?.show() } @@ -175,9 +188,9 @@ internal class BadCaseConfigView @JvmOverloads constructor( ThreadUtils.runOnUiThread { config.recordTypesList.iterator().forEach { if (it.id != 99){ - val topicList = ArrayList() + val topicList = ArrayList() it.topicsList.iterator().forEach { - topicList.add(it) + topicList.add(TopicEntity(it,true,false)) } recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index d8bef0bbcc..125724cc83 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -17,10 +17,12 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.mogo.eagle.core.data.badcase.RecordTypeEntity; +import com.mogo.eagle.core.data.badcase.TopicEntity; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.utilcode.util.ThreadUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; @@ -46,8 +48,10 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL private RecyclerView rvTopicList; private TopicListAdapter topicListAdapter; private String searchStr; - private List allTopicList = new ArrayList<>(); - + private List allTopicList = new ArrayList<>(); + private RecordTypeEntity recordType; + private List addTopicList = new ArrayList<>(); + private List searchTopicList = new ArrayList<>(); public CaseTopicListDialog(@NonNull Context context) { super(context, R.style.bad_case_dialog); @@ -61,6 +65,20 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); init(); initEvent(); + //获取所有Topic + CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>()); + if(recordType!=null){ + tvCaseName.setText(recordType.getDesc()); + if(recordType.getTopicsList().size()>0){ + topicListAdapter.setData(recordType.getTopicsList()); + topicListAdapter.notifyDataSetChanged(); + } + } + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); } @Override @@ -70,12 +88,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL } public void setData(RecordTypeEntity recordTypeEntity){ - tvCaseName.setText(recordTypeEntity.getDesc()); - //获取所有Topic - CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>()); - if(recordTypeEntity.getTopicsList().size()>0){ - topicListAdapter.setData(recordTypeEntity.getTopicsList()); - topicListAdapter.notifyDataSetChanged(); + if(recordTypeEntity!=null){ + recordType = recordTypeEntity; } } @@ -90,6 +104,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); rvTopicList.setLayoutManager(linearLayoutManager); topicListAdapter = new TopicListAdapter(); + topicListAdapter.setListener((topicName, clicked) -> { + if(clicked){ + addTopicList.add(topicName); + }else{ + addTopicList.remove(topicName); + } + }); rvTopicList.setAdapter(topicListAdapter); } @@ -113,7 +134,16 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL } else { ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search)); } - //TODO + if(searchStr!=null && searchStr.length()>0){ + searchTopicList.clear(); + for(int index=0;index0){ etSearch.setText(""); ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search)); + topicListAdapter.setData(recordType.getTopicsList()); + topicListAdapter.notifyDataSetChanged(); + } + }); + tvSave.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(recordType!=null){ + Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); + if(Boolean.TRUE.equals(success)){ + ToastUtils.showShort("Topic设置成功"); + dismiss(); + }else{ + ToastUtils.showShort("Topic设置失败"); + } + } + + } }); @@ -135,8 +183,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ThreadUtils.runOnUiThread(() -> { if(config.getAllTopicsCount()>0){ for(int index=0;index() { - private var data:List? = null + private var data:List? = null + private var topicClickListener: TopicClickListener? = null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: TopicClickListener){ + topicClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TopicListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_topic_list, parent, false) @@ -27,8 +33,16 @@ class TopicListAdapter: RecyclerView.Adapter() } override fun onBindViewHolder(holder: TopicListHolder, position: Int) { - data?.let{ - holder.topic_check_box.text = it[position] + data?.let{topicList-> + holder.topic_check_box.text = topicList[position].topicName + holder.topic_check_box.setOnCheckedChangeListener(null) + holder.topic_check_box.isChecked = topicList[position].topicStatus + holder.topic_check_box.tag = topicList + holder.topic_check_box.isClickable = topicList[position].topicCanClick + holder.topic_check_box.setOnCheckedChangeListener { _, b -> + topicList[position].topicStatus = b + topicClickListener?.onClick(topicList[position].topicName,b) + } } } @@ -38,4 +52,8 @@ class TopicListAdapter: RecyclerView.Adapter() var topic_check_box: CheckBox = itemView.findViewById(R.id.topic_check_box); } + interface TopicClickListener{ + fun onClick(topicName: String,clicked: Boolean) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml index f317a80347..3c9e609e2d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml @@ -317,6 +317,7 @@ app:layout_constraintTop_toBottomOf="@id/tvRecordTemplate" android:background="@drawable/template_list_bg" android:layout_marginTop="@dimen/dp_50" + android:paddingBottom="20dp" /> ) \ No newline at end of file +data class RecordTypeEntity(var id: Int,var desc: String,var topicsList:ArrayList) \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt new file mode 100644 index 0000000000..db985c1003 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.data.badcase + +data class TopicEntity(var topicName: String,var topicStatus: Boolean,var topicCanClick: Boolean) \ No newline at end of file