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 kbps)"), 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.