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