statusConfig.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. #include "statusConfig.h"
  2. #include "ui_statusConfig.h"
  3. #include "datahpp/dataManager.h"
  4. #include "actionSettingDialog.h"
  5. #include "changenamedialog.h"
  6. #include <iostream>
  7. #include <QMessageBox>
  8. StatusConfig::StatusConfig(QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::StatusConfig)
  11. {
  12. ui->setupUi(this);
  13. ui->tableWidget_event->setHorizontalHeaderLabels({"事件名称","是否需要颜色一致","状态变化幅度","特效","根据格子数量消除"});
  14. ui->lineEdit_collectionType->setReadOnly(true);
  15. ui->comboBox_collectAnimation->setDisabled(true);
  16. // 动作选择和配置
  17. connect(ui->pushButton_actionCfg,SIGNAL(clicked()),this,SLOT(onSetActionButtonClicked()));
  18. connect(ui->comboBox_action,SIGNAL(currentTextChanged(QString)),this,SLOT(onActionBoxTextChanged(QString)));
  19. }
  20. StatusConfig::~StatusConfig()
  21. {
  22. delete ui;
  23. }
  24. ///创建普通下拉选项
  25. QComboBox* StatusConfig::createBox(QString choice,BoxType boxType)
  26. {
  27. QComboBox* box = new QComboBox;
  28. box->addItem("尚未选择");
  29. if(boxType == BoxType::Event){
  30. box->addItems(DataManager::getInstance()->getList(currentElem,DataManager::ListType::Events));
  31. }
  32. else if(boxType == BoxType::Effect){
  33. box->addItems(DataManager::getInstance()->getList(currentElem,DataManager::ListType::Anim));
  34. }
  35. else if(boxType == BoxType::Action){
  36. box->addItems(DataManager::getInstance()->getList(currentElem,DataManager::ListType::Actions));
  37. }
  38. connect(box,SIGNAL(currentTextChanged(QString)),this,SLOT(onEventBoxTextChanged(QString)));
  39. int index = box->findText(choice);
  40. if(index == -1) index = 0;
  41. box->setCurrentIndex(index);
  42. return box;
  43. }
  44. ///创建一个checkBox
  45. QCheckBox* StatusConfig::createCheckBox(bool chosen)
  46. {
  47. QCheckBox* check = new QCheckBox;
  48. if(chosen) check->setCheckState(Qt::Checked);
  49. else check->setCheckState(Qt::Unchecked);
  50. connect(check,SIGNAL(stateChanged(int)),this,SLOT(onCheckBoxStateChanged(int)));
  51. return check;
  52. }
  53. ///创建一个触发动作设置按钮
  54. QPushButton* StatusConfig::createSetButton()
  55. {
  56. QPushButton* setAction = new QPushButton("设置");
  57. connect(setAction,SIGNAL(clicked()),this,SLOT(onSetActionButtonClicked()));
  58. return setAction;
  59. }
  60. ///事件配置checkBox状态发生改变
  61. void StatusConfig::onCheckBoxStateChanged(int state)
  62. {
  63. int statusIndex = ui->listWidget_status->currentRow();
  64. if(statusIndex == -1 || isSetUi) return;
  65. if(ui->listWidget_status->currentItem() == nullptr) return;
  66. //获取checkBox所在位置
  67. QCheckBox *check = dynamic_cast<QCheckBox*>(this->sender());
  68. int x = check->frameGeometry().x();
  69. int y = check->frameGeometry().y();
  70. QModelIndex index = ui->tableWidget_event->indexAt(QPoint(x,y));
  71. int row = index.row();
  72. int column = index.column();
  73. //修改数据
  74. DataManager::getInstance()->setEventTableCheckBox(currentElem,statusIndex,row,column,state);
  75. }
  76. ///事件配置ComboBox选择发生改变
  77. void StatusConfig::onEventBoxTextChanged(const QString &arg1)
  78. {
  79. int statusIndex = ui->listWidget_status->currentRow();
  80. if(statusIndex == -1 || isSetUi) return;
  81. //获取特效列表所在位置
  82. QComboBox *box = dynamic_cast<QComboBox*>(this->sender());
  83. int x = box->frameGeometry().x();
  84. int y = box->frameGeometry().y();
  85. QModelIndex index = ui->tableWidget_event->indexAt(QPoint(x,y));
  86. int row = index.row();
  87. int column = index.column();
  88. //修改数据
  89. DataManager::getInstance()->changeEventTable(currentElem,arg1,statusIndex,row,column);
  90. }
  91. // 动作comboBox选择发生变化
  92. void StatusConfig::onActionBoxTextChanged(const QString &arg1) {
  93. int statusIndex = ui->listWidget_status->currentRow();
  94. if(statusIndex == -1 || isSetUi) return;
  95. DataManager::getInstance()->changeAction(currentElem,arg1,statusIndex);
  96. }
  97. ///动作配置中的设置点击后
  98. void StatusConfig::onSetActionButtonClicked()
  99. {
  100. int statusRow = ui->listWidget_status->currentRow();
  101. if(statusRow == -1) return;
  102. auto status = DataManager::getInstance()->getStatusConfigData(currentElem, statusRow);
  103. QVector<ElemPropertyData::EventConfig> eventTable = DataManager::getInstance()->getStatusConfigData(currentElem,statusRow).eventConfig;
  104. createSetWindow(status.action);
  105. }
  106. ///点击动作配置的设置按钮后生成新窗口
  107. void StatusConfig::createSetWindow(QString actionName)
  108. {
  109. int statusIndex = ui->listWidget_status->currentRow();
  110. if(actionName == "尚未选择"){
  111. QMap<QString,QString> nullMap;
  112. DataManager::getInstance()->changeActionConfigData(currentElem,statusIndex,nullMap);
  113. return;
  114. }
  115. ActionSettingDialog setDialog;
  116. setDialog.setDialogUi(actionName,currentElem,statusIndex);
  117. setDialog.exec();
  118. }
  119. ///切换元素,重置全部ui
  120. void StatusConfig::setUi(QString elem)
  121. {
  122. isSetUi = true;
  123. currentElem = elem;
  124. //设置状态配置界面
  125. ui->listWidget_status->clear();
  126. for(const QString &i:DataManager::getInstance()->getList(elem,DataManager::ListType::StatusVal)){
  127. QListWidgetItem* item = new QListWidgetItem(i);
  128. ui->listWidget_status->addItem(item);
  129. }
  130. //切换元素时状态尚未选中,先清除事件表格内容
  131. int rowCnt = ui->tableWidget_event->rowCount();
  132. for(int i=0;i<rowCnt;i++){
  133. ui->tableWidget_event->removeRow(0);
  134. }
  135. //设置收集动画和状态配置的comboBox
  136. setAnimComboBox();
  137. ui->lineEdit_collectionType->clear();
  138. isSetUi = false;
  139. }
  140. ///重置容易变化的动画下拉选项
  141. void StatusConfig::setAnimComboBox()
  142. {
  143. isSetUi = true;
  144. ui->comboBox_initAnim->clear();
  145. ui->comboBox_clickAnim->clear();
  146. ui->comboBox_action->clear();
  147. ui->comboBox_collectAnimation->clear();
  148. ui->comboBox_initAnim->addItem("尚未选择");
  149. ui->comboBox_clickAnim->addItem("尚未选择");
  150. ui->comboBox_collectAnimation->addItem("尚未选择");
  151. ui->comboBox_action->addItem("尚未选择");
  152. QStringList animList = DataManager::getInstance()->getList(currentElem,DataManager::ListType::Anim);
  153. ui->comboBox_clickAnim->addItems(animList);
  154. ui->comboBox_initAnim->addItems(animList);
  155. ui->comboBox_collectAnimation->addItems(DataManager::getInstance()->getList(currentElem,DataManager::ListType::CollAnim));
  156. ui->comboBox_action->addItems(DataManager::getInstance()->getList(currentElem,DataManager::ListType::Actions));
  157. int row = ui->listWidget_status->currentRow();
  158. if(row != -1) {
  159. ElemPropertyData::StatusConfig statusData = DataManager::getInstance()->getStatusConfigData(currentElem,row);
  160. setAnimIndex(statusData);
  161. //表格中的特效选项更新
  162. int rowNum = ui->tableWidget_event->rowCount();
  163. QVector<ElemPropertyData::EventConfig> event = statusData.eventConfig;
  164. for(int i=0;i<rowNum;i++){
  165. ui->tableWidget_event->setCellWidget(i,3,createBox(event[i].specialEffect,BoxType::Effect));
  166. ui->tableWidget_event->setCellWidget(i,0,createBox(event[i].name,BoxType::Event));
  167. }
  168. }
  169. isSetUi = false;
  170. }
  171. ///基础属性的可掉落变化时刷新可掉落勾选情况
  172. void StatusConfig::updateDropBox(bool state)
  173. {
  174. if(state) ui->checkBox_dropable->setCheckState(Qt::Checked);
  175. else ui->checkBox_dropable->setCheckState(Qt::Unchecked);
  176. }
  177. ///设置动画当前选择项
  178. void StatusConfig::setAnimIndex(ElemPropertyData::StatusConfig statusData)
  179. {
  180. int comboIndex;
  181. int row = ui->listWidget_status->currentRow();
  182. //初始化动画
  183. comboIndex = ui->comboBox_initAnim->findText(statusData.initAnim);
  184. if(comboIndex == -1){
  185. comboIndex = 0;
  186. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::InitAnim,"尚未选择",row);
  187. }
  188. ui->comboBox_initAnim->setCurrentIndex(comboIndex);
  189. //点击动画
  190. comboIndex = ui->comboBox_clickAnim->findText(statusData.clickAnim);
  191. if(comboIndex == -1){
  192. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::ClickAnim,"尚未选择",row);
  193. comboIndex = 0;
  194. }
  195. ui->comboBox_clickAnim->setCurrentIndex(comboIndex);
  196. //收集动画
  197. comboIndex = ui->comboBox_collectAnimation->findText(statusData.collAnim);
  198. if(comboIndex == -1){
  199. comboIndex = 0;
  200. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::CollAnim,"尚未选择",row);
  201. }
  202. ui->comboBox_collectAnimation->setCurrentIndex(comboIndex);
  203. }
  204. ///切换状态,重置状态配置界面
  205. void StatusConfig::setStatusUi()
  206. {
  207. int row = ui->listWidget_status->currentRow();
  208. if(row == -1) return;
  209. isSetUi = true;
  210. ElemPropertyData::StatusConfig statusData = DataManager::getInstance()->getStatusConfigData(currentElem,row);
  211. setAnimIndex(statusData);
  212. //多重打击
  213. if(statusData.multiHit) ui->checkBox_multiHit->setCheckState(Qt::Checked);
  214. else ui->checkBox_multiHit->setCheckState(Qt::Unchecked);
  215. //可掉落
  216. if(statusData.dropable) ui->checkBox_dropable->setCheckState(Qt::Checked);
  217. else ui->checkBox_dropable->setCheckState(Qt::Unchecked);
  218. // 打击子元素
  219. if(statusData.beatSubItem) ui->checkBox_beatSubItem->setCheckState(Qt::Checked);
  220. else ui->checkBox_beatSubItem->setCheckState(Qt::Unchecked);
  221. //是否需要收集
  222. ui->lineEdit_collectionType->clear();
  223. if(statusData.needCollect){
  224. ui->checkBox_needCollect->setCheckState(Qt::Checked);
  225. ui->lineEdit_collectionType->setReadOnly(false);
  226. ui->comboBox_collectAnimation->setDisabled(false);
  227. std::cout<<"收集的目标类型"<<qPrintable(statusData.collTargetType)<<std::endl;
  228. ui->lineEdit_collectionType->setText(statusData.collTargetType);
  229. }
  230. else{
  231. ui->checkBox_needCollect->setCheckState(Qt::Unchecked);
  232. ui->lineEdit_collectionType->setReadOnly(true);
  233. ui->comboBox_collectAnimation->setDisabled(true);
  234. ui->comboBox_collectAnimation->setCurrentIndex(0);
  235. }
  236. // action
  237. if (statusData.action != "尚未选择") {
  238. int index = ui->comboBox_action->findText(statusData.action);
  239. if(index != -1) {
  240. ui->comboBox_action->setCurrentIndex(index);
  241. }
  242. } else {
  243. ui->comboBox_action->setCurrentIndex(0);
  244. }
  245. // 事件配置
  246. int rowNum = ui->tableWidget_event->rowCount();
  247. for(int i=0;i<rowNum;i++){
  248. ui->tableWidget_event->removeRow(0);
  249. }
  250. for(const auto &i:statusData.eventConfig){
  251. rowNum = ui->tableWidget_event->rowCount();
  252. ui->tableWidget_event->insertRow(rowNum);
  253. //事件名称
  254. ui->tableWidget_event->setCellWidget(rowNum,0,createBox(i.name,BoxType::Event));
  255. std::cout<<"重置状态配置ui:事件名称:"<<qPrintable(i.name)<<std::endl;
  256. //是否需要颜色一致
  257. ui->tableWidget_event->setCellWidget(rowNum,1,createCheckBox(i.consisColor));
  258. //变化幅度
  259. ui->tableWidget_event->setItem(rowNum,2,new QTableWidgetItem(QString::number(i.changeMagnitude)));
  260. //特效
  261. ui->tableWidget_event->setCellWidget(rowNum,3,createBox(i.specialEffect,BoxType::Effect));
  262. //根据格子数量消除
  263. ui->tableWidget_event->setCellWidget(rowNum,4,createCheckBox(i.elimATLattices));
  264. // //触发动作
  265. // ui->tableWidget_event->setCellWidget(rowNum,5,createBox(i.triggerAction,BoxType::Action));
  266. // //触发动作设置
  267. // ui->tableWidget_event->setCellWidget(rowNum,6,createSetButton());
  268. }
  269. isSetUi = false;
  270. }
  271. ///生成模板
  272. void StatusConfig::on_pushButton_genTemp_clicked()
  273. {
  274. if(ui->listWidget_status->count() > 0) return;
  275. int maxLayer = DataManager::getInstance()->getMaxLayer(currentElem).toInt();
  276. for(int i=0;i<maxLayer;i++){
  277. QListWidgetItem* item = new QListWidgetItem(QString::number(i));
  278. ui->listWidget_status->addItem(item);
  279. DataManager::getInstance()->addStatus(currentElem,QString::number(i));
  280. }
  281. }
  282. ///添加状态,若已经生成最大层数全部状态则按钮无效
  283. void StatusConfig::on_pushButton_addStatus_clicked()
  284. {
  285. int maxLayer = DataManager::getInstance()->getMaxLayer(currentElem).toInt();
  286. QString statusName;
  287. for(int i=0;i<=maxLayer;i++){
  288. if(!DataManager::getInstance()->existStatusVal(currentElem,QString::number(i))){
  289. statusName = QString::number(i);
  290. break;
  291. }
  292. }
  293. if(!statusName.isEmpty()){
  294. QListWidgetItem* item = new QListWidgetItem(statusName);
  295. ui->listWidget_status->addItem(item);
  296. ElemPropertyData::StatusConfig status(statusName);
  297. DataManager::getInstance()->addStatus(currentElem,statusName);
  298. }
  299. }
  300. ///删除状态
  301. void StatusConfig::on_pushButton_delStatus_clicked()
  302. {
  303. int row = ui->listWidget_status->currentRow();
  304. if(row == -1) return;
  305. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除状态","确定要删除此状态吗?");
  306. if(reply == QMessageBox::Yes){
  307. delete ui->listWidget_status->takeItem(row);
  308. DataManager::getInstance()->delStatus(currentElem,row);
  309. }
  310. }
  311. ///修改状态值,检查修改后的状态值是否合法,并转移数据
  312. void StatusConfig::on_listWidget_status_itemDoubleClicked(QListWidgetItem *item)
  313. {
  314. ChangeNameDialog newName;
  315. newName.setModal(true);
  316. newName.exec();
  317. QString name = newName.getNewName();
  318. if(!name.isEmpty()){
  319. bool isNum;double tmp = name.toDouble(&isNum);
  320. int maxLayer = DataManager::getInstance()->getMaxLayer(currentElem).toInt();
  321. int statusNum = name.toInt();
  322. if(!isNum ||statusNum < 0 || statusNum > maxLayer){
  323. QMessageBox::critical(this,"错误","状态值必须是大于等于0且小于最大层数的数字");
  324. return;
  325. }
  326. if(DataManager::getInstance()->existStatusVal(currentElem,name)){
  327. QMessageBox::critical(this,"警告","该状态值已存在");
  328. return;
  329. }
  330. int row = ui->listWidget_status->currentRow();
  331. DataManager::getInstance()->changeStatusVal(currentElem,row,name);
  332. item->setText(name);
  333. }
  334. }
  335. ///多重打击数据变化
  336. void StatusConfig::on_checkBox_multiHit_stateChanged(int arg1)
  337. {
  338. int index = ui->listWidget_status->currentRow();
  339. if(index == -1 || isSetUi) return;
  340. DataManager::getInstance()->setFundCheckBox(currentElem,index,DataManager::CheckType::MultiHit,arg1);
  341. }
  342. ///可掉落数据变化
  343. void StatusConfig::on_checkBox_dropable_stateChanged(int arg1)
  344. {
  345. int index = ui->listWidget_status->currentRow();
  346. if(index == -1 || isSetUi) return;
  347. DataManager::getInstance()->setFundCheckBox(currentElem,index,DataManager::CheckType::Dropable,arg1);
  348. }
  349. ///多重打击数据变化
  350. void StatusConfig::on_checkBox_beatSubItem_stateChanged(int arg1)
  351. {
  352. int index = ui->listWidget_status->currentRow();
  353. if(index == -1 || isSetUi) return;
  354. DataManager::getInstance()->setFundCheckBox(currentElem,index,DataManager::CheckType::BeatSubitem,arg1);
  355. }
  356. ///需要收集数据变化
  357. void StatusConfig::on_checkBox_needCollect_stateChanged(int arg1)
  358. {
  359. int index = ui->listWidget_status->currentRow();
  360. if(index == -1 || isSetUi) return;
  361. DataManager::getInstance()->setFundCheckBox(currentElem,index,DataManager::CheckType::NeedColl,arg1);
  362. if(arg1){
  363. ui->lineEdit_collectionType->setReadOnly(false);
  364. ui->comboBox_collectAnimation->setDisabled(false);
  365. }
  366. else{
  367. ui->lineEdit_collectionType->setReadOnly(true);
  368. ui->comboBox_collectAnimation->setDisabled(true);
  369. }
  370. }
  371. ///收集的目标类型变化
  372. void StatusConfig::on_lineEdit_collectionType_editingFinished()
  373. {
  374. int index = ui->listWidget_status->currentRow();
  375. if(index == -1) return;
  376. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::CollTar,ui->lineEdit_collectionType->text(),index);
  377. }
  378. ///添加事件
  379. void StatusConfig::on_pushButton_addEvent_clicked()
  380. {
  381. int index = ui->listWidget_status->currentRow();
  382. if(index == -1) return;
  383. int rowNum = ui->tableWidget_event->rowCount();
  384. ui->tableWidget_event->insertRow(rowNum);
  385. ui->tableWidget_event->setCellWidget(rowNum,0,createBox("尚未选择",BoxType::Event));
  386. ui->tableWidget_event->setCellWidget(rowNum,1,createCheckBox(false));
  387. ui->tableWidget_event->setItem(rowNum,2,new QTableWidgetItem("1"));
  388. ui->tableWidget_event->setCellWidget(rowNum,3,createBox("尚未选择",BoxType::Effect));
  389. ui->tableWidget_event->setCellWidget(rowNum,4,createCheckBox(false));
  390. ui->tableWidget_event->setCellWidget(rowNum,5,createBox("尚未选择",BoxType::Action));
  391. ui->tableWidget_event->setCellWidget(rowNum,6,createSetButton());
  392. DataManager::getInstance()->addEvent(currentElem,index);
  393. }
  394. ///事件表格双击改变数据
  395. void StatusConfig::on_tableWidget_event_cellDoubleClicked(int row, int column)
  396. {
  397. if(ui->listWidget_status->currentItem() == nullptr) return;
  398. if(column == 2) eventTableItemChanged = true;
  399. }
  400. ///状态变化幅度合法性检查及数据保存
  401. void StatusConfig::on_tableWidget_event_itemChanged(QTableWidgetItem *item)
  402. {
  403. int statusIndex = ui->listWidget_status->currentRow();
  404. if(statusIndex == -1) return;
  405. if(!eventTableItemChanged) return;
  406. eventTableItemChanged = false;
  407. int column = item->column();
  408. int row = item->row();
  409. QVector<ElemPropertyData::EventConfig> eventVec = DataManager::getInstance()->getStatusConfigData(currentElem,statusIndex).eventConfig;
  410. if(column == 2){
  411. bool ok;double a = item->text().toDouble(&ok);
  412. int val = item->text().toInt();
  413. if(!ok || val<0){
  414. QMessageBox::critical(this,"警告","状态变化幅度是大于等于0的数字");
  415. ui->tableWidget_event->item(row,2)->setText(QString::number(eventVec[row].changeMagnitude));
  416. return;
  417. }
  418. std::cout<<"状态变化幅度发生改变,新值为:"<<val<<std::endl;
  419. DataManager::getInstance()->changeEventTable(currentElem,item->text(),statusIndex,row,2);
  420. }
  421. }
  422. ///初始化动画数据修改
  423. void StatusConfig::on_comboBox_initAnim_currentTextChanged(const QString &arg1)
  424. {
  425. int index = ui->listWidget_status->currentRow();
  426. if(index==-1 || isSetUi) return;
  427. std::cout<<"初始化动画:"<<qPrintable(arg1)<<std::endl;
  428. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::InitAnim,arg1,index);
  429. }
  430. ///点击动画数据修改
  431. void StatusConfig::on_comboBox_clickAnim_currentTextChanged(const QString &arg1)
  432. {
  433. int index = ui->listWidget_status->currentRow();
  434. if(index==-1 || isSetUi) return;
  435. std::cout<<"初始化动画:"<<qPrintable(arg1)<<std::endl;
  436. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::ClickAnim,arg1,index);
  437. }
  438. ///收集动画数据修改
  439. void StatusConfig::on_comboBox_collectAnimation_currentTextChanged(const QString &arg1)
  440. {
  441. int index = ui->listWidget_status->currentRow();
  442. if(index==-1 || isSetUi) return;
  443. std::cout<<"收集动画:"<<qPrintable(arg1)<<std::endl;
  444. DataManager::getInstance()->changeStatusFundVal(currentElem,DataManager::StatusDataType::CollAnim,arg1,index);
  445. }
  446. ///删除事件
  447. void StatusConfig::on_pushButton_delEvent_clicked()
  448. {
  449. int statusIndex = ui->listWidget_status->currentRow();
  450. int row = ui->tableWidget_event->currentRow();
  451. if(statusIndex == -1 || row == -1) return;
  452. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除事件","确定要删除此事件吗?");
  453. if(reply == QMessageBox::Yes){
  454. ui->tableWidget_event->removeRow(row);
  455. DataManager::getInstance()->delEvent(currentElem,statusIndex,row);
  456. }
  457. }
  458. ///当前选中状态修改
  459. void StatusConfig::on_listWidget_status_currentRowChanged(int currentRow)
  460. {
  461. if(currentRow == -1) return;
  462. setStatusUi();
  463. }
  464. void StatusConfig::on_pushButton_copyStatus_clicked()
  465. {
  466. int curRow = ui->listWidget_status->currentRow();
  467. if(curRow == -1) return;
  468. int maxLayer = DataManager::getInstance()->getMaxLayer(currentElem).toInt();
  469. QString statusName;
  470. for(int i=0;i<maxLayer;i++){
  471. if(!DataManager::getInstance()->existStatusVal(currentElem,QString::number(i))){
  472. statusName = QString::number(i);
  473. break;
  474. }
  475. }
  476. if(!statusName.isEmpty()){
  477. DataManager::getInstance()->copyStatus(currentElem,statusName,curRow);
  478. QListWidgetItem* item = new QListWidgetItem(statusName);
  479. ui->listWidget_status->addItem(item);
  480. }
  481. }