/* Load data to cache from corresponding external object(s), * this task COULD be performed in other than GUI thread: */ void UIMachineSettingsDisplay::loadToCacheFrom(QVariant &data) { /* Fetch data to machine: */ UISettingsPageMachine::fetchData(data); /* Clear cache initially: */ m_cache.clear(); /* Prepare display data: */ UIDataSettingsMachineDisplay displayData; /* Cache Screen data: */ displayData.m_iCurrentVRAM = m_machine.GetVRAMSize(); displayData.m_cGuestScreenCount = m_machine.GetMonitorCount(); displayData.m_dScaleFactor = gEDataManager->scaleFactor(m_machine.GetId()); #ifdef Q_WS_MAC displayData.m_fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(m_machine.GetId()); #endif /* Q_WS_MAC */ displayData.m_f3dAccelerationEnabled = m_machine.GetAccelerate3DEnabled(); #ifdef VBOX_WITH_VIDEOHWACCEL displayData.m_f2dAccelerationEnabled = m_machine.GetAccelerate2DVideoEnabled(); #endif /* VBOX_WITH_VIDEOHWACCEL */ /* Check if Remote Display server is valid: */ CVRDEServer remoteDisplayServer = m_machine.GetVRDEServer(); displayData.m_fRemoteDisplayServerSupported = !remoteDisplayServer.isNull(); if (!remoteDisplayServer.isNull()) { /* Cache Remote Display data: */ displayData.m_fRemoteDisplayServerEnabled = remoteDisplayServer.GetEnabled(); displayData.m_strRemoteDisplayPort = remoteDisplayServer.GetVRDEProperty("TCP/Ports"); displayData.m_remoteDisplayAuthType = remoteDisplayServer.GetAuthType(); displayData.m_uRemoteDisplayTimeout = remoteDisplayServer.GetAuthTimeout(); displayData.m_fRemoteDisplayMultiConnAllowed = remoteDisplayServer.GetAllowMultiConnection(); } /* Cache Video Capture data: */ displayData.m_fVideoCaptureEnabled = m_machine.GetVideoCaptureEnabled(); displayData.m_strVideoCaptureFolder = QFileInfo(m_machine.GetSettingsFilePath()).absolutePath(); displayData.m_strVideoCaptureFilePath = m_machine.GetVideoCaptureFile(); displayData.m_iVideoCaptureFrameWidth = m_machine.GetVideoCaptureWidth(); displayData.m_iVideoCaptureFrameHeight = m_machine.GetVideoCaptureHeight(); displayData.m_iVideoCaptureFrameRate = m_machine.GetVideoCaptureFPS(); displayData.m_iVideoCaptureBitRate = m_machine.GetVideoCaptureRate(); displayData.m_screens = m_machine.GetVideoCaptureScreens(); /* Initialize other variables: */ m_iInitialVRAM = RT_MIN(displayData.m_iCurrentVRAM, m_iMaxVRAM); /* Cache display data: */ m_cache.cacheInitialData(displayData); /* Upload machine to data: */ UISettingsPageMachine::uploadData(data); }
void UIGInformationUpdateTaskDisplay::run() { /* Acquire corresponding machine: */ CMachine machine = property("machine").value<CMachine>(); if (machine.isNull()) return; /* Prepare table: */ UITextTable table; /* Gather information: */ if (machine.GetAccessible()) { /* Video memory: */ table << UITextTableLine(QApplication::translate("UIGInformation", "Video Memory", "details (display)"), QApplication::translate("UIGInformation", "%1 MB", "details").arg(machine.GetVRAMSize())); /* Screen count: */ int cGuestScreens = machine.GetMonitorCount(); if (cGuestScreens > 1) table << UITextTableLine(QApplication::translate("UIGInformation", "Screens", "details (display)"), QString::number(cGuestScreens)); /* Get scale-factor value: */ const QString strScaleFactor = machine.GetExtraData(UIExtraDataDefs::GUI_ScaleFactor); { /* Try to convert loaded data to double: */ bool fOk = false; double dValue = strScaleFactor.toDouble(&fOk); /* Invent the default value: */ if (!fOk || !dValue) dValue = 1.0; /* Append information: */ if (dValue != 1.0) table << UITextTableLine(QApplication::translate("UIGInformation", "Scale-factor", "details (display)"), QString::number(dValue, 'f', 2)); } #ifdef Q_WS_MAC /* Get 'Unscaled HiDPI Video Output' mode value: */ const QString strUnscaledHiDPIMode = machine.GetExtraData(UIExtraDataDefs::GUI_HiDPI_UnscaledOutput); { /* Try to convert loaded data to bool: */ const bool fEnabled = strUnscaledHiDPIMode.compare("true", Qt::CaseInsensitive) == 0 || strUnscaledHiDPIMode.compare("yes", Qt::CaseInsensitive) == 0 || strUnscaledHiDPIMode.compare("on", Qt::CaseInsensitive) == 0 || strUnscaledHiDPIMode == "1"; /* Append information: */ if (fEnabled) table << UITextTableLine(QApplication::translate("UIGInformation", "Unscaled HiDPI Video Output", "details (display)"), QApplication::translate("UIGInformation", "Enabled", "details (display/Unscaled HiDPI Video Output)")); } #endif /* Q_WS_MAC */ QStringList acceleration; #ifdef VBOX_WITH_VIDEOHWACCEL /* 2D acceleration: */ if (machine.GetAccelerate2DVideoEnabled()) acceleration << QApplication::translate("UIGInformation", "2D Video", "details (display)"); #endif /* VBOX_WITH_VIDEOHWACCEL */ /* 3D acceleration: */ if (machine.GetAccelerate3DEnabled()) acceleration << QApplication::translate("UIGInformation", "3D", "details (display)"); if (!acceleration.isEmpty()) table << UITextTableLine(QApplication::translate("UIGInformation", "Acceleration", "details (display)"), acceleration.join(", ")); /* VRDE info: */ CVRDEServer srv = machine.GetVRDEServer(); if (!srv.isNull()) { if (srv.GetEnabled()) table << UITextTableLine(QApplication::translate("UIGInformation", "Remote Desktop Server Port", "details (display/vrde)"), srv.GetVRDEProperty("TCP/Ports")); else table << UITextTableLine(QApplication::translate("UIGInformation", "Remote Desktop Server", "details (display/vrde)"), QApplication::translate("UIGInformation", "Disabled", "details (display/vrde/VRDE server)")); } /* Video Capture info: */ if (machine.GetVideoCaptureEnabled()) { table << UITextTableLine(QApplication::translate("UIGInformation", "Video Capture File", "details (display/video capture)"), machine.GetVideoCaptureFile()); table << UITextTableLine(QApplication::translate("UIGInformation", "Video Capture Attributes", "details (display/video capture)"), QApplication::translate("UIGInformation", "Frame Size: %1x%2, Frame Rate: %3fps, Bit Rate: %4kbps") .arg(machine.GetVideoCaptureWidth()).arg(machine.GetVideoCaptureHeight()) .arg(machine.GetVideoCaptureFPS()).arg(machine.GetVideoCaptureRate())); } else { table << UITextTableLine(QApplication::translate("UIGInformation", "Video Capture", "details (display/video capture)"), QApplication::translate("UIGInformation", "Disabled", "details (display/video capture)")); } } else table << UITextTableLine(QApplication::translate("UIGInformation", "Information Inaccessible", "details"), QString()); /* Save the table as property: */ setProperty("table", QVariant::fromValue(table)); }
/* 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); }