actionSettingDialog.cpp 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "actionSettingDialog.h"
  2. #include "ui_actionSettingDialog.h"
  3. #include "datahpp/dataManager.h"
  4. #include <QPushButton>
  5. #include <QFormLayout>
  6. #include <QComboBox>
  7. #include <QLineEdit>
  8. #include <iostream>
  9. #include <QLabel>
  10. ActionSettingDialog::ActionSettingDialog(QWidget *parent) :
  11. QDialog(parent),
  12. ui(new Ui::ActionSettingDialog)
  13. {
  14. ui->setupUi(this);
  15. ui->buttonBox->button(QDialogButtonBox::Ok)->setText("应用");
  16. ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("放弃");
  17. }
  18. ActionSettingDialog::~ActionSettingDialog()
  19. {
  20. delete ui;
  21. }
  22. void ActionSettingDialog::setDialogUi(QString actionName,QString elem,int statusIndex, int row)
  23. {
  24. curRow = row;
  25. curStatusIndex = statusIndex;
  26. curElem = elem;
  27. curActionName = actionName;
  28. QFormLayout* formlayout = new QFormLayout();
  29. QMap<QString,QString> data = DataManager::getInstance()->getStatusConfigData(elem,statusIndex).eventConfig[row].actionConfig;
  30. for(const auto &i:DataManager::getInstance()->getTempFields("actionTemp",actionName)){
  31. if(i.type == "list"){
  32. QComboBox* combo = new QComboBox;
  33. if(i.src == "animations"){
  34. combo->addItems(DataManager::getInstance()->getList(elem,DataManager::ListType::Anim));
  35. }
  36. QString val;
  37. if(data.find(i.name) != data.end()) val = data[i.name];
  38. else val = i.defaultVal;
  39. int index = combo->findText(val);
  40. combo->setCurrentIndex(index);
  41. formlayout->addRow(i.name,combo);
  42. }
  43. else if(i.type == "input"){
  44. QString val;
  45. if(data.find(i.name) != data.end()) val = data[i.name];
  46. else val = i.defaultVal;
  47. QLineEdit* edit = new QLineEdit(val);
  48. formlayout->addRow(i.name,edit);
  49. }
  50. }
  51. ui->widget->setLayout(formlayout);
  52. }
  53. //点击应用,保存数据
  54. void ActionSettingDialog::on_buttonBox_accepted()
  55. {
  56. QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget->layout());
  57. int itemCout = formlayout->count();
  58. QVector<ReadJsonSrc::Fields> fieldVec = DataManager::getInstance()->getTempFields("actionTemp",curActionName);
  59. for(int itemIndex=1;itemIndex<itemCout;itemIndex+=2){
  60. QLayoutItem* item = formlayout->itemAt(itemIndex);
  61. int i = itemIndex/2;
  62. if(fieldVec[i].type == "list"){
  63. QComboBox* combo = dynamic_cast<QComboBox*>(item->widget());
  64. dataMap[fieldVec[i].name] = combo->currentText();
  65. std::cout<<qPrintable(fieldVec[i].name)<<": "<<qPrintable(combo->currentText())<<std::endl;
  66. }
  67. else if(fieldVec[i].type == "input"){
  68. QLineEdit* edit = dynamic_cast<QLineEdit*>(item->widget());
  69. dataMap[fieldVec[i].name] = edit->text();
  70. std::cout<<qPrintable(fieldVec[i].name)<<": "<<qPrintable(edit->text())<<std::endl;
  71. }
  72. }
  73. DataManager::getInstance()->changeActionConfigData(curElem,curStatusIndex,curRow,dataMap);
  74. }