123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #include "DialogNewDBVariable.h"
- #include "GvlManager.h"
- DialogNewDBVariable::DialogNewDBVariable(QWidget *parent)
- : QDialog(parent)
- {
- ui.setupUi(this);
- // 对话框初始化
- initUI();
- }
- DialogNewDBVariable::~DialogNewDBVariable()
- {
- }
- /// <summary>
- /// 对话框初始化
- /// </summary>
- void DialogNewDBVariable::initUI()
- {
- this->setAttribute(Qt::WA_QuitOnClose);
- this->setWindowModality(Qt::ApplicationModal);
- ui.editValue->setText("0");
- ui.editValue->setAlignment(Qt::AlignLeading);
- // 初始化类型列表(根据不同的变量模式)
- this->initTypeList();
- // 设置参数默认值
- ui.comboType->setCurrentIndex(1);
- ui.comboAccess->setCurrentIndex(0);
- ui.editName->setPlaceholderText("Name is required.");
- ui.editComment->setPlaceholderText("Type here to input comment.");
- ui.editCommAddress->setPlaceholderText("Address");
- ui.editCommAddress->setText("40001");
- // 默认不选中触发
- ui.checkTrigger->setChecked(false);
- // 槽函数
- connect(ui.createButton, SIGNAL(clicked()), this, SLOT(onButtonCreateClicked()));
- connect(ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
- // 设置固定窗体大小
- this->setFixedSize(495, 499);
- }
- /// <summary>
- /// 2022-2-18,初始化类型列表(根据不同的变量模式添加不同的候选项)
- /// </summary>
- void DialogNewDBVariable::initTypeList()
- {
- QString strItem;
- for (int i = 0; i < GVL_BASIC_TYPE_COUNT; i++)
- {
- strItem = Utility::getTypeString((VALUE_TYPE)i);
- ui.comboType->addItem(strItem);
- }
- // 顺便再初始化一下Access的Combo
- //ui.comboAccess->addItem("All");
- //ui.comboAccess->addItem("Read Only");
- //ui.comboAccess->addItem("Write Only");
- for (int i = 0; i < emGvlAccess.keyCount(); i++)
- {
- ui.comboAccess->addItem(emGvlAccess.key(i));
- }
- }
- /// <summary>
- /// Create按钮
- /// </summary>
- void DialogNewDBVariable::onButtonCreateClicked()
- {
- // 将控件设置为正常状态
- Utility::setControlNormal(ui.editName);
- Utility::setControlNormal(ui.editValue);
- // 获取用户输入
- m_strName = ui.editName->text();
- m_strType = ui.comboType->currentText();
- m_strValue = ui.editValue->text();
- m_strComment = ui.editComment->text();
- m_strCommAddress = ui.editCommAddress->text();
- m_accessMode = static_cast<VPEnum::GVL_ACCESS_MODE>(ui.comboAccess->currentIndex());
- m_bTrigger = ui.checkTrigger->isChecked();
- // 检查变量名
- if (m_strName.isEmpty())
- {
- Utility::VPCriticalMessageBox("Variable name is required!");
- Utility::setControlError(ui.editName);
- return;
- }
- // 检查名字是否和当前页面重复
- if (g_pGvlManager->isDuplicated(m_strGroup, m_strName))
- {
- Utility::VPCriticalMessageBox("Variable name is duplicated!");
- Utility::setControlError(ui.editName);
- return;
- }
- // 检查变量值是否和变量类型吻合
- if (!g_pGvlManager->isValueValid(m_strType, m_strValue))
- {
- Utility::VPCriticalMessageBox("Invalid value - type: " + m_strType + " .");
- Utility::setControlError(ui.editValue);
- return;
- }
- this->accept();
- }
|