4#include <openssl/tls1.h>
7#include "DlgSetFreeRDP.h"
8#include "ui_DlgSetFreeRDP.h"
9#include "ParameterNetUI.h"
11#include <QApplication>
13#include <QFileSystemModel>
14#include <QButtonGroup>
15#include <QLoggingCategory>
17#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
18 #include <QMediaDevices>
19 #include <QAudioDevice>
21 #include <QAudioDeviceInfo>
24#include "DlgDesktopSize.h"
25#include "freerdp/version.h"
27static Q_LOGGING_CATEGORY(log,
"FreeRDP.Parameter.Dlg")
32 , m_pSettings(pSettings)
33 , m_pFileModel(
nullptr)
35 , m_pRecordUI(
nullptr)
36 , m_pButtonGroup(
nullptr)
38 setAttribute(Qt::WA_DeleteOnClose);
41 ui->leName->setText(m_pSettings->GetName());
44 ui->leDomain->setText(m_pSettings->GetDomain());
45 ui->wNet->SetParameter(&m_pSettings->m_Net);
47 ui->cbOnlyView->setChecked(m_pSettings->GetOnlyView());
48 ui->cbClipboard->setChecked(m_pSettings->GetClipboard());
49 ui->cbShowServerName->setChecked(m_pSettings->GetShowServerName());
52 m_pProxyUI->SetParameter(&m_pSettings->m_Proxy);
53 ui->tabWidget->insertTab(1, m_pProxyUI, m_pProxyUI->windowIcon(), tr(
"Proxy"));
56 m_pRecordUI->SetParameter(&m_pSettings->m_Record);
57 ui->tabWidget->addTab(m_pRecordUI, m_pRecordUI->windowIcon(), tr(
"Record"));
61 ui->cbAllMonitor->setChecked(m_pSettings->GetUseMultimon());
63 int width = GetScreenGeometry().width();
64 int height = GetScreenGeometry().height();
65 QString curSize = QString::number(width) +
"×" + QString::number(height);
66 UINT32 desktopWidth = 0, desktopHeight = 0;
67 desktopWidth = m_pSettings->GetDesktopWidth();
68 desktopHeight = m_pSettings->GetDesktopHeight();
69 if(width == desktopWidth && height == desktopHeight)
71 ui->rbLocalScreen->setChecked(
true);
72 ui->cbDesktopSize->setCurrentText(curSize);
74 ui->rbSelect->setChecked(
true);
75 curSize = QString::number(desktopWidth)
76 +
"×" + QString::number(desktopHeight);
77 ui->cbDesktopSize->setCurrentText(curSize);
80 ui->cbColorDepth->addItem(tr(
"8 bits"), 8);
81 ui->cbColorDepth->addItem(tr(
"16 bits"), 16);
82 ui->cbColorDepth->addItem(tr(
"24 bits"), 24);
83 ui->cbColorDepth->addItem(tr(
"32 bits"), 32);
84 int nIndex = ui->cbColorDepth->findData(
85 m_pSettings->GetColorDepth());
87 ui->cbColorDepth->setCurrentIndex(nIndex);
89 ui->sbReconnect->setValue(m_pSettings->GetReconnectInterval());
92 ui->cbPrinter->setChecked(m_pSettings->GetRedirectionPrinter());
94 ui->cbEnableLocalInputMethod->setChecked(m_pSettings->GetEnableLocalInputMethod());
97 ui->gbAudio->setEnabled(HasAudioOutput() || HasAudioInput());
98 if(m_pSettings->GetRedirectionSound() == CParameterFreeRDP::RedirecionSoundType::Disable)
99 ui->rbAudioDisable->setChecked(
true);
100 if(m_pSettings->GetRedirectionSound() == CParameterFreeRDP::RedirecionSoundType::Local)
101 ui->rbAudioLocal->setChecked(
true);
102 if(m_pSettings->GetRedirectionSound() == CParameterFreeRDP::RedirecionSoundType::Remote)
103 ui->rbAudioRemote->setChecked(
true);
104 QString szRdpSndParameters
105 = tr(
"- [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>]\n"
106 #
if defined (Q_OS_WINDOWS) || defined(Q_OS_WIN) || defined(Q_OS_WIN32) || defined(Q_OS_WINRT)
108 #elif defined(Q_OS_IOS)
111 #elif defined (Q_OS_ANDROID)
113 #elif defined (Q_OS_LINUX) || defined (Q_OS_UNIX)
116 "- sys:oss,dev:1,format:1\n"
120 QString szRdpSnd = tr(
"Options for redirection of audio output:\n") + szRdpSndParameters;
121 ui->leRdpSnd->setToolTip(szRdpSnd);
122 ui->leRdpSnd->setStatusTip(szRdpSnd);
123 ui->leRdpSnd->setWhatsThis(szRdpSnd);
124 ui->leRdpSnd->setEnabled(HasAudioOutput());
125 ui->leRdpSnd->setText(m_pSettings->GetRedirectionSoundParameters());
127 QString szAudin = tr(
"Options for redirection of audio input:\n") + szRdpSndParameters;
128 ui->leAudin->setToolTip(szAudin);
129 ui->leAudin->setStatusTip(szAudin);
130 ui->leAudin->setWhatsThis(szAudin);
131 ui->leAudin->setText(m_pSettings->GetRedirectionMicrophoneParameters());
132 if(HasAudioInput()) {
133 ui->cbAudin->setChecked(m_pSettings->GetRedirectionMicrophone());
135 ui->cbAudin->setChecked(
false);
136 ui->cbAudin->setEnabled(
false);
137 ui->leAudin->setEnabled(
false);
141 m_pFileModel=
new QFileSystemModel();
142 m_pFileModel->setNameFilterDisables(
false);
143 m_pFileModel->setFilter(QDir::Drives | QDir::Dirs | QDir::NoDotAndDotDot);
144 m_pFileModel->setRootPath(
"");
145 ui->tvDrive->setModel(m_pFileModel);
146 ui->tvDrive->setEditTriggers(QAbstractItemView::NoEditTriggers);
147 int count = m_pFileModel->columnCount();
148 for(
int i = 1; i < count; i++)
149 ui->tvDrive->hideColumn(i);
150 bool check = connect(ui->tvDrive->selectionModel(),
151 SIGNAL(selectionChanged(
const QItemSelection &,
152 const QItemSelection &)),
154 SLOT(slotSelectionChanged(QItemSelection,QItemSelection)));
156 QStringList lstDrives = m_pSettings->GetRedirectionDrives();
157 foreach(
auto path, lstDrives)
160 if(!path.isEmpty()) {
161 index = m_pFileModel->index(path);
162 ui->tvDrive->setCurrentIndex(index);
165 ShowDriveSelected(lstDrives.size());
168 ui->cbSecurityEnable->setChecked(m_pSettings->GetNegotiateSecurityLayer());
169 on_cbSecurityEnable_stateChanged(ui->cbSecurityEnable->checkState());
170 CParameterFreeRDP::Security security = m_pSettings->GetSecurity();
171 if(CParameterFreeRDP::Security::RDP & (uint)security)
172 ui->cbSecurityRDP->setChecked(
true);
173 if(CParameterFreeRDP::Security::TLS & (uint)security)
174 ui->cbSecurityTls->setChecked(
true);
175 if(CParameterFreeRDP::Security::NLA & (uint)security)
176 ui->cbSecurityNLA->setChecked(
true);
177 if(CParameterFreeRDP::Security::NLA_Ext & (uint)security)
178 ui->cbSecurityNlaExt->setChecked(
true);
179 if(CParameterFreeRDP::Security::RDSAAD & (uint)security)
180 ui->cbSecurityRDSAAD->setChecked(
true);
181 if(CParameterFreeRDP::Security::RDSTLS & (uint)security)
182 ui->cbSecurityRDSTLS->setChecked(
true);
183#if FREERDP_VERSION_MAJOR >= 3
184 ui->cbSecurityRDSAAD->setVisible(
true);
185 ui->cbSecurityRDSTLS->setVisible(
true);
187 ui->cbSecurityRDSAAD->setVisible(
false);
188 ui->cbSecurityRDSTLS->setVisible(
false);
191 switch(m_pSettings->GetTlsVersion())
194 ui->rbTls1_0->setChecked(
true);
197 ui->rbTls1_1->setChecked(
true);
200 ui->rbTls1_2->setChecked(
true);
203 ui->rbTls1_3->setChecked(
true);
208 m_vPerformanceFlags[CONNECTION_TYPE_MODEM - 1] = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS | PERF_DISABLE_THEMING;
209 m_vPerformanceFlags[CONNECTION_TYPE_BROADBAND_LOW - 1] = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS;
210 m_vPerformanceFlags[CONNECTION_TYPE_SATELLITE - 1] = PERF_DISABLE_WALLPAPER | PERF_ENABLE_DESKTOP_COMPOSITION | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS;
211 m_vPerformanceFlags[CONNECTION_TYPE_BROADBAND_HIGH - 1] = PERF_DISABLE_WALLPAPER | PERF_ENABLE_DESKTOP_COMPOSITION | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS;
212 m_vPerformanceFlags[CONNECTION_TYPE_WAN - 1] = PERF_ENABLE_FONT_SMOOTHING | PERF_ENABLE_DESKTOP_COMPOSITION;
213 m_vPerformanceFlags[CONNECTION_TYPE_LAN - 1] = PERF_ENABLE_FONT_SMOOTHING | PERF_ENABLE_DESKTOP_COMPOSITION;
214 m_vPerformanceFlags[CONNECTION_TYPE_AUTODETECT - 1] = PERF_ENABLE_FONT_SMOOTHING | PERF_ENABLE_DESKTOP_COMPOSITION;
216 if(m_pSettings->GetConnectType() > 0 && m_pSettings->GetPerformanceFlags() > 0)
217 m_vPerformanceFlags[m_pSettings->GetConnectType() - 1] = m_pSettings->GetPerformanceFlags();
219 ui->cbConnectType->addItem(tr(
"Modem(56 kpbs)"), CONNECTION_TYPE_MODEM);
220 ui->cbConnectType->addItem(tr(
"Broadband low(256 kbps - 2 Mbps)"), CONNECTION_TYPE_BROADBAND_LOW);
221 ui->cbConnectType->addItem(tr(
"Satellite(2 Mbps - 16 Mbps, High latency)"), CONNECTION_TYPE_SATELLITE);
222 ui->cbConnectType->addItem(tr(
"Broadband high(2 Mbps - 10 Mbps)"), CONNECTION_TYPE_BROADBAND_HIGH);
223 ui->cbConnectType->addItem(tr(
"Wan(10 Mbps or higher speed, High latency)"), CONNECTION_TYPE_WAN);
224 ui->cbConnectType->addItem(tr(
"Lan(10 Mbps or higher speed)"), CONNECTION_TYPE_LAN);
225 ui->cbConnectType->addItem(tr(
"Automatically detect"), CONNECTION_TYPE_AUTODETECT);
226 ui->cbConnectType->setCurrentIndex(ui->cbConnectType->findData(m_pSettings->GetConnectType()));
230CDlgSetFreeRDP::~CDlgSetFreeRDP()
235void CDlgSetFreeRDP::on_pbOk_clicked()
239 if(!ui->wNet->CheckValidity(
true)) {
240 ui->tabWidget->setCurrentIndex(0);
244 ui->tabWidget->setCurrentWidget(m_pProxyUI);
248 ui->tabWidget->setCurrentWidget(m_pRecordUI);
252 m_pSettings->SetName(ui->leName->text());
255 m_pSettings->SetDomain(ui->leDomain->text());
256 nRet = ui->wNet->Accept();
259 nRet = m_pProxyUI->
Accept();
262 nRet = m_pRecordUI->Accept();
265 m_pSettings->SetOnlyView(ui->cbOnlyView->isChecked());
266 m_pSettings->SetClipboard(ui->cbClipboard->isChecked());
267 m_pSettings->SetShowServerName(ui->cbShowServerName->isChecked());
270 m_pSettings->SetUseMultimon(ui->cbAllMonitor->isChecked());
271 QString szSize = ui->cbDesktopSize->currentText();
272 int index = szSize.indexOf(
"×");
275 UINT32 width = szSize.left(index).toInt();
276 UINT32 height = szSize.right(szSize.length() - index - 1).toInt();
277 m_pSettings->SetDesktopWidth(width);
278 m_pSettings->SetDesktopHeight(height);
280 m_pSettings->SetColorDepth(ui->cbColorDepth->currentData().toInt());
281 m_pSettings->SetReconnectInterval(ui->sbReconnect->value());
284 m_pSettings->SetRedirectionPrinter(ui->cbPrinter->isChecked());
285 m_pSettings->SetEnableLocalInputMethod(ui->cbEnableLocalInputMethod->isChecked());
286 if(HasAudioOutput()) {
287 CParameterFreeRDP::RedirecionSoundType tRdirectionSound
288 = CParameterFreeRDP::RedirecionSoundType::Disable;
289 if(ui->rbAudioDisable->isChecked())
290 tRdirectionSound = CParameterFreeRDP::RedirecionSoundType::Disable;
291 else if(ui->rbAudioLocal->isChecked())
292 tRdirectionSound = CParameterFreeRDP::RedirecionSoundType::Local;
293 else if(ui->rbAudioRemote->isChecked())
294 tRdirectionSound = CParameterFreeRDP::RedirecionSoundType::Remote;
295 m_pSettings->SetRedirectionSound(tRdirectionSound);
297 m_pSettings->SetRedirectionSound(
298 CParameterFreeRDP::RedirecionSoundType::Disable);
300 m_pSettings->SetRedirectionSoundParameters(ui->leRdpSnd->text());
302 m_pSettings->SetRedirectionMicrophone(ui->cbAudin->isChecked());
304 m_pSettings->SetRedirectionMicrophone(
false);
305 m_pSettings->SetRedirectionMicrophoneParameters(ui->leAudin->text());
307 QStringList lstDrives;
309 QModelIndexList selected = ui->tvDrive->selectionModel()->selectedRows(0);
310 QList<QModelIndex>::iterator it;
311 QModelIndex modelIndex;
313 for (it = selected.begin(); it != selected.end(); ++it)
316 szPath = m_pFileModel->filePath(modelIndex);
317 if(!szPath.isEmpty())
318 lstDrives.append(szPath);
320 m_pSettings->SetRedirectionDrives(lstDrives);
323 m_pSettings->SetNegotiateSecurityLayer(ui->cbSecurityEnable->isChecked());
325 if(ui->cbSecurityRDP->isChecked())
326 security |= CParameterFreeRDP::Security::RDP;
327 if(ui->cbSecurityTls->isChecked())
328 security |= CParameterFreeRDP::Security::TLS;
329 if(ui->cbSecurityNLA->isChecked())
330 security |= CParameterFreeRDP::Security::NLA;
331 if(ui->cbSecurityNlaExt->isChecked())
332 security |= CParameterFreeRDP::Security::NLA_Ext;
333 if(ui->cbSecurityRDSTLS->isChecked())
334 security |= CParameterFreeRDP::Security::RDSTLS;
335 if(ui->cbSecurityRDSAAD->isChecked())
336 security |= CParameterFreeRDP::Security::RDSAAD;
337 m_pSettings->SetSecurity((CParameterFreeRDP::Security)security);
340 if(ui->rbTls1_0->isChecked())
341 m_pSettings->SetTlsVersion(TLS1_VERSION);
342 else if(ui->rbTls1_1->isChecked())
343 m_pSettings->SetTlsVersion(TLS1_1_VERSION);
344 else if(ui->rbTls1_2->isChecked())
345 m_pSettings->SetTlsVersion(TLS1_2_VERSION);
346 else if(ui->rbTls1_3->isChecked())
347 m_pSettings->SetTlsVersion(TLS1_3_VERSION);
350 m_pSettings->SetConnectType(ui->cbConnectType->currentData().toUInt());
352 UINT32 performanceFlags = 0;
353 if(!ui->cbDesktopBackground->isChecked())
354 performanceFlags |= PERF_DISABLE_WALLPAPER;
355 if(!ui->cbWindowDrag->isChecked())
356 performanceFlags |= PERF_DISABLE_FULLWINDOWDRAG;
357 if(!ui->cbMenuAnims->isChecked())
358 performanceFlags |= PERF_DISABLE_MENUANIMATIONS;
359 if(!ui->cbThemes->isChecked())
360 performanceFlags |= PERF_DISABLE_THEMING;
361 if(ui->cbFontSmoothing->isChecked())
362 performanceFlags |= PERF_ENABLE_FONT_SMOOTHING;
363 if(ui->cbDesktopCompositing->isChecked())
364 performanceFlags |= PERF_ENABLE_DESKTOP_COMPOSITION;
365 m_pSettings->SetPerformanceFlags(performanceFlags);
370void CDlgSetFreeRDP::on_pbCancel_clicked()
375void CDlgSetFreeRDP::on_rbLocalScreen_clicked(
bool checked)
378 int width = GetScreenGeometry().width();
379 int height = GetScreenGeometry().height();
380 QString curSize = QString::number(width) +
"×" + QString::number(height);
381 ui->rbLocalScreen->setText(tr(
"Local screen") +
": " + curSize);
382 if(ui->cbDesktopSize->findText(curSize) == -1)
383 InsertDesktopSize(width, height);
384 ui->cbDesktopSize->setCurrentText(curSize);
387QRect CDlgSetFreeRDP::GetScreenGeometry()
390 QScreen* pScreen = QApplication::primaryScreen();
391 if(ui->cbAllMonitor->isChecked())
394 r = pScreen->virtualGeometry();
410 r = pScreen->geometry();
415int CDlgSetFreeRDP::UpdateDesktopSize()
417 ui->cbDesktopSize->clear();
418 QStringList lstDesktopSizes;
419 lstDesktopSizes <<
"640×480"
436 ui->cbDesktopSize->addItems(lstDesktopSizes);
438 int width = GetScreenGeometry().width();
439 int height = GetScreenGeometry().height();
440 QString curSize = QString::number(width) +
"×" + QString::number(height);
441 ui->rbLocalScreen->setText(tr(
"Local screen") +
": " + curSize);
442 if(ui->cbDesktopSize->findText(curSize) == -1)
443 InsertDesktopSize(width, height);
447int CDlgSetFreeRDP::InsertDesktopSize(QString szSize)
450 int nIndex = szSize.indexOf(
"×");
454 w = szSize.left(nIndex).toInt(&ok);
456 h = szSize.right(szSize.length() - nIndex - 1).toInt(&ok);
460 return InsertDesktopSize(w, h);
463int CDlgSetFreeRDP::InsertDesktopSize(
int width,
int height)
465 QString curSize = QString::number(width) +
"×" + QString::number(height);
466 if(ui->cbDesktopSize->findText(curSize) > -1)
469 int nCount = ui->cbDesktopSize->count();
470 for(
int i = 0; i < nCount; i++)
472 QString curText = ui->cbDesktopSize->itemText(i);
473 int nIndex = curText.indexOf(
"×");
476 int w = curText.left(nIndex).toInt();
477 int h = curText.right(curText.length() - nIndex - 1).toInt();
480 ui->cbDesktopSize->insertItem(i, curSize);
482 }
else if(w == width) {
485 ui->cbDesktopSize->insertItem(i, curSize);
492 QString curText = ui->cbDesktopSize->itemText(j);
493 int nIndex = curText.indexOf(
"×");
497 int w = curText.left(nIndex).toInt();
498 int h = curText.right(curText.length() - nIndex - 1).toInt();
500 ui->cbDesktopSize->insertItem(j, curSize);
505 ui->cbDesktopSize->insertItem(j, curSize);
507 }
else if(h == height)
519 if(ui->cbDesktopSize->findText(curSize) == -1)
520 ui->cbDesktopSize->addItem(curSize);
526void CDlgSetFreeRDP::on_rbAudioDisable_toggled(
bool checked)
528 ui->leRdpSnd->setEnabled(!checked);
531void CDlgSetFreeRDP::on_rbAudioLocal_toggled(
bool checked)
533 ui->leRdpSnd->setEnabled(checked);
536void CDlgSetFreeRDP::on_rbAudioRemote_toggled(
bool checked)
538 ui->leRdpSnd->setEnabled(!checked);
539 ui->leAudin->setEnabled(!checked);
540 ui->cbAudin->setEnabled(!checked);
543bool CDlgSetFreeRDP::HasAudioOutput()
545#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
546 auto d = QMediaDevices::defaultAudioOutput();
549 return !QAudioDeviceInfo::defaultOutputDevice().isNull();
553bool CDlgSetFreeRDP::HasAudioInput()
555#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
556 auto d = QMediaDevices::defaultAudioInput();
559 return !QAudioDeviceInfo::defaultInputDevice().isNull();
563void CDlgSetFreeRDP::on_pbSizeEdit_clicked()
567 for(
int i = 0; i < ui->cbDesktopSize->count(); i++)
568 lstSize << ui->cbDesktopSize->itemText(i);
569 dlg.SetDesktopSizes(lstSize);
570 if(QDialog::Accepted == dlg.exec())
572 ui->cbDesktopSize->clear();
573 foreach(
auto s, dlg.GetDesktopSize())
575 InsertDesktopSize(s);
580void CDlgSetFreeRDP::on_pbDriveClearAll_clicked()
582 ui->tvDrive->clearSelection();
583 ShowDriveSelected(0);
586void CDlgSetFreeRDP::slotSelectionChanged(
const QItemSelection &selected,
587 const QItemSelection &deselected)
589 QModelIndexList s = ui->tvDrive->selectionModel()->selectedRows(0);
590 ShowDriveSelected(s.size());
593int CDlgSetFreeRDP::ShowDriveSelected(
int counts)
595 ui->lbDriveSelected->setText(tr(
"Selected counts: ") + QString::number(counts));
599void CDlgSetFreeRDP::on_cbAllMonitor_stateChanged(
int arg1)
601 on_rbLocalScreen_clicked(
true);
604void CDlgSetFreeRDP::on_cbSecurityEnable_stateChanged(
int arg1)
607 m_pButtonGroup->deleteLater();
608 m_pButtonGroup =
nullptr;
610 if(!ui->cbSecurityEnable->isChecked()) {
611 m_pButtonGroup =
new QButtonGroup(
this);
612 m_pButtonGroup->addButton(ui->cbSecurityRDP);
613 m_pButtonGroup->addButton(ui->cbSecurityTls);
614 m_pButtonGroup->addButton(ui->cbSecurityNLA);
615 m_pButtonGroup->addButton(ui->cbSecurityNlaExt);
616 m_pButtonGroup->addButton(ui->cbSecurityRDSAAD);
617 m_pButtonGroup->addButton(ui->cbSecurityRDSTLS);
621void CDlgSetFreeRDP::on_cbConnectType_currentIndexChanged(
int index)
623 UINT32 type = ui->cbConnectType->itemData(index).toUInt();
624 if(0 >= type || CONNECTION_TYPE_AUTODETECT < type)
627 UINT32 performanceFlags = m_vPerformanceFlags[type - 1];
628 if(CONNECTION_TYPE_AUTODETECT == type)
630 performanceFlags = PERF_ENABLE_FONT_SMOOTHING | PERF_ENABLE_DESKTOP_COMPOSITION;
633 ui->cbDesktopBackground->setChecked(!(PERF_DISABLE_WALLPAPER & performanceFlags));
634 ui->cbWindowDrag->setChecked(!(PERF_DISABLE_FULLWINDOWDRAG & performanceFlags));
635 ui->cbMenuAnims->setChecked(!(PERF_DISABLE_MENUANIMATIONS & performanceFlags));
636 ui->cbThemes->setChecked(!(PERF_DISABLE_THEMING & performanceFlags));
637 ui->cbFontSmoothing->setChecked(PERF_ENABLE_FONT_SMOOTHING & performanceFlags);
638 ui->cbDesktopCompositing->setChecked(PERF_ENABLE_DESKTOP_COMPOSITION & performanceFlags);
640 ui->cbDesktopBackground->setEnabled(!(CONNECTION_TYPE_AUTODETECT == type));
641 ui->cbWindowDrag->setEnabled(!(CONNECTION_TYPE_AUTODETECT == type));
642 ui->cbMenuAnims->setEnabled(!(CONNECTION_TYPE_AUTODETECT == type));
643 ui->cbThemes->setEnabled(!(CONNECTION_TYPE_AUTODETECT == type));
644 ui->cbFontSmoothing->setEnabled(!(CONNECTION_TYPE_AUTODETECT == type));
645 ui->cbDesktopCompositing->setEnabled(!(CONNECTION_TYPE_AUTODETECT == type));
[Declare CParameterFreeRDP]
bool CheckValidity(bool validity=false)
Check parameters validity.
int Accept()
Accept parameters.
virtual bool CheckValidity(bool validity=false)
Check parameters validity.