Rabbit Remote Control 0.0.36
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
30{
31 m_pUser = qobject_cast<CParameterUser*>(pParameter);
32 if(!m_pUser) {
33 Q_ASSERT(m_pUser);
34 return -1;
35 }
36
37 ui->leUser->setText(m_pUser->GetUser());
38
39 for(auto t: m_pUser->GetType()) {
40 ui->cbType->addItem(m_pUser->ConvertTypeToName(t), (int)t);
41 }
42
43 int index = ui->cbType->findData((int)m_pUser->GetUsedType());
44 if(-1 == index) {
45 qDebug(log) << "Forget set use type?";
46 } else
47 ui->cbType->setCurrentIndex(index);
48 ui->cbType->setVisible(1 < m_pUser->GetType().length());
49 ui->lbType->setVisible(1 < m_pUser->GetType().length());
50
51 qDebug(log) << "CParameterUserUI::SetParameter:" << index;
52
53 ui->lePassword->setText(m_pUser->GetPassword());
54 ui->pbSave->setChecked(m_pUser->GetSavePassword());
55 on_pbSave_clicked();
56 ui->pbShow->setEnabled(m_pUser->GetParameterClient()->GetViewPassowrd());
57
58 ui->lePublicFile->setText(m_pUser->GetPublicKeyFile());
59 ui->lePrivateFile->setText(m_pUser->GetPrivateKeyFile());
60 ui->lePassphrase->setText(m_pUser->GetPassphrase());
61 ui->pbSavePassphrase->setChecked(m_pUser->GetSavePassphrase());
62 on_pbSavePassphrase_clicked();
63 ui->pbShowPassphrase->setEnabled(m_pUser->GetParameterClient()->GetViewPassowrd());
64
65 return 0;
66}
67
69{
70 if(!m_pUser) return -1;
71
72 m_pUser->SetUsedType((CParameterUser::TYPE)ui->cbType->currentData().toInt());
73
74 m_pUser->SetUser(QString());
75 m_pUser->SetPassword(QString());
76 m_pUser->SetSavePassword(false);
77
78 m_pUser->SetPublicKeyFile(QString());
79 m_pUser->SetPrivateKeyFile(QString());
80 m_pUser->SetPassphrase(QString());
81 m_pUser->SetSavePassphrase(false);
82
83 switch(m_pUser->GetUsedType())
84 {
85 case CParameterUser::TYPE::None:
86 {
87 break;
88 }
89 case CParameterUser::TYPE::OnlyPassword:
90 {
91 m_pUser->SetPassword(ui->lePassword->text());
92 m_pUser->SetSavePassword(ui->pbSave->isChecked());
93 break;
94 }
95 case CParameterUser::TYPE::UserPassword:
96 {
97 m_pUser->SetUser(ui->leUser->text());
98 m_pUser->SetPassword(ui->lePassword->text());
99 m_pUser->SetSavePassword(ui->pbSave->isChecked());
100 break;
101 }
102 case CParameterUser::TYPE::PublicKey:
103 {
104 m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
105 m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
106 m_pUser->SetPassphrase(ui->lePassphrase->text());
107 m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
108 break;
109 }
110 default:
111 m_pUser->SetUser(ui->leUser->text());
112 m_pUser->SetPassword(ui->lePassword->text());
113 m_pUser->SetSavePassword(ui->pbSave->isChecked());
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 }
120
121 return 0;
122}
123
125{
126 switch(ui->lePassword->echoMode())
127 {
128 case QLineEdit::Password:
129 ui->lePassword->setEchoMode(QLineEdit::Normal);
130 ui->pbShow->setIcon(QIcon::fromTheme("eye-off"));
131 break;
132 case QLineEdit::Normal:
133 ui->lePassword->setEchoMode(QLineEdit::Password);
134 ui->pbShow->setIcon(QIcon::fromTheme("eye-on"));
135 break;
136 default:
137 ui->pbShow->setIcon(QIcon::fromTheme("eye-on"));
138 }
139}
140
141void CParameterUserUI::on_pbSave_clicked()
142{
143 if(!parent()->inherits("CParameterNetUI")) return;
144 if(ui->pbSave->isChecked())
145 {
146 ui->lePassword->setEnabled(true);
147 ui->lePassword->setPlaceholderText(tr("Input password"));
148 } else {
149 ui->lePassword->setPlaceholderText(tr("Please checked save password to enable"));
150 ui->lePassword->setEnabled(false);
151 }
152}
153
154void CParameterUserUI::on_pbBrowsePublicFile_clicked()
155{
156 QString dir;
157#if defined(Q_OS_LINUX)
158 dir = "~/.ssh";
159#endif
160 QString szFile = QFileDialog::getOpenFileName(this, tr("Open public key file"), dir);
161 if(szFile.isEmpty())
162 return;
163 ui->lePublicFile->setText(szFile);
164}
165
166void CParameterUserUI::on_pbBrowsePrivateFile_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->lePrivateFile->setText(szFile);
176}
177
178void CParameterUserUI::on_cbType_currentIndexChanged(int index)
179{
180 Q_UNUSED(index);
181 qDebug(log) << "CParameterUserUI::on_cbType_currentIndexChanged:" << index;
182
183 CParameterUser::TYPE type = static_cast<CParameterUser::TYPE>(ui->cbType->currentData().toInt());
184 bool bUser = false;
185 bUser = !(CParameterUser::TYPE::OnlyPassword == type
186 || CParameterUser::TYPE::None == type
187 || CParameterUser::TYPE::OnlyPasswordX509 == type
189 ui->lbUser->setVisible(bUser);
190 ui->leUser->setVisible(bUser);
191
192 bool bPassword = false;
193 bPassword = !(CParameterUser::TYPE::None == type
194 || CParameterUser::TYPE::PublicKey == type);
195 ui->lbPassword->setVisible(bPassword);
196 ui->lePassword->setVisible(bPassword);
197 ui->pbSave->setVisible(bPassword);
198 ui->pbShow->setVisible(bPassword);
199
200 bool bPublicKey = false;
201 bPublicKey = CParameterUser::TYPE::PublicKey == type;
202 ui->lbPublicFile->setVisible(bPublicKey);
203 ui->lePublicFile->setVisible(bPublicKey);
204 ui->pbBrowsePublicFile->setVisible(bPublicKey);
205 ui->lbPrivateFile->setVisible(bPublicKey);
206 ui->lePrivateFile->setVisible(bPublicKey);
207 ui->pbBrowsePrivateFile->setVisible(bPublicKey);
208 ui->lbPassphrase->setVisible(bPublicKey);
209 ui->lePassphrase->setVisible(bPublicKey);
210 ui->pbShowPassphrase->setVisible(bPublicKey);
211 ui->pbSavePassphrase->setVisible(bPublicKey);
212 ui->cbSystemFile->setVisible(bPublicKey);
213
214 bool bCA = false;
215 bCA = CParameterUser::TYPE::OnlyPasswordX509 == type
216 || CParameterUser::TYPE::UserPasswordX509 == type;
217 ui->lbCAFile->setVisible(bCA);
218 ui->leCAFile->setVisible(bCA);
219 ui->pbBrowseCAFile->setVisible(bCA);
220 ui->lbCRLFile->setVisible(bCA);
221 ui->leCRLFile->setVisible(bCA);
222 ui->pbBrowseCRLFile->setVisible(bCA);
223}
224
225void CParameterUserUI::on_pbShowPassphrase_clicked()
226{
227 switch(ui->lePassphrase->echoMode())
228 {
229 case QLineEdit::Password:
230 ui->lePassphrase->setEchoMode(QLineEdit::Normal);
231 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-off"));
232 break;
233 case QLineEdit::Normal:
234 ui->lePassphrase->setEchoMode(QLineEdit::Password);
235 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-on"));
236 break;
237 default:
238 ui->pbShowPassphrase->setIcon(QIcon::fromTheme("eye-on"));
239 }
240}
241
242void CParameterUserUI::on_pbSavePassphrase_clicked()
243{
244 if(!parent()->inherits("CParameterNetUI")) return;
245 if(ui->pbSavePassphrase->isChecked())
246 {
247 ui->lePassphrase->setEnabled(true);
248 ui->lePassphrase->setPlaceholderText(tr("Input passphrase"));
249 } else {
250 ui->lePassphrase->setPlaceholderText(tr("Please checked save passphrase to enable"));
251 ui->lePassphrase->setEnabled(false);
252 }
253}
254
255void CParameterUserUI::on_cbSystemFile_stateChanged(int arg1)
256{
257 ui->lePublicFile->setEnabled(!ui->cbSystemFile->isChecked());
258 ui->pbBrowsePublicFile->setEnabled(!ui->cbSystemFile->isChecked());
259 ui->lePrivateFile->setEnabled(!ui->cbSystemFile->isChecked());
260 ui->pbBrowsePrivateFile->setEnabled(!ui->cbSystemFile->isChecked());
261}
262
263void CParameterUserUI::on_pbBrowseCAFile_clicked()
264{
265 QString dir;
266#if defined(Q_OS_LINUX)
267 dir = "~/.vnc";
268#endif
269 QString szFile = QFileDialog::getOpenFileName(this, tr("Open X509 certificate authentication file"), dir);
270 if(szFile.isEmpty())
271 return;
272 ui->leCAFile->setText(szFile);
273}
274
275void CParameterUserUI::on_pbBrowseCRLFile_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 Revocation List file"), dir);
282 if(szFile.isEmpty())
283 return;
284 ui->leCRLFile->setText(szFile);
285}
CParameterClient * GetParameterClient()
Get CParameterClient.
The parameter UI interface.
Definition ParameterUI.h:15
The user parameters UI.
void on_pbShow_clicked()
[Parameter commone functions]
int SetParameter(CParameter *pParameter)
[Parameter commone functions]
int Accept()
Accept parameters.
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:169