-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathconnecteditui.cpp
128 lines (112 loc) · 4.2 KB
/
connecteditui.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "connecteditui.h"
#include <QFileDialog>
#include <QMessageBox>
#include "db/connectdao.h"
#include "ui_connecteditui.h"
ConnectEditUI::ConnectEditUI(QWidget *parent, QString title)
: QDialog(parent), ui(new Ui::ConnectEditUI) {
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle(title);
setWindowFlags(windowFlags() &
~Qt::WindowMaximizeButtonHint); // 禁止最大化按钮
setFixedSize(this->width(), this->height());
ui->save->setIcon(QIcon(":/icons/save.png"));
ui->cancel->setIcon(QIcon(":/icons/cancel.png"));
ui->tabWidget->setCurrentIndex(0);
refreshPage();
}
void ConnectEditUI::refreshPage() {
ui->name->setText(info.name);
ui->hostName->setText(info.hostName);
ui->sshPort->setText(QString::number(info.port));
ui->authType->setCurrentIndex(info.authType - 1);
ui->userName->setText(info.username);
ui->password->setText(info.password);
ui->publickKeyFilePath->setText(info.publicKeyPath);
ui->privateKeyFilePath->setText(info.privateKeyPath);
ui->passPhrase->setText(info.passPhrase);
int authType = 0;
if (info.authType - 1 > 0) {
authType = info.authType - 1;
}
ui->authType->setCurrentIndex(authType);
ui->vncUserName->setText(info.vncUserName);
ui->vncPassword->setText(info.vncPassword);
ui->vncPort->setText(QString::number(info.vncPort));
ui->rdpUserName->setText(info.rdpUserName);
ui->rdpPassword->setText(info.rdpPassword);
ui->rdpPort->setText(QString::number(info.rdpPort));
}
ConnectEditUI::~ConnectEditUI() { delete ui; }
void ConnectEditUI::on_authType_currentIndexChanged(int index) {
if (index == 0) {
ui->privateKeyFilePath->clear();
ui->privateKeyFilePath->setEnabled(false);
ui->publickKeyFilePath->clear();
ui->publickKeyFilePath->setEnabled(false);
ui->passPhrase->clear();
ui->passPhrase->setEnabled(false);
ui->selectPrivateKeyFileButton->setEnabled(false);
ui->selectPublicKeyFileButton->setEnabled(false);
ui->password->setEnabled(true);
}
if (index == 1) {
ui->password->clear();
ui->password->setEnabled(false);
ui->publickKeyFilePath->setEnabled(true);
ui->privateKeyFilePath->setEnabled(true);
ui->passPhrase->setEnabled(true);
ui->selectPublicKeyFileButton->setEnabled(true);
ui->selectPrivateKeyFileButton->setEnabled(true);
}
}
void ConnectEditUI::on_selectPrivateKeyFileButton_clicked() {
QString filePath =
QFileDialog::getOpenFileName(this, tr("选择私钥文件"), "", tr("*"), 0,
QFileDialog::DontUseNativeDialog);
ui->privateKeyFilePath->setText(filePath);
}
void ConnectEditUI::on_save_clicked() {
info.name = ui->name->text();
info.hostName = ui->hostName->text();
info.port = ui->sshPort->text().toUInt();
info.authType = ui->authType->currentIndex() + 1;
info.username = ui->userName->text();
info.password = ui->password->text();
info.publicKeyPath = ui->publickKeyFilePath->text();
info.privateKeyPath = ui->privateKeyFilePath->text();
info.passPhrase = ui->passPhrase->text();
info.vncUserName = ui->vncUserName->text();
info.vncPassword = ui->vncPassword->text();
info.vncPort = ui->vncPort->text().toUInt();
info.rdpUserName = ui->rdpUserName->text();
info.rdpPassword = ui->rdpPassword->text();
info.rdpPort = ui->rdpPort->text().toUInt();
if (info.parentId == 0) {
info.parentId = info.id;
bool result = ConnectDao::GetInstance()->addConnectInfo(&info);
if (result) {
emit addSuccess(info);
QMessageBox::information(this, "提示", "资源添加成功");
}
} else {
bool result = ConnectDao::GetInstance()->updateConnectById(info);
if (result) {
emit updateSuccess(info);
QMessageBox::information(this, "提示", "资源更新成功");
this->close();
}
}
}
void ConnectEditUI::setConnectInfo(ConnectInfo info) {
this->info = info;
refreshPage();
}
void ConnectEditUI::on_selectPublicKeyFileButton_clicked() {
QString filePath =
QFileDialog::getOpenFileName(this, tr("选择公钥文件"), "", tr("*"), 0,
QFileDialog::DontUseNativeDialog);
ui->publickKeyFilePath->setText(filePath);
}
void ConnectEditUI::on_cancel_clicked() { this->close(); }