2025-05-26 16:50:46 +08:00
|
|
|
|
#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");
|
|
|
|
|
|
}
|