DialogNewVariable.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #include "DialogNewVariable.h"
  2. #include "Common.h"
  3. #include "GvlManager.h"
  4. DialogNewVariable::DialogNewVariable(GVL_MODE gvlType, QWidget *parent)
  5. : QDialog(parent)
  6. , m_gvlType(gvlType)
  7. {
  8. ui.setupUi(this);
  9. // 对话框初始化
  10. initUI();
  11. }
  12. DialogNewVariable::~DialogNewVariable()
  13. {
  14. }
  15. /// <summary>
  16. /// 对话框初始化
  17. /// </summary>
  18. void DialogNewVariable::initUI()
  19. {
  20. // this->setWindowTitle(("Add New Variable"));
  21. this->setAttribute(Qt::WA_QuitOnClose);
  22. this->setWindowModality(Qt::ApplicationModal);
  23. ui.checkSerialized->setChecked(true);
  24. ui.editValue->setText("0");
  25. ui.editValue->setAlignment(Qt::AlignLeading);
  26. // 初始化类型列表(根据不同的变量模式)
  27. this->initTypeList();
  28. ui.comboType->setCurrentIndex(1);
  29. ui.editName->setPlaceholderText("Name is required.");
  30. ui.editComment->setPlaceholderText("Type here to input comment.");
  31. // 槽函数
  32. connect(ui.createButton, SIGNAL(clicked()), this, SLOT(onButtonCreateClicked()));
  33. connect(ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
  34. // 设置固定窗体大小
  35. this->setFixedSize(495, 450);
  36. //this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
  37. }
  38. /// <summary>
  39. /// 2022-2-18,初始化类型列表(根据不同的变量模式添加不同的候选项)
  40. /// </summary>
  41. void DialogNewVariable::initTypeList()
  42. {
  43. QString strItem;
  44. // 基础模式
  45. if (m_gvlType == GVL_MODE::GVL_BASIC)
  46. {
  47. for (int i = 0; i < GVL_BASIC_TYPE_COUNT; i++)
  48. {
  49. strItem = Utility::getTypeString((VALUE_TYPE)i);
  50. ui.comboType->addItem(strItem);
  51. }
  52. }
  53. else
  54. {
  55. for (int i = 0; i < GVL_STANDARD_TYPE_COUNT; i++)
  56. {
  57. strItem = Utility::getTypeString((VALUE_TYPE)i);
  58. ui.comboType->addItem(strItem);
  59. }
  60. }
  61. }
  62. /// <summary>
  63. /// Create按钮
  64. /// </summary>
  65. void DialogNewVariable::onButtonCreateClicked()
  66. {
  67. // 将控件设置为正常状态
  68. Utility::setControlNormal(ui.editName);
  69. Utility::setControlNormal(ui.editValue);
  70. m_bSerialized = ui.checkSerialized->checkState() == Qt::Checked;
  71. m_strName = ui.editName->text();
  72. m_strType = ui.comboType->currentText();
  73. m_strValue = ui.editValue->text();
  74. m_strComment = ui.editComment->text();
  75. // 检查变量名
  76. if (m_strName.isEmpty())
  77. {
  78. Utility::VPCriticalMessageBox("Variable name is required!");
  79. Utility::setControlError(ui.editName);
  80. return;
  81. }
  82. // 检查页面是否重复
  83. if( g_pGvlManager->isDuplicated(m_strGroup, m_strName))
  84. {
  85. Utility::VPCriticalMessageBox("Variable name is duplicated!");
  86. Utility::setControlError(ui.editName);
  87. return;
  88. }
  89. // 检查变量值是否和变量类型吻合
  90. if (!g_pGvlManager->isValueValid(m_strType, m_strValue))
  91. {
  92. Utility::VPCriticalMessageBox("Invalid value - type: " + m_strType + " .");
  93. Utility::setControlError(ui.editValue);
  94. return;
  95. }
  96. this->accept();
  97. }