玉兔远程控制 0.1.0-bate4
载入中...
搜索中...
未找到
ParameterUserUI.cpp
1// Author: Kang Lin <kl222@126.com>
2#include "ParameterUserUI.h"
3#include "ui_ParameterUserUI.h"
4#include "QFileDialog"
5#include <QLoggingCategory>
6
7static Q_LOGGING_CATEGORY(log, "Client.Parameter.User.UI")
8
10 : CParameterUI(parent),
11 ui(new Ui::CParameterUserUI),
12 m_pUser(nullptr)
13{
14 ui->setupUi(this);
15 ui->leUser->setPlaceholderText(tr("Input user name"));
16 ui->lePassword->setPlaceholderText(tr("Input password"));
17 ui->lePublicFile->setPlaceholderText(tr("Please input the public key file"));
18 ui->lePrivateFile->setPlaceholderText(tr("Please input the private key file"));
19 ui->lePassphrase->setPlaceholderText(tr("Please input the passphrase of private key file"));
20 // 调整窗口的初始大小。
21 on_cbType_currentIndexChanged(0);
22 on_cbSystemFile_stateChanged(ui->cbSystemFile->isChecked());
23}
24
25CParameterUserUI::~CParameterUserUI()
26{
27 delete ui;
28}
29
32{
33 m_pUser = qobject_cast<CParameterUser*>(pParameter);
34 if(!m_pUser) {
35 Q_ASSERT(m_pUser);
36 return -1;
37 }
38
39 ui->leUser->setText(m_pUser->GetUser());
40
41 ui->cbType->clear();
42 for(auto t: m_pUser->GetType()) {
43 ui->cbType->addItem(m_pUser->ConvertTypeToName(t), (int)t);
44 }
45
46 int index = ui->cbType->findData((int)m_pUser->GetUsedType());
47 if(-1 == index) {
48 qDebug(log) << "Forget set use type?";
49 } else
50 ui->cbType->setCurrentIndex(index);
51 ui->cbType->setVisible(1 < m_pUser->GetType().length());
52 ui->lbType->setVisible(1 < m_pUser->GetType().length());
53
54 qDebug(log) << "CParameterUserUI::SetParameter:" << index;
55
56 ui->lePassword->setText(m_pUser->GetPassword());
57 ui->pbSave->setChecked(m_pUser->GetSavePassword());
58 on_pbSave_clicked();
59 auto plugPara = m_pUser->GetGlobalParameters();
60 if(plugPara)
61 ui->pbSave->setEnabled(plugPara->GetSavePassword());
62 SetPushButtonTooltip(ui->pbSave, tr("Save password"),
63 tr("Menu: Tools→Settings→Plugin→Password→Enable Save password"));
64 if(plugPara)
65 ui->pbShow->setEnabled(plugPara->GetViewPassowrd());
66 SetPushButtonTooltip(ui->pbShow, tr("View password"),
67 tr("Menu: Tools→Settings→Plugin→Password→Enable view password"));
68 ui->lePublicFile->setText(m_pUser->GetPublicKeyFile());
69 ui->lePrivateFile->setText(m_pUser->GetPrivateKeyFile());
70 ui->lePassphrase->setText(m_pUser->GetPassphrase());
71 ui->pbSavePassphrase->setChecked(m_pUser->GetSavePassphrase());
72 on_pbSavePassphrase_clicked();
73 if(plugPara)
74 ui->pbSavePassphrase->setEnabled(plugPara->GetSavePassword());
75 SetPushButtonTooltip(ui->pbSavePassphrase, tr("Save password"),
76 tr("Menu: Tools→Settings→Plugin→Password→Enable Save password"));
77 if(plugPara)
78 ui->pbShowPassphrase->setEnabled(plugPara->GetViewPassowrd());
79 SetPushButtonTooltip(ui->pbShowPassphrase, tr("View password"),
80 tr("Menu: Tools→Settings→Plugin→Password→Enable view password"));
81
82 return 0;
83}
84
86{
87 if(!m_pUser) return -1;
88
89 m_pUser->SetUsedType((CParameterUser::TYPE)ui->cbType->currentData().toInt());
90
91 m_pUser->SetUser(QString());
92 m_pUser->SetPassword(QString());
93 m_pUser->SetSavePassword(false);
94
95 m_pUser->SetPublicKeyFile(QString());
96 m_pUser->SetPrivateKeyFile(QString());
97 m_pUser->SetPassphrase(QString());
98 m_pUser->SetSavePassphrase(false);
99
100 switch(m_pUser->GetUsedType())
101 {
102 case CParameterUser::TYPE::None:
103 {
104 break;
105 }
106 case CParameterUser::TYPE::OnlyPassword:
107 {
108 m_pUser->SetPassword(ui->lePassword->text());
109 m_pUser->SetSavePassword(ui->pbSave->isChecked());
110 break;
111 }
112 case CParameterUser::TYPE::UserPassword:
113 {
114 m_pUser->SetUser(ui->leUser->text());
115 m_pUser->SetPassword(ui->lePassword->text());
116 m_pUser->SetSavePassword(ui->pbSave->isChecked());
117 break;
118 }
119 case CParameterUser::TYPE::PublicKey:
120 {
121 m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
122 m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
123 m_pUser->SetPassphrase(ui->lePassphrase->text());
124 m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
125 break;
126 }
127 default:
128 m_pUser->SetUser(ui->leUser->text());
129 m_pUser->SetPassword(ui->lePassword->text());
130 m_pUser->SetSavePassword(ui->pbSave->isChecked());
131
132 m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
133 m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
134 m_pUser->SetPassphrase(ui->lePassphrase->text());
135 m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
136 }
137
138 return 0;
139}
141
143{
144 switch(ui->lePassword->echoMode())
145 {
146 case QLineEdit::Password:
147 ui->lePassword->setEchoMode(QLineEdit::Normal);
148 ui->pbShow->setIcon(QIcon::fromTheme("eye-off"));
149 break;
150 case QLineEdit::Normal:
151 ui->lePassword->setEchoMode(QLineEdit::Password);
152 ui->pbShow->setIcon(QIcon::fromTheme("eye-on"));
153 break;
154 default:
155 ui->pbShow->setIcon(QIcon::fromTheme("eye-on"));
156 }
157}
158
159void CParameterUserUI::on_pbSave_clicked()
160{
161 if(!parent()->inherits("CParameterNetUI")) return;
162 if(ui->pbSave->isChecked())
163 {
164 ui->lePassword->setEnabled(true);
165 ui->lePassword->setPlaceholderText(tr("Input password"));
166 } else {
167 ui->lePassword->setPlaceholderText(tr("Please checked save password to enable"));
168 ui->lePassword->setEnabled(false);
169 }
170}
171
172void CParameterUserUI::on_pbBrowsePublicFile_clicked()
173{
174 QString dir;
175#if defined(Q_OS_LINUX)
176 dir = "~/.ssh";
177#endif
178 QString szFile = QFileDialog::getOpenFileName(this, tr("Open public key file"), dir);
179 if(szFile.isEmpty())
180 return;
181 ui->lePublicFile->setText(szFile);
182}
183
184void CParameterUserUI::on_pbBrowsePrivateFile_clicked()
185{
186 QString dir;
187#if defined(Q_OS_LINUX)
188 dir = "~/.ssh";
189#endif
190 QString szFile = QFileDialog::getOpenFileName(this, tr("Open public key file"), dir);
191 if(szFile.isEmpty())
192 return;
193 ui->lePrivateFile->setText(szFile);
194}
195
196void CParameterUserUI::on_cbType_currentIndexChanged(int index)
197{
198 Q_UNUSED(index);
199 qDebug(log) << "CParameterUserUI::on_cbType_currentIndexChanged:" << index;
200
201 CParameterUser::TYPE type = static_cast<CParameterUser::TYPE>(ui->cbType->currentData().toInt());
202 bool bUser = false;
203 bUser = !(CParameterUser::TYPE::OnlyPassword == type
204 || CParameterUser::TYPE::None == type
205 || CParameterUser::TYPE::OnlyPasswordX509 == type
207 ui->lbUser->setVisible(bUser);
208 ui->leUser->setVisible(bUser);
209
210 bool bPassword = false;
211 bPassword = !(CParameterUser::TYPE::None == type
212 || CParameterUser::TYPE::PublicKey == type);
213 ui->lbPassword->setVisible(bPassword);
214 ui->lePassword->setVisible(bPassword);
215 ui->pbSave->setVisible(bPassword);
216 ui->pbShow->setVisible(bPassword);
217
218 bool bPublicKey = false;
219 bPublicKey = CParameterUser::TYPE::PublicKey == type;
220 ui->lbPublicFile->setVisible(bPublicKey);
221 ui->lePublicFile->setVisible(bPublicKey);
222 ui->pbBrowsePublicFile->setVisible(bPublicKey);
223 ui->lbPrivateFile->setVisible(bPublicKey);
224 ui->lePrivateFile->setVisible(bPublicKey);
225 ui->pbBrowsePrivateFile->setVisible(bPublicKey);
226 ui->lbPassphrase->setVisible(bPublicKey);
227 ui->lePassphrase->setVisible(bPublicKey);
228 ui->pbShowPassphrase->setVisible(bPublicKey);
229 ui->pbSavePassphrase->setVisible(bPublicKey);
230 ui->cbSystemFile->setVisible(bPublicKey);
231
232 bool bCA = false;
233 bCA = CParameterUser::TYPE::OnlyPasswordX509 == type
234 || CParameterUser::TYPE::UserPasswordX509 == type;
235 ui->lbCAFile->setVisible(bCA);
236 ui->leCAFile->setVisible(bCA);
237 ui->pbBrowseCAFile->setVisible(bCA);
238 ui->lbCRLFile->setVisible(bCA);
239 ui->leCRLFile->setVisible(bCA);
240 ui->pbBrowseCRLFile->setVisible(bCA);
241}
242
243void CParameterUserUI::on_pbShowPassphrase_clicked()
244{
245 switch(ui->lePassphrase->echoMode())
246 {
247 case QLineEdit::Password:
248 ui->lePassphrase->setEchoMode(QLineEdit::Normal);
249 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-off"));
250 break;
251 case QLineEdit::Normal:
252 ui->lePassphrase->setEchoMode(QLineEdit::Password);
253 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-on"));
254 break;
255 default:
256 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-on"));
257 }
258}
259
260void CParameterUserUI::on_pbSavePassphrase_clicked()
261{
262 if(!parent()->inherits("CParameterNetUI")) return;
263 if(ui->pbSavePassphrase->isChecked())
264 {
265 ui->lePassphrase->setEnabled(true);
266 ui->lePassphrase->setPlaceholderText(tr("Input passphrase"));
267 } else {
268 ui->lePassphrase->setPlaceholderText(tr("Please checked save passphrase to enable"));
269 ui->lePassphrase->setEnabled(false);
270 }
271}
272
273void CParameterUserUI::on_cbSystemFile_stateChanged(int arg1)
274{
275 ui->lePublicFile->setEnabled(!ui->cbSystemFile->isChecked());
276 ui->pbBrowsePublicFile->setEnabled(!ui->cbSystemFile->isChecked());
277 ui->lePrivateFile->setEnabled(!ui->cbSystemFile->isChecked());
278 ui->pbBrowsePrivateFile->setEnabled(!ui->cbSystemFile->isChecked());
279}
280
281void CParameterUserUI::on_pbBrowseCAFile_clicked()
282{
283 QString dir;
284#if defined(Q_OS_LINUX)
285 dir = "~/.vnc";
286#endif
287 QString szFile = QFileDialog::getOpenFileName(this, tr("Open X509 certificate authentication file"), dir);
288 if(szFile.isEmpty())
289 return;
290 ui->leCAFile->setText(szFile);
291}
292
293void CParameterUserUI::on_pbBrowseCRLFile_clicked()
294{
295 QString dir;
296#if defined(Q_OS_LINUX)
297 dir = "~/.vnc";
298#endif
299 QString szFile = QFileDialog::getOpenFileName(this, tr("Open X509 Certificate Revocation List file"), dir);
300 if(szFile.isEmpty())
301 return;
302 ui->leCRLFile->setText(szFile);
303}
304
305int CParameterUserUI::SetPushButtonTooltip(QPushButton *pPb, QString szEnable, QString szDisable)
306{
307 if(pPb->isEnabled())
308 pPb->setToolTip(szEnable);
309 else
310 pPb->setToolTip(szDisable);
311 pPb->setStatusTip(pPb->toolTip());
312 pPb->setWhatsThis(pPb->toolTip());
313 return 0;
314}
CParameterPlugin * GetGlobalParameters()
Get CParameterPlugin
参数界面接口
Definition ParameterUI.h:15
The user parameters UI
void on_pbShow_clicked()
[Parameter override functions]
int Accept() override
接受参数
int SetParameter(CParameter *pParameter) override
[Parameter override functions]
void SetSavePassword(bool save)
Set save password
@ OnlyPasswordX509None
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
参数接口
Definition Parameter.h:209