void UIMachineSettingsDisplay::sltHandleVideoCaptureCheckboxToggle() { /* Video Capture options should be enabled only if: * 1. Machine is in 'offline' or 'saved' state and check-box is checked, * 2. Machine is in 'online' state, check-box is checked, and video recording is *disabled* currently. */ bool fIsVideoCaptureOptionsEnabled = ((isMachineOffline() || isMachineSaved()) && m_pCheckboxVideoCapture->isChecked()) || (isMachineOnline() && !m_cache.base().m_fVideoCaptureEnabled && m_pCheckboxVideoCapture->isChecked()); /* Video Capture Screens option should be enabled only if: * Machine is in *any* valid state and check-box is checked. */ bool fIsVideoCaptureScreenOptionEnabled = isMachineInValidMode() && m_pCheckboxVideoCapture->isChecked(); m_pLabelVideoCapturePath->setEnabled(fIsVideoCaptureOptionsEnabled); m_pEditorVideoCapturePath->setEnabled(fIsVideoCaptureOptionsEnabled); m_pLabelVideoCaptureSize->setEnabled(fIsVideoCaptureOptionsEnabled); m_pComboVideoCaptureSize->setEnabled(fIsVideoCaptureOptionsEnabled); m_pEditorVideoCaptureWidth->setEnabled(fIsVideoCaptureOptionsEnabled); m_pEditorVideoCaptureHeight->setEnabled(fIsVideoCaptureOptionsEnabled); m_pLabelVideoCaptureFrameRate->setEnabled(fIsVideoCaptureOptionsEnabled); m_pContainerSliderVideoCaptureFrameRate->setEnabled(fIsVideoCaptureOptionsEnabled); m_pEditorVideoCaptureFrameRate->setEnabled(fIsVideoCaptureOptionsEnabled); m_pLabelVideoCaptureFrameRateUnits->setEnabled(fIsVideoCaptureOptionsEnabled); m_pLabelVideoCaptureRate->setEnabled(fIsVideoCaptureOptionsEnabled); m_pContainerSliderVideoCaptureQuality->setEnabled(fIsVideoCaptureOptionsEnabled); m_pEditorVideoCaptureBitRate->setEnabled(fIsVideoCaptureOptionsEnabled); m_pLabelVideoCaptureBitRateUnits->setEnabled(fIsVideoCaptureOptionsEnabled); m_pLabelVideoCaptureScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled); m_pScrollerVideoCaptureScreens->setEnabled(fIsVideoCaptureScreenOptionEnabled); }
void UIMachineSettingsDisplay::polishPage() { /* Get system data from cache: */ const UIDataSettingsMachineDisplay &displayData = m_cache.base(); /* Screen tab: */ m_pLabelVideoMemorySize->setEnabled(isMachineOffline()); m_pSliderVideoMemorySize->setEnabled(isMachineOffline()); m_pLabelVideoMemorySizeMin->setEnabled(isMachineOffline()); m_pLabelVideoMemorySizeMax->setEnabled(isMachineOffline()); m_pEditorVideoMemorySize->setEnabled(isMachineOffline()); m_pLabelVideoScreenCount->setEnabled(isMachineOffline()); m_pSliderVideoScreenCount->setEnabled(isMachineOffline()); m_pLabelVideoScreenCountMin->setEnabled(isMachineOffline()); m_pLabelVideoScreenCountMax->setEnabled(isMachineOffline()); m_pEditorVideoScreenCount->setEnabled(isMachineOffline()); m_pLabelGuestScreenScale->setEnabled(isMachineInValidMode()); m_pSliderGuestScreenScale->setEnabled(isMachineInValidMode()); m_pLabelGuestScreenScaleMin->setEnabled(isMachineInValidMode()); m_pLabelGuestScreenScaleMax->setEnabled(isMachineInValidMode()); m_pEditorGuestScreenScale->setEnabled(isMachineInValidMode()); #ifdef Q_WS_MAC m_pLabelHiDPI->setEnabled(isMachineInValidMode()); m_pCheckBoxUnscaledHiDPIOutput->setEnabled(isMachineInValidMode()); #else /* !Q_WS_MAC */ m_pLabelHiDPI->hide(); m_pCheckBoxUnscaledHiDPIOutput->hide(); #endif /* !Q_WS_MAC */ m_pLabelVideoOptions->setEnabled(isMachineOffline()); m_pCheckbox3D->setEnabled(isMachineOffline()); #ifdef VBOX_WITH_VIDEOHWACCEL m_pCheckbox2DVideo->setEnabled(isMachineOffline() && VBoxGlobal::isAcceleration2DVideoAvailable()); #else /* !VBOX_WITH_VIDEOHWACCEL */ m_pCheckbox2DVideo->hide(); #endif /* !VBOX_WITH_VIDEOHWACCEL */ /* Remote Display tab: */ m_pTabWidget->setTabEnabled(1, displayData.m_fRemoteDisplayServerSupported); m_pContainerRemoteDisplay->setEnabled(isMachineInValidMode()); m_pContainerRemoteDisplayOptions->setEnabled(m_pCheckboxRemoteDisplay->isChecked()); m_pLabelRemoteDisplayOptions->setEnabled(isMachineOffline() || isMachineSaved()); m_pCheckboxMultipleConn->setEnabled(isMachineOffline() || isMachineSaved()); /* Video Capture tab: */ m_pContainerVideoCapture->setEnabled(isMachineInValidMode()); sltHandleVideoCaptureCheckboxToggle(); }
void UIMachineSettingsDisplay::polishPage() { /* Get system data from cache: */ const UIDataSettingsMachineDisplay &displayData = m_cache.base(); /* Video tab: */ m_pContainerVideo->setEnabled(isMachineOffline()); #ifdef VBOX_WITH_VIDEOHWACCEL m_pCheckbox2DVideo->setEnabled(VBoxGlobal::isAcceleration2DVideoAvailable()); #endif /* VBOX_WITH_VIDEOHWACCEL */ /* Remote Display tab: */ m_pTabWidget->setTabEnabled(1, displayData.m_fRemoteDisplayServerSupported); m_pContainerRemoteDisplay->setEnabled(isMachineInValidMode()); m_pContainerRemoteDisplayOptions->setEnabled(m_pCheckboxRemoteDisplay->isChecked()); m_pLabelRemoteDisplayOptions->setEnabled(isMachineOffline() || isMachineSaved()); m_pCheckboxMultipleConn->setEnabled(isMachineOffline() || isMachineSaved()); /* Video Capture tab: */ m_pContainerVideoCapture->setEnabled(isMachineInValidMode()); sltHandleVideoCaptureCheckboxToggle(); }
/* Save data from cache to corresponding external object(s), * this task COULD be performed in other than GUI thread: */ void UIMachineSettingsDisplay::saveFromCacheTo(QVariant &data) { /* Fetch data to machine: */ UISettingsPageMachine::fetchData(data); /* Make sure machine is in valid mode & display data was changed: */ if (isMachineInValidMode() && m_cache.wasChanged()) { /* Get display data from cache: */ const UIDataSettingsMachineDisplay &displayData = m_cache.data(); /* Make sure machine is 'offline': */ if (isMachineOffline()) { /* Store Video data: */ m_machine.SetVRAMSize(displayData.m_iCurrentVRAM); m_machine.SetMonitorCount(displayData.m_cGuestScreenCount); m_machine.SetAccelerate3DEnabled(displayData.m_f3dAccelerationEnabled); #ifdef VBOX_WITH_VIDEOHWACCEL m_machine.SetAccelerate2DVideoEnabled(displayData.m_f2dAccelerationEnabled); #endif /* VBOX_WITH_VIDEOHWACCEL */ } /* Check if Remote Display server still valid: */ CVRDEServer remoteDisplayServer = m_machine.GetVRDEServer(); if (!remoteDisplayServer.isNull()) { /* Store Remote Display data: */ remoteDisplayServer.SetEnabled(displayData.m_fRemoteDisplayServerEnabled); remoteDisplayServer.SetVRDEProperty("TCP/Ports", displayData.m_strRemoteDisplayPort); remoteDisplayServer.SetAuthType(displayData.m_remoteDisplayAuthType); remoteDisplayServer.SetAuthTimeout(displayData.m_uRemoteDisplayTimeout); /* Make sure machine is 'offline' or 'saved': */ if (isMachineOffline() || isMachineSaved()) remoteDisplayServer.SetAllowMultiConnection(displayData.m_fRemoteDisplayMultiConnAllowed); } /* Store Video Capture data: */ if (isMachineOnline()) { /* If Video Capture is *enabled* now: */ if (m_cache.base().m_fVideoCaptureEnabled) { /* We can still save the *screens* option: */ m_machine.SetVideoCaptureScreens(displayData.m_screens); /* Finally we should *disable* Video Capture if necessary: */ if (!displayData.m_fVideoCaptureEnabled) m_machine.SetVideoCaptureEnabled(displayData.m_fVideoCaptureEnabled); } /* If Video Capture is *disabled* now: */ else { /* We should save all the options *before* Video Capture activation: */ m_machine.SetVideoCaptureFile(displayData.m_strVideoCaptureFilePath); m_machine.SetVideoCaptureWidth(displayData.m_iVideoCaptureFrameWidth); m_machine.SetVideoCaptureHeight(displayData.m_iVideoCaptureFrameHeight); m_machine.SetVideoCaptureFPS(displayData.m_iVideoCaptureFrameRate); m_machine.SetVideoCaptureRate(displayData.m_iVideoCaptureBitRate); m_machine.SetVideoCaptureScreens(displayData.m_screens); /* Finally we should *enable* Video Capture if necessary: */ if (displayData.m_fVideoCaptureEnabled) m_machine.SetVideoCaptureEnabled(displayData.m_fVideoCaptureEnabled); } } else { /* For 'offline' and 'saved' states the order is irrelevant: */ m_machine.SetVideoCaptureEnabled(displayData.m_fVideoCaptureEnabled); m_machine.SetVideoCaptureFile(displayData.m_strVideoCaptureFilePath); m_machine.SetVideoCaptureWidth(displayData.m_iVideoCaptureFrameWidth); m_machine.SetVideoCaptureHeight(displayData.m_iVideoCaptureFrameHeight); m_machine.SetVideoCaptureFPS(displayData.m_iVideoCaptureFrameRate); m_machine.SetVideoCaptureRate(displayData.m_iVideoCaptureBitRate); m_machine.SetVideoCaptureScreens(displayData.m_screens); } } /* Upload machine to data: */ UISettingsPageMachine::uploadData(data); }