Rabbit Remote Control 0.1.0-bate9
Loading...
Searching...
No Matches
ParameterPluginUI.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QWhatsThisClickedEvent>
4#include <QDesktopServices>
5#include <QMessageBox>
6#include <QFileDialog>
7#include <QLoggingCategory>
8#include "ParameterGlobal.h"
9#include "ParameterPluginUI.h"
10#include "ui_ParameterPluginUI.h"
11#include "RabbitCommonTools.h"
12#include "RabbitCommonDir.h"
13
14static Q_LOGGING_CATEGORY(log, "Parameter.Plugin.UI")
15CParameterPluginUI::CParameterPluginUI(QWidget *parent) :
16 CParameterUI(parent),
17 ui(new Ui::CParameterPluginUI),
18 m_pPara(nullptr)
19{
20 ui->setupUi(this);
21
22 setWindowTitle(tr("Plugin"));
23 if(RabbitCommon::CTools::HasAdministratorPrivilege()) {
24 ui->cbPromptAdminPrivilege->setText("");
25 ui->cbPromptAdminPrivilege->hide();
26 } else {
27 ui->cbPromptAdminPrivilege->setText(
28 tr("Prompt administrator privilege"));
29 ui->cbPromptAdminPrivilege->show();
30 }
31
32 ui->pbEncryptKey->setToolTip(tr("Enable view password"));
33
34 QString szPasswordUrl;
35 szPasswordUrl = "<a href=https://github.com/KangLin/RabbitRemoteControl/wiki/UserManual#password-security>" + tr("Password Security") + "</a>";
36 ui->gbPassword->setWhatsThis(szPasswordUrl);
37 ui->gbPassword->installEventFilter(this);
38 ui->pbEncryptKey->setWhatsThis(szPasswordUrl);
39 ui->pbEncryptKey->installEventFilter(this);
40 ui->cbSystemCredential->setWhatsThis(szPasswordUrl);
41 ui->cbSystemCredential->installEventFilter(this);
42 ui->leEncryptKey->setWhatsThis(szPasswordUrl);
43 ui->leEncryptKey->installEventFilter(this);
44 ui->gpEncryptKey->setWhatsThis(szPasswordUrl);
45 ui->gpEncryptKey->installEventFilter(this);
46}
47
48CParameterPluginUI::~CParameterPluginUI()
49{
50 delete ui;
51}
52
54{
55 if(!validity) return true;
56
57
58 return true;
59}
60
62{
63 if(!m_pPara)
64 return -1;
65 m_pPara->SetCaptureAllKeyboard(ui->gbCaptureAllKeyboard->isChecked());
66 m_pPara->SetDesktopShortcutsScript(ui->gpDesktopShortcutsSctipt->isChecked());
67 m_pPara->SetDisableDesktopShortcutsScript(ui->leDesktopShortcutsDisableScript->text());
68 m_pPara->SetRestoreDesktopShortcutsScript(ui->leDesktopShortcutsRestoreScript->text());
69 m_pPara->SetEnableLocalInputMethod(ui->cbEnableLocalInputMethod->isChecked());
70 m_pPara->SetPromptAdministratorPrivilege(
71 ui->cbPromptAdminPrivilege->isChecked());
72 m_pPara->SetEnableSystemUserToUser(ui->cbEnableUserName->isChecked());
73 m_pPara->SetAdaptWindows(
74 (CFrmViewer::ADAPT_WINDOWS)ui->cbViewZoom->currentData().toInt());
75
76 m_pPara->SetUseSystemCredential(ui->cbSystemCredential->isChecked());
77 m_pPara->SetEncryptKey(ui->leEncryptKey->text());
78 m_pPara->SetSavePassword(ui->cbSavePassword->isChecked());
79 m_pPara->SetViewPassowrd(ui->cbEnableViewPassword->isChecked());
80 if(ui->rbPromptFirst->isChecked())
81 m_pPara->SetPromptType(CParameterPlugin::PromptType::First);
82 if(ui->rbPromptNo->isChecked())
83 m_pPara->SetPromptType(CParameterPlugin::PromptType::No);
84
85 CParameterPlugin::NameStyles nameStyle;
86 if(ui->cbShowProtocol->isChecked())
87 nameStyle |= CParameterPlugin::NameStyle::Protocol;
88 if(ui->cbShowServerName->isChecked())
89 nameStyle |= CParameterPlugin::NameStyle::ServerName;
90 if(ui->cbShowSecurityLevel->isChecked())
91 nameStyle |= CParameterPlugin::NameStyle::SecurityLevel;
92 m_pPara->SetNameStyles(nameStyle);
93
94 return 0;
95}
96
97void CParameterPluginUI::on_cbEnableViewPassword_clicked(bool checked)
98{
99 ui->pbEncryptKey->setEnabled(checked);
100}
101
102void CParameterPluginUI::on_pbEncryptKey_clicked()
103{
104 switch(ui->leEncryptKey->echoMode())
105 {
106 case QLineEdit::Password:
107 ui->leEncryptKey->setEchoMode(QLineEdit::Normal);
108 ui->pbEncryptKey->setIcon(QIcon::fromTheme("eye-off"));
109 break;
110 case QLineEdit::Normal:
111 ui->leEncryptKey->setEchoMode(QLineEdit::Password);
112 ui->pbEncryptKey->setIcon(QIcon::fromTheme("eye-on"));
113 break;
114 default:
115 break;
116 }
117}
118
120{
121 m_pPara = qobject_cast<CParameterPlugin*>(pParameter);
122 if(!m_pPara)
123 return -1;
124 ui->gbCaptureAllKeyboard->setChecked(m_pPara->GetCaptureAllKeyboard());
125 ui->gpDesktopShortcutsSctipt->setEnabled(ui->gbCaptureAllKeyboard->isChecked());
126 ui->gpDesktopShortcutsSctipt->setChecked(m_pPara->GetDesktopShortcutsScript());
127 ui->leDesktopShortcutsDisableScript->setText(m_pPara->GetDisableDesktopShortcutsScript());
128 ui->leDesktopShortcutsRestoreScript->setText(m_pPara->GetRestoreDesktopShortcutsScript());
129 ui->cbEnableLocalInputMethod->setChecked(m_pPara->GetEnableLocalInputMethod());
130 ui->cbPromptAdminPrivilege->setChecked(
131 m_pPara->GetPromptAdministratorPrivilege());
132 ui->cbEnableUserName->setChecked(m_pPara->GetEnableSystemUserToUser());
133 ui->cbViewZoom->addItem(QIcon::fromTheme("zoom-original"),
134 tr("Original"),
136 /*ui->cbViewZoom->addItem(tr("Original Center"),
137 (int)CFrmViewer::ADAPT_WINDOWS::OriginalCenter);*/
138 ui->cbViewZoom->addItem(QIcon::fromTheme("zoom"), tr("Zoom"),
140 ui->cbViewZoom->addItem(QIcon::fromTheme("zoom-fit-best"),
141 tr("Zoom to window"),
143 ui->cbViewZoom->addItem(QIcon::fromTheme("zoom-aspect-ratio"),
144 tr("Keep aspect ratio to window"),
146 int nIndex = ui->cbViewZoom->findData((int)m_pPara->GetAdaptWindows());
147 if(-1 != nIndex)
148 ui->cbViewZoom->setCurrentIndex(nIndex);
149
150#if HAVE_QTKEYCHAIN
151 ui->cbSystemCredential->setChecked(m_pPara->GetUseSystemCredential());
152#else
153 ui->cbSystemCredential->hide();
154#endif
155 ui->leEncryptKey->setText(m_pPara->GetEncryptKey());
156 ui->cbSavePassword->setChecked(m_pPara->GetSavePassword());
157
158 ui->cbEnableViewPassword->setChecked(m_pPara->GetViewPassowrd());
159 ui->pbEncryptKey->setEnabled(ui->cbEnableViewPassword->isChecked());
160 switch (m_pPara->GetPromptType()) {
161 case CParameterPlugin::PromptType::First:
162 ui->rbPromptFirst->setChecked(true);
163 break;
164 case CParameterPlugin::PromptType::No:
165 ui->rbPromptNo->setChecked(true);
166 break;
167 }
168
169 ui->cbShowProtocol->setChecked(
170 m_pPara->GetNameStyles() & CParameterPlugin::NameStyle::Protocol);
171 ui->cbShowServerName->setChecked(
172 m_pPara->GetNameStyles() & CParameterPlugin::NameStyle::ServerName);
173 ui->cbShowSecurityLevel->setChecked(
174 m_pPara->GetNameStyles() & CParameterPlugin::NameStyle::SecurityLevel);
175
176 return 0;
177}
178
179void CParameterPluginUI::on_cbSystemCredential_checkStateChanged(const Qt::CheckState &state)
180{
181 ui->gpEncryptKey->setEnabled(Qt::Unchecked == state);
182}
183
184void CParameterPluginUI::on_pbDesktopShortcutsDisable_clicked()
185{
186 QString szDir = ui->leDesktopShortcutsDisableScript->text();
187 if(szDir.isEmpty())
188 szDir = RabbitCommon::CDir::Instance()->GetDirData() + QDir::separator() + "Script";
189 QString szFile = QFileDialog::getOpenFileName(
190 nullptr, tr("Open disable desktop shortcuts script"), szDir);
191 if(szFile.isEmpty()) return;
192 ui->leDesktopShortcutsDisableScript->setText(szFile);
193}
194
195void CParameterPluginUI::on_pbDesktopShortcutsRestore_clicked()
196{
197 QString szDir = ui->leDesktopShortcutsRestoreScript->text();
198 if(szDir.isEmpty())
199 szDir = RabbitCommon::CDir::Instance()->GetDirData() + QDir::separator() + "Script";
200 QString szFile = QFileDialog::getOpenFileName(
201 nullptr, tr("Open restore desktop shortcuts script"), szDir);
202 if(szFile.isEmpty()) return;
203 ui->leDesktopShortcutsRestoreScript->setText(szFile);
204}
205
206void CParameterPluginUI::on_cbCaptureAllKeyboard_checkStateChanged(const Qt::CheckState &arg1)
207{
208 ui->gpDesktopShortcutsSctipt->setEnabled(Qt::CheckState::Checked == arg1);
209}
210
211bool CParameterPluginUI::eventFilter(QObject *watched, QEvent *event)
212{
213 if(event->type() == QEvent::WhatsThisClicked) {
214 QWhatsThisClickedEvent* e = (QWhatsThisClickedEvent*)event;
215 if(e) {
216 qDebug(log) << e->href();
217 return QDesktopServices::openUrl(e->href());
218 }
219 }
220 return QWidget::eventFilter(watched, event);
221}
ADAPT_WINDOWS
The ADAPT_WINDOWS enum.
Definition FrmViewer.h:60
@ Original
Original desktop size, the left-top of the desktop is aligned with the left-top of the window.
@ Zoom
zoom windows = desktop size * factor
@ KeepAspectRationToWindow
Keep desktop aspectration adapt to windows.
@ ZoomToWindow
Desktop adapt to windows.
virtual bool CheckValidity(bool validity) override
Check parameters validity.
virtual int SetParameter(CParameter *pParameter) override
[override functions]
virtual int Accept() override
Accept parameters.
The parameter UI interface.
Definition ParameterUI.h:15
Parameter interface.
Definition Parameter.h:218