Rabbit Remote Control 0.1.0-bate16
Loading...
Searching...
No Matches
DlgSettingsVnc.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QMessageBox>
4#include <QLoggingCategory>
5#include "DlgSettingsVnc.h"
6#include "ui_DlgSettingsVnc.h"
7#include "rfb/encodings.h"
8
9#ifdef HAVE_ICE
10 #include "Ice.h"
11#endif
12
13#undef SetPort
14
15static Q_LOGGING_CATEGORY(log, "VNC.Settings")
16
17CDlgSettingsVnc::CDlgSettingsVnc(CParameterVnc *pPara, QWidget *parent) :
18 QDialog(parent),
19 ui(new Ui::CDlgSettingsVnc),
20 m_pPara(pPara)
21{
22 setAttribute(Qt::WA_DeleteOnClose);
23 ui->setupUi(this);
24
25 ui->wNet->SetParameter(&m_pPara->m_Net);
26
27 m_pProxyUI = new CParameterProxyUI(ui->tabWidget);
28 m_pProxyUI->SetParameter(&m_pPara->m_Proxy);
29 ui->tabWidget->insertTab(1, m_pProxyUI, tr("Proxy"));
30
31 m_pRecordUI = new CParameterRecordUI(ui->tabWidget);
32 m_pRecordUI->SetParameter(&m_pPara->m_Record);
33 ui->tabWidget->addTab(m_pRecordUI, m_pRecordUI->windowIcon(), tr("Record"));
34
35#ifdef HAVE_ICE
36 ui->gpIce->show();
37#else
38 ui->gpIce->hide();
39#endif
40
41 // Server
42 bool ice = false;
43#ifdef HAVE_ICE
44 ice = CICE::Instance()->GetParameter()->getIce();
45#endif
46 if(ice)
47 {
48 if(m_pPara->GetIce())
49 {
50 ui->gpIce->setChecked(true);
51 ui->wNet->setEnabled(false);
52 } else {
53 ui->gpIce->setChecked(false);
54 }
55 } else {
56 ui->gpIce->setEnabled(false);
57 }
58
59 ui->lePeerUser->setText(m_pPara->GetPeerUser());
60
61 ui->leName->setText(m_pPara->GetName());
62
63 ui->cbOnlyView->setChecked(m_pPara->GetOnlyView());
64 ui->cbShowServerName->setChecked(m_pPara->GetShowServerName());
65
66 ui->cbShared->setChecked(m_pPara->GetShared());
67 ui->cbRealTimeUpdate->setChecked(!m_pPara->GetBufferEndRefresh());
68 ui->cbLocalCursor->setChecked(m_pPara->GetLocalCursor());
69 ui->cbCursorPosition->setChecked(m_pPara->GetCursorPosition());
70 ui->cbResizeWindows->setChecked(m_pPara->GetSupportsDesktopResize());
71 ui->cbLedState->setChecked(m_pPara->GetLedState());
72 ui->cbInputMethod->setChecked(m_pPara->GetEnableLocalInputMethod());
73 ui->cbClipboard->setChecked(m_pPara->GetClipboard());
74
75 // Compress
76 ui->cbCompressAutoSelect->setChecked(m_pPara->GetAutoSelect());
77#ifdef HAVE_H264
78 ui->rbH264->setVisible(true);
79#else
80 ui->rbH264->setVisible(false);
81#endif
82 switch(m_pPara->GetPreferredEncoding())
83 {
84 case rfb::encodingTight:
85 ui->rbTight->setChecked(true);
86 break;
87 case rfb::encodingRaw:
88 ui->rbRaw->setChecked(true);
89 break;
90 case rfb::encodingRRE:
91 ui->rbRRE->setChecked(true);
92 break;
93 case rfb::encodingZRLE:
94 ui->rbZRLE->setChecked(true);
95 break;
96 case rfb::encodingCoRRE:
97 ui->rbCoRRE->setChecked(true);
98 break;
99 case rfb::encodingCopyRect:
100 ui->rbCopyRect->setChecked(true);
101 break;
102 case rfb::encodingHextile:
103 ui->rbHextile->setChecked(true);
104 break;
105#ifdef HAVE_H264
106 case rfb::encodingH264:
107 ui->rbH264->setChecked(true);
108 break;
109#endif
110 }
111
112 switch(m_pPara->GetColorLevel())
113 {
114 case CParameterVnc::Full:
115 ui->rbFull->setChecked(true);
116 break;
117 case CParameterVnc::Medium:
118 ui->rbMeduim->setChecked(true);
119 break;
120 case CParameterVnc::Low:
121 ui->rbLow->setChecked(true);
122 break;
123 case CParameterVnc::VeryLow:
124 ui->rbVeryLow->setChecked(true);
125 break;
126 }
127
128 ui->cbCompress->setChecked(m_pPara->GetEnableCompressLevel());
129 ui->spCompressLevel->setValue(m_pPara->GetCompressLevel());
130 ui->cbJPEG->setChecked(!m_pPara->GetNoJpeg());
131 ui->spJPEGLevel->setValue(m_pPara->GetQualityLevel());
132
133 if(m_pPara->GetAutoSelect())
134 {
135 ui->spCompressLevel->setEnabled(false);
136 ui->spJPEGLevel->setEnabled(false);
137 } else {
138 ui->spCompressLevel->setEnabled(m_pPara->GetEnableCompressLevel());
139 ui->spJPEGLevel->setEnabled(!m_pPara->GetNoJpeg());
140 }
141}
142
143CDlgSettingsVnc::~CDlgSettingsVnc()
144{
145 qDebug(log) << "CDlgSettingsVnc::~CDlgSettingsVnc()";
146 delete ui;
147}
148
149void CDlgSettingsVnc::on_pbOK_clicked()
150{
151 int nRet = 0;
152 if(!m_pPara)
153 return;
154
155 if(!ui->wNet->CheckValidity(true)) {
156 ui->tabWidget->setCurrentIndex(0);
157 return;
158 }
159
160 if(!m_pProxyUI->CheckValidity(true)) {
161 ui->tabWidget->setCurrentWidget(m_pProxyUI);
162 return;
163 }
164
165 if(!m_pRecordUI->CheckValidity(true)) {
166 ui->tabWidget->setCurrentWidget(m_pRecordUI);
167 return;
168 }
169
170 // Server
171 bool ice = false;
172#ifdef HAVE_ICE
173 ice = CICE::Instance()->GetParameter()->getIce();
174#endif
175 if(ui->gpIce->isChecked() && ice)
176 {
177 m_pPara->SetIce(true);
178 m_pPara->SetPeerUser(ui->lePeerUser->text());
179 } else {
180 m_pPara->SetIce(false);
181 }
182
183 nRet = ui->wNet->Accept();
184 if(nRet) return;
185 nRet = m_pProxyUI->Accept();
186 if(nRet) return;
187 nRet = m_pRecordUI->Accept();
188 if(nRet) return;
189
190 m_pPara->SetName(ui->leName->text());
191 m_pPara->SetShared(ui->cbShared->isChecked());
192 m_pPara->SetBufferEndRefresh(!ui->cbRealTimeUpdate->isChecked());
193 m_pPara->SetLocalCursor(ui->cbLocalCursor->isChecked());
194 m_pPara->SetCursorPosition(ui->cbCursorPosition->isChecked());
195 m_pPara->SetSupportsDesktopResize(ui->cbResizeWindows->isChecked());
196 m_pPara->SetLedState(ui->cbLedState->isChecked());
197 m_pPara->SetEnableLocalInputMethod(ui->cbInputMethod->isChecked());
198 m_pPara->SetClipboard(ui->cbClipboard->isChecked());
199 m_pPara->SetShowServerName(ui->cbShowServerName->isChecked());
200
201 // Compress
202 m_pPara->SetAutoSelect(ui->cbCompressAutoSelect->isChecked());
203 if(m_pPara->GetAutoSelect()) {
204 m_pPara->SetPreferredEncoding(rfb::encodingTight);
205 m_pPara->SetColorLevel(CParameterVnc::Full);
206 m_pPara->SetCompressLevel(2);
207 m_pPara->SetQualityLevel(8);
208 } else {
209 if(ui->rbTight->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingTight);
210 if(ui->rbRaw->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingRaw);
211 if(ui->rbRRE->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingRRE);
212 if(ui->rbZRLE->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingZRLE);
213 if(ui->rbCoRRE->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingCoRRE);
214 if(ui->rbCopyRect->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingCopyRect);
215 if(ui->rbHextile->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingHextile);
216#ifdef HAVE_H264
217 if(ui->rbH264->isChecked()) m_pPara->SetPreferredEncoding(rfb::encodingH264);
218#endif
219
220 if(ui->rbFull->isChecked()) m_pPara->SetColorLevel(CParameterVnc::Full);
221 if(ui->rbMeduim->isChecked()) m_pPara->SetColorLevel(CParameterVnc::Medium);
222 if(ui->rbLow->isChecked()) m_pPara->SetColorLevel(CParameterVnc::Low);
223 if(ui->rbVeryLow->isChecked()) m_pPara->SetColorLevel(CParameterVnc::VeryLow);
224
225 m_pPara->SetEnableCompressLevel(ui->cbCompress->isChecked());
226 m_pPara->SetCompressLevel(ui->spCompressLevel->value());
227 m_pPara->SetNoJpeg(!ui->cbJPEG->isChecked());
228 m_pPara->SetQualityLevel(ui->spJPEGLevel->value());
229 }
230
231 accept();
232}
233
234void CDlgSettingsVnc::on_pbCancel_clicked()
235{
236 reject();
237}
238
239void CDlgSettingsVnc::on_cbCompressAutoSelect_stateChanged(int arg1)
240{
241 m_pPara->SetAutoSelect(arg1);
242 if(m_pPara->GetAutoSelect())
243 {
244 ui->gpPreferredEncodeing->setEnabled(false);
245 ui->gpColorLevel->setEnabled(false);
246 ui->cbJPEG->setEnabled(false);
247 ui->spJPEGLevel->setEnabled(false);
248 ui->cbCompress->setEnabled(false);
249 ui->spCompressLevel->setEnabled(false);
250 } else {
251 ui->gpPreferredEncodeing->setEnabled(true);
252 ui->gpColorLevel->setEnabled(true);
253 ui->cbJPEG->setEnabled(true);
254 if(ui->cbJPEG->isChecked())
255 ui->spJPEGLevel->setEnabled(true);
256 ui->cbCompress->setEnabled(true);
257 if(ui->cbCompress->isChecked())
258 ui->spCompressLevel->setEnabled(true);
259 }
260}
261
262void CDlgSettingsVnc::on_cbCompress_stateChanged(int arg1)
263{
264 m_pPara->SetCompressLevel(arg1);
265
266 ui->spCompressLevel->setEnabled(m_pPara->GetEnableCompressLevel());
267}
268
269void CDlgSettingsVnc::on_cbJPEG_stateChanged(int arg1)
270{
271 m_pPara->SetNoJpeg(!arg1);
272
273 ui->spJPEGLevel->setEnabled(!m_pPara->GetNoJpeg());
274}
275
276void CDlgSettingsVnc::on_gpIce_clicked(bool checked)
277{
278 ui->wNet->setEnabled(!checked);
279}
static CICE * Instance()
Single instance.
Definition Ice.cpp:55
The proxy parameter UI.