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));
}