actionSettingDialog.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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)
  23. {
  24. curStatusIndex = statusIndex;
  25. curElem = elem;
  26. curActionName = actionName;
  27. QFormLayout* formlayout = new QFormLayout();
  28. QMap<QString,QString> data = DataManager::getInstance()->getStatusConfigData(elem,statusIndex).actionConfig;
  29. for(const auto &i:DataManager::getInstance()->getTempFields("actionTemp",actionName)){
  30. if(i.type == "list"){
  31. QComboBox* combo = new QComboBox;
  32. if(i.src == "animations"){
  33. combo->addItems(DataManager::getInstance()->getList(elem,DataManager::ListType::Anim));
  34. }
  35. QString val;
  36. if(data.find(i.name) != data.end()) val = data[i.name];
  37. else val = i.defaultVal;
  38. int index = combo->findText(val);
  39. combo->setCurrentIndex(index);
  40. formlayout->addRow(i.name,combo);
  41. }
  42. else if(i.type == "input"){
  43. QString val;
  44. if(data.find(i.name) != data.end()) val = data[i.name];
  45. else val = i.defaultVal;
  46. QLineEdit* edit = new QLineEdit(val);
  47. formlayout->addRow(i.name,edit);
  48. }
  49. }
  50. ui->widget->setLayout(formlayout);
  51. }
  52. //点击应用,保存数据
  53. void ActionSettingDialog::on_buttonBox_accepted()
  54. {
  55. QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget->layout());
  56. int itemCout = formlayout->count();
  57. QVector<ReadJsonSrc::Fields> fieldVec = DataManager::getInstance()->getTempFields("actionTemp",curActionName);
  58. for(int itemIndex=1;itemIndex<itemCout;itemIndex+=2){
  59. QLayoutItem* item = formlayout->itemAt(itemIndex);
  60. int i = itemIndex/2;
  61. if(fieldVec[i].type == "list"){
  62. QComboBox* combo = dynamic_cast<QComboBox*>(item->widget());
  63. dataMap[fieldVec[i].name] = combo->currentText();
  64. std::cout<<qPrintable(fieldVec[i].name)<<": "<<qPrintable(combo->currentText())<<std::endl;
  65. }
  66. else if(fieldVec[i].type == "input"){
  67. QLineEdit* edit = dynamic_cast<QLineEdit*>(item->widget());
  68. dataMap[fieldVec[i].name] = edit->text();
  69. std::cout<<qPrintable(fieldVec[i].name)<<": "<<qPrintable(edit->text())<<std::endl;
  70. }
  71. }
  72. DataManager::getInstance()->changeActionConfigData(curElem,curStatusIndex,dataMap);
  73. }