#include "DialogNewDBVariable.h"
#include "GvlManager.h"
DialogNewDBVariable::DialogNewDBVariable(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
// 对话框初始化
initUI();
}
DialogNewDBVariable::~DialogNewDBVariable()
{
}
///
/// 对话框初始化
///
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);
}
///
/// 2022-2-18,初始化类型列表(根据不同的变量模式添加不同的候选项)
///
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));
}
}
///
/// Create按钮
///
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(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();
}