玉兔远程控制 0.1.0-alpha.2
载入中...
搜索中...
未找到
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 ui->pbSave->setEnabled(m_pUser->GetGlobalParameters()->GetSavePassword());
60 SetPushButtonTooltip(ui->pbSave, tr("Save password"),
61 tr("Menu: Tools→Settings→Plugin→Password→Enable Save password"));
62 ui->pbShow->setEnabled(m_pUser->GetGlobalParameters()->GetViewPassowrd());
63 SetPushButtonTooltip(ui->pbShow, tr("View password"),
64 tr("Menu: Tools→Settings→Plugin→Password→Enable view password"));
65 ui->lePublicFile->setText(m_pUser->GetPublicKeyFile());
66 ui->lePrivateFile->setText(m_pUser->GetPrivateKeyFile());
67 ui->lePassphrase->setText(m_pUser->GetPassphrase());
68 ui->pbSavePassphrase->setChecked(m_pUser->GetSavePassphrase());
69 on_pbSavePassphrase_clicked();
70 ui->pbSavePassphrase->setEnabled(m_pUser->GetGlobalParameters()->GetSavePassword());
71 SetPushButtonTooltip(ui->pbSavePassphrase, tr("Save password"),
72 tr("Menu: Tools→Settings→Plugin→Password→Enable Save password"));
73 ui->pbShowPassphrase->setEnabled(m_pUser->GetGlobalParameters()->GetViewPassowrd());
74 SetPushButtonTooltip(ui->pbShowPassphrase, tr("View password"),
75 tr("Menu: Tools→Settings→Plugin→Password→Enable view password"));
76
77 return 0;
78}
79
81{
82 if(!m_pUser) return -1;
83
84 m_pUser->SetUsedType((CParameterUser::TYPE)ui->cbType->currentData().toInt());
85
86 m_pUser->SetUser(QString());
87 m_pUser->SetPassword(QString());
88 m_pUser->SetSavePassword(false);
89
90 m_pUser->SetPublicKeyFile(QString());
91 m_pUser->SetPrivateKeyFile(QString());
92 m_pUser->SetPassphrase(QString());
93 m_pUser->SetSavePassphrase(false);
94
95 switch(m_pUser->GetUsedType())
96 {
97 case CParameterUser::TYPE::None:
98 {
99 break;
100 }
101 case CParameterUser::TYPE::OnlyPassword:
102 {
103 m_pUser->SetPassword(ui->lePassword->text());
104 m_pUser->SetSavePassword(ui->pbSave->isChecked());
105 break;
106 }
107 case CParameterUser::TYPE::UserPassword:
108 {
109 m_pUser->SetUser(ui->leUser->text());
110 m_pUser->SetPassword(ui->lePassword->text());
111 m_pUser->SetSavePassword(ui->pbSave->isChecked());
112 break;
113 }
114 case CParameterUser::TYPE::PublicKey:
115 {
116 m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
117 m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
118 m_pUser->SetPassphrase(ui->lePassphrase->text());
119 m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
120 break;
121 }
122 default:
123 m_pUser->SetUser(ui->leUser->text());
124 m_pUser->SetPassword(ui->lePassword->text());
125 m_pUser->SetSavePassword(ui->pbSave->isChecked());
126
127 m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
128 m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
129 m_pUser->SetPassphrase(ui->lePassphrase->text());
130 m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
131 }
132
133 return 0;
134}
136
138{
139 switch(ui->lePassword->echoMode())
140 {
141 case QLineEdit::Password:
142 ui->lePassword->setEchoMode(QLineEdit::Normal);
143 ui->pbShow->setIcon(QIcon::fromTheme("eye-off"));
144 break;
145 case QLineEdit::Normal:
146 ui->lePassword->setEchoMode(QLineEdit::Password);
147 ui->pbShow->setIcon(QIcon::fromTheme("eye-on"));
148 break;
149 default:
150 ui->pbShow->setIcon(QIcon::fromTheme("eye-on"));
151 }
152}
153
154void CParameterUserUI::on_pbSave_clicked()
155{
156 if(!parent()->inherits("CParameterNetUI")) return;
157 if(ui->pbSave->isChecked())
158 {
159 ui->lePassword->setEnabled(true);
160 ui->lePassword->setPlaceholderText(tr("Input password"));
161 } else {
162 ui->lePassword->setPlaceholderText(tr("Please checked save password to enable"));
163 ui->lePassword->setEnabled(false);
164 }
165}
166
167void CParameterUserUI::on_pbBrowsePublicFile_clicked()
168{
169 QString dir;
170#if defined(Q_OS_LINUX)
171 dir = "~/.ssh";
172#endif
173 QString szFile = QFileDialog::getOpenFileName(this, tr("Open public key file"), dir);
174 if(szFile.isEmpty())
175 return;
176 ui->lePublicFile->setText(szFile);
177}
178
179void CParameterUserUI::on_pbBrowsePrivateFile_clicked()
180{
181 QString dir;
182#if defined(Q_OS_LINUX)
183 dir = "~/.ssh";
184#endif
185 QString szFile = QFileDialog::getOpenFileName(this, tr("Open public key file"), dir);
186 if(szFile.isEmpty())
187 return;
188 ui->lePrivateFile->setText(szFile);
189}
190
191void CParameterUserUI::on_cbType_currentIndexChanged(int index)
192{
193 Q_UNUSED(index);
194 qDebug(log) << "CParameterUserUI::on_cbType_currentIndexChanged:" << index;
195
196 CParameterUser::TYPE type = static_cast<CParameterUser::TYPE>(ui->cbType->currentData().toInt());
197 bool bUser = false;
198 bUser = !(CParameterUser::TYPE::OnlyPassword == type
199 || CParameterUser::TYPE::None == type
200 || CParameterUser::TYPE::OnlyPasswordX509 == type
202 ui->lbUser->setVisible(bUser);
203 ui->leUser->setVisible(bUser);
204
205 bool bPassword = false;
206 bPassword = !(CParameterUser::TYPE::None == type
207 || CParameterUser::TYPE::PublicKey == type);
208 ui->lbPassword->setVisible(bPassword);
209 ui->lePassword->setVisible(bPassword);
210 ui->pbSave->setVisible(bPassword);
211 ui->pbShow->setVisible(bPassword);
212
213 bool bPublicKey = false;
214 bPublicKey = CParameterUser::TYPE::PublicKey == type;
215 ui->lbPublicFile->setVisible(bPublicKey);
216 ui->lePublicFile->setVisible(bPublicKey);
217 ui->pbBrowsePublicFile->setVisible(bPublicKey);
218 ui->lbPrivateFile->setVisible(bPublicKey);
219 ui->lePrivateFile->setVisible(bPublicKey);
220 ui->pbBrowsePrivateFile->setVisible(bPublicKey);
221 ui->lbPassphrase->setVisible(bPublicKey);
222 ui->lePassphrase->setVisible(bPublicKey);
223 ui->pbShowPassphrase->setVisible(bPublicKey);
224 ui->pbSavePassphrase->setVisible(bPublicKey);
225 ui->cbSystemFile->setVisible(bPublicKey);
226
227 bool bCA = false;
228 bCA = CParameterUser::TYPE::OnlyPasswordX509 == type
229 || CParameterUser::TYPE::UserPasswordX509 == type;
230 ui->lbCAFile->setVisible(bCA);
231 ui->leCAFile->setVisible(bCA);
232 ui->pbBrowseCAFile->setVisible(bCA);
233 ui->lbCRLFile->setVisible(bCA);
234 ui->leCRLFile->setVisible(bCA);
235 ui->pbBrowseCRLFile->setVisible(bCA);
236}
237
238void CParameterUserUI::on_pbShowPassphrase_clicked()
239{
240 switch(ui->lePassphrase->echoMode())
241 {
242 case QLineEdit::Password:
243 ui->lePassphrase->setEchoMode(QLineEdit::Normal);
244 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-off"));
245 break;
246 case QLineEdit::Normal:
247 ui->lePassphrase->setEchoMode(QLineEdit::Password);
248 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-on"));
249 break;
250 default:
251 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-on"));
252 }
253}
254
255void CParameterUserUI::on_pbSavePassphrase_clicked()
256{
257 if(!parent()->inherits("CParameterNetUI")) return;
258 if(ui->pbSavePassphrase->isChecked())
259 {
260 ui->lePassphrase->setEnabled(true);
261 ui->lePassphrase->setPlaceholderText(tr("Input passphrase"));
262 } else {
263 ui->lePassphrase->setPlaceholderText(tr("Please checked save passphrase to enable"));
264 ui->lePassphrase->setEnabled(false);
265 }
266}
267
268void CParameterUserUI::on_cbSystemFile_stateChanged(int arg1)
269{
270 ui->lePublicFile->setEnabled(!ui->cbSystemFile->isChecked());
271 ui->pbBrowsePublicFile->setEnabled(!ui->cbSystemFile->isChecked());
272 ui->lePrivateFile->setEnabled(!ui->cbSystemFile->isChecked());
273 ui->pbBrowsePrivateFile->setEnabled(!ui->cbSystemFile->isChecked());
274}
275
276void CParameterUserUI::on_pbBrowseCAFile_clicked()
277{
278 QString dir;
279#if defined(Q_OS_LINUX)
280 dir = "~/.vnc";
281#endif
282 QString szFile = QFileDialog::getOpenFileName(this, tr("Open X509 certificate authentication file"), dir);
283 if(szFile.isEmpty())
284 return;
285 ui->leCAFile->setText(szFile);
286}
287
288void CParameterUserUI::on_pbBrowseCRLFile_clicked()
289{
290 QString dir;
291#if defined(Q_OS_LINUX)
292 dir = "~/.vnc";
293#endif
294 QString szFile = QFileDialog::getOpenFileName(this, tr("Open X509 Certificate Revocation List file"), dir);
295 if(szFile.isEmpty())
296 return;
297 ui->leCRLFile->setText(szFile);
298}
299
300int CParameterUserUI::SetPushButtonTooltip(QPushButton *pPb, QString szEnable, QString szDisable)
301{
302 if(pPb->isEnabled())
303 pPb->setToolTip(szEnable);
304 else
305 pPb->setToolTip(szDisable);
306 pPb->setStatusTip(pPb->toolTip());
307 pPb->setWhatsThis(pPb->toolTip());
308 return 0;
309}
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