VirtualBox

Changeset 85851 in vbox


Ignore:
Timestamp:
Aug 20, 2020 6:44:40 PM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9812: VM settings: Prepare cascade cleanup for Display page; And lots of minor fixes for combo-box related stuff.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp

    r85710 r85851  
    298298    , m_enmGraphicsControllerTypeRecommended(KGraphicsControllerType_Null)
    299299    , m_pCache(0)
     300    , m_pTabWidget(0)
     301    , m_pTabScreen(0)
     302    , m_pLabelVideoMemorySize(0)
     303    , m_pEditorVideoMemorySize(0)
     304    , m_pLabelMonitorCount(0)
     305    , m_pSliderMonitorCount(0)
     306    , m_pSpinboxMonitorCount(0)
     307    , m_pLabelMonitorCountMin(0)
     308    , m_pLabelMonitorCountMax(0)
     309    , m_pLabelScaleFactor(0)
     310    , m_pEditorScaleFactor(0)
     311    , m_pLabelGraphicsController(0)
     312    , m_pEditorGraphicsController(0)
     313    , m_pLabelAcceleration(0)
    300314    , m_pCheckbox3D(0)
     315    , m_pTabRemoteDisplay(0)
    301316    , m_pCheckboxRemoteDisplay(0)
     317    , m_pWidgetRemoteDisplaySettings(0)
     318    , m_pLabelRemoteDisplayPort(0)
     319    , m_pEditorRemoteDisplayPort(0)
     320    , m_pLabelRemoteDisplayAuthMethod(0)
     321    , m_pComboRemoteDisplayAuthMethod(0)
     322    , m_pLabelRemoteDisplayTimeout(0)
     323    , m_pEditorRemoteDisplayTimeout(0)
     324    , m_pLabelRemoteDisplayOptions(0)
    302325    , m_pCheckboxMultipleConn(0)
    303     , m_pCheckboxVideoCapture(0)
    304     , m_pComboRemoteDisplayAuthMethod(0)
    305     , m_pComboBoxCaptureMode(0)
    306     , m_pComboVideoCaptureSize(0)
    307     , m_pLabelVideoScreenCountMin(0)
    308     , m_pLabelVideoScreenCountMax(0)
    309     , m_pLabelVideoCaptureFrameRateMin(0)
    310     , m_pLabelVideoCaptureFrameRateMax(0)
    311     , m_pLabelVideoCaptureQualityMin(0)
    312     , m_pLabelVideoCaptureQualityMed(0)
    313     , m_pLabelVideoCaptureQualityMax(0)
    314     , m_pLabelAudioCaptureQualityMin(0)
    315     , m_pLabelAudioCaptureQualityMed(0)
    316     , m_pLabelAudioCaptureQualityMax(0)
    317     , m_pVideoMemoryLabel(0)
    318     , m_pLabelVideoScreenCount(0)
    319     , m_pGraphicsControllerLabel(0)
    320     , m_pLabelVideoOptions(0)
    321     , m_pLabelRemoteDisplayOptions(0)
    322     , m_pLabelCaptureMode(0)
    323     , m_pLabelVideoCapturePath(0)
    324     , m_pLabelVideoCaptureSizeHint(0)
    325     , m_pLabelVideoCaptureSize(0)
    326     , m_pLabelVideoCaptureFrameRate(0)
    327     , m_pLabelVideoCaptureRate(0)
    328     , m_pAudioCaptureQualityLabel(0)
    329     , m_pLabelVideoCaptureScreens(0)
    330     , m_pLabelGuestScreenScaleFactorEditor(0)
    331     , m_pLabelRemoteDisplayPort(0)
    332     , m_pLabelRemoteDisplayAuthMethod(0)
    333     , m_pLabelRemoteDisplayTimeout(0)
    334     , m_pEditorRemoteDisplayPort(0)
    335     , m_pEditorRemoteDisplayTimeout(0)
    336     , m_pEditorVideoScreenCount(0)
    337     , m_pEditorVideoCaptureWidth(0)
    338     , m_pEditorVideoCaptureFrameRate(0)
    339     , m_pEditorVideoCaptureHeight(0)
    340     , m_pEditorVideoCaptureBitRate(0)
    341     , m_pGraphicsControllerEditor(0)
    342     , m_pScaleFactorEditor(0)
    343     , m_pVideoMemoryEditor(0)
    344     , m_pEditorVideoCapturePath(0)
    345     , m_pScrollerVideoCaptureScreens(0)
    346     , m_pSliderAudioCaptureQuality(0)
    347     , m_pSliderVideoScreenCount(0)
    348     , m_pSliderVideoCaptureFrameRate(0)
    349     , m_pSliderVideoCaptureQuality(0)
    350     , m_pTabWidget(0)
    351     , m_pContainerRemoteDisplay(0)
    352     , m_pContainerRemoteDisplayOptions(0)
    353     , m_pContainerVideoCapture(0)
    354     , m_pContainerSliderVideoCaptureFrameRate(0)
    355     , m_pContainerSliderVideoCaptureQuality(0)
    356     , m_pContainerSliderAudioCaptureQuality(0)
    357     , m_pTabVideo(0)
    358     , m_pTabRemoteDisplay(0)
    359     , m_pTabVideoCapture(0)
    360     , m_pContainerLayoutSliderVideoCaptureQuality(0)
    361     , m_pLayout3D(0)
     326
     327    , m_pTabRecording(0)
     328    , m_pCheckboxRecording(0)
     329    , m_pWidgetRecordingSettings(0)
     330    , m_pLabelRecordingMode(0)
     331    , m_pComboRecordingMode(0)
     332    , m_pLabelRecordingFilePath(0)
     333    , m_pEditorRecordingFilePath(0)
     334    , m_pLabelRecordingFrameSize(0)
     335    , m_pComboRecordingFrameSize(0)
     336    , m_pSpinboxRecordingFrameWidth(0)
     337    , m_pSpinboxRecordingFrameHeight(0)
     338    , m_pLabelRecordingFrameRate(0)
     339    , m_pWidgetRecordingFrameRateSettings(0)
     340    , m_pSliderRecordingFrameRate(0)
     341    , m_pSpinboxRecordingFrameRate(0)
     342    , m_pLabelRecordingFrameRateMin(0)
     343    , m_pLabelRecordingFrameRateMax(0)
     344    , m_pLabelRecordingVideoQuality(0)
     345    , m_pWidgetRecordingVideoQualitySettings(0)
     346    , m_pSliderRecordingVideoQuality(0)
     347    , m_pSpinboxRecordingVideoQuality(0)
     348    , m_pLabelRecordingVideoQualityMin(0)
     349    , m_pLabelRecordingVideoQualityMed(0)
     350    , m_pLabelRecordingVideoQualityMax(0)
     351    , m_pLabelRecordingAudioQuality(0)
     352    , m_pWidgetRecordingAudioQualitySettings(0)
     353    , m_pSliderRecordingAudioQuality(0)
     354    , m_pLabelRecordingAudioQualityMin(0)
     355    , m_pLabelRecordingAudioQualityMed(0)
     356    , m_pLabelRecordingAudioQualityMax(0)
     357    , m_pLabelRecordingSizeHint(0)
     358    , m_pLabelRecordingScreens(0)
     359    , m_pScrollerRecordingScreens(0)
    362360{
    363361    /* Prepare: */
     
    379377    /* Remember new guest OS type: */
    380378    m_comGuestOSType = comGuestOSType;
    381     m_pVideoMemoryEditor->setGuestOSType(m_comGuestOSType);
     379    m_pEditorVideoMemorySize->setGuestOSType(m_comGuestOSType);
    382380
    383381#ifdef VBOX_WITH_3D_ACCELERATION
     
    385383    const QString strGuestOSTypeId = m_comGuestOSType.isNotNull() ? m_comGuestOSType.GetId() : QString();
    386384    m_fWddmModeSupported = UICommon::isWddmCompatibleOsType(strGuestOSTypeId);
    387     m_pVideoMemoryEditor->set3DAccelerationSupported(m_fWddmModeSupported);
     385    m_pEditorVideoMemorySize->set3DAccelerationSupported(m_fWddmModeSupported);
    388386#endif
    389387    /* Acquire recommended graphics controller type: */
     
    403401KGraphicsControllerType UIMachineSettingsDisplay::graphicsControllerTypeRecommended() const
    404402{
    405     return   m_pGraphicsControllerEditor->supportedValues().contains(m_enmGraphicsControllerTypeRecommended)
     403    return   m_pEditorGraphicsController->supportedValues().contains(m_enmGraphicsControllerTypeRecommended)
    406404           ? m_enmGraphicsControllerTypeRecommended
    407405           : graphicsControllerTypeCurrent();
     
    410408KGraphicsControllerType UIMachineSettingsDisplay::graphicsControllerTypeCurrent() const
    411409{
    412     return m_pGraphicsControllerEditor->value();
     410    return m_pEditorGraphicsController->value();
    413411}
    414412
     
    495493    const UIDataSettingsMachineDisplay &oldDisplayData = m_pCache->base();
    496494
     495    /* We are doing that *now* because these combos have
     496     * dynamical content which depends on cashed value: */
     497    repopulateComboAuthType();
     498
    497499    /* Load old 'Screen' data from the cache: */
    498     m_pEditorVideoScreenCount->setValue(oldDisplayData.m_cGuestScreenCount);
    499     m_pScaleFactorEditor->setScaleFactors(oldDisplayData.m_scaleFactors);
    500     m_pScaleFactorEditor->setMonitorCount(oldDisplayData.m_cGuestScreenCount);
    501     m_pGraphicsControllerEditor->setValue(oldDisplayData.m_graphicsControllerType);
     500    m_pSpinboxMonitorCount->setValue(oldDisplayData.m_cGuestScreenCount);
     501    m_pEditorScaleFactor->setScaleFactors(oldDisplayData.m_scaleFactors);
     502    m_pEditorScaleFactor->setMonitorCount(oldDisplayData.m_cGuestScreenCount);
     503    m_pEditorGraphicsController->setValue(oldDisplayData.m_graphicsControllerType);
    502504#ifdef VBOX_WITH_3D_ACCELERATION
    503505    m_pCheckbox3D->setChecked(oldDisplayData.m_f3dAccelerationEnabled);
    504506#endif
    505     /* Push required value to m_pVideoMemoryEditor: */
     507    /* Push required value to m_pEditorVideoMemorySize: */
    506508    sltHandleGuestScreenCountEditorChange();
    507509    sltHandleGraphicsControllerComboChange();
     
    510512#endif
    511513    // Should be the last one for this tab, since it depends on some of others:
    512     m_pVideoMemoryEditor->setValue(oldDisplayData.m_iCurrentVRAM);
     514    m_pEditorVideoMemorySize->setValue(oldDisplayData.m_iCurrentVRAM);
    513515
    514516    /* If remote display server is supported: */
     
    518520        m_pCheckboxRemoteDisplay->setChecked(oldDisplayData.m_fRemoteDisplayServerEnabled);
    519521        m_pEditorRemoteDisplayPort->setText(oldDisplayData.m_strRemoteDisplayPort);
    520         m_pComboRemoteDisplayAuthMethod->setCurrentIndex(m_pComboRemoteDisplayAuthMethod->findText(gpConverter->toString(oldDisplayData.m_remoteDisplayAuthType)));
     522        const int iAuthTypePosition = m_pComboRemoteDisplayAuthMethod->findData(oldDisplayData.m_remoteDisplayAuthType);
     523        m_pComboRemoteDisplayAuthMethod->setCurrentIndex(iAuthTypePosition == -1 ? 0 : iAuthTypePosition);
    521524        m_pEditorRemoteDisplayTimeout->setText(QString::number(oldDisplayData.m_uRemoteDisplayTimeout));
    522525        m_pCheckboxMultipleConn->setChecked(oldDisplayData.m_fRemoteDisplayMultiConnAllowed);
     
    524527
    525528    /* Load old 'Recording' data from the cache: */
    526     m_pCheckboxVideoCapture->setChecked(oldDisplayData.m_fRecordingEnabled);
    527     m_pEditorVideoCapturePath->setHomeDir(oldDisplayData.m_strRecordingFolder);
    528     m_pEditorVideoCapturePath->setPath(oldDisplayData.m_strRecordingFilePath);
    529     m_pEditorVideoCaptureWidth->setValue(oldDisplayData.m_iRecordingVideoFrameWidth);
    530     m_pEditorVideoCaptureHeight->setValue(oldDisplayData.m_iRecordingVideoFrameHeight);
    531     m_pEditorVideoCaptureFrameRate->setValue(oldDisplayData.m_iRecordingVideoFrameRate);
    532     m_pEditorVideoCaptureBitRate->setValue(oldDisplayData.m_iRecordingVideoBitRate);
    533     m_pScrollerVideoCaptureScreens->setValue(oldDisplayData.m_vecRecordingScreens);
     529    m_pCheckboxRecording->setChecked(oldDisplayData.m_fRecordingEnabled);
     530    m_pEditorRecordingFilePath->setHomeDir(oldDisplayData.m_strRecordingFolder);
     531    m_pEditorRecordingFilePath->setPath(oldDisplayData.m_strRecordingFilePath);
     532    m_pSpinboxRecordingFrameWidth->setValue(oldDisplayData.m_iRecordingVideoFrameWidth);
     533    m_pSpinboxRecordingFrameHeight->setValue(oldDisplayData.m_iRecordingVideoFrameHeight);
     534    m_pSpinboxRecordingFrameRate->setValue(oldDisplayData.m_iRecordingVideoFrameRate);
     535    m_pSpinboxRecordingVideoQuality->setValue(oldDisplayData.m_iRecordingVideoBitRate);
     536    m_pScrollerRecordingScreens->setValue(oldDisplayData.m_vecRecordingScreens);
    534537
    535538    /* Load data from old 'Recording option': */
     
    539542                                                                                UIDataSettingsMachineDisplay::RecordingOption_VC);
    540543    if (fRecordAudio && fRecordVideo)
    541         m_pComboBoxCaptureMode->setCurrentIndex(m_pComboBoxCaptureMode->findText(gpConverter->toString(UISettingsDefs::RecordingMode_VideoAudio)));
     544        m_pComboRecordingMode->setCurrentIndex(m_pComboRecordingMode->findText(gpConverter->toString(UISettingsDefs::RecordingMode_VideoAudio)));
    542545    else if (fRecordAudio && !fRecordVideo)
    543         m_pComboBoxCaptureMode->setCurrentIndex(m_pComboBoxCaptureMode->findText(gpConverter->toString(UISettingsDefs::RecordingMode_AudioOnly)));
     546        m_pComboRecordingMode->setCurrentIndex(m_pComboRecordingMode->findText(gpConverter->toString(UISettingsDefs::RecordingMode_AudioOnly)));
    544547    else
    545         m_pComboBoxCaptureMode->setCurrentIndex(m_pComboBoxCaptureMode->findText(gpConverter->toString(UISettingsDefs::RecordingMode_VideoOnly)));
    546 
    547     m_pSliderAudioCaptureQuality->setValue(UIDataSettingsMachineDisplay::getAudioQualityFromOptions(oldDisplayData.m_strRecordingVideoOptions));
     548        m_pComboRecordingMode->setCurrentIndex(m_pComboRecordingMode->findText(gpConverter->toString(UISettingsDefs::RecordingMode_VideoOnly)));
     549
     550    m_pSliderRecordingAudioQuality->setValue(UIDataSettingsMachineDisplay::getAudioQualityFromOptions(oldDisplayData.m_strRecordingVideoOptions));
    548551
    549552    /* Polish page finally: */
     
    560563
    561564    /* Gather new 'Screen' data: */
    562     newDisplayData.m_iCurrentVRAM = m_pVideoMemoryEditor->value();
    563     newDisplayData.m_cGuestScreenCount = m_pEditorVideoScreenCount->value();
    564     newDisplayData.m_scaleFactors = m_pScaleFactorEditor->scaleFactors();
    565     newDisplayData.m_graphicsControllerType = m_pGraphicsControllerEditor->value();
     565    newDisplayData.m_iCurrentVRAM = m_pEditorVideoMemorySize->value();
     566    newDisplayData.m_cGuestScreenCount = m_pSpinboxMonitorCount->value();
     567    newDisplayData.m_scaleFactors = m_pEditorScaleFactor->scaleFactors();
     568    newDisplayData.m_graphicsControllerType = m_pEditorGraphicsController->value();
    566569#ifdef VBOX_WITH_3D_ACCELERATION
    567570    newDisplayData.m_f3dAccelerationEnabled = m_pCheckbox3D->isChecked();
     
    574577        newDisplayData.m_fRemoteDisplayServerEnabled = m_pCheckboxRemoteDisplay->isChecked();
    575578        newDisplayData.m_strRemoteDisplayPort = m_pEditorRemoteDisplayPort->text();
    576         newDisplayData.m_remoteDisplayAuthType = gpConverter->fromString<KAuthType>(m_pComboRemoteDisplayAuthMethod->currentText());
     579        newDisplayData.m_remoteDisplayAuthType = m_pComboRemoteDisplayAuthMethod->currentData().value<KAuthType>();
    577580        newDisplayData.m_uRemoteDisplayTimeout = m_pEditorRemoteDisplayTimeout->text().toULong();
    578581        newDisplayData.m_fRemoteDisplayMultiConnAllowed = m_pCheckboxMultipleConn->isChecked();
     
    580583
    581584    /* Gather new 'Recording' data: */
    582     newDisplayData.m_fRecordingEnabled = m_pCheckboxVideoCapture->isChecked();
     585    newDisplayData.m_fRecordingEnabled = m_pCheckboxRecording->isChecked();
    583586    newDisplayData.m_strRecordingFolder = m_pCache->base().m_strRecordingFolder;
    584     newDisplayData.m_strRecordingFilePath = m_pEditorVideoCapturePath->path();
    585     newDisplayData.m_iRecordingVideoFrameWidth = m_pEditorVideoCaptureWidth->value();
    586     newDisplayData.m_iRecordingVideoFrameHeight = m_pEditorVideoCaptureHeight->value();
    587     newDisplayData.m_iRecordingVideoFrameRate = m_pEditorVideoCaptureFrameRate->value();
    588     newDisplayData.m_iRecordingVideoBitRate = m_pEditorVideoCaptureBitRate->value();
    589     newDisplayData.m_vecRecordingScreens = m_pScrollerVideoCaptureScreens->value();
     587    newDisplayData.m_strRecordingFilePath = m_pEditorRecordingFilePath->path();
     588    newDisplayData.m_iRecordingVideoFrameWidth = m_pSpinboxRecordingFrameWidth->value();
     589    newDisplayData.m_iRecordingVideoFrameHeight = m_pSpinboxRecordingFrameHeight->value();
     590    newDisplayData.m_iRecordingVideoFrameRate = m_pSpinboxRecordingFrameRate->value();
     591    newDisplayData.m_iRecordingVideoBitRate = m_pSpinboxRecordingVideoQuality->value();
     592    newDisplayData.m_vecRecordingScreens = m_pScrollerRecordingScreens->value();
    590593
    591594    /* Update recording options */
    592595    const UISettingsDefs::RecordingMode enmRecordingMode =
    593         gpConverter->fromString<UISettingsDefs::RecordingMode>(m_pComboBoxCaptureMode->currentText());
     596        gpConverter->fromString<UISettingsDefs::RecordingMode>(m_pComboRecordingMode->currentText());
    594597    QStringList optionValues;
    595598    /* Option value for video recording: */
     
    602605                           ? "true" : "false");
    603606
    604     if (m_pSliderAudioCaptureQuality->value() == 1)
     607    if (m_pSliderRecordingAudioQuality->value() == 1)
    605608        optionValues.push_back("low");
    606     else if (m_pSliderAudioCaptureQuality->value() == 2)
     609    else if (m_pSliderRecordingAudioQuality->value() == 2)
    607610        optionValues.push_back("med");
    608611    else
     
    648651        if (shouldWeWarnAboutLowVRAM() && !m_comGuestOSType.isNull())
    649652        {
    650             quint64 uNeedBytes = UICommon::requiredVideoMemory(m_comGuestOSType.GetId(), m_pEditorVideoScreenCount->value());
     653            quint64 uNeedBytes = UICommon::requiredVideoMemory(m_comGuestOSType.GetId(), m_pSpinboxMonitorCount->value());
    651654
    652655            /* Basic video RAM amount test: */
    653             if ((quint64)m_pVideoMemoryEditor->value() * _1M < uNeedBytes)
     656            if ((quint64)m_pEditorVideoMemorySize->value() * _1M < uNeedBytes)
    654657            {
    655658                message.second << tr("The virtual machine is currently assigned less than <b>%1</b> of video memory "
     
    662665            {
    663666                uNeedBytes = qMax(uNeedBytes, (quint64) 128 * _1M);
    664                 if ((quint64)m_pVideoMemoryEditor->value() * _1M < uNeedBytes)
     667                if ((quint64)m_pEditorVideoMemorySize->value() * _1M < uNeedBytes)
    665668                {
    666669                    message.second << tr("The virtual machine is set up to use hardware graphics acceleration "
     
    745748    /* Screen tab-order: */
    746749    setTabOrder(pWidget, m_pTabWidget->focusProxy());
    747     setTabOrder(m_pTabWidget->focusProxy(), m_pVideoMemoryEditor);
    748     setTabOrder(m_pVideoMemoryEditor, m_pSliderVideoScreenCount);
    749     setTabOrder(m_pSliderVideoScreenCount, m_pEditorVideoScreenCount);
    750     setTabOrder(m_pEditorVideoScreenCount, m_pScaleFactorEditor);
    751     setTabOrder(m_pScaleFactorEditor, m_pGraphicsControllerEditor);
     750    setTabOrder(m_pTabWidget->focusProxy(), m_pEditorVideoMemorySize);
     751    setTabOrder(m_pEditorVideoMemorySize, m_pSliderMonitorCount);
     752    setTabOrder(m_pSliderMonitorCount, m_pSpinboxMonitorCount);
     753    setTabOrder(m_pSpinboxMonitorCount, m_pEditorScaleFactor);
     754    setTabOrder(m_pEditorScaleFactor, m_pEditorGraphicsController);
    752755
    753756    /* Remote Display tab-order: */
     
    758761
    759762    /* Recording tab-order: */
    760     setTabOrder(m_pCheckboxMultipleConn, m_pCheckboxVideoCapture);
    761     setTabOrder(m_pCheckboxVideoCapture, m_pEditorVideoCapturePath);
    762     setTabOrder(m_pEditorVideoCapturePath, m_pComboVideoCaptureSize);
    763     setTabOrder(m_pComboVideoCaptureSize, m_pEditorVideoCaptureWidth);
    764     setTabOrder(m_pEditorVideoCaptureWidth, m_pEditorVideoCaptureHeight);
    765     setTabOrder(m_pEditorVideoCaptureHeight, m_pSliderVideoCaptureFrameRate);
    766     setTabOrder(m_pSliderVideoCaptureFrameRate, m_pEditorVideoCaptureFrameRate);
    767     setTabOrder(m_pEditorVideoCaptureFrameRate, m_pSliderVideoCaptureQuality);
    768     setTabOrder(m_pSliderVideoCaptureQuality, m_pEditorVideoCaptureBitRate);
     763    setTabOrder(m_pCheckboxMultipleConn, m_pCheckboxRecording);
     764    setTabOrder(m_pCheckboxRecording, m_pEditorRecordingFilePath);
     765    setTabOrder(m_pEditorRecordingFilePath, m_pComboRecordingFrameSize);
     766    setTabOrder(m_pComboRecordingFrameSize, m_pSpinboxRecordingFrameWidth);
     767    setTabOrder(m_pSpinboxRecordingFrameWidth, m_pSpinboxRecordingFrameHeight);
     768    setTabOrder(m_pSpinboxRecordingFrameHeight, m_pSliderRecordingFrameRate);
     769    setTabOrder(m_pSliderRecordingFrameRate, m_pSpinboxRecordingFrameRate);
     770    setTabOrder(m_pSpinboxRecordingFrameRate, m_pSliderRecordingVideoQuality);
     771    setTabOrder(m_pSliderRecordingVideoQuality, m_pSpinboxRecordingVideoQuality);
    769772}
    770773
    771774void UIMachineSettingsDisplay::retranslateUi()
    772775{
    773     m_pVideoMemoryLabel->setText(tr("Video &Memory:"));
    774     m_pVideoMemoryEditor->setWhatsThis(tr("Controls the amount of video memory provided to the virtual machine."));
    775     m_pLabelVideoScreenCount->setText(tr("Mo&nitor Count:"));
    776     m_pSliderVideoScreenCount->setWhatsThis(tr("Controls the amount of virtual monitors provided to the virtual machine."));
    777     m_pEditorVideoScreenCount->setWhatsThis(tr("Controls the amount of virtual monitors provided to the virtual machine."));
    778     m_pLabelGuestScreenScaleFactorEditor->setText(tr("Scale Factor:"));
    779     m_pScaleFactorEditor->setWhatsThis(tr("Controls the guest screen scale factor."));
    780     m_pGraphicsControllerLabel->setText(tr("&Graphics Controller:"));
    781     m_pGraphicsControllerEditor->setWhatsThis(tr("Selects the graphics adapter type the virtual machine will use."));
    782     m_pLabelVideoOptions->setText(tr("Acceleration:"));
     776    m_pLabelVideoMemorySize->setText(tr("Video &Memory:"));
     777    m_pEditorVideoMemorySize->setWhatsThis(tr("Controls the amount of video memory provided to the virtual machine."));
     778    m_pLabelMonitorCount->setText(tr("Mo&nitor Count:"));
     779    m_pSliderMonitorCount->setWhatsThis(tr("Controls the amount of virtual monitors provided to the virtual machine."));
     780    m_pSpinboxMonitorCount->setWhatsThis(tr("Controls the amount of virtual monitors provided to the virtual machine."));
     781    m_pLabelScaleFactor->setText(tr("Scale &Factor:"));
     782    m_pEditorScaleFactor->setWhatsThis(tr("Controls the guest screen scale factor."));
     783    m_pLabelGraphicsController->setText(tr("&Graphics Controller:"));
     784    m_pEditorGraphicsController->setWhatsThis(tr("Selects the graphics adapter type the virtual machine will use."));
     785    m_pLabelAcceleration->setText(tr("Acceleration:"));
    783786    m_pCheckbox3D->setWhatsThis(tr("When checked, the virtual machine will be given access to the 3D graphics capabilities available on the host."));
    784787    m_pCheckbox3D->setText(tr("Enable &3D Acceleration"));
    785     m_pTabWidget->setTabText(m_pTabWidget->indexOf(m_pTabVideo), tr("&Screen"));
     788    m_pTabWidget->setTabText(m_pTabWidget->indexOf(m_pTabScreen), tr("&Screen"));
    786789    m_pCheckboxRemoteDisplay->setWhatsThis(tr("When checked, the VM will act as a Remote Desktop Protocol (RDP) server, allowing remote clients to connect and operate the VM (when it is running) using a standard RDP client."));
    787790    m_pCheckboxRemoteDisplay->setText(tr("&Enable Server"));
     
    796799    m_pCheckboxMultipleConn->setText(tr("&Allow Multiple Connections"));
    797800    m_pTabWidget->setTabText(m_pTabWidget->indexOf(m_pTabRemoteDisplay), tr("&Remote Display"));
    798     m_pCheckboxVideoCapture->setWhatsThis(tr("When checked, VirtualBox will record the virtual machine session as a video file."));
    799     m_pCheckboxVideoCapture->setText(tr("&Enable Recording"));
    800     m_pLabelCaptureMode->setText(tr("Recording &Mode:"));
    801     m_pComboBoxCaptureMode->setWhatsThis(tr("Selects the recording mode."));
    802     m_pLabelVideoCapturePath->setText(tr("File &Path:"));
    803     m_pEditorVideoCapturePath->setWhatsThis(tr("Holds the filename VirtualBox uses to save the recorded content."));
    804     m_pLabelVideoCaptureSize->setText(tr("Frame &Size:"));
    805     m_pComboVideoCaptureSize->setWhatsThis(tr("Selects the resolution (frame size) of the recorded video."));
    806     m_pEditorVideoCaptureWidth->setWhatsThis(tr("Holds the <b>horizontal</b> resolution (frame width) of the recorded video."));
    807     m_pEditorVideoCaptureHeight->setWhatsThis(tr("Holds the <b>vertical</b> resolution (frame height) of the recorded video."));
    808     m_pLabelVideoCaptureFrameRate->setText(tr("&Frame Rate:"));
    809     m_pSliderVideoCaptureFrameRate->setWhatsThis(tr("Controls the maximum number of <b>frames per second</b>. Additional frames will be skipped. Reducing this value will increase the number of skipped frames and reduce the file size."));
    810     m_pEditorVideoCaptureFrameRate->setWhatsThis(tr("Controls the maximum number of <b>frames per second</b>. Additional frames will be skipped. Reducing this value will increase the number of skipped frames and reduce the file size."));
    811     m_pLabelVideoCaptureRate->setText(tr("&Video Quality:"));
    812     m_pSliderVideoCaptureQuality->setWhatsThis(tr("Controls the <b>quality</b>. Increasing this value will make the video look better at the cost of an increased file size."));
    813     m_pEditorVideoCaptureBitRate->setWhatsThis(tr("Holds the bitrate in <b>kilobits per second</b>. Increasing this value will make the video look better at the cost of an increased file size."));
    814     m_pAudioCaptureQualityLabel->setText(tr("&Audio Quality:"));
    815     m_pSliderAudioCaptureQuality->setWhatsThis(tr("Controls the <b>quality</b>. Increasing this value will make the audio sound better at the cost of an increased file size."));
    816     m_pLabelVideoCaptureScreens->setText(tr("&Screens:"));
    817     m_pScrollerVideoCaptureScreens->setWhatsThis(QString());
    818     m_pTabWidget->setTabText(m_pTabWidget->indexOf(m_pTabVideoCapture), tr("Re&cording"));
     801    m_pCheckboxRecording->setWhatsThis(tr("When checked, VirtualBox will record the virtual machine session as a video file."));
     802    m_pCheckboxRecording->setText(tr("&Enable Recording"));
     803    m_pLabelRecordingMode->setText(tr("Recording &Mode:"));
     804    m_pComboRecordingMode->setWhatsThis(tr("Selects the recording mode."));
     805    m_pLabelRecordingFilePath->setText(tr("File &Path:"));
     806    m_pEditorRecordingFilePath->setWhatsThis(tr("Holds the filename VirtualBox uses to save the recorded content."));
     807    m_pLabelRecordingFrameSize->setText(tr("Frame Si&ze:"));
     808    m_pComboRecordingFrameSize->setWhatsThis(tr("Selects the resolution (frame size) of the recorded video."));
     809    m_pSpinboxRecordingFrameWidth->setWhatsThis(tr("Holds the <b>horizontal</b> resolution (frame width) of the recorded video."));
     810    m_pSpinboxRecordingFrameHeight->setWhatsThis(tr("Holds the <b>vertical</b> resolution (frame height) of the recorded video."));
     811    m_pLabelRecordingFrameRate->setText(tr("Frame R&ate:"));
     812    m_pSliderRecordingFrameRate->setWhatsThis(tr("Controls the maximum number of <b>frames per second</b>. Additional frames will be skipped. Reducing this value will increase the number of skipped frames and reduce the file size."));
     813    m_pSpinboxRecordingFrameRate->setWhatsThis(tr("Controls the maximum number of <b>frames per second</b>. Additional frames will be skipped. Reducing this value will increase the number of skipped frames and reduce the file size."));
     814    m_pLabelRecordingVideoQuality->setText(tr("&Video Quality:"));
     815    m_pSliderRecordingVideoQuality->setWhatsThis(tr("Controls the <b>quality</b>. Increasing this value will make the video look better at the cost of an increased file size."));
     816    m_pSpinboxRecordingVideoQuality->setWhatsThis(tr("Holds the bitrate in <b>kilobits per second</b>. Increasing this value will make the video look better at the cost of an increased file size."));
     817    m_pLabelRecordingAudioQuality->setText(tr("&Audio Quality:"));
     818    m_pSliderRecordingAudioQuality->setWhatsThis(tr("Controls the <b>quality</b>. Increasing this value will make the audio sound better at the cost of an increased file size."));
     819    m_pLabelRecordingScreens->setText(tr("Scree&ns:"));
     820    m_pScrollerRecordingScreens->setWhatsThis(QString());
     821    m_pTabWidget->setTabText(m_pTabWidget->indexOf(m_pTabRecording), tr("Re&cording"));
    819822
    820823
    821824    /* Screen stuff: */
    822825    CSystemProperties sys = uiCommon().virtualBox().GetSystemProperties();
    823     m_pLabelVideoScreenCountMin->setText(QString::number(1));
    824     m_pLabelVideoScreenCountMax->setText(QString::number(qMin(sys.GetMaxGuestMonitors(), (ULONG)8)));
    825 
    826     /* Remote Display stuff: */
    827     m_pComboRemoteDisplayAuthMethod->setItemText(0, gpConverter->toString(KAuthType_Null));
    828     m_pComboRemoteDisplayAuthMethod->setItemText(1, gpConverter->toString(KAuthType_External));
    829     m_pComboRemoteDisplayAuthMethod->setItemText(2, gpConverter->toString(KAuthType_Guest));
     826    m_pLabelMonitorCountMin->setText(QString::number(1));
     827    m_pLabelMonitorCountMax->setText(QString::number(qMin(sys.GetMaxGuestMonitors(), (ULONG)8)));
     828
     829    /* Translate Remote Display auth method combo: */
     830    AssertPtrReturnVoid(m_pComboRemoteDisplayAuthMethod);
     831    for (int iIndex = 0; iIndex < m_pComboRemoteDisplayAuthMethod->count(); ++iIndex)
     832    {
     833        const KAuthType enmType = m_pComboRemoteDisplayAuthMethod->currentData().value<KAuthType>();
     834        m_pComboRemoteDisplayAuthMethod->setItemText(iIndex, gpConverter->toString(enmType));
     835    }
    830836
    831837    /* Recording stuff: */
    832     m_pEditorVideoCaptureFrameRate->setSuffix(QString(" %1").arg(tr("fps")));
    833     m_pEditorVideoCaptureBitRate->setSuffix(QString(" %1").arg(tr("kbps")));
    834     m_pComboVideoCaptureSize->setItemText(0, tr("User Defined"));
    835     m_pLabelVideoCaptureFrameRateMin->setText(tr("%1 fps").arg(m_pSliderVideoCaptureFrameRate->minimum()));
    836     m_pLabelVideoCaptureFrameRateMax->setText(tr("%1 fps").arg(m_pSliderVideoCaptureFrameRate->maximum()));
    837     m_pLabelVideoCaptureQualityMin->setText(tr("low", "quality"));
    838     m_pLabelVideoCaptureQualityMed->setText(tr("medium", "quality"));
    839     m_pLabelVideoCaptureQualityMax->setText(tr("high", "quality"));
    840     m_pLabelAudioCaptureQualityMin->setText(tr("low", "quality"));
    841     m_pLabelAudioCaptureQualityMed->setText(tr("medium", "quality"));
    842     m_pLabelAudioCaptureQualityMax->setText(tr("high", "quality"));
    843 
    844     m_pComboBoxCaptureMode->setItemText(0, gpConverter->toString(UISettingsDefs::RecordingMode_VideoAudio));
    845     m_pComboBoxCaptureMode->setItemText(1, gpConverter->toString(UISettingsDefs::RecordingMode_VideoOnly));
    846     m_pComboBoxCaptureMode->setItemText(2, gpConverter->toString(UISettingsDefs::RecordingMode_AudioOnly));
     838    m_pSpinboxRecordingFrameRate->setSuffix(QString(" %1").arg(tr("fps")));
     839    m_pSpinboxRecordingVideoQuality->setSuffix(QString(" %1").arg(tr("kbps")));
     840    m_pComboRecordingFrameSize->setItemText(0, tr("User Defined"));
     841    m_pLabelRecordingFrameRateMin->setText(tr("%1 fps").arg(m_pSliderRecordingFrameRate->minimum()));
     842    m_pLabelRecordingFrameRateMax->setText(tr("%1 fps").arg(m_pSliderRecordingFrameRate->maximum()));
     843    m_pLabelRecordingVideoQualityMin->setText(tr("low", "quality"));
     844    m_pLabelRecordingVideoQualityMed->setText(tr("medium", "quality"));
     845    m_pLabelRecordingVideoQualityMax->setText(tr("high", "quality"));
     846    m_pLabelRecordingAudioQualityMin->setText(tr("low", "quality"));
     847    m_pLabelRecordingAudioQualityMed->setText(tr("medium", "quality"));
     848    m_pLabelRecordingAudioQualityMax->setText(tr("high", "quality"));
     849
     850    m_pComboRecordingMode->setItemText(0, gpConverter->toString(UISettingsDefs::RecordingMode_VideoAudio));
     851    m_pComboRecordingMode->setItemText(1, gpConverter->toString(UISettingsDefs::RecordingMode_VideoOnly));
     852    m_pComboRecordingMode->setItemText(2, gpConverter->toString(UISettingsDefs::RecordingMode_AudioOnly));
    847853
    848854    updateRecordingFileSizeHint();
     
    855861
    856862    /* Polish 'Screen' availability: */
    857     m_pVideoMemoryLabel->setEnabled(isMachineOffline());
    858     m_pVideoMemoryEditor->setEnabled(isMachineOffline());
    859     m_pLabelVideoScreenCount->setEnabled(isMachineOffline());
    860     m_pSliderVideoScreenCount->setEnabled(isMachineOffline());
    861     m_pLabelVideoScreenCountMin->setEnabled(isMachineOffline());
    862     m_pLabelVideoScreenCountMax->setEnabled(isMachineOffline());
    863     m_pEditorVideoScreenCount->setEnabled(isMachineOffline());
    864     m_pScaleFactorEditor->setEnabled(isMachineInValidMode());
    865     m_pGraphicsControllerLabel->setEnabled(isMachineOffline());
    866     m_pGraphicsControllerEditor->setEnabled(isMachineOffline());
    867     m_pLabelVideoOptions->setEnabled(isMachineOffline());
     863    m_pLabelVideoMemorySize->setEnabled(isMachineOffline());
     864    m_pEditorVideoMemorySize->setEnabled(isMachineOffline());
     865    m_pLabelMonitorCount->setEnabled(isMachineOffline());
     866    m_pSliderMonitorCount->setEnabled(isMachineOffline());
     867    m_pLabelMonitorCountMin->setEnabled(isMachineOffline());
     868    m_pLabelMonitorCountMax->setEnabled(isMachineOffline());
     869    m_pSpinboxMonitorCount->setEnabled(isMachineOffline());
     870    m_pEditorScaleFactor->setEnabled(isMachineInValidMode());
     871    m_pLabelGraphicsController->setEnabled(isMachineOffline());
     872    m_pEditorGraphicsController->setEnabled(isMachineOffline());
     873    m_pLabelAcceleration->setEnabled(isMachineOffline());
    868874#ifdef VBOX_WITH_3D_ACCELERATION
    869875    m_pCheckbox3D->setEnabled(isMachineOffline());
     
    874880    /* Polish 'Remote Display' availability: */
    875881    m_pTabWidget->setTabEnabled(1, oldDisplayData.m_fRemoteDisplayServerSupported);
    876     m_pContainerRemoteDisplay->setEnabled(isMachineInValidMode());
    877     m_pContainerRemoteDisplayOptions->setEnabled(m_pCheckboxRemoteDisplay->isChecked());
     882    m_pTabRemoteDisplay->setEnabled(isMachineInValidMode());
     883    m_pWidgetRemoteDisplaySettings->setEnabled(m_pCheckboxRemoteDisplay->isChecked());
    878884    m_pLabelRemoteDisplayOptions->setEnabled(isMachineOffline() || isMachineSaved());
    879885    m_pCheckboxMultipleConn->setEnabled(isMachineOffline() || isMachineSaved());
    880886
    881887    /* Polish 'Recording' availability: */
    882     m_pContainerVideoCapture->setEnabled(isMachineInValidMode());
     888    m_pWidgetRecordingSettings->setEnabled(isMachineInValidMode());
    883889    sltHandleRecordingCheckboxToggle();
    884890}
     
    887893{
    888894    /* Apply proposed screen-count: */
    889     m_pEditorVideoScreenCount->blockSignals(true);
    890     m_pEditorVideoScreenCount->setValue(m_pSliderVideoScreenCount->value());
    891     m_pEditorVideoScreenCount->blockSignals(false);
     895    m_pSpinboxMonitorCount->blockSignals(true);
     896    m_pSpinboxMonitorCount->setValue(m_pSliderMonitorCount->value());
     897    m_pSpinboxMonitorCount->blockSignals(false);
    892898
    893899    /* Update Video RAM requirements: */
    894     m_pVideoMemoryEditor->setGuestScreenCount(m_pSliderVideoScreenCount->value());
     900    m_pEditorVideoMemorySize->setGuestScreenCount(m_pSliderMonitorCount->value());
    895901
    896902    /* Update recording tab screen count: */
     
    904910{
    905911    /* Apply proposed screen-count: */
    906     m_pSliderVideoScreenCount->blockSignals(true);
    907     m_pSliderVideoScreenCount->setValue(m_pEditorVideoScreenCount->value());
    908     m_pSliderVideoScreenCount->blockSignals(false);
     912    m_pSliderMonitorCount->blockSignals(true);
     913    m_pSliderMonitorCount->setValue(m_pSpinboxMonitorCount->value());
     914    m_pSliderMonitorCount->blockSignals(false);
    909915
    910916    /* Update Video RAM requirements: */
    911     m_pVideoMemoryEditor->setGuestScreenCount(m_pEditorVideoScreenCount->value());
     917    m_pEditorVideoMemorySize->setGuestScreenCount(m_pSpinboxMonitorCount->value());
    912918
    913919    /* Update recording tab screen count: */
     
    921927{
    922928    /* Update Video RAM requirements: */
    923     m_pVideoMemoryEditor->setGraphicsControllerType(m_pGraphicsControllerEditor->value());
     929    m_pEditorVideoMemorySize->setGraphicsControllerType(m_pEditorGraphicsController->value());
    924930
    925931    /* Revalidate: */
     
    931937{
    932938    /* Update Video RAM requirements: */
    933     m_pVideoMemoryEditor->set3DAccelerationEnabled(m_pCheckbox3D->isChecked());
     939    m_pEditorVideoMemorySize->set3DAccelerationEnabled(m_pCheckbox3D->isChecked());
    934940
    935941    /* Revalidate: */
     
    943949     * 1. Machine is in 'offline' or 'saved' state and check-box is checked,
    944950     * 2. Machine is in 'online' state, check-box is checked, and video recording is *disabled* currently. */
    945     const bool fIsRecordingOptionsEnabled = ((isMachineOffline() || isMachineSaved()) && m_pCheckboxVideoCapture->isChecked()) ||
    946                                                (isMachineOnline() && !m_pCache->base().m_fRecordingEnabled && m_pCheckboxVideoCapture->isChecked());
    947 
    948     m_pLabelCaptureMode->setEnabled(fIsRecordingOptionsEnabled);
    949     m_pComboBoxCaptureMode->setEnabled(fIsRecordingOptionsEnabled);
    950 
    951     m_pLabelVideoCapturePath->setEnabled(fIsRecordingOptionsEnabled);
    952     m_pEditorVideoCapturePath->setEnabled(fIsRecordingOptionsEnabled);
     951    const bool fIsRecordingOptionsEnabled = ((isMachineOffline() || isMachineSaved()) && m_pCheckboxRecording->isChecked()) ||
     952                                               (isMachineOnline() && !m_pCache->base().m_fRecordingEnabled && m_pCheckboxRecording->isChecked());
     953
     954    m_pLabelRecordingMode->setEnabled(fIsRecordingOptionsEnabled);
     955    m_pComboRecordingMode->setEnabled(fIsRecordingOptionsEnabled);
     956
     957    m_pLabelRecordingFilePath->setEnabled(fIsRecordingOptionsEnabled);
     958    m_pEditorRecordingFilePath->setEnabled(fIsRecordingOptionsEnabled);
    953959
    954960    enableDisableRecordingWidgets();
     
    958964{
    959965    /* Get the proposed size: */
    960     const int iCurrentIndex = m_pComboVideoCaptureSize->currentIndex();
    961     const QSize videoCaptureSize = m_pComboVideoCaptureSize->itemData(iCurrentIndex).toSize();
     966    const int iCurrentIndex = m_pComboRecordingFrameSize->currentIndex();
     967    const QSize videoCaptureSize = m_pComboRecordingFrameSize->itemData(iCurrentIndex).toSize();
    962968
    963969    /* Make sure its valid: */
     
    966972
    967973    /* Apply proposed size: */
    968     m_pEditorVideoCaptureWidth->setValue(videoCaptureSize.width());
    969     m_pEditorVideoCaptureHeight->setValue(videoCaptureSize.height());
     974    m_pSpinboxRecordingFrameWidth->setValue(videoCaptureSize.width());
     975    m_pSpinboxRecordingFrameHeight->setValue(videoCaptureSize.height());
    970976}
    971977
     
    989995{
    990996    /* Apply proposed frame-rate: */
    991     m_pEditorVideoCaptureFrameRate->blockSignals(true);
    992     m_pEditorVideoCaptureFrameRate->setValue(m_pSliderVideoCaptureFrameRate->value());
    993     m_pEditorVideoCaptureFrameRate->blockSignals(false);
     997    m_pSpinboxRecordingFrameRate->blockSignals(true);
     998    m_pSpinboxRecordingFrameRate->setValue(m_pSliderRecordingFrameRate->value());
     999    m_pSpinboxRecordingFrameRate->blockSignals(false);
    9941000    /* Update quality and bit-rate: */
    9951001    sltHandleRecordingVideoQualitySliderChange();
     
    9991005{
    10001006    /* Apply proposed frame-rate: */
    1001     m_pSliderVideoCaptureFrameRate->blockSignals(true);
    1002     m_pSliderVideoCaptureFrameRate->setValue(m_pEditorVideoCaptureFrameRate->value());
    1003     m_pSliderVideoCaptureFrameRate->blockSignals(false);
     1007    m_pSliderRecordingFrameRate->blockSignals(true);
     1008    m_pSliderRecordingFrameRate->setValue(m_pSpinboxRecordingFrameRate->value());
     1009    m_pSliderRecordingFrameRate->blockSignals(false);
    10041010    /* Update quality and bit-rate: */
    10051011    sltHandleRecordingVideoQualitySliderChange();
     
    10091015{
    10101016    /* Calculate/apply proposed bit-rate: */
    1011     m_pEditorVideoCaptureBitRate->blockSignals(true);
    1012     m_pEditorVideoCaptureBitRate->setValue(calculateBitRate(m_pEditorVideoCaptureWidth->value(),
    1013                                                             m_pEditorVideoCaptureHeight->value(),
    1014                                                             m_pEditorVideoCaptureFrameRate->value(),
    1015                                                             m_pSliderVideoCaptureQuality->value()));
    1016     m_pEditorVideoCaptureBitRate->blockSignals(false);
     1017    m_pSpinboxRecordingVideoQuality->blockSignals(true);
     1018    m_pSpinboxRecordingVideoQuality->setValue(calculateBitRate(m_pSpinboxRecordingFrameWidth->value(),
     1019                                                            m_pSpinboxRecordingFrameHeight->value(),
     1020                                                            m_pSpinboxRecordingFrameRate->value(),
     1021                                                            m_pSliderRecordingVideoQuality->value()));
     1022    m_pSpinboxRecordingVideoQuality->blockSignals(false);
    10171023    updateRecordingFileSizeHint();
    10181024}
     
    10211027{
    10221028    /* Calculate/apply proposed quality: */
    1023     m_pSliderVideoCaptureQuality->blockSignals(true);
    1024     m_pSliderVideoCaptureQuality->setValue(calculateQuality(m_pEditorVideoCaptureWidth->value(),
    1025                                                             m_pEditorVideoCaptureHeight->value(),
    1026                                                             m_pEditorVideoCaptureFrameRate->value(),
    1027                                                             m_pEditorVideoCaptureBitRate->value()));
    1028     m_pSliderVideoCaptureQuality->blockSignals(false);
     1029    m_pSliderRecordingVideoQuality->blockSignals(true);
     1030    m_pSliderRecordingVideoQuality->setValue(calculateQuality(m_pSpinboxRecordingFrameWidth->value(),
     1031                                                            m_pSpinboxRecordingFrameHeight->value(),
     1032                                                            m_pSpinboxRecordingFrameRate->value(),
     1033                                                            m_pSpinboxRecordingVideoQuality->value()));
     1034    m_pSliderRecordingVideoQuality->blockSignals(false);
    10291035    updateRecordingFileSizeHint();
    10301036}
     
    10371043void UIMachineSettingsDisplay::prepare()
    10381044{
    1039     prepareWidgets();
    1040 
    10411045    /* Prepare cache: */
    10421046    m_pCache = new UISettingsCacheMachineDisplay;
    10431047    AssertPtrReturnVoid(m_pCache);
    10441048
    1045     /* Tree-widget created in the .ui file. */
    1046     {
    1047         /* Prepare 'Screen' tab: */
    1048         prepareTabScreen();
    1049         /* Prepare 'Remote Display' tab: */
    1050         prepareTabRemoteDisplay();
    1051         /* Prepare 'Recording' tab: */
    1052         prepareTabRecording();
    1053         /* Prepare connections: */
    1054         prepareConnections();
    1055     }
     1049    /* Prepare widgets: */
     1050    prepareWidgets();
    10561051
    10571052    /* Apply language settings: */
     
    10591054}
    10601055
     1056void UIMachineSettingsDisplay::prepareWidgets()
     1057{
     1058    /* Prepare main layout: */
     1059    QVBoxLayout *pLayoutMain = new QVBoxLayout(this);
     1060    if (pLayoutMain)
     1061    {
     1062        /* Prepare tab-widget: */
     1063        m_pTabWidget = new QITabWidget(this);
     1064        if (m_pTabWidget)
     1065        {
     1066            /* Prepare each tab separately: */
     1067            prepareTabScreen();
     1068            prepareTabRemoteDisplay();
     1069            prepareTabRecording();
     1070            prepareConnections();
     1071
     1072            pLayoutMain->addWidget(m_pTabWidget);
     1073        }
     1074    }
     1075}
     1076
    10611077void UIMachineSettingsDisplay::prepareTabScreen()
    10621078{
    10631079    /* Prepare common variables: */
    1064     const CSystemProperties sys = uiCommon().virtualBox().GetSystemProperties();
    1065 
    1066     /* Tab and it's layout created in the .ui file. */
    1067     {
    1068         /* Video-memory label and editor created in the .ui file. */
    1069         AssertPtrReturnVoid(m_pVideoMemoryLabel);
    1070         AssertPtrReturnVoid(m_pVideoMemoryEditor);
     1080    const CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     1081
     1082    /* Prepare Screen tab: */
     1083    m_pTabScreen = new QWidget;
     1084    if (m_pTabScreen)
     1085    {
     1086        /* Prepare Screen tab layout: */
     1087        QGridLayout *pLayoutScreen = new QGridLayout(m_pTabScreen);
     1088        if (pLayoutScreen)
    10711089        {
    1072             /* Configure label & editor: */
    1073             m_pVideoMemoryLabel->setBuddy(m_pVideoMemoryEditor->focusProxy());
     1090            pLayoutScreen->setRowStretch(8, 1);
     1091
     1092            /* Prepare video memory label: */
     1093            m_pLabelVideoMemorySize = new QLabel(m_pTabScreen);
     1094            if (m_pLabelVideoMemorySize)
     1095            {
     1096                m_pLabelVideoMemorySize->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1097                pLayoutScreen->addWidget(m_pLabelVideoMemorySize, 0, 0);
     1098            }
     1099            /* Prepare video memory editor: */
     1100            m_pEditorVideoMemorySize = new UIVideoMemoryEditor(m_pTabScreen);
     1101            if (m_pEditorVideoMemorySize)
     1102            {
     1103                m_pLabelVideoMemorySize->setBuddy(m_pEditorVideoMemorySize->focusProxy());
     1104                pLayoutScreen->addWidget(m_pEditorVideoMemorySize, 0, 1, 2, 2);
     1105            }
     1106
     1107            /* Prepare monitor count label: */
     1108            m_pLabelMonitorCount = new QLabel(m_pTabScreen);
     1109            if (m_pLabelMonitorCount)
     1110            {
     1111                m_pLabelMonitorCount->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1112                pLayoutScreen->addWidget(m_pLabelMonitorCount, 2, 0);
     1113            }
     1114            /* Prepare monitor count layout: */
     1115            QVBoxLayout *pLayoutMonitorCount = new QVBoxLayout;
     1116            if (pLayoutMonitorCount)
     1117            {
     1118                pLayoutMonitorCount->setContentsMargins(0, 0, 0, 0);
     1119
     1120                /* Prepare monitor count slider: */
     1121                m_pSliderMonitorCount = new QIAdvancedSlider(m_pTabScreen);
     1122                if (m_pSliderMonitorCount)
     1123                {
     1124                    const uint cHostScreens = gpDesktop->screenCount();
     1125                    const uint cMinGuestScreens = 1;
     1126                    const uint cMaxGuestScreens = comProperties.GetMaxGuestMonitors();
     1127                    const uint cMaxGuestScreensForSlider = qMin(cMaxGuestScreens, (uint)8);
     1128                    m_pSliderMonitorCount->setOrientation(Qt::Horizontal);
     1129                    m_pSliderMonitorCount->setMinimum(cMinGuestScreens);
     1130                    m_pSliderMonitorCount->setMaximum(cMaxGuestScreensForSlider);
     1131                    m_pSliderMonitorCount->setPageStep(1);
     1132                    m_pSliderMonitorCount->setSingleStep(1);
     1133                    m_pSliderMonitorCount->setTickInterval(1);
     1134                    m_pSliderMonitorCount->setOptimalHint(cMinGuestScreens, cHostScreens);
     1135                    m_pSliderMonitorCount->setWarningHint(cHostScreens, cMaxGuestScreensForSlider);
     1136
     1137                    pLayoutMonitorCount->addWidget(m_pSliderMonitorCount);
     1138                }
     1139                /* Prepare monitor count scale layout: */
     1140                QHBoxLayout *pLayoutMonitorCountScale = new QHBoxLayout;
     1141                if (pLayoutMonitorCountScale)
     1142                {
     1143                    pLayoutMonitorCountScale->setContentsMargins(0, 0, 0, 0);
     1144
     1145                    /* Prepare monitor count min label: */
     1146                    m_pLabelMonitorCountMin = new QLabel(m_pTabScreen);
     1147                    if (m_pLabelMonitorCountMin)
     1148                        pLayoutMonitorCountScale->addWidget(m_pLabelMonitorCountMin);
     1149                    pLayoutMonitorCountScale->addStretch();
     1150                    /* Prepare monitor count max label: */
     1151                    m_pLabelMonitorCountMax = new QLabel(m_pTabScreen);
     1152                    if (m_pLabelMonitorCountMax)
     1153                        pLayoutMonitorCountScale->addWidget(m_pLabelMonitorCountMax);
     1154
     1155                    pLayoutMonitorCount->addLayout(pLayoutMonitorCountScale);
     1156                }
     1157
     1158                pLayoutScreen->addLayout(pLayoutMonitorCount, 2, 1, 2, 1);
     1159            }
     1160            /* Prepare monitor count spinbox: */
     1161            m_pSpinboxMonitorCount = new QSpinBox(m_pTabScreen);
     1162            if (m_pSpinboxMonitorCount)
     1163            {
     1164                m_pLabelMonitorCount->setBuddy(m_pSpinboxMonitorCount);
     1165                m_pSpinboxMonitorCount->setMinimum(1);
     1166                m_pSpinboxMonitorCount->setMaximum(comProperties.GetMaxGuestMonitors());
     1167
     1168                pLayoutScreen->addWidget(m_pSpinboxMonitorCount, 2, 2);
     1169            }
     1170
     1171            /* Prepare scale factor label: */
     1172            m_pLabelScaleFactor = new QLabel(m_pTabScreen);
     1173            if (m_pLabelScaleFactor)
     1174            {
     1175                m_pLabelScaleFactor->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1176                pLayoutScreen->addWidget(m_pLabelScaleFactor, 4, 0);
     1177            }
     1178            /* Prepare scale factor editor: */
     1179            m_pEditorScaleFactor = new UIScaleFactorEditor(m_pTabScreen);
     1180            if (m_pEditorScaleFactor)
     1181            {
     1182                m_pLabelScaleFactor->setBuddy(m_pEditorScaleFactor->focusProxy());
     1183                pLayoutScreen->addWidget(m_pEditorScaleFactor, 4, 1, 2, 2);
     1184            }
     1185
     1186            /* Prepare graphics controller label: */
     1187            m_pLabelGraphicsController = new QLabel(m_pTabScreen);
     1188            if (m_pLabelGraphicsController)
     1189            {
     1190                m_pLabelGraphicsController->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1191                pLayoutScreen->addWidget(m_pLabelGraphicsController, 6, 0);
     1192            }
     1193            /* Prepare graphics controller editor: */
     1194            m_pEditorGraphicsController = new UIGraphicsControllerEditor(m_pTabScreen);
     1195            if (m_pEditorGraphicsController)
     1196            {
     1197                m_pLabelGraphicsController->setBuddy(m_pEditorGraphicsController->focusProxy());
     1198                pLayoutScreen->addWidget(m_pEditorGraphicsController, 6, 1, 1, 2);
     1199            }
     1200
     1201            /* Prepare acceleration label: */
     1202            m_pLabelAcceleration = new QLabel(m_pTabScreen);
     1203            if (m_pLabelAcceleration)
     1204            {
     1205                m_pLabelAcceleration->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1206                pLayoutScreen->addWidget(m_pLabelAcceleration, 7, 0);
     1207            }
     1208            /* Prepare 3D checkbox: */
     1209            m_pCheckbox3D = new QCheckBox(m_pTabScreen);
     1210            if (m_pCheckbox3D)
     1211                pLayoutScreen->addWidget(m_pCheckbox3D, 7, 1);
    10741212        }
    10751213
    1076         /* Screen-count slider created in the .ui file. */
    1077         AssertPtrReturnVoid(m_pSliderVideoScreenCount);
     1214        m_pTabWidget->addTab(m_pTabScreen, QString());
     1215    }
     1216}
     1217
     1218void UIMachineSettingsDisplay::prepareTabRemoteDisplay()
     1219{
     1220    /* Prepare Remote Display tab: */
     1221    m_pTabRemoteDisplay = new QWidget;
     1222    if (m_pTabRemoteDisplay)
     1223    {
     1224        /* Prepare Remote Display tab layout: */
     1225        QGridLayout *pLayoutTabRemoteDisplay = new QGridLayout(m_pTabRemoteDisplay);
     1226        if (pLayoutTabRemoteDisplay)
    10781227        {
    1079             /* Configure slider: */
    1080             const uint cHostScreens = gpDesktop->screenCount();
    1081             const uint cMinGuestScreens = 1;
    1082             const uint cMaxGuestScreens = sys.GetMaxGuestMonitors();
    1083             const uint cMaxGuestScreensForSlider = qMin(cMaxGuestScreens, (uint)8);
    1084             m_pSliderVideoScreenCount->setMinimum(cMinGuestScreens);
    1085             m_pSliderVideoScreenCount->setMaximum(cMaxGuestScreensForSlider);
    1086             m_pSliderVideoScreenCount->setPageStep(1);
    1087             m_pSliderVideoScreenCount->setSingleStep(1);
    1088             m_pSliderVideoScreenCount->setTickInterval(1);
    1089             m_pSliderVideoScreenCount->setOptimalHint(cMinGuestScreens, cHostScreens);
    1090             m_pSliderVideoScreenCount->setWarningHint(cHostScreens, cMaxGuestScreensForSlider);
     1228            pLayoutTabRemoteDisplay->setRowStretch(2, 1);
     1229
     1230            /* Prepare remote display check-box: */
     1231            m_pCheckboxRemoteDisplay = new QCheckBox(m_pTabRemoteDisplay);
     1232            if (m_pCheckboxRemoteDisplay)
     1233                pLayoutTabRemoteDisplay->addWidget(m_pCheckboxRemoteDisplay, 0, 0, 1, 2);
     1234
     1235            /* Prepare 20-px shifting spacer: */
     1236            QSpacerItem *pSpacerItem = new QSpacerItem(20, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
     1237            if (pSpacerItem)
     1238                pLayoutTabRemoteDisplay->addItem(pSpacerItem, 1, 0);
     1239
     1240            /* Prepare remote display settings widget: */
     1241            m_pWidgetRemoteDisplaySettings = new QWidget(m_pTabRemoteDisplay);
     1242            if (m_pWidgetRemoteDisplaySettings)
     1243            {
     1244                /* Prepare remote display settings widget layout: */
     1245                QGridLayout *pLayoutRemoteDisplaySettings = new QGridLayout(m_pWidgetRemoteDisplaySettings);
     1246                if (pLayoutRemoteDisplaySettings)
     1247                {
     1248                    pLayoutRemoteDisplaySettings->setContentsMargins(0, 0, 0, 0);
     1249
     1250                    /* Prepare remote display port label: */
     1251                    m_pLabelRemoteDisplayPort = new QLabel(m_pWidgetRemoteDisplaySettings);
     1252                    if (m_pLabelRemoteDisplayPort)
     1253                    {
     1254                        m_pLabelRemoteDisplayPort->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1255                        pLayoutRemoteDisplaySettings->addWidget(m_pLabelRemoteDisplayPort, 0, 0);
     1256                    }
     1257                    /* Prepare remote display port editor: */
     1258                    m_pEditorRemoteDisplayPort = new QLineEdit(m_pWidgetRemoteDisplaySettings);
     1259                    if (m_pEditorRemoteDisplayPort)
     1260                    {
     1261                        m_pLabelRemoteDisplayPort->setBuddy(m_pEditorRemoteDisplayPort);
     1262                        m_pEditorRemoteDisplayPort->setValidator(new QRegExpValidator(
     1263                            QRegExp("(([0-9]{1,5}(\\-[0-9]{1,5}){0,1}),)*([0-9]{1,5}(\\-[0-9]{1,5}){0,1})"), this));
     1264
     1265                        pLayoutRemoteDisplaySettings->addWidget(m_pEditorRemoteDisplayPort, 0, 1);
     1266                    }
     1267
     1268                    /* Prepare remote display auth method label: */
     1269                    m_pLabelRemoteDisplayAuthMethod = new QLabel(m_pWidgetRemoteDisplaySettings);
     1270                    if (m_pLabelRemoteDisplayAuthMethod)
     1271                    {
     1272                        m_pLabelRemoteDisplayAuthMethod->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1273                        pLayoutRemoteDisplaySettings->addWidget(m_pLabelRemoteDisplayAuthMethod, 1, 0);
     1274                    }
     1275                    /* Prepare remote display auth method combo: */
     1276                    m_pComboRemoteDisplayAuthMethod = new QComboBox(m_pWidgetRemoteDisplaySettings);
     1277                    if (m_pComboRemoteDisplayAuthMethod)
     1278                    {
     1279                        m_pLabelRemoteDisplayAuthMethod->setBuddy(m_pComboRemoteDisplayAuthMethod);
     1280                        m_pComboRemoteDisplayAuthMethod->setSizeAdjustPolicy(QComboBox::AdjustToContents);
     1281
     1282                        pLayoutRemoteDisplaySettings->addWidget(m_pComboRemoteDisplayAuthMethod, 1, 1);
     1283                    }
     1284
     1285                    /* Prepare remote display timeout label: */
     1286                    m_pLabelRemoteDisplayTimeout = new QLabel(m_pWidgetRemoteDisplaySettings);
     1287                    if (m_pLabelRemoteDisplayTimeout)
     1288                    {
     1289                        m_pLabelRemoteDisplayTimeout->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1290                        pLayoutRemoteDisplaySettings->addWidget(m_pLabelRemoteDisplayTimeout, 2, 0);
     1291                    }
     1292                    /* Prepare remote display timeout editor: */
     1293                    m_pEditorRemoteDisplayTimeout = new QLineEdit(m_pWidgetRemoteDisplaySettings);
     1294                    if (m_pEditorRemoteDisplayTimeout)
     1295                    {
     1296                        m_pLabelRemoteDisplayTimeout->setBuddy(m_pEditorRemoteDisplayTimeout);
     1297                        m_pEditorRemoteDisplayTimeout->setValidator(new QIntValidator(this));
     1298
     1299                        pLayoutRemoteDisplaySettings->addWidget(m_pEditorRemoteDisplayTimeout, 2, 1);
     1300                    }
     1301
     1302                    /* Prepare remote display options label: */
     1303                    m_pLabelRemoteDisplayOptions = new QLabel(m_pWidgetRemoteDisplaySettings);
     1304                    if (m_pLabelRemoteDisplayOptions)
     1305                    {
     1306                        m_pLabelRemoteDisplayOptions->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1307                        pLayoutRemoteDisplaySettings->addWidget(m_pLabelRemoteDisplayOptions, 3, 0);
     1308                    }
     1309                    /* Prepare remote display multiple connections check-box: */
     1310                    m_pCheckboxMultipleConn = new QCheckBox(m_pWidgetRemoteDisplaySettings);
     1311                    if (m_pCheckboxMultipleConn)
     1312                        pLayoutRemoteDisplaySettings->addWidget(m_pCheckboxMultipleConn, 3, 1);
     1313                }
     1314
     1315                pLayoutTabRemoteDisplay->addWidget(m_pWidgetRemoteDisplaySettings, 1, 1);
     1316            }
    10911317        }
    10921318
    1093         /* Screen-count editor created in the .ui file. */
    1094         AssertPtrReturnVoid(m_pEditorVideoScreenCount);
     1319        m_pTabWidget->addTab(m_pTabRemoteDisplay, QString());
     1320    }
     1321}
     1322
     1323void UIMachineSettingsDisplay::prepareTabRecording()
     1324{
     1325    /* Prepare Recording tab: */
     1326    m_pTabRecording = new QWidget;
     1327    if (m_pTabRecording)
     1328    {
     1329        /* Prepare Recording tab layout: */
     1330        QGridLayout *pLayoutRecording = new QGridLayout(m_pTabRecording);
     1331        if (pLayoutRecording)
    10951332        {
    1096             /* Configure editor: */
    1097             const uint cMaxGuestScreens = sys.GetMaxGuestMonitors();
    1098             m_pEditorVideoScreenCount->setMinimum(1);
    1099             m_pEditorVideoScreenCount->setMaximum(cMaxGuestScreens);
     1333            pLayoutRecording->setRowStretch(2, 1);
     1334
     1335            /* Prepare recording check-box: */
     1336            m_pCheckboxRecording = new QCheckBox(m_pWidgetRecordingSettings);
     1337            if (m_pCheckboxRecording)
     1338                pLayoutRecording->addWidget(m_pCheckboxRecording, 0, 0, 1, 2);
     1339
     1340            /* Prepare 20-px shifting spacer: */
     1341            QSpacerItem *pSpacerItem = new QSpacerItem(20, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
     1342            if (pSpacerItem)
     1343                pLayoutRecording->addItem(pSpacerItem, 1, 0);
     1344
     1345            /* Prepare recording settings widget: */
     1346            m_pWidgetRecordingSettings = new QWidget(m_pTabRecording);
     1347            if (m_pWidgetRecordingSettings)
     1348            {
     1349                /* Prepare recording settings widget layout: */
     1350                QGridLayout *pLayoutRecordingSettings = new QGridLayout(m_pWidgetRecordingSettings);
     1351                if (pLayoutRecordingSettings)
     1352                {
     1353                    pLayoutRecordingSettings->setContentsMargins(0, 0, 0, 0);
     1354
     1355                    /* Prepare recording mode label: */
     1356                    m_pLabelRecordingMode = new QLabel(m_pWidgetRecordingSettings);
     1357                    if (m_pLabelRecordingMode)
     1358                    {
     1359                        m_pLabelRecordingMode->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1360                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingMode, 0, 0);
     1361                    }
     1362                    /* Prepare recording mode combo: */
     1363                    m_pComboRecordingMode = new QComboBox(m_pWidgetRecordingSettings);
     1364                    if (m_pComboRecordingMode)
     1365                    {
     1366                        m_pLabelRecordingMode->setBuddy(m_pComboRecordingMode);
     1367                        m_pComboRecordingMode->insertItem(0, ""); /* UISettingsDefs::RecordingMode_VideoAudio */
     1368                        m_pComboRecordingMode->insertItem(1, ""); /* UISettingsDefs::RecordingMode_VideoOnly */
     1369                        m_pComboRecordingMode->insertItem(2, ""); /* UISettingsDefs::RecordingMode_AudioOnly */
     1370
     1371                        pLayoutRecordingSettings->addWidget(m_pComboRecordingMode, 0, 1, 1, 3);
     1372                    }
     1373
     1374                    /* Prepare recording file path label: */
     1375                    m_pLabelRecordingFilePath = new QLabel(m_pWidgetRecordingSettings);
     1376                    if (m_pLabelRecordingFilePath)
     1377                    {
     1378                        m_pLabelRecordingFilePath->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1379                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingFilePath, 1, 0);
     1380                    }
     1381                    /* Prepare recording file path editor: */
     1382                    m_pEditorRecordingFilePath = new UIFilePathSelector(m_pWidgetRecordingSettings);
     1383                    if (m_pEditorRecordingFilePath)
     1384                    {
     1385                        m_pLabelRecordingFilePath->setBuddy(m_pEditorRecordingFilePath->focusProxy());
     1386                        m_pEditorRecordingFilePath->setEditable(false);
     1387                        m_pEditorRecordingFilePath->setMode(UIFilePathSelector::Mode_File_Save);
     1388
     1389                        pLayoutRecordingSettings->addWidget(m_pEditorRecordingFilePath, 1, 1, 1, 3);
     1390                    }
     1391
     1392                    /* Prepare recording frame size label: */
     1393                    m_pLabelRecordingFrameSize = new QLabel(m_pWidgetRecordingSettings);
     1394                    if (m_pLabelRecordingFrameSize)
     1395                    {
     1396                        m_pLabelRecordingFrameSize->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1397                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingFrameSize, 2, 0);
     1398                    }
     1399                    /* Prepare recording frame size combo: */
     1400                    m_pComboRecordingFrameSize = new QComboBox(m_pWidgetRecordingSettings);
     1401                    if (m_pComboRecordingFrameSize)
     1402                    {
     1403                        m_pLabelRecordingFrameSize->setBuddy(m_pComboRecordingFrameSize);
     1404                        m_pComboRecordingFrameSize->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed));
     1405                        m_pComboRecordingFrameSize->addItem(""); /* User Defined */
     1406                        m_pComboRecordingFrameSize->addItem("320 x 200 (16:10)",   QSize(320, 200));
     1407                        m_pComboRecordingFrameSize->addItem("640 x 480 (4:3)",     QSize(640, 480));
     1408                        m_pComboRecordingFrameSize->addItem("720 x 400 (9:5)",     QSize(720, 400));
     1409                        m_pComboRecordingFrameSize->addItem("720 x 480 (3:2)",     QSize(720, 480));
     1410                        m_pComboRecordingFrameSize->addItem("800 x 600 (4:3)",     QSize(800, 600));
     1411                        m_pComboRecordingFrameSize->addItem("1024 x 768 (4:3)",    QSize(1024, 768));
     1412                        m_pComboRecordingFrameSize->addItem("1152 x 864 (4:3)",    QSize(1152, 864));
     1413                        m_pComboRecordingFrameSize->addItem("1280 x 720 (16:9)",   QSize(1280, 720));
     1414                        m_pComboRecordingFrameSize->addItem("1280 x 800 (16:10)",  QSize(1280, 800));
     1415                        m_pComboRecordingFrameSize->addItem("1280 x 960 (4:3)",    QSize(1280, 960));
     1416                        m_pComboRecordingFrameSize->addItem("1280 x 1024 (5:4)",   QSize(1280, 1024));
     1417                        m_pComboRecordingFrameSize->addItem("1366 x 768 (16:9)",   QSize(1366, 768));
     1418                        m_pComboRecordingFrameSize->addItem("1440 x 900 (16:10)",  QSize(1440, 900));
     1419                        m_pComboRecordingFrameSize->addItem("1440 x 1080 (4:3)",   QSize(1440, 1080));
     1420                        m_pComboRecordingFrameSize->addItem("1600 x 900 (16:9)",   QSize(1600, 900));
     1421                        m_pComboRecordingFrameSize->addItem("1680 x 1050 (16:10)", QSize(1680, 1050));
     1422                        m_pComboRecordingFrameSize->addItem("1600 x 1200 (4:3)",   QSize(1600, 1200));
     1423                        m_pComboRecordingFrameSize->addItem("1920 x 1080 (16:9)",  QSize(1920, 1080));
     1424                        m_pComboRecordingFrameSize->addItem("1920 x 1200 (16:10)", QSize(1920, 1200));
     1425                        m_pComboRecordingFrameSize->addItem("1920 x 1440 (4:3)",   QSize(1920, 1440));
     1426                        m_pComboRecordingFrameSize->addItem("2880 x 1800 (16:10)", QSize(2880, 1800));
     1427
     1428                        pLayoutRecordingSettings->addWidget(m_pComboRecordingFrameSize, 2, 1);
     1429                    }
     1430                    /* Prepare recording frame width spinbox: */
     1431                    m_pSpinboxRecordingFrameWidth = new QSpinBox(m_pWidgetRecordingSettings);
     1432                    if (m_pSpinboxRecordingFrameWidth)
     1433                    {
     1434                        uiCommon().setMinimumWidthAccordingSymbolCount(m_pSpinboxRecordingFrameWidth, 5);
     1435                        m_pSpinboxRecordingFrameWidth->setMinimum(16);
     1436                        m_pSpinboxRecordingFrameWidth->setMaximum(2880);
     1437
     1438                        pLayoutRecordingSettings->addWidget(m_pSpinboxRecordingFrameWidth, 2, 2);
     1439                    }
     1440                    /* Prepare recording frame height spinbox: */
     1441                    m_pSpinboxRecordingFrameHeight = new QSpinBox(m_pWidgetRecordingSettings);
     1442                    if (m_pSpinboxRecordingFrameHeight)
     1443                    {
     1444                        uiCommon().setMinimumWidthAccordingSymbolCount(m_pSpinboxRecordingFrameHeight, 5);
     1445                        m_pSpinboxRecordingFrameHeight->setMinimum(16);
     1446                        m_pSpinboxRecordingFrameHeight->setMaximum(1800);
     1447
     1448                        pLayoutRecordingSettings->addWidget(m_pSpinboxRecordingFrameHeight, 2, 3);
     1449                    }
     1450
     1451                    /* Prepare recording frame rate label: */
     1452                    m_pLabelRecordingFrameRate = new QLabel(m_pWidgetRecordingSettings);
     1453                    if (m_pLabelRecordingFrameRate)
     1454                    {
     1455                        m_pLabelRecordingFrameRate->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1456                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingFrameRate, 3, 0);
     1457                    }
     1458                    /* Prepare recording frame rate widget: */
     1459                    m_pWidgetRecordingFrameRateSettings = new QWidget(m_pWidgetRecordingSettings);
     1460                    if (m_pWidgetRecordingFrameRateSettings)
     1461                    {
     1462                        /* Prepare recording frame rate layout: */
     1463                        QVBoxLayout *pLayoutRecordingFrameRate = new QVBoxLayout(m_pWidgetRecordingFrameRateSettings);
     1464                        if (pLayoutRecordingFrameRate)
     1465                        {
     1466                            pLayoutRecordingFrameRate->setContentsMargins(0, 0, 0, 0);
     1467
     1468                            /* Prepare recording frame rate slider: */
     1469                            m_pSliderRecordingFrameRate = new QIAdvancedSlider(m_pWidgetRecordingFrameRateSettings);
     1470                            if (m_pSliderRecordingFrameRate)
     1471                            {
     1472                                m_pSliderRecordingFrameRate->setOrientation(Qt::Horizontal);
     1473                                m_pSliderRecordingFrameRate->setMinimum(1);
     1474                                m_pSliderRecordingFrameRate->setMaximum(30);
     1475                                m_pSliderRecordingFrameRate->setPageStep(1);
     1476                                m_pSliderRecordingFrameRate->setSingleStep(1);
     1477                                m_pSliderRecordingFrameRate->setTickInterval(1);
     1478                                m_pSliderRecordingFrameRate->setSnappingEnabled(true);
     1479                                m_pSliderRecordingFrameRate->setOptimalHint(1, 25);
     1480                                m_pSliderRecordingFrameRate->setWarningHint(25, 30);
     1481
     1482                                pLayoutRecordingFrameRate->addWidget(m_pSliderRecordingFrameRate);
     1483                            }
     1484                            /* Prepare recording frame rate scale layout: */
     1485                            QHBoxLayout *pLayoutRecordingFrameRateScale = new QHBoxLayout;
     1486                            if (pLayoutRecordingFrameRateScale)
     1487                            {
     1488                                pLayoutRecordingFrameRateScale->setContentsMargins(0, 0, 0, 0);
     1489
     1490                                /* Prepare recording frame rate min label: */
     1491                                m_pLabelRecordingFrameRateMin = new QLabel(m_pWidgetRecordingFrameRateSettings);
     1492                                if (m_pLabelRecordingFrameRateMin)
     1493                                    pLayoutRecordingFrameRateScale->addWidget(m_pLabelRecordingFrameRateMin);
     1494                                pLayoutRecordingFrameRateScale->addStretch();
     1495                                /* Prepare recording frame rate max label: */
     1496                                m_pLabelRecordingFrameRateMax = new QLabel(m_pWidgetRecordingFrameRateSettings);
     1497                                if (m_pLabelRecordingFrameRateMax)
     1498                                    pLayoutRecordingFrameRateScale->addWidget(m_pLabelRecordingFrameRateMax);
     1499
     1500                                pLayoutRecordingFrameRate->addLayout(pLayoutRecordingFrameRateScale);
     1501                            }
     1502                        }
     1503
     1504                        pLayoutRecordingSettings->addWidget(m_pWidgetRecordingFrameRateSettings, 3, 1, 2, 1);
     1505                    }
     1506                    /* Prepare recording frame rate spinbox: */
     1507                    m_pSpinboxRecordingFrameRate = new QSpinBox(m_pWidgetRecordingSettings);
     1508                    if (m_pSpinboxRecordingFrameRate)
     1509                    {
     1510                        m_pLabelRecordingFrameRate->setBuddy(m_pSpinboxRecordingFrameRate);
     1511                        uiCommon().setMinimumWidthAccordingSymbolCount(m_pSpinboxRecordingFrameRate, 3);
     1512                        m_pSpinboxRecordingFrameRate->setMinimum(1);
     1513                        m_pSpinboxRecordingFrameRate->setMaximum(30);
     1514
     1515                        pLayoutRecordingSettings->addWidget(m_pSpinboxRecordingFrameRate, 3, 2, 1, 2);
     1516                    }
     1517
     1518                    /* Prepare recording video quality label: */
     1519                    m_pLabelRecordingVideoQuality = new QLabel(m_pWidgetRecordingSettings);
     1520                    if (m_pLabelRecordingVideoQuality)
     1521                    {
     1522                        m_pLabelRecordingVideoQuality->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1523                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingVideoQuality, 5, 0);
     1524                    }
     1525                    /* Prepare recording video quality widget: */
     1526                    m_pWidgetRecordingVideoQualitySettings = new QWidget(m_pWidgetRecordingSettings);
     1527                    if (m_pWidgetRecordingVideoQualitySettings)
     1528                    {
     1529                        /* Prepare recording video quality layout: */
     1530                        QVBoxLayout *pLayoutRecordingVideoQuality = new QVBoxLayout(m_pWidgetRecordingVideoQualitySettings);
     1531                        if (pLayoutRecordingVideoQuality)
     1532                        {
     1533                            pLayoutRecordingVideoQuality->setContentsMargins(0, 0, 0, 0);
     1534
     1535                            /* Prepare recording video quality slider: */
     1536                            m_pSliderRecordingVideoQuality = new QIAdvancedSlider(m_pWidgetRecordingVideoQualitySettings);
     1537                            if (m_pSliderRecordingVideoQuality)
     1538                            {
     1539                                m_pSliderRecordingVideoQuality->setOrientation(Qt::Horizontal);
     1540                                m_pSliderRecordingVideoQuality->setMinimum(1);
     1541                                m_pSliderRecordingVideoQuality->setMaximum(10);
     1542                                m_pSliderRecordingVideoQuality->setPageStep(1);
     1543                                m_pSliderRecordingVideoQuality->setSingleStep(1);
     1544                                m_pSliderRecordingVideoQuality->setTickInterval(1);
     1545                                m_pSliderRecordingVideoQuality->setSnappingEnabled(true);
     1546                                m_pSliderRecordingVideoQuality->setOptimalHint(1, 5);
     1547                                m_pSliderRecordingVideoQuality->setWarningHint(5, 9);
     1548                                m_pSliderRecordingVideoQuality->setErrorHint(9, 10);
     1549
     1550                                pLayoutRecordingVideoQuality->addWidget(m_pSliderRecordingVideoQuality);
     1551                            }
     1552                            /* Prepare recording video quality scale layout: */
     1553                            QHBoxLayout *pLayoutRecordingVideoQialityScale = new QHBoxLayout;
     1554                            if (pLayoutRecordingVideoQialityScale)
     1555                            {
     1556                                pLayoutRecordingVideoQialityScale->setContentsMargins(0, 0, 0, 0);
     1557
     1558                                /* Prepare recording video quality min label: */
     1559                                m_pLabelRecordingVideoQualityMin = new QLabel(m_pWidgetRecordingVideoQualitySettings);
     1560                                if (m_pLabelRecordingVideoQualityMin)
     1561                                    pLayoutRecordingVideoQialityScale->addWidget(m_pLabelRecordingVideoQualityMin);
     1562                                pLayoutRecordingVideoQialityScale->addStretch();
     1563                                /* Prepare recording video quality med label: */
     1564                                m_pLabelRecordingVideoQualityMed = new QLabel(m_pWidgetRecordingVideoQualitySettings);
     1565                                if (m_pLabelRecordingVideoQualityMed)
     1566                                    pLayoutRecordingVideoQialityScale->addWidget(m_pLabelRecordingVideoQualityMed);
     1567                                pLayoutRecordingVideoQialityScale->addStretch();
     1568                                /* Prepare recording video quality max label: */
     1569                                m_pLabelRecordingVideoQualityMax = new QLabel(m_pWidgetRecordingVideoQualitySettings);
     1570                                if (m_pLabelRecordingVideoQualityMax)
     1571                                    pLayoutRecordingVideoQialityScale->addWidget(m_pLabelRecordingVideoQualityMax);
     1572
     1573                                pLayoutRecordingVideoQuality->addLayout(pLayoutRecordingVideoQialityScale);
     1574                            }
     1575                        }
     1576
     1577                        pLayoutRecordingSettings->addWidget(m_pWidgetRecordingVideoQualitySettings, 5, 1, 2, 1);
     1578                    }
     1579                    /* Prepare recording video quality spinbox: */
     1580                    m_pSpinboxRecordingVideoQuality = new QSpinBox(m_pWidgetRecordingSettings);
     1581                    if (m_pSpinboxRecordingVideoQuality)
     1582                    {
     1583                        m_pLabelRecordingVideoQuality->setBuddy(m_pSpinboxRecordingVideoQuality);
     1584                        uiCommon().setMinimumWidthAccordingSymbolCount(m_pSpinboxRecordingVideoQuality, 5);
     1585                        m_pSpinboxRecordingVideoQuality->setMinimum(VIDEO_CAPTURE_BIT_RATE_MIN);
     1586                        m_pSpinboxRecordingVideoQuality->setMaximum(VIDEO_CAPTURE_BIT_RATE_MAX);
     1587
     1588                        pLayoutRecordingSettings->addWidget(m_pSpinboxRecordingVideoQuality, 5, 2, 1, 2);
     1589                    }
     1590
     1591                    /* Prepare recording audio quality label: */
     1592                    m_pLabelRecordingAudioQuality = new QLabel(m_pWidgetRecordingSettings);
     1593                    if (m_pLabelRecordingAudioQuality)
     1594                    {
     1595                        m_pLabelRecordingAudioQuality->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     1596                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingAudioQuality, 7, 0);
     1597                    }
     1598                    /* Prepare recording audio quality widget: */
     1599                    m_pWidgetRecordingAudioQualitySettings = new QWidget(m_pWidgetRecordingSettings);
     1600                    if (m_pWidgetRecordingAudioQualitySettings)
     1601                    {
     1602                        /* Prepare recording audio quality layout: */
     1603                        QVBoxLayout *pLayoutRecordingAudioQuality = new QVBoxLayout(m_pWidgetRecordingAudioQualitySettings);
     1604                        if (pLayoutRecordingAudioQuality)
     1605                        {
     1606                            pLayoutRecordingAudioQuality->setContentsMargins(0, 0, 0, 0);
     1607
     1608                            /* Prepare recording audio quality slider: */
     1609                            m_pSliderRecordingAudioQuality = new QIAdvancedSlider(m_pWidgetRecordingAudioQualitySettings);
     1610                            if (m_pSliderRecordingAudioQuality)
     1611                            {
     1612                                m_pLabelRecordingAudioQuality->setBuddy(m_pSliderRecordingAudioQuality);
     1613                                m_pSliderRecordingAudioQuality->setOrientation(Qt::Horizontal);
     1614                                m_pSliderRecordingAudioQuality->setMinimum(1);
     1615                                m_pSliderRecordingAudioQuality->setMaximum(3);
     1616                                m_pSliderRecordingAudioQuality->setPageStep(1);
     1617                                m_pSliderRecordingAudioQuality->setSingleStep(1);
     1618                                m_pSliderRecordingAudioQuality->setTickInterval(1);
     1619                                m_pSliderRecordingAudioQuality->setSnappingEnabled(true);
     1620                                m_pSliderRecordingAudioQuality->setOptimalHint(1, 2);
     1621                                m_pSliderRecordingAudioQuality->setWarningHint(2, 3);
     1622                                pLayoutRecordingAudioQuality->addWidget(m_pSliderRecordingAudioQuality);
     1623                            }
     1624                            /* Prepare recording audio quality scale layout: */
     1625                            QHBoxLayout *pLayoutRecordingAudioQialityScale = new QHBoxLayout;
     1626                            if (pLayoutRecordingAudioQialityScale)
     1627                            {
     1628                                pLayoutRecordingAudioQialityScale->setContentsMargins(0, 0, 0, 0);
     1629
     1630                                /* Prepare recording audio quality min label: */
     1631                                m_pLabelRecordingAudioQualityMin = new QLabel(m_pWidgetRecordingAudioQualitySettings);
     1632                                if (m_pLabelRecordingAudioQualityMin)
     1633                                    pLayoutRecordingAudioQialityScale->addWidget(m_pLabelRecordingAudioQualityMin);
     1634                                pLayoutRecordingAudioQialityScale->addStretch();
     1635                                /* Prepare recording audio quality med label: */
     1636                                m_pLabelRecordingAudioQualityMed = new QLabel(m_pWidgetRecordingAudioQualitySettings);
     1637                                if (m_pLabelRecordingAudioQualityMed)
     1638                                    pLayoutRecordingAudioQialityScale->addWidget(m_pLabelRecordingAudioQualityMed);
     1639                                pLayoutRecordingAudioQialityScale->addStretch();
     1640                                /* Prepare recording audio quality max label: */
     1641                                m_pLabelRecordingAudioQualityMax = new QLabel(m_pWidgetRecordingAudioQualitySettings);
     1642                                if (m_pLabelRecordingAudioQualityMax)
     1643                                    pLayoutRecordingAudioQialityScale->addWidget(m_pLabelRecordingAudioQualityMax);
     1644
     1645                                pLayoutRecordingAudioQuality->addLayout(pLayoutRecordingAudioQialityScale);
     1646                            }
     1647                        }
     1648
     1649                        pLayoutRecordingSettings->addWidget(m_pWidgetRecordingAudioQualitySettings, 7, 1, 2, 1);
     1650                    }
     1651
     1652                    /* Prepare recording size hint label: */
     1653                    m_pLabelRecordingSizeHint = new QLabel(m_pWidgetRecordingSettings);
     1654                    if (m_pLabelRecordingSizeHint)
     1655                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingSizeHint, 9, 1);
     1656
     1657                    /* Prepare recording screens label: */
     1658                    m_pLabelRecordingScreens = new QLabel(m_pWidgetRecordingSettings);
     1659                    if (m_pLabelRecordingScreens)
     1660                    {
     1661                        m_pLabelRecordingScreens->setAlignment(Qt::AlignRight | Qt::AlignTop);
     1662                        pLayoutRecordingSettings->addWidget(m_pLabelRecordingScreens, 10, 0);
     1663                    }
     1664                    /* Prepare recording screens scroller: */
     1665                    m_pScrollerRecordingScreens = new UIFilmContainer(m_pWidgetRecordingSettings);
     1666                    if (m_pScrollerRecordingScreens)
     1667                    {
     1668                        m_pLabelRecordingScreens->setBuddy(m_pScrollerRecordingScreens);
     1669                        pLayoutRecordingSettings->addWidget(m_pScrollerRecordingScreens, 10, 1, 1, 3);
     1670                    }
     1671                }
     1672
     1673                pLayoutRecording->addWidget(m_pWidgetRecordingSettings, 1, 1);
     1674            }
    11001675        }
    11011676
    1102         /* Graphics controller label & editor created in the .ui file. */
    1103         AssertPtrReturnVoid(m_pGraphicsControllerEditor);
    1104         {
    1105             /* Configure label & editor: */
    1106             m_pGraphicsControllerLabel->setBuddy(m_pGraphicsControllerEditor->focusProxy());
    1107         }
    1108     }
    1109 }
    1110 
    1111 void UIMachineSettingsDisplay::prepareTabRemoteDisplay()
    1112 {
    1113     /* Tab and it's layout created in the .ui file. */
    1114     {
    1115         /* Port editor created in the .ui file. */
    1116         AssertPtrReturnVoid(m_pEditorRemoteDisplayPort);
    1117         {
    1118             /* Configure editor: */
    1119             m_pEditorRemoteDisplayPort->setValidator(new QRegExpValidator(
    1120                 QRegExp("(([0-9]{1,5}(\\-[0-9]{1,5}){0,1}),)*([0-9]{1,5}(\\-[0-9]{1,5}){0,1})"), this));
    1121         }
    1122 
    1123         /* Timeout editor created in the .ui file. */
    1124         AssertPtrReturnVoid(m_pEditorRemoteDisplayTimeout);
    1125         {
    1126             /* Configure editor: */
    1127             m_pEditorRemoteDisplayTimeout->setValidator(new QIntValidator(this));
    1128         }
    1129 
    1130         /* Auth-method combo-box created in the .ui file. */
    1131         AssertPtrReturnVoid(m_pComboRemoteDisplayAuthMethod);
    1132         {
    1133             /* Configure combo-box: */
    1134             m_pComboRemoteDisplayAuthMethod->insertItem(0, ""); /* KAuthType_Null */
    1135             m_pComboRemoteDisplayAuthMethod->insertItem(1, ""); /* KAuthType_External */
    1136             m_pComboRemoteDisplayAuthMethod->insertItem(2, ""); /* KAuthType_Guest */
    1137         }
    1138     }
    1139 }
    1140 
    1141 void UIMachineSettingsDisplay::prepareTabRecording()
    1142 {
    1143     /* Tab and it's layout created in the .ui file. */
    1144     {
    1145         /* Capture mode selection combo box. */
    1146         AssertPtrReturnVoid(m_pComboBoxCaptureMode);
    1147         {
    1148             m_pComboBoxCaptureMode->insertItem(0, ""); /* UISettingsDefs::RecordingMode_VideoAudio */
    1149             m_pComboBoxCaptureMode->insertItem(1, ""); /* UISettingsDefs::RecordingMode_VideoOnly */
    1150             m_pComboBoxCaptureMode->insertItem(2, ""); /* UISettingsDefs::RecordingMode_AudioOnly */
    1151         }
    1152 
    1153         /* File-path selector created in the .ui file. */
    1154         AssertPtrReturnVoid(m_pEditorVideoCapturePath);
    1155         {
    1156             /* Configure selector: */
    1157             m_pEditorVideoCapturePath->setEditable(false);
    1158             m_pEditorVideoCapturePath->setMode(UIFilePathSelector::Mode_File_Save);
    1159         }
    1160 
    1161         /* Frame-size combo-box created in the .ui file. */
    1162         AssertPtrReturnVoid(m_pComboVideoCaptureSize);
    1163         {
    1164             /* Configure combo-box: */
    1165             m_pComboVideoCaptureSize->addItem(""); /* User Defined */
    1166             m_pComboVideoCaptureSize->addItem("320 x 200 (16:10)",   QSize(320, 200));
    1167             m_pComboVideoCaptureSize->addItem("640 x 480 (4:3)",     QSize(640, 480));
    1168             m_pComboVideoCaptureSize->addItem("720 x 400 (9:5)",     QSize(720, 400));
    1169             m_pComboVideoCaptureSize->addItem("720 x 480 (3:2)",     QSize(720, 480));
    1170             m_pComboVideoCaptureSize->addItem("800 x 600 (4:3)",     QSize(800, 600));
    1171             m_pComboVideoCaptureSize->addItem("1024 x 768 (4:3)",    QSize(1024, 768));
    1172             m_pComboVideoCaptureSize->addItem("1152 x 864 (4:3)",    QSize(1152, 864));
    1173             m_pComboVideoCaptureSize->addItem("1280 x 720 (16:9)",   QSize(1280, 720));
    1174             m_pComboVideoCaptureSize->addItem("1280 x 800 (16:10)",  QSize(1280, 800));
    1175             m_pComboVideoCaptureSize->addItem("1280 x 960 (4:3)",    QSize(1280, 960));
    1176             m_pComboVideoCaptureSize->addItem("1280 x 1024 (5:4)",   QSize(1280, 1024));
    1177             m_pComboVideoCaptureSize->addItem("1366 x 768 (16:9)",   QSize(1366, 768));
    1178             m_pComboVideoCaptureSize->addItem("1440 x 900 (16:10)",  QSize(1440, 900));
    1179             m_pComboVideoCaptureSize->addItem("1440 x 1080 (4:3)",   QSize(1440, 1080));
    1180             m_pComboVideoCaptureSize->addItem("1600 x 900 (16:9)",   QSize(1600, 900));
    1181             m_pComboVideoCaptureSize->addItem("1680 x 1050 (16:10)", QSize(1680, 1050));
    1182             m_pComboVideoCaptureSize->addItem("1600 x 1200 (4:3)",   QSize(1600, 1200));
    1183             m_pComboVideoCaptureSize->addItem("1920 x 1080 (16:9)",  QSize(1920, 1080));
    1184             m_pComboVideoCaptureSize->addItem("1920 x 1200 (16:10)", QSize(1920, 1200));
    1185             m_pComboVideoCaptureSize->addItem("1920 x 1440 (4:3)",   QSize(1920, 1440));
    1186             m_pComboVideoCaptureSize->addItem("2880 x 1800 (16:10)", QSize(2880, 1800));
    1187         }
    1188 
    1189         /* Frame-width editor created in the .ui file. */
    1190         AssertPtrReturnVoid(m_pEditorVideoCaptureWidth);
    1191         {
    1192             /* Configure editor: */
    1193             uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureWidth, 5);
    1194             m_pEditorVideoCaptureWidth->setMinimum(16);
    1195             m_pEditorVideoCaptureWidth->setMaximum(2880);
    1196         }
    1197 
    1198         /* Frame-height editor created in the .ui file. */
    1199         AssertPtrReturnVoid(m_pEditorVideoCaptureHeight);
    1200         {
    1201             /* Configure editor: */
    1202             uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureHeight, 5);
    1203             m_pEditorVideoCaptureHeight->setMinimum(16);
    1204             m_pEditorVideoCaptureHeight->setMaximum(1800);
    1205         }
    1206 
    1207         /* Frame-rate slider created in the .ui file. */
    1208         AssertPtrReturnVoid(m_pSliderVideoCaptureFrameRate);
    1209         {
    1210             /* Configure slider: */
    1211             m_pSliderVideoCaptureFrameRate->setMinimum(1);
    1212             m_pSliderVideoCaptureFrameRate->setMaximum(30);
    1213             m_pSliderVideoCaptureFrameRate->setPageStep(1);
    1214             m_pSliderVideoCaptureFrameRate->setSingleStep(1);
    1215             m_pSliderVideoCaptureFrameRate->setTickInterval(1);
    1216             m_pSliderVideoCaptureFrameRate->setSnappingEnabled(true);
    1217             m_pSliderVideoCaptureFrameRate->setOptimalHint(1, 25);
    1218             m_pSliderVideoCaptureFrameRate->setWarningHint(25, 30);
    1219         }
    1220 
    1221         /* Frame-rate editor created in the .ui file. */
    1222         AssertPtrReturnVoid(m_pEditorVideoCaptureFrameRate);
    1223         {
    1224             /* Configure editor: */
    1225             uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureFrameRate, 3);
    1226             m_pEditorVideoCaptureFrameRate->setMinimum(1);
    1227             m_pEditorVideoCaptureFrameRate->setMaximum(30);
    1228         }
    1229 
    1230         /* Frame quality combo-box created in the .ui file. */
    1231         AssertPtrReturnVoid(m_pContainerLayoutSliderVideoCaptureQuality);
    1232         AssertPtrReturnVoid(m_pSliderVideoCaptureQuality);
    1233         {
    1234             /* Configure quality related widget: */
    1235             m_pContainerLayoutSliderVideoCaptureQuality->setColumnStretch(1, 4);
    1236             m_pContainerLayoutSliderVideoCaptureQuality->setColumnStretch(3, 5);
    1237             m_pSliderVideoCaptureQuality->setMinimum(1);
    1238             m_pSliderVideoCaptureQuality->setMaximum(10);
    1239             m_pSliderVideoCaptureQuality->setPageStep(1);
    1240             m_pSliderVideoCaptureQuality->setSingleStep(1);
    1241             m_pSliderVideoCaptureQuality->setTickInterval(1);
    1242             m_pSliderVideoCaptureQuality->setSnappingEnabled(true);
    1243             m_pSliderVideoCaptureQuality->setOptimalHint(1, 5);
    1244             m_pSliderVideoCaptureQuality->setWarningHint(5, 9);
    1245             m_pSliderVideoCaptureQuality->setErrorHint(9, 10);
    1246         }
    1247 
    1248         /* Bit-rate editor created in the .ui file. */
    1249         AssertPtrReturnVoid(m_pEditorVideoCaptureBitRate);
    1250         {
    1251             /* Configure editor: */
    1252             uiCommon().setMinimumWidthAccordingSymbolCount(m_pEditorVideoCaptureBitRate, 5);
    1253             m_pEditorVideoCaptureBitRate->setMinimum(VIDEO_CAPTURE_BIT_RATE_MIN);
    1254             m_pEditorVideoCaptureBitRate->setMaximum(VIDEO_CAPTURE_BIT_RATE_MAX);
    1255         }
    1256 
    1257          /* Frame-rate slider created in the .ui file. */
    1258         AssertPtrReturnVoid(m_pSliderAudioCaptureQuality);
    1259         {
    1260             /* Configure slider: */
    1261             m_pSliderAudioCaptureQuality->setMinimum(1);
    1262             m_pSliderAudioCaptureQuality->setMaximum(3);
    1263             m_pSliderAudioCaptureQuality->setPageStep(1);
    1264             m_pSliderAudioCaptureQuality->setSingleStep(1);
    1265             m_pSliderAudioCaptureQuality->setTickInterval(1);
    1266             m_pSliderAudioCaptureQuality->setSnappingEnabled(true);
    1267             m_pSliderAudioCaptureQuality->setOptimalHint(1, 2);
    1268             m_pSliderAudioCaptureQuality->setWarningHint(2, 3);
    1269         }
     1677        m_pTabWidget->addTab(m_pTabRecording, QString());
    12701678    }
    12711679}
     
    12741682{
    12751683    /* Configure 'Screen' connections: */
    1276     connect(m_pVideoMemoryEditor, &UIVideoMemoryEditor::sigValidChanged,
     1684    connect(m_pEditorVideoMemorySize, &UIVideoMemoryEditor::sigValidChanged,
    12771685            this, &UIMachineSettingsDisplay::revalidate);
    1278     connect(m_pSliderVideoScreenCount, &QIAdvancedSlider::valueChanged,
     1686    connect(m_pSliderMonitorCount, &QIAdvancedSlider::valueChanged,
    12791687            this, &UIMachineSettingsDisplay::sltHandleGuestScreenCountSliderChange);
    1280     connect(m_pEditorVideoScreenCount, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
     1688    connect(m_pSpinboxMonitorCount, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
    12811689            this, &UIMachineSettingsDisplay::sltHandleGuestScreenCountEditorChange);
    1282     connect(m_pGraphicsControllerEditor, &UIGraphicsControllerEditor::sigValueChanged,
     1690    connect(m_pEditorGraphicsController, &UIGraphicsControllerEditor::sigValueChanged,
    12831691            this, &UIMachineSettingsDisplay::sltHandleGraphicsControllerComboChange);
    12841692#ifdef VBOX_WITH_3D_ACCELERATION
     
    12881696
    12891697    /* Configure 'Remote Display' connections: */
     1698    connect(m_pCheckboxRemoteDisplay, &QCheckBox::toggled, m_pWidgetRemoteDisplaySettings, &QWidget::setEnabled);
    12901699    connect(m_pCheckboxRemoteDisplay, &QCheckBox::toggled, this, &UIMachineSettingsDisplay::revalidate);
    12911700    connect(m_pEditorRemoteDisplayPort, &QLineEdit::textChanged, this, &UIMachineSettingsDisplay::revalidate);
     
    12931702
    12941703    /* Configure 'Recording' connections: */
    1295     connect(m_pCheckboxVideoCapture, &QCheckBox::toggled,
     1704    connect(m_pCheckboxRecording, &QCheckBox::toggled,
    12961705            this, &UIMachineSettingsDisplay::sltHandleRecordingCheckboxToggle);
    1297     connect(m_pComboVideoCaptureSize, static_cast<void(QComboBox::*)(int)>(&QComboBox:: currentIndexChanged),
     1706    connect(m_pComboRecordingFrameSize, static_cast<void(QComboBox::*)(int)>(&QComboBox:: currentIndexChanged),
    12981707            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoFrameSizeComboboxChange);
    1299     connect(m_pEditorVideoCaptureWidth, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
     1708    connect(m_pSpinboxRecordingFrameWidth, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
    13001709            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoFrameWidthEditorChange);
    1301     connect(m_pEditorVideoCaptureHeight, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
     1710    connect(m_pSpinboxRecordingFrameHeight, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
    13021711            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoFrameHeightEditorChange);
    1303     connect(m_pSliderVideoCaptureFrameRate, &QIAdvancedSlider::valueChanged,
     1712    connect(m_pSliderRecordingFrameRate, &QIAdvancedSlider::valueChanged,
    13041713            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoFrameRateSliderChange);
    1305     connect(m_pEditorVideoCaptureFrameRate, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
     1714    connect(m_pSpinboxRecordingFrameRate, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
    13061715            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoFrameRateEditorChange);
    1307     connect(m_pSliderVideoCaptureQuality, &QIAdvancedSlider::valueChanged,
     1716    connect(m_pSliderRecordingVideoQuality, &QIAdvancedSlider::valueChanged,
    13081717            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoQualitySliderChange);
    1309     connect(m_pEditorVideoCaptureBitRate, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
     1718    connect(m_pSpinboxRecordingVideoQuality, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
    13101719            this, &UIMachineSettingsDisplay::sltHandleRecordingVideoBitRateEditorChange);
    13111720
    1312     connect(m_pComboBoxCaptureMode, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
     1721    connect(m_pComboRecordingMode, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
    13131722                this, &UIMachineSettingsDisplay::sltHandleRecordingComboBoxChange);
    1314 }
    1315 
    1316 void UIMachineSettingsDisplay::prepareWidgets()
    1317 {
    1318     if (objectName().isEmpty())
    1319         setObjectName(QStringLiteral("UIMachineSettingsDisplay"));
    1320     resize(350, 300);
    1321     QVBoxLayout *pLayoutMain = new QVBoxLayout(this);
    1322     pLayoutMain->setObjectName(QStringLiteral("pLayoutMain"));
    1323     m_pTabWidget = new QITabWidget();
    1324     m_pTabWidget->setObjectName(QStringLiteral("m_pTabWidget"));
    1325     m_pTabVideo = new QWidget();
    1326     m_pTabVideo->setObjectName(QStringLiteral("m_pTabVideo"));
    1327     QVBoxLayout *pLayoutTabVideo = new QVBoxLayout(m_pTabVideo);
    1328     pLayoutTabVideo->setObjectName(QStringLiteral("pLayoutTabVideo"));
    1329     QWidget *pContainerVideo = new QWidget(m_pTabVideo);
    1330     pContainerVideo->setObjectName(QStringLiteral("pContainerVideo"));
    1331     QGridLayout *pLayoutContainerVideo = new QGridLayout(pContainerVideo);
    1332     pLayoutContainerVideo->setObjectName(QStringLiteral("pLayoutContainerVideo"));
    1333     pLayoutContainerVideo->setContentsMargins(0, 0, 0, 0);
    1334     m_pVideoMemoryLabel = new QLabel(pContainerVideo);
    1335     m_pVideoMemoryLabel->setObjectName(QStringLiteral("m_pVideoMemoryLabel"));
    1336     m_pVideoMemoryLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1337     pLayoutContainerVideo->addWidget(m_pVideoMemoryLabel, 0, 0, 1, 1);
    1338 
    1339     m_pVideoMemoryEditor = new UIVideoMemoryEditor(pContainerVideo);
    1340     m_pVideoMemoryEditor->setObjectName(QStringLiteral("m_pVideoMemoryEditor"));
    1341     pLayoutContainerVideo->addWidget(m_pVideoMemoryEditor, 0, 1, 2, 2);
    1342 
    1343     m_pLabelVideoScreenCount = new QLabel(pContainerVideo);
    1344     m_pLabelVideoScreenCount->setObjectName(QStringLiteral("m_pLabelVideoScreenCount"));
    1345     m_pLabelVideoScreenCount->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1346     pLayoutContainerVideo->addWidget(m_pLabelVideoScreenCount, 2, 0, 1, 1);
    1347 
    1348     QGridLayout *pLayoutVideoScreenCount = new QGridLayout();
    1349     pLayoutVideoScreenCount->setSpacing(0);
    1350     pLayoutVideoScreenCount->setObjectName(QStringLiteral("pLayoutVideoScreenCount"));
    1351     m_pSliderVideoScreenCount = new QIAdvancedSlider(pContainerVideo);
    1352     m_pSliderVideoScreenCount->setObjectName(QStringLiteral("m_pSliderVideoScreenCount"));
    1353     m_pSliderVideoScreenCount->setOrientation(Qt::Horizontal);
    1354     pLayoutVideoScreenCount->addWidget(m_pSliderVideoScreenCount, 0, 0, 1, 3);
    1355 
    1356     m_pLabelVideoScreenCountMin = new QLabel(pContainerVideo);
    1357     m_pLabelVideoScreenCountMin->setObjectName(QStringLiteral("m_pLabelVideoScreenCountMin"));
    1358     pLayoutVideoScreenCount->addWidget(m_pLabelVideoScreenCountMin, 1, 0, 1, 1);
    1359 
    1360     QSpacerItem *pSpacerVideoScreenCount = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1361     pLayoutVideoScreenCount->addItem(pSpacerVideoScreenCount, 1, 1, 1, 1);
    1362 
    1363     m_pLabelVideoScreenCountMax = new QLabel(pContainerVideo);
    1364     m_pLabelVideoScreenCountMax->setObjectName(QStringLiteral("m_pLabelVideoScreenCountMax"));
    1365 
    1366     pLayoutVideoScreenCount->addWidget(m_pLabelVideoScreenCountMax, 1, 2, 1, 1);
    1367     pLayoutContainerVideo->addLayout(pLayoutVideoScreenCount, 2, 1, 2, 1);
    1368 
    1369     m_pEditorVideoScreenCount = new QSpinBox(pContainerVideo);
    1370     m_pEditorVideoScreenCount->setObjectName(QStringLiteral("m_pEditorVideoScreenCount"));
    1371     pLayoutContainerVideo->addWidget(m_pEditorVideoScreenCount, 2, 2, 1, 1);
    1372 
    1373     m_pLabelGuestScreenScaleFactorEditor = new QLabel(pContainerVideo);
    1374     m_pLabelGuestScreenScaleFactorEditor->setObjectName(QStringLiteral("m_pLabelGuestScreenScaleFactorEditor"));
    1375     m_pLabelGuestScreenScaleFactorEditor->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1376     pLayoutContainerVideo->addWidget(m_pLabelGuestScreenScaleFactorEditor, 4, 0, 1, 1);
    1377 
    1378     QGridLayout *pLayoutGuestScreenScaleFactorEditor = new QGridLayout();
    1379     pLayoutGuestScreenScaleFactorEditor->setSpacing(0);
    1380     pLayoutGuestScreenScaleFactorEditor->setObjectName(QStringLiteral("pLayoutGuestScreenScaleFactorEditor"));
    1381     m_pScaleFactorEditor = new UIScaleFactorEditor(pContainerVideo);
    1382     m_pScaleFactorEditor->setObjectName(QStringLiteral("m_pScaleFactorEditor"));
    1383     pLayoutGuestScreenScaleFactorEditor->addWidget(m_pScaleFactorEditor, 0, 0, 2, 3);
    1384     pLayoutContainerVideo->addLayout(pLayoutGuestScreenScaleFactorEditor, 4, 1, 2, 2);
    1385 
    1386     m_pGraphicsControllerLabel = new QLabel(pContainerVideo);
    1387     m_pGraphicsControllerLabel->setObjectName(QStringLiteral("m_pGraphicsControllerLabel"));
    1388     m_pGraphicsControllerLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1389     pLayoutContainerVideo->addWidget(m_pGraphicsControllerLabel, 6, 0, 1, 1);
    1390 
    1391     m_pGraphicsControllerEditor = new UIGraphicsControllerEditor(pContainerVideo);
    1392     m_pGraphicsControllerEditor->setObjectName(QStringLiteral("m_pGraphicsControllerEditor"));
    1393     pLayoutContainerVideo->addWidget(m_pGraphicsControllerEditor, 6, 1, 1, 2);
    1394 
    1395     m_pLabelVideoOptions = new QLabel(pContainerVideo);
    1396     m_pLabelVideoOptions->setObjectName(QStringLiteral("m_pLabelVideoOptions"));
    1397     m_pLabelVideoOptions->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1398     pLayoutContainerVideo->addWidget(m_pLabelVideoOptions, 7, 0, 1, 1);
    1399 
    1400     m_pLayout3D = new QStackedLayout();
    1401     m_pLayout3D->setObjectName(QStringLiteral("m_pLayout3D"));
    1402     m_pCheckbox3D = new QCheckBox(pContainerVideo);
    1403     m_pCheckbox3D->setObjectName(QStringLiteral("m_pCheckbox3D"));
    1404     QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
    1405     sizePolicy.setHorizontalStretch(0);
    1406     sizePolicy.setVerticalStretch(0);
    1407     sizePolicy.setHeightForWidth(m_pCheckbox3D->sizePolicy().hasHeightForWidth());
    1408     m_pCheckbox3D->setSizePolicy(sizePolicy);
    1409     m_pLayout3D->addWidget(m_pCheckbox3D);
    1410 
    1411     QWidget *pPlaceholder3D = new QWidget(pContainerVideo);
    1412     pPlaceholder3D->setObjectName(QStringLiteral("pPlaceholder3D"));
    1413 
    1414     m_pLayout3D->addWidget(pPlaceholder3D);
    1415     pLayoutContainerVideo->addLayout(m_pLayout3D, 7, 1, 1, 1);
    1416     pLayoutTabVideo->addWidget(pContainerVideo);
    1417 
    1418     QSpacerItem *pStretchVideo = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
    1419     pLayoutTabVideo->addItem(pStretchVideo);
    1420 
    1421     m_pTabWidget->addTab(m_pTabVideo, QString());
    1422     m_pTabRemoteDisplay = new QWidget();
    1423     m_pTabRemoteDisplay->setObjectName(QStringLiteral("m_pTabRemoteDisplay"));
    1424     QVBoxLayout *pLayoutTabRemoteDisplay = new QVBoxLayout(m_pTabRemoteDisplay);
    1425     pLayoutTabRemoteDisplay->setObjectName(QStringLiteral("pLayoutTabRemoteDisplay"));
    1426     m_pContainerRemoteDisplay = new QWidget(m_pTabRemoteDisplay);
    1427     m_pContainerRemoteDisplay->setObjectName(QStringLiteral("m_pContainerRemoteDisplay"));
    1428     QGridLayout *pLayoutContainerRemoteDisplay = new QGridLayout(m_pContainerRemoteDisplay);
    1429     pLayoutContainerRemoteDisplay->setObjectName(QStringLiteral("pLayoutContainerRemoteDisplay"));
    1430     pLayoutContainerRemoteDisplay->setContentsMargins(0, 0, 0, 0);
    1431     m_pCheckboxRemoteDisplay = new QCheckBox(m_pContainerRemoteDisplay);
    1432     m_pCheckboxRemoteDisplay->setObjectName(QStringLiteral("m_pCheckboxRemoteDisplay"));
    1433     m_pCheckboxRemoteDisplay->setChecked(false);
    1434     pLayoutContainerRemoteDisplay->addWidget(m_pCheckboxRemoteDisplay, 0, 0, 1, 2);
    1435 
    1436     QSpacerItem *pSpacerContainerRemoteDisplay = new QSpacerItem(20, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
    1437     pLayoutContainerRemoteDisplay->addItem(pSpacerContainerRemoteDisplay, 1, 0, 1, 1);
    1438 
    1439     m_pContainerRemoteDisplayOptions = new QWidget(m_pContainerRemoteDisplay);
    1440     m_pContainerRemoteDisplayOptions->setObjectName(QStringLiteral("m_pContainerRemoteDisplayOptions"));
    1441     QGridLayout *pLayoutContainerRemoteDisplayServer = new QGridLayout(m_pContainerRemoteDisplayOptions);
    1442     pLayoutContainerRemoteDisplayServer->setObjectName(QStringLiteral("pLayoutContainerRemoteDisplayServer"));
    1443     pLayoutContainerRemoteDisplayServer->setContentsMargins(0, 0, 0, 0);
    1444     m_pLabelRemoteDisplayPort = new QLabel(m_pContainerRemoteDisplayOptions);
    1445     m_pLabelRemoteDisplayPort->setObjectName(QStringLiteral("m_pLabelRemoteDisplayPort"));
    1446     m_pLabelRemoteDisplayPort->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1447     pLayoutContainerRemoteDisplayServer->addWidget(m_pLabelRemoteDisplayPort, 0, 0, 1, 1);
    1448 
    1449     m_pEditorRemoteDisplayPort = new QLineEdit(m_pContainerRemoteDisplayOptions);
    1450     m_pEditorRemoteDisplayPort->setObjectName(QStringLiteral("m_pEditorRemoteDisplayPort"));
    1451     pLayoutContainerRemoteDisplayServer->addWidget(m_pEditorRemoteDisplayPort, 0, 1, 1, 1);
    1452 
    1453     m_pLabelRemoteDisplayAuthMethod = new QLabel(m_pContainerRemoteDisplayOptions);
    1454     m_pLabelRemoteDisplayAuthMethod->setObjectName(QStringLiteral("m_pLabelRemoteDisplayAuthMethod"));
    1455     m_pLabelRemoteDisplayAuthMethod->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1456     pLayoutContainerRemoteDisplayServer->addWidget(m_pLabelRemoteDisplayAuthMethod, 1, 0, 1, 1);
    1457 
    1458     m_pComboRemoteDisplayAuthMethod = new QComboBox(m_pContainerRemoteDisplayOptions);
    1459     m_pComboRemoteDisplayAuthMethod->setObjectName(QStringLiteral("m_pComboRemoteDisplayAuthMethod"));
    1460     pLayoutContainerRemoteDisplayServer->addWidget(m_pComboRemoteDisplayAuthMethod, 1, 1, 1, 1);
    1461 
    1462     m_pLabelRemoteDisplayTimeout = new QLabel(m_pContainerRemoteDisplayOptions);
    1463     m_pLabelRemoteDisplayTimeout->setObjectName(QStringLiteral("m_pLabelRemoteDisplayTimeout"));
    1464     m_pLabelRemoteDisplayTimeout->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1465     pLayoutContainerRemoteDisplayServer->addWidget(m_pLabelRemoteDisplayTimeout, 2, 0, 1, 1);
    1466 
    1467     m_pEditorRemoteDisplayTimeout = new QLineEdit(m_pContainerRemoteDisplayOptions);
    1468     m_pEditorRemoteDisplayTimeout->setObjectName(QStringLiteral("m_pEditorRemoteDisplayTimeout"));
    1469     pLayoutContainerRemoteDisplayServer->addWidget(m_pEditorRemoteDisplayTimeout, 2, 1, 1, 1);
    1470 
    1471     m_pLabelRemoteDisplayOptions = new QLabel(m_pContainerRemoteDisplayOptions);
    1472     m_pLabelRemoteDisplayOptions->setObjectName(QStringLiteral("m_pLabelRemoteDisplayOptions"));
    1473     m_pLabelRemoteDisplayOptions->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1474     pLayoutContainerRemoteDisplayServer->addWidget(m_pLabelRemoteDisplayOptions, 3, 0, 1, 1);
    1475 
    1476     m_pCheckboxMultipleConn = new QCheckBox(m_pContainerRemoteDisplayOptions);
    1477     m_pCheckboxMultipleConn->setObjectName(QStringLiteral("m_pCheckboxMultipleConn"));
    1478     sizePolicy.setHeightForWidth(m_pCheckboxMultipleConn->sizePolicy().hasHeightForWidth());
    1479     m_pCheckboxMultipleConn->setSizePolicy(sizePolicy);
    1480 
    1481     pLayoutContainerRemoteDisplayServer->addWidget(m_pCheckboxMultipleConn, 3, 1, 1, 1);
    1482     pLayoutContainerRemoteDisplay->addWidget(m_pContainerRemoteDisplayOptions, 1, 1, 1, 1);
    1483     pLayoutTabRemoteDisplay->addWidget(m_pContainerRemoteDisplay);
    1484 
    1485     QSpacerItem *pStretchRemoteDisplay = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
    1486     pLayoutTabRemoteDisplay->addItem(pStretchRemoteDisplay);
    1487 
    1488     m_pTabWidget->addTab(m_pTabRemoteDisplay, QString());
    1489     m_pTabVideoCapture = new QWidget();
    1490     m_pTabVideoCapture->setObjectName(QStringLiteral("m_pTabVideoCapture"));
    1491     QVBoxLayout *pLayoutTabVideoCapture = new QVBoxLayout(m_pTabVideoCapture);
    1492     pLayoutTabVideoCapture->setObjectName(QStringLiteral("pLayoutTabVideoCapture"));
    1493     m_pContainerVideoCapture = new QWidget(m_pTabVideoCapture);
    1494     m_pContainerVideoCapture->setObjectName(QStringLiteral("m_pContainerVideoCapture"));
    1495     QGridLayout *pLayoutContainerVideoCapture = new QGridLayout(m_pContainerVideoCapture);
    1496     pLayoutContainerVideoCapture->setObjectName(QStringLiteral("pLayoutContainerVideoCapture"));
    1497     pLayoutContainerVideoCapture->setContentsMargins(0, 0, 0, 0);
    1498     m_pCheckboxVideoCapture = new QCheckBox(m_pContainerVideoCapture);
    1499     m_pCheckboxVideoCapture->setObjectName(QStringLiteral("m_pCheckboxVideoCapture"));
    1500     m_pCheckboxVideoCapture->setChecked(false);
    1501     pLayoutContainerVideoCapture->addWidget(m_pCheckboxVideoCapture, 0, 0, 1, 2);
    1502 
    1503     QSpacerItem *pLeftSpacer = new QSpacerItem(20, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1504     pLayoutContainerVideoCapture->addItem(pLeftSpacer, 1, 0, 1, 1);
    1505 
    1506     QWidget *pContainerVideoCaptureOptions = new QWidget(m_pContainerVideoCapture);
    1507     pContainerVideoCaptureOptions->setObjectName(QStringLiteral("pContainerVideoCaptureOptions"));
    1508     QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Fixed);
    1509     sizePolicy1.setHorizontalStretch(1);
    1510     sizePolicy1.setVerticalStretch(0);
    1511     sizePolicy1.setHeightForWidth(pContainerVideoCaptureOptions->sizePolicy().hasHeightForWidth());
    1512     pContainerVideoCaptureOptions->setSizePolicy(sizePolicy1);
    1513     QGridLayout *pContainerLayoutVideoCapture = new QGridLayout(pContainerVideoCaptureOptions);
    1514     pContainerLayoutVideoCapture->setObjectName(QStringLiteral("pContainerLayoutVideoCapture"));
    1515     pContainerLayoutVideoCapture->setContentsMargins(0, 0, 0, 0);
    1516     m_pLabelCaptureMode = new QLabel(pContainerVideoCaptureOptions);
    1517     m_pLabelCaptureMode->setObjectName(QStringLiteral("m_pLabelCaptureMode"));
    1518     m_pLabelCaptureMode->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1519     pContainerLayoutVideoCapture->addWidget(m_pLabelCaptureMode, 0, 0, 1, 1);
    1520 
    1521     m_pComboBoxCaptureMode = new QComboBox(pContainerVideoCaptureOptions);
    1522     m_pComboBoxCaptureMode->setObjectName(QStringLiteral("m_pComboBoxCaptureMode"));
    1523     pContainerLayoutVideoCapture->addWidget(m_pComboBoxCaptureMode, 0, 1, 1, 3);
    1524 
    1525     m_pLabelVideoCapturePath = new QLabel(pContainerVideoCaptureOptions);
    1526     m_pLabelVideoCapturePath->setObjectName(QStringLiteral("m_pLabelVideoCapturePath"));
    1527     m_pLabelVideoCapturePath->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1528     pContainerLayoutVideoCapture->addWidget(m_pLabelVideoCapturePath, 1, 0, 1, 1);
    1529 
    1530     m_pEditorVideoCapturePath = new UIFilePathSelector(pContainerVideoCaptureOptions);
    1531     m_pEditorVideoCapturePath->setObjectName(QStringLiteral("m_pEditorVideoCapturePath"));
    1532     pContainerLayoutVideoCapture->addWidget(m_pEditorVideoCapturePath, 1, 1, 1, 3);
    1533 
    1534     m_pLabelVideoCaptureSize = new QLabel(pContainerVideoCaptureOptions);
    1535     m_pLabelVideoCaptureSize->setObjectName(QStringLiteral("m_pLabelVideoCaptureSize"));
    1536     m_pLabelVideoCaptureSize->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1537     pContainerLayoutVideoCapture->addWidget(m_pLabelVideoCaptureSize, 2, 0, 1, 1);
    1538 
    1539     m_pComboVideoCaptureSize = new QComboBox(pContainerVideoCaptureOptions);
    1540     m_pComboVideoCaptureSize->setObjectName(QStringLiteral("m_pComboVideoCaptureSize"));
    1541     QSizePolicy sizePolicy2(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
    1542     sizePolicy2.setHorizontalStretch(1);
    1543     sizePolicy2.setVerticalStretch(0);
    1544     sizePolicy2.setHeightForWidth(m_pComboVideoCaptureSize->sizePolicy().hasHeightForWidth());
    1545     m_pComboVideoCaptureSize->setSizePolicy(sizePolicy2);
    1546     pContainerLayoutVideoCapture->addWidget(m_pComboVideoCaptureSize, 2, 1, 1, 1);
    1547 
    1548     m_pEditorVideoCaptureWidth = new QSpinBox(pContainerVideoCaptureOptions);
    1549     m_pEditorVideoCaptureWidth->setObjectName(QStringLiteral("m_pEditorVideoCaptureWidth"));
    1550     pContainerLayoutVideoCapture->addWidget(m_pEditorVideoCaptureWidth, 2, 2, 1, 1);
    1551 
    1552     m_pEditorVideoCaptureHeight = new QSpinBox(pContainerVideoCaptureOptions);
    1553     m_pEditorVideoCaptureHeight->setObjectName(QStringLiteral("m_pEditorVideoCaptureHeight"));
    1554     pContainerLayoutVideoCapture->addWidget(m_pEditorVideoCaptureHeight, 2, 3, 1, 1);
    1555 
    1556     m_pLabelVideoCaptureFrameRate = new QLabel(pContainerVideoCaptureOptions);
    1557     m_pLabelVideoCaptureFrameRate->setObjectName(QStringLiteral("m_pLabelVideoCaptureFrameRate"));
    1558     m_pLabelVideoCaptureFrameRate->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1559     pContainerLayoutVideoCapture->addWidget(m_pLabelVideoCaptureFrameRate, 3, 0, 1, 1);
    1560 
    1561     m_pContainerSliderVideoCaptureFrameRate = new QWidget(pContainerVideoCaptureOptions);
    1562     m_pContainerSliderVideoCaptureFrameRate->setObjectName(QStringLiteral("m_pContainerSliderVideoCaptureFrameRate"));
    1563     QGridLayout *pContainerLayoutSliderVideoCaptureFrameRate = new QGridLayout(m_pContainerSliderVideoCaptureFrameRate);
    1564     pContainerLayoutSliderVideoCaptureFrameRate->setSpacing(0);
    1565     pContainerLayoutSliderVideoCaptureFrameRate->setObjectName(QStringLiteral("pContainerLayoutSliderVideoCaptureFrameRate"));
    1566     pContainerLayoutSliderVideoCaptureFrameRate->setContentsMargins(0, 0, 0, 0);
    1567     m_pSliderVideoCaptureFrameRate = new QIAdvancedSlider(m_pContainerSliderVideoCaptureFrameRate);
    1568     m_pSliderVideoCaptureFrameRate->setObjectName(QStringLiteral("m_pSliderVideoCaptureFrameRate"));
    1569     m_pSliderVideoCaptureFrameRate->setOrientation(Qt::Horizontal);
    1570     pContainerLayoutSliderVideoCaptureFrameRate->addWidget(m_pSliderVideoCaptureFrameRate, 0, 0, 1, 3);
    1571 
    1572     m_pLabelVideoCaptureFrameRateMin = new QLabel(m_pContainerSliderVideoCaptureFrameRate);
    1573     m_pLabelVideoCaptureFrameRateMin->setObjectName(QStringLiteral("m_pLabelVideoCaptureFrameRateMin"));
    1574     pContainerLayoutSliderVideoCaptureFrameRate->addWidget(m_pLabelVideoCaptureFrameRateMin, 1, 0, 1, 1);
    1575 
    1576     QSpacerItem *pStretchVideoCaptureFrameRate = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1577     pContainerLayoutSliderVideoCaptureFrameRate->addItem(pStretchVideoCaptureFrameRate, 1, 1, 1, 1);
    1578 
    1579     m_pLabelVideoCaptureFrameRateMax = new QLabel(m_pContainerSliderVideoCaptureFrameRate);
    1580     m_pLabelVideoCaptureFrameRateMax->setObjectName(QStringLiteral("m_pLabelVideoCaptureFrameRateMax"));
    1581     pContainerLayoutSliderVideoCaptureFrameRate->addWidget(m_pLabelVideoCaptureFrameRateMax, 1, 2, 1, 1);
    1582     pContainerLayoutVideoCapture->addWidget(m_pContainerSliderVideoCaptureFrameRate, 3, 1, 2, 1);
    1583 
    1584     m_pEditorVideoCaptureFrameRate = new QSpinBox(pContainerVideoCaptureOptions);
    1585     m_pEditorVideoCaptureFrameRate->setObjectName(QStringLiteral("m_pEditorVideoCaptureFrameRate"));
    1586     pContainerLayoutVideoCapture->addWidget(m_pEditorVideoCaptureFrameRate, 3, 2, 1, 2);
    1587 
    1588     m_pLabelVideoCaptureRate = new QLabel(pContainerVideoCaptureOptions);
    1589     m_pLabelVideoCaptureRate->setObjectName(QStringLiteral("m_pLabelVideoCaptureRate"));
    1590     m_pLabelVideoCaptureRate->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1591     pContainerLayoutVideoCapture->addWidget(m_pLabelVideoCaptureRate, 5, 0, 1, 1);
    1592 
    1593     m_pContainerSliderVideoCaptureQuality = new QWidget(pContainerVideoCaptureOptions);
    1594     m_pContainerSliderVideoCaptureQuality->setObjectName(QStringLiteral("m_pContainerSliderVideoCaptureQuality"));
    1595     m_pContainerLayoutSliderVideoCaptureQuality = new QGridLayout(m_pContainerSliderVideoCaptureQuality);
    1596     m_pContainerLayoutSliderVideoCaptureQuality->setSpacing(0);
    1597     m_pContainerLayoutSliderVideoCaptureQuality->setObjectName(QStringLiteral("m_pContainerLayoutSliderVideoCaptureQuality"));
    1598     m_pContainerLayoutSliderVideoCaptureQuality->setContentsMargins(0, 0, 0, 0);
    1599     m_pSliderVideoCaptureQuality = new QIAdvancedSlider(m_pContainerSliderVideoCaptureQuality);
    1600     m_pSliderVideoCaptureQuality->setObjectName(QStringLiteral("m_pSliderVideoCaptureQuality"));
    1601     m_pSliderVideoCaptureQuality->setOrientation(Qt::Horizontal);
    1602     m_pContainerLayoutSliderVideoCaptureQuality->addWidget(m_pSliderVideoCaptureQuality, 0, 0, 1, 5);
    1603 
    1604     m_pLabelVideoCaptureQualityMin = new QLabel(m_pContainerSliderVideoCaptureQuality);
    1605     m_pLabelVideoCaptureQualityMin->setObjectName(QStringLiteral("m_pLabelVideoCaptureQualityMin"));
    1606     m_pContainerLayoutSliderVideoCaptureQuality->addWidget(m_pLabelVideoCaptureQualityMin, 1, 0, 1, 1);
    1607 
    1608     QSpacerItem *pStretchVideoCaptureQualityLeft = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1609     m_pContainerLayoutSliderVideoCaptureQuality->addItem(pStretchVideoCaptureQualityLeft, 1, 1, 1, 1);
    1610 
    1611     m_pLabelVideoCaptureQualityMed = new QLabel(m_pContainerSliderVideoCaptureQuality);
    1612     m_pLabelVideoCaptureQualityMed->setObjectName(QStringLiteral("m_pLabelVideoCaptureQualityMed"));
    1613     m_pContainerLayoutSliderVideoCaptureQuality->addWidget(m_pLabelVideoCaptureQualityMed, 1, 2, 1, 1);
    1614 
    1615     QSpacerItem *pStretchVideoCaptureQualityRight = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1616     m_pContainerLayoutSliderVideoCaptureQuality->addItem(pStretchVideoCaptureQualityRight, 1, 3, 1, 1);
    1617 
    1618     m_pLabelVideoCaptureQualityMax = new QLabel(m_pContainerSliderVideoCaptureQuality);
    1619     m_pLabelVideoCaptureQualityMax->setObjectName(QStringLiteral("m_pLabelVideoCaptureQualityMax"));
    1620 
    1621     m_pContainerLayoutSliderVideoCaptureQuality->addWidget(m_pLabelVideoCaptureQualityMax, 1, 4, 1, 1);
    1622     pContainerLayoutVideoCapture->addWidget(m_pContainerSliderVideoCaptureQuality, 5, 1, 2, 1);
    1623 
    1624     m_pEditorVideoCaptureBitRate = new QSpinBox(pContainerVideoCaptureOptions);
    1625     m_pEditorVideoCaptureBitRate->setObjectName(QStringLiteral("m_pEditorVideoCaptureBitRate"));
    1626     pContainerLayoutVideoCapture->addWidget(m_pEditorVideoCaptureBitRate, 5, 2, 1, 2);
    1627 
    1628     m_pAudioCaptureQualityLabel = new QLabel(pContainerVideoCaptureOptions);
    1629     m_pAudioCaptureQualityLabel->setObjectName(QStringLiteral("m_pAudioCaptureQualityLabel"));
    1630     m_pAudioCaptureQualityLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    1631     pContainerLayoutVideoCapture->addWidget(m_pAudioCaptureQualityLabel, 7, 0, 1, 1);
    1632 
    1633     m_pContainerSliderAudioCaptureQuality = new QWidget(pContainerVideoCaptureOptions);
    1634     m_pContainerSliderAudioCaptureQuality->setObjectName(QStringLiteral("m_pContainerSliderAudioCaptureQuality"));
    1635     QGridLayout *pContainerLayoutSliderAudioCaptureQuality = new QGridLayout(m_pContainerSliderAudioCaptureQuality);
    1636     pContainerLayoutSliderAudioCaptureQuality->setSpacing(0);
    1637     pContainerLayoutSliderAudioCaptureQuality->setObjectName(QStringLiteral("pContainerLayoutSliderAudioCaptureQuality"));
    1638     pContainerLayoutSliderAudioCaptureQuality->setContentsMargins(0, 0, 0, 0);
    1639     m_pSliderAudioCaptureQuality = new QIAdvancedSlider(m_pContainerSliderAudioCaptureQuality);
    1640     m_pSliderAudioCaptureQuality->setObjectName(QStringLiteral("m_pSliderAudioCaptureQuality"));
    1641     m_pSliderAudioCaptureQuality->setOrientation(Qt::Horizontal);
    1642     pContainerLayoutSliderAudioCaptureQuality->addWidget(m_pSliderAudioCaptureQuality, 0, 0, 1, 5);
    1643 
    1644     m_pLabelAudioCaptureQualityMin = new QLabel(m_pContainerSliderAudioCaptureQuality);
    1645     m_pLabelAudioCaptureQualityMin->setObjectName(QStringLiteral("m_pLabelAudioCaptureQualityMin"));
    1646 
    1647     pContainerLayoutSliderAudioCaptureQuality->addWidget(m_pLabelAudioCaptureQualityMin, 1, 0, 1, 1);
    1648 
    1649     QSpacerItem *pStretchAudioCaptureQualityLeft = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1650     pContainerLayoutSliderAudioCaptureQuality->addItem(pStretchAudioCaptureQualityLeft, 1, 1, 1, 1);
    1651 
    1652     m_pLabelAudioCaptureQualityMed = new QLabel(m_pContainerSliderAudioCaptureQuality);
    1653     m_pLabelAudioCaptureQualityMed->setObjectName(QStringLiteral("m_pLabelAudioCaptureQualityMed"));
    1654     pContainerLayoutSliderAudioCaptureQuality->addWidget(m_pLabelAudioCaptureQualityMed, 1, 2, 1, 1);
    1655 
    1656     QSpacerItem *pStretchAudioCaptureQualityRight = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    1657     pContainerLayoutSliderAudioCaptureQuality->addItem(pStretchAudioCaptureQualityRight, 1, 3, 1, 1);
    1658 
    1659     m_pLabelAudioCaptureQualityMax = new QLabel(m_pContainerSliderAudioCaptureQuality);
    1660     m_pLabelAudioCaptureQualityMax->setObjectName(QStringLiteral("m_pLabelAudioCaptureQualityMax"));
    1661 
    1662     pContainerLayoutSliderAudioCaptureQuality->addWidget(m_pLabelAudioCaptureQualityMax, 1, 4, 1, 1);
    1663     pContainerLayoutVideoCapture->addWidget(m_pContainerSliderAudioCaptureQuality, 7, 1, 2, 1);
    1664 
    1665     m_pLabelVideoCaptureSizeHint = new QLabel(pContainerVideoCaptureOptions);
    1666     m_pLabelVideoCaptureSizeHint->setObjectName(QStringLiteral("m_pLabelVideoCaptureSizeHint"));
    1667     pContainerLayoutVideoCapture->addWidget(m_pLabelVideoCaptureSizeHint, 9, 1, 1, 1);
    1668 
    1669     m_pLabelVideoCaptureScreens = new QLabel(pContainerVideoCaptureOptions);
    1670     m_pLabelVideoCaptureScreens->setObjectName(QStringLiteral("m_pLabelVideoCaptureScreens"));
    1671     m_pLabelVideoCaptureScreens->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignTop);
    1672     pContainerLayoutVideoCapture->addWidget(m_pLabelVideoCaptureScreens, 10, 0, 1, 1);
    1673 
    1674     m_pScrollerVideoCaptureScreens = new UIFilmContainer(pContainerVideoCaptureOptions);
    1675     m_pScrollerVideoCaptureScreens->setObjectName(QStringLiteral("m_pScrollerVideoCaptureScreens"));
    1676     pContainerLayoutVideoCapture->addWidget(m_pScrollerVideoCaptureScreens, 10, 1, 1, 3);
    1677 
    1678     pLayoutContainerVideoCapture->addWidget(pContainerVideoCaptureOptions, 1, 1, 1, 1);
    1679     pLayoutTabVideoCapture->addWidget(m_pContainerVideoCapture);
    1680 
    1681     QSpacerItem *pStretchVideoCapture = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
    1682     pLayoutTabVideoCapture->addItem(pStretchVideoCapture);
    1683     m_pTabWidget->addTab(m_pTabVideoCapture, QString());
    1684     pLayoutMain->addWidget(m_pTabWidget);
    1685 
    1686     m_pLabelVideoScreenCount->setBuddy(m_pEditorVideoScreenCount);
    1687     m_pLabelRemoteDisplayPort->setBuddy(m_pEditorRemoteDisplayPort);
    1688     m_pLabelRemoteDisplayAuthMethod->setBuddy(m_pComboRemoteDisplayAuthMethod);
    1689     m_pLabelRemoteDisplayTimeout->setBuddy(m_pEditorRemoteDisplayTimeout);
    1690     m_pLabelCaptureMode->setBuddy(m_pEditorVideoCapturePath);
    1691     m_pLabelVideoCapturePath->setBuddy(m_pEditorVideoCapturePath);
    1692     m_pLabelVideoCaptureSize->setBuddy(m_pComboVideoCaptureSize);
    1693     m_pLabelVideoCaptureFrameRate->setBuddy(m_pSliderVideoCaptureFrameRate);
    1694     m_pLabelVideoCaptureRate->setBuddy(m_pSliderVideoCaptureQuality);
    1695     m_pAudioCaptureQualityLabel->setBuddy(m_pSliderAudioCaptureQuality);
    1696     m_pLabelVideoCaptureScreens->setBuddy(m_pScrollerVideoCaptureScreens);
    1697 
    1698     QObject::connect(m_pCheckboxRemoteDisplay, &QCheckBox::toggled, m_pContainerRemoteDisplayOptions, &QWidget::setEnabled);
    16991723}
    17001724
     
    17041728    delete m_pCache;
    17051729    m_pCache = 0;
     1730}
     1731
     1732void UIMachineSettingsDisplay::repopulateComboAuthType()
     1733{
     1734    AssertPtrReturnVoid(m_pComboRemoteDisplayAuthMethod);
     1735    {
     1736        /* Clear combo first of all: */
     1737        m_pComboRemoteDisplayAuthMethod->clear();
     1738
     1739        /// @todo get supported auth types, not hardcoded!
     1740        QVector<KAuthType> authTypes = QVector<KAuthType>() << KAuthType_Null
     1741                                                            << KAuthType_External
     1742                                                            << KAuthType_Guest;
     1743
     1744        /* Take into account currently cached value: */
     1745        const KAuthType enmCachedValue = m_pCache->base().m_remoteDisplayAuthType;
     1746        if (!authTypes.contains(enmCachedValue))
     1747            authTypes.prepend(enmCachedValue);
     1748
     1749        /* Populate combo finally: */
     1750        foreach (const KAuthType &enmType, authTypes)
     1751            m_pComboRemoteDisplayAuthMethod->addItem(gpConverter->toString(enmType), QVariant::fromValue(enmType));
     1752    }
    17061753}
    17071754
     
    17211768{
    17221769    /* Look for video-capture size preset: */
    1723     lookForCorrespondingPreset(m_pComboVideoCaptureSize,
    1724                                QSize(m_pEditorVideoCaptureWidth->value(),
    1725                                      m_pEditorVideoCaptureHeight->value()));
     1770    lookForCorrespondingPreset(m_pComboRecordingFrameSize,
     1771                               QSize(m_pSpinboxRecordingFrameWidth->value(),
     1772                                     m_pSpinboxRecordingFrameHeight->value()));
    17261773}
    17271774
     
    17301777    /* Update copy of the cached item to get the desired result: */
    17311778    QVector<BOOL> screens = m_pCache->base().m_vecRecordingScreens;
    1732     screens.resize(m_pEditorVideoScreenCount->value());
    1733     m_pScrollerVideoCaptureScreens->setValue(screens);
    1734     m_pScaleFactorEditor->setMonitorCount(m_pEditorVideoScreenCount->value());
     1779    screens.resize(m_pSpinboxMonitorCount->value());
     1780    m_pScrollerRecordingScreens->setValue(screens);
     1781    m_pEditorScaleFactor->setMonitorCount(m_pSpinboxMonitorCount->value());
    17351782}
    17361783
    17371784void UIMachineSettingsDisplay::updateRecordingFileSizeHint()
    17381785{
    1739     m_pLabelVideoCaptureSizeHint->setText(tr("<i>About %1MB per 5 minute video</i>").arg(m_pEditorVideoCaptureBitRate->value() * 300 / 8 / 1024));
     1786    m_pLabelRecordingSizeHint->setText(tr("<i>About %1MB per 5 minute video</i>").arg(m_pSpinboxRecordingVideoQuality->value() * 300 / 8 / 1024));
    17401787}
    17411788
     
    21292176     * 1. Machine is in 'offline' or 'saved' state and check-box is checked,
    21302177     * 2. Machine is in 'online' state, check-box is checked, and video recording is *disabled* currently. */
    2131     const bool fIsRecordingOptionsEnabled = ((isMachineOffline() || isMachineSaved()) && m_pCheckboxVideoCapture->isChecked()) ||
    2132                                              (isMachineOnline() && !m_pCache->base().m_fRecordingEnabled && m_pCheckboxVideoCapture->isChecked());
     2178    const bool fIsRecordingOptionsEnabled = ((isMachineOffline() || isMachineSaved()) && m_pCheckboxRecording->isChecked()) ||
     2179                                             (isMachineOnline() && !m_pCache->base().m_fRecordingEnabled && m_pCheckboxRecording->isChecked());
    21332180
    21342181    /* Video Capture Screens option should be enabled only if:
    21352182     * Machine is in *any* valid state and check-box is checked. */
    2136     const bool fIsVideoCaptureScreenOptionEnabled = isMachineInValidMode() && m_pCheckboxVideoCapture->isChecked();
     2183    const bool fIsVideoCaptureScreenOptionEnabled = isMachineInValidMode() && m_pCheckboxRecording->isChecked();
    21372184    const UISettingsDefs::RecordingMode enmRecordingMode =
    2138         gpConverter->fromString<UISettingsDefs::RecordingMode>(m_pComboBoxCaptureMode->currentText());
     2185        gpConverter->fromString<UISettingsDefs::RecordingMode>(m_pComboRecordingMode->currentText());
    21392186    const bool fRecordVideo =    enmRecordingMode == UISettingsDefs::RecordingMode_VideoOnly
    21402187                              || enmRecordingMode == UISettingsDefs::RecordingMode_VideoAudio;
     
    21422189                              || enmRecordingMode == UISettingsDefs::RecordingMode_VideoAudio;
    21432190
    2144     m_pLabelVideoCaptureSize->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2145     m_pComboVideoCaptureSize->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2146     m_pEditorVideoCaptureWidth->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2147     m_pEditorVideoCaptureHeight->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2148 
    2149     m_pLabelVideoCaptureFrameRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2150     m_pContainerSliderVideoCaptureFrameRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2151     m_pEditorVideoCaptureFrameRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2152 
    2153     m_pLabelVideoCaptureRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2154     m_pContainerSliderVideoCaptureQuality->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2155     m_pEditorVideoCaptureBitRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
    2156     m_pScrollerVideoCaptureScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled && fRecordVideo);
    2157 
    2158     m_pAudioCaptureQualityLabel->setEnabled(fIsRecordingOptionsEnabled && fRecordAudio);
    2159     m_pContainerSliderAudioCaptureQuality->setEnabled(fIsRecordingOptionsEnabled && fRecordAudio);
    2160 
    2161     m_pLabelVideoCaptureScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled && fRecordVideo);
    2162     m_pLabelVideoCaptureSizeHint->setEnabled(fIsVideoCaptureScreenOptionEnabled && fRecordVideo);
    2163 }
     2191    m_pLabelRecordingFrameSize->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2192    m_pComboRecordingFrameSize->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2193    m_pSpinboxRecordingFrameWidth->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2194    m_pSpinboxRecordingFrameHeight->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2195
     2196    m_pLabelRecordingFrameRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2197    m_pWidgetRecordingFrameRateSettings->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2198    m_pSpinboxRecordingFrameRate->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2199
     2200    m_pLabelRecordingVideoQuality->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2201    m_pWidgetRecordingVideoQualitySettings->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2202    m_pSpinboxRecordingVideoQuality->setEnabled(fIsRecordingOptionsEnabled && fRecordVideo);
     2203    m_pScrollerRecordingScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled && fRecordVideo);
     2204
     2205    m_pLabelRecordingAudioQuality->setEnabled(fIsRecordingOptionsEnabled && fRecordAudio);
     2206    m_pWidgetRecordingAudioQualitySettings->setEnabled(fIsRecordingOptionsEnabled && fRecordAudio);
     2207
     2208    m_pLabelRecordingScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled && fRecordVideo);
     2209    m_pLabelRecordingSizeHint->setEnabled(fIsVideoCaptureScreenOptionEnabled && fRecordVideo);
     2210}
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h

    r85710 r85851  
    138138    /** Prepares all. */
    139139    void prepare();
     140    /** Prepares widgets. */
     141    void prepareWidgets();
    140142    /** Prepares 'Screen' tab. */
    141143    void prepareTabScreen();
     
    146148    /** Prepares connections. */
    147149    void prepareConnections();
    148     /** Prepares widgets. */
    149     void prepareWidgets();
    150150    /** Cleanups all. */
    151151    void cleanup();
     152
     153    /** Repopulates auth type combo-box. */
     154    void repopulateComboAuthType();
    152155
    153156    /** Returns whether the VRAM requirements are important. */
     
    191194    /** @name Widgets
    192195     * @{ */
    193        QCheckBox *m_pCheckbox3D;
    194        QCheckBox *m_pCheckboxRemoteDisplay;
    195        QCheckBox *m_pCheckboxMultipleConn;
    196        QCheckBox *m_pCheckboxVideoCapture;
    197        QComboBox *m_pComboRemoteDisplayAuthMethod;
    198        QComboBox *m_pComboBoxCaptureMode;
    199        QComboBox *m_pComboVideoCaptureSize;
    200        QLabel *m_pLabelVideoScreenCountMin;
    201        QLabel *m_pLabelVideoScreenCountMax;
    202        QLabel *m_pLabelVideoCaptureFrameRateMin;
    203        QLabel *m_pLabelVideoCaptureFrameRateMax;
    204        QLabel *m_pLabelVideoCaptureQualityMin;
    205        QLabel *m_pLabelVideoCaptureQualityMed;
    206        QLabel *m_pLabelVideoCaptureQualityMax;
    207        QLabel *m_pLabelAudioCaptureQualityMin;
    208        QLabel *m_pLabelAudioCaptureQualityMed;
    209        QLabel *m_pLabelAudioCaptureQualityMax;
    210        QLabel *m_pVideoMemoryLabel;
    211        QLabel *m_pLabelVideoScreenCount;
    212        QLabel *m_pGraphicsControllerLabel;
    213        QLabel *m_pLabelVideoOptions;
    214        QLabel *m_pLabelRemoteDisplayOptions;
    215        QLabel *m_pLabelCaptureMode;
    216        QLabel *m_pLabelVideoCapturePath;
    217        QLabel *m_pLabelVideoCaptureSizeHint;
    218        QLabel *m_pLabelVideoCaptureSize;
    219        QLabel *m_pLabelVideoCaptureFrameRate;
    220        QLabel *m_pLabelVideoCaptureRate;
    221        QLabel *m_pAudioCaptureQualityLabel;
    222        QLabel *m_pLabelVideoCaptureScreens;
    223        QLabel *m_pLabelGuestScreenScaleFactorEditor;
    224        QLabel *m_pLabelRemoteDisplayPort;
    225        QLabel *m_pLabelRemoteDisplayAuthMethod;
    226        QLabel *m_pLabelRemoteDisplayTimeout;
    227        QLineEdit *m_pEditorRemoteDisplayPort;
    228        QLineEdit *m_pEditorRemoteDisplayTimeout;
    229        QSpinBox *m_pEditorVideoScreenCount;
    230        QSpinBox *m_pEditorVideoCaptureWidth;
    231        QSpinBox *m_pEditorVideoCaptureFrameRate;
    232        QSpinBox *m_pEditorVideoCaptureHeight;
    233        QSpinBox *m_pEditorVideoCaptureBitRate;
    234        UIGraphicsControllerEditor *m_pGraphicsControllerEditor;
    235        UIScaleFactorEditor *m_pScaleFactorEditor;
    236        UIVideoMemoryEditor *m_pVideoMemoryEditor;
    237        UIFilePathSelector *m_pEditorVideoCapturePath;
    238        UIFilmContainer *m_pScrollerVideoCaptureScreens;
    239        QIAdvancedSlider *m_pSliderAudioCaptureQuality;
    240        QIAdvancedSlider *m_pSliderVideoScreenCount;
    241        QIAdvancedSlider *m_pSliderVideoCaptureFrameRate;
    242        QIAdvancedSlider *m_pSliderVideoCaptureQuality;
    243        QITabWidget *m_pTabWidget;
    244        QWidget *m_pContainerRemoteDisplay;
    245        QWidget *m_pContainerRemoteDisplayOptions;
    246        QWidget *m_pContainerVideoCapture;
    247        QWidget *m_pContainerSliderVideoCaptureFrameRate;
    248        QWidget *m_pContainerSliderVideoCaptureQuality;
    249        QWidget *m_pContainerSliderAudioCaptureQuality;
    250        QWidget *m_pTabVideo;
    251        QWidget *m_pTabRemoteDisplay;
    252        QWidget *m_pTabVideoCapture;
    253        QGridLayout *m_pContainerLayoutSliderVideoCaptureQuality;
    254        QStackedLayout *m_pLayout3D;
     196        /** Holds the tab-widget instance. */
     197        QITabWidget *m_pTabWidget;
     198
     199        /** Holds the 'Screen' tab instance. */
     200        QWidget                    *m_pTabScreen;
     201        /** Holds the video memory size label instance. */
     202        QLabel                     *m_pLabelVideoMemorySize;
     203        /** Holds the video memory size editor instance. */
     204        UIVideoMemoryEditor        *m_pEditorVideoMemorySize;
     205        /** Holds the monitor count label instance. */
     206        QLabel                     *m_pLabelMonitorCount;
     207        /** Holds the monitor count slider instance. */
     208        QIAdvancedSlider           *m_pSliderMonitorCount;
     209        /** Holds the monitor count spinbox instance. */
     210        QSpinBox                   *m_pSpinboxMonitorCount;
     211        /** Holds the monitor count min label instance. */
     212        QLabel                     *m_pLabelMonitorCountMin;
     213        /** Holds the monitor count max label instance. */
     214        QLabel                     *m_pLabelMonitorCountMax;
     215        /** Holds the scale factor label instance. */
     216        QLabel                     *m_pLabelScaleFactor;
     217        /** Holds the scale factor editor instance. */
     218        UIScaleFactorEditor        *m_pEditorScaleFactor;
     219        /** Holds the graphics controller label instance. */
     220        QLabel                     *m_pLabelGraphicsController;
     221        /** Holds the graphics controller editor instance. */
     222        UIGraphicsControllerEditor *m_pEditorGraphicsController;
     223        /** Holds the acceleration label instance. */
     224        QLabel                     *m_pLabelAcceleration;
     225        /** Holds the 3D check-box instance. */
     226        QCheckBox                  *m_pCheckbox3D;
     227
     228        /** Holds the 'Remote Display' tab instance. */
     229        QWidget   *m_pTabRemoteDisplay;
     230        /** Holds the remote display check-box instance. */
     231        QCheckBox *m_pCheckboxRemoteDisplay;
     232        /** Holds the remote display settings widget instance. */
     233        QWidget   *m_pWidgetRemoteDisplaySettings;
     234        /** Holds the remote display port label instance. */
     235        QLabel    *m_pLabelRemoteDisplayPort;
     236        /** Holds the remote display port editor instance. */
     237        QLineEdit *m_pEditorRemoteDisplayPort;
     238        /** Holds the remote display port auth method label instance. */
     239        QLabel    *m_pLabelRemoteDisplayAuthMethod;
     240        /** Holds the remote display port auth method combo instance. */
     241        QComboBox *m_pComboRemoteDisplayAuthMethod;
     242        /** Holds the remote display timeout label instance. */
     243        QLabel    *m_pLabelRemoteDisplayTimeout;
     244        /** Holds the remote display timeout editor instance. */
     245        QLineEdit *m_pEditorRemoteDisplayTimeout;
     246        /** Holds the remote display options label instance. */
     247        QLabel    *m_pLabelRemoteDisplayOptions;
     248        /** Holds the remote display multiple connection check-box instance. */
     249        QCheckBox *m_pCheckboxMultipleConn;
     250
     251        /** Holds the 'Recording' tab instance. */
     252        QWidget            *m_pTabRecording;
     253        /** Holds the recording check-box instance. */
     254        QCheckBox          *m_pCheckboxRecording;
     255        /** Holds the recording settings widget instance. */
     256        QWidget            *m_pWidgetRecordingSettings;
     257        /** Holds the recording mode label instance. */
     258        QLabel             *m_pLabelRecordingMode;
     259        /** Holds the recording mode combo instance. */
     260        QComboBox          *m_pComboRecordingMode;
     261        /** Holds the recording file path label instance. */
     262        QLabel             *m_pLabelRecordingFilePath;
     263        /** Holds the recording file path editor instance. */
     264        UIFilePathSelector *m_pEditorRecordingFilePath;
     265        /** Holds the recording frame size label instance. */
     266        QLabel             *m_pLabelRecordingFrameSize;
     267        /** Holds the recording frame size combo instance. */
     268        QComboBox          *m_pComboRecordingFrameSize;
     269        /** Holds the recording frame width spinbox instance. */
     270        QSpinBox           *m_pSpinboxRecordingFrameWidth;
     271        /** Holds the recording frame height spinbox instance. */
     272        QSpinBox           *m_pSpinboxRecordingFrameHeight;
     273        /** Holds the recording frame rate label instance. */
     274        QLabel             *m_pLabelRecordingFrameRate;
     275        /** Holds the recording frame rate settings widget instance. */
     276        QWidget            *m_pWidgetRecordingFrameRateSettings;
     277        /** Holds the recording frame rate slider instance. */
     278        QIAdvancedSlider   *m_pSliderRecordingFrameRate;
     279        /** Holds the recording frame rate spinbox instance. */
     280        QSpinBox           *m_pSpinboxRecordingFrameRate;
     281        /** Holds the recording frame rate min label instance. */
     282        QLabel             *m_pLabelRecordingFrameRateMin;
     283        /** Holds the recording frame rate max label instance. */
     284        QLabel             *m_pLabelRecordingFrameRateMax;
     285        /** Holds the recording video quality label instance. */
     286        QLabel             *m_pLabelRecordingVideoQuality;
     287        /** Holds the recording video quality settings widget instance. */
     288        QWidget            *m_pWidgetRecordingVideoQualitySettings;
     289        /** Holds the recording video quality slider instance. */
     290        QIAdvancedSlider   *m_pSliderRecordingVideoQuality;
     291        /** Holds the recording video quality spinbox instance. */
     292        QSpinBox           *m_pSpinboxRecordingVideoQuality;
     293        /** Holds the recording video quality min label instance. */
     294        QLabel             *m_pLabelRecordingVideoQualityMin;
     295        /** Holds the recording video quality med label instance. */
     296        QLabel             *m_pLabelRecordingVideoQualityMed;
     297        /** Holds the recording video quality max label instance. */
     298        QLabel             *m_pLabelRecordingVideoQualityMax;
     299        /** Holds the recording audio quality label instance. */
     300        QLabel             *m_pLabelRecordingAudioQuality;
     301        /** Holds the recording audio quality settings widget instance. */
     302        QWidget            *m_pWidgetRecordingAudioQualitySettings;
     303        /** Holds the recording audio quality slider instance. */
     304        QIAdvancedSlider   *m_pSliderRecordingAudioQuality;
     305        /** Holds the recording audio quality min label instance. */
     306        QLabel             *m_pLabelRecordingAudioQualityMin;
     307        /** Holds the recording audio quality med label instance. */
     308        QLabel             *m_pLabelRecordingAudioQualityMed;
     309        /** Holds the recording audio quality max label instance. */
     310        QLabel             *m_pLabelRecordingAudioQualityMax;
     311        /** Holds the recording size hint label instance. */
     312        QLabel             *m_pLabelRecordingSizeHint;
     313        /** Holds the recording screens label instance. */
     314        QLabel             *m_pLabelRecordingScreens;
     315        /** Holds the recording screens scroller instance. */
     316        UIFilmContainer    *m_pScrollerRecordingScreens;
    255317   /** @} */
    256318};
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette