PowerModeler/source/connInfoEditDialog.cpp

129 lines
4.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "connInfoEditDialog.h"
#include "./ui_connInfoEditDialog.h"
#include "maskLayer.h"
#include "mainwindow.h"
#include "settings.h"
#include "customBorderContainer.h"
ConnInfoEditDialog::ConnInfoEditDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::ConnInfoEditDialog)
, m_pMainWindow(nullptr)
{
ui->setupUi(this);
if(QSysInfo::kernelType() == "linux")
{
//Linux下默认的Qt::Dialog即使有父窗口也无法按照子窗口的行为进行展示并且最大、最小按钮不好关闭因此需要去掉Dialog属性随之而来的问题是模态无法起作用
setWindowFlags(windowFlags() & ~Qt::Dialog);
setStyleSheet("QDialog{border: 1px solid rgb(205,205,205);border-radius:5px;background-color:rgb(245,245,245);}");
m_customBorderContainer = new CustomBorderContainer(this);
m_customBorderContainer->setOperationOptions(CustomBorderContainer::Movable | CustomBorderContainer::Resizable);
}
initialize();
}
ConnInfoEditDialog::~ConnInfoEditDialog()
{
delete ui;
}
void ConnInfoEditDialog::initialize()
{
m_connID = "";
m_pMaskLayer = new MaskLayer(this);
QIntValidator* validator = new QIntValidator(0, 9999, this);
ui->lineEdit_port->setValidator(validator);
ui->lineEdit_password->setEchoMode(QLineEdit::Password);
connect(ui->btnSave, &QPushButton::clicked, this, &ConnInfoEditDialog::onBtnClicked_save);
connect(ui->btnCancle, &QPushButton::clicked, this, &ConnInfoEditDialog::onBtnClicked_cancle);
connect(ui->comboBox_dbType, &QComboBox::currentTextChanged, this, &ConnInfoEditDialog::onComboxChanged_dbType);
}
void ConnInfoEditDialog::setErrorInfo(const QString& info)
{
if(m_pMainWindow)
m_pMainWindow->showMessageDialog(type_warning, QString::fromWCharArray(L"错误"),info);
else
ui->label_error->setText(info);
}
void ConnInfoEditDialog::clearErrorInfo()
{
if(m_pMainWindow)
m_pMainWindow->hideMessageDialog();
else
ui->label_error->setText("");
}
void ConnInfoEditDialog::showMask()
{
m_pMaskLayer->setGeometry(0, 0, this->width(), this->height());
m_pMaskLayer->show();
}
void ConnInfoEditDialog::hideMask()
{
m_pMaskLayer->close();
}
void ConnInfoEditDialog::loadConnInfo(const QString& connID)
{
DatabaseConfig config = Settings::instance().loadDatabaseConfig(connID);
ui->lineEdit_connection->setText(config.strConnectionName);
ui->lineEdit_hostName->setText(config.strHost);
ui->lineEdit_port->setText(QString::number(config.nPort));
ui->lineEdit_userName->setText(config.strUserName);
ui->lineEdit_password->setText(config.strPassword);
ui->lineEdit_dbName->setText(config.strDBName);
if(config.strDBType == "QPSQL")
ui->comboBox_dbType->setCurrentText("PostgreSQL");
else if(config.strDBType == "QMYSQL")
ui->comboBox_dbType->setCurrentText("MySQL");
ui->plainTextEdit->setPlainText(config.strComment);
m_connID = connID;
}
void ConnInfoEditDialog::onBtnClicked_save()
{
if(ui->lineEdit_connection->text() == "" || ui->lineEdit_hostName->text() == "" || ui->lineEdit_userName->text() == "" ||
ui->lineEdit_password->text() == "" || ui->lineEdit_port->text() == "")
{
setErrorInfo(QString::fromWCharArray(L"除‘备注’外不能有其它信息为空"));
return;
}
DatabaseConfig config;
config.strConnectionName = ui->lineEdit_connection->text();
config.strHost = ui->lineEdit_hostName->text();
config.nPort = ui->lineEdit_port->text().toInt();
config.strUserName = ui->lineEdit_userName->text();
config.strPassword = ui->lineEdit_password->text();
config.strDBName = ui->lineEdit_dbName->text();
if(ui->comboBox_dbType->currentText() == "PostgreSQL")
config.strDBType = "QPSQL";
else if(ui->comboBox_dbType->currentText() == "MySQL")
config.strDBType = "QMYSQL";
if(ui->plainTextEdit->toPlainText().isEmpty())
config.strComment = QString::fromWCharArray(L"");
else
config.strComment = ui->plainTextEdit->toPlainText();
Settings::instance().saveDatabaseConfig(config);
}
void ConnInfoEditDialog::onBtnClicked_cancle()
{
close();
}
void ConnInfoEditDialog::onComboxChanged_dbType(const QString& text)
{
if(text == "PostgreSQL")
ui->lineEdit_port->setText("5432");
else if(text == "MySQL")
ui->lineEdit_port->setText("3306");
}