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