statusConfig.cpp 20 KB

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