DialogNewDBVariable.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include "DialogNewDBVariable.h"
  2. #include "GvlManager.h"
  3. DialogNewDBVariable::DialogNewDBVariable(QWidget *parent)
  4. : QDialog(parent)
  5. {
  6. ui.setupUi(this);
  7. // 对话框初始化
  8. initUI();
  9. }
  10. DialogNewDBVariable::~DialogNewDBVariable()
  11. {
  12. }
  13. /// <summary>
  14. /// 对话框初始化
  15. /// </summary>
  16. void DialogNewDBVariable::initUI()
  17. {
  18. this->setAttribute(Qt::WA_QuitOnClose);
  19. this->setWindowModality(Qt::ApplicationModal);
  20. ui.editValue->setText("0");
  21. ui.editValue->setAlignment(Qt::AlignLeading);
  22. // 初始化类型列表(根据不同的变量模式)
  23. this->initTypeList();
  24. // 设置参数默认值
  25. ui.comboType->setCurrentIndex(1);
  26. ui.comboAccess->setCurrentIndex(0);
  27. ui.editName->setPlaceholderText("Name is required.");
  28. ui.editComment->setPlaceholderText("Type here to input comment.");
  29. ui.editCommAddress->setPlaceholderText("Address");
  30. ui.editCommAddress->setText("40001");
  31. // 默认不选中触发
  32. ui.checkTrigger->setChecked(false);
  33. // 槽函数
  34. connect(ui.createButton, SIGNAL(clicked()), this, SLOT(onButtonCreateClicked()));
  35. connect(ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
  36. // 设置固定窗体大小
  37. this->setFixedSize(495, 499);
  38. }
  39. /// <summary>
  40. /// 2022-2-18,初始化类型列表(根据不同的变量模式添加不同的候选项)
  41. /// </summary>
  42. void DialogNewDBVariable::initTypeList()
  43. {
  44. QString strItem;
  45. for (int i = 0; i < GVL_BASIC_TYPE_COUNT; i++)
  46. {
  47. strItem = Utility::getTypeString((VALUE_TYPE)i);
  48. ui.comboType->addItem(strItem);
  49. }
  50. // 顺便再初始化一下Access的Combo
  51. //ui.comboAccess->addItem("All");
  52. //ui.comboAccess->addItem("Read Only");
  53. //ui.comboAccess->addItem("Write Only");
  54. for (int i = 0; i < emGvlAccess.keyCount(); i++)
  55. {
  56. ui.comboAccess->addItem(emGvlAccess.key(i));
  57. }
  58. }
  59. /// <summary>
  60. /// Create按钮
  61. /// </summary>
  62. void DialogNewDBVariable::onButtonCreateClicked()
  63. {
  64. // 将控件设置为正常状态
  65. Utility::setControlNormal(ui.editName);
  66. Utility::setControlNormal(ui.editValue);
  67. // 获取用户输入
  68. m_strName = ui.editName->text();
  69. m_strType = ui.comboType->currentText();
  70. m_strValue = ui.editValue->text();
  71. m_strComment = ui.editComment->text();
  72. m_strCommAddress = ui.editCommAddress->text();
  73. m_accessMode = static_cast<VPEnum::GVL_ACCESS_MODE>(ui.comboAccess->currentIndex());
  74. m_bTrigger = ui.checkTrigger->isChecked();
  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. }