VirtualBox

Changeset 68764 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Sep 14, 2017 3:44:36 PM (7 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:8901: Reworking snapshot details report code (step 4): Emphasize current state changes according to current snapshot.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/selector
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/UISnapshotDetailsWidget.cpp

    r68763 r68764  
    631631        /* Rebuild the details report: */
    632632        foreach (const DetailsElementType &enmType, m_details.keys())
    633             m_details.value(enmType)->setText(detailsReport(enmType, comMachine));
     633            m_details.value(enmType)->setText(detailsReport(enmType, comMachine, comMachine.GetCurrentSnapshot()));
    634634    }
    635635
     
    11201120
    11211121QString UISnapshotDetailsWidget::detailsReport(DetailsElementType enmType,
    1122                                                const CMachine &comMachine) const
     1122                                               const CMachine &comMachine,
     1123                                               const CSnapshot &comSnapshot /* = CSnapshot() */) const
    11231124{
    11241125    /* Details templates: */
     
    11541155    const int iIconArea = iIconMetric * 1.375;
    11551156
     1157    /* Acquire current snapshot machine if any: */
     1158    const CMachine comMachineOld = comSnapshot.isNotNull() ? comSnapshot.GetMachine() : comMachine;
     1159
    11561160    /* Compose report: */
    11571161    QString strReport;
     
    11651169            ++iRowCount;
    11661170            strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Name", "details (general)"),
    1167                                                      comMachine.GetName());
     1171                                                     empReport(comMachine.GetName(), comMachineOld.GetName()));
    11681172
    11691173            /* Operating System: */
    11701174            ++iRowCount;
    11711175            strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Operating System", "details (general)"),
    1172                                                      vboxGlobal().vmGuestOSTypeDescription(comMachine.GetOSTypeId()));
     1176                                                     empReport(vboxGlobal().vmGuestOSTypeDescription(comMachine.GetOSTypeId()),
     1177                                                               vboxGlobal().vmGuestOSTypeDescription(comMachineOld.GetOSTypeId())));
    11731178
    11741179            /* Groups? */
    11751180            const QString strGroups = groupReport(comMachine);
     1181            const QString strGroupsOld = groupReport(comMachineOld);
    11761182            if (!strGroups.isNull())
    11771183            {
    11781184                ++iRowCount;
    11791185                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Groups", "details (general)"),
    1180                                                          strGroups);
     1186                                                         empReport(strGroups, strGroupsOld));
    11811187            }
    11821188
     
    11881194            ++iRowCount;
    11891195            const QString strMemory = QApplication::translate("UIGDetails", "%1 MB", "details").arg(comMachine.GetMemorySize());
     1196            const QString strMemoryOld = QApplication::translate("UIGDetails", "%1 MB", "details").arg(comMachineOld.GetMemorySize());
    11901197            strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Base Memory", "details (system)"),
    1191                                                      strMemory);
     1198                                                     empReport(strMemory, strMemoryOld));
    11921199
    11931200            /* Processors? */
    11941201            const int cCpu = comMachine.GetCPUCount();
     1202            const int cCpuOld = comMachineOld.GetCPUCount();
    11951203            if (cCpu > 1)
    11961204            {
    11971205                ++iRowCount;
    11981206                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Processors", "details (system)"),
    1199                                                          QString::number(cCpu));
     1207                                                         empReport(QString::number(cCpu), QString::number(cCpuOld)));
    12001208            }
    12011209
     
    12061214                ++iRowCount;
    12071215                const QString strExecutionCap = QApplication::translate("UIGDetails", "%1%", "details").arg(uExecutionCap);
     1216                const QString strExecutionCapOld = QApplication::translate("UIGDetails", "%1%", "details").arg(comMachineOld.GetCPUExecutionCap());
    12081217                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Execution Cap", "details (system)"),
    1209                                                          strExecutionCap);
     1218                                                         empReport(strExecutionCap, strExecutionCapOld));
    12101219            }
    12111220
     
    12131222            ++iRowCount;
    12141223            const QString strBootOrder = bootOrderReport(comMachine);
     1224            const QString strBootOrderOld = bootOrderReport(comMachineOld);
    12151225            strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Boot Order", "details (system)"),
    1216                                                      strBootOrder);
     1226                                                     empReport(strBootOrder, strBootOrderOld));
    12171227
    12181228            /* Chipset Type? */
    12191229            const KChipsetType enmChipsetType = comMachine.GetChipsetType();
     1230            const KChipsetType enmChipsetTypeOld = comMachineOld.GetChipsetType();
    12201231            if (enmChipsetType == KChipsetType_ICH9)
    12211232            {
    12221233                ++iRowCount;
    12231234                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Chipset Type", "details (system)"),
    1224                                                          gpConverter->toString(enmChipsetType));
     1235                                                         empReport(gpConverter->toString(enmChipsetType),
     1236                                                                   gpConverter->toString(enmChipsetTypeOld)));
    12251237            }
    12261238
    12271239            /* EFI? */
    12281240            const QString strEfiState = efiStateReport(comMachine);
     1241            const QString strEfiStateOld = efiStateReport(comMachineOld);
    12291242            if (!strEfiState.isNull())
    12301243            {
    12311244                ++iRowCount;
    12321245                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "EFI", "details (system)"),
    1233                                                          strEfiState);
     1246                                                         empReport(strEfiState, strEfiStateOld));
    12341247            }
    12351248
    12361249            /* Acceleration? */
    12371250            const QString strAcceleration = accelerationReport(comMachine);
     1251            const QString strAccelerationOld = accelerationReport(comMachineOld);
    12381252            if (!strAcceleration.isNull())
    12391253            {
    12401254                ++iRowCount;
    12411255                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Acceleration", "details (system)"),
    1242                                                          strAcceleration);
     1256                                                         empReport(strAcceleration, strAccelerationOld));
    12431257            }
    12441258
     
    12581272            ++iRowCount;
    12591273            const QString strVram = QApplication::translate("UIGDetails", "%1 MB", "details").arg(comMachine.GetVRAMSize());
     1274            const QString strVramOld = QApplication::translate("UIGDetails", "%1 MB", "details").arg(comMachineOld.GetVRAMSize());
    12601275            strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Video Memory", "details (display)"),
    1261                                                      strVram);
     1276                                                     empReport(strVram, strVramOld));
    12621277
    12631278            /* Screens? */
    12641279            const int cScreens = comMachine.GetMonitorCount();
     1280            const int cScreensOld = comMachineOld.GetMonitorCount();
    12651281            if (cScreens > 1)
    12661282            {
    12671283                ++iRowCount;
    12681284                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Screens", "details (display)"),
    1269                                                          QString::number(cScreens));
     1285                                                         empReport(QString::number(cScreens), QString::number(cScreensOld)));
    12701286            }
    12711287
    12721288            /* Scale-factor? */
    12731289            const double uScaleFactor = scaleFactorReport(comMachine);
     1290            const double uScaleFactorOld = scaleFactorReport(comMachineOld);
    12741291            if (uScaleFactor != 1.0)
    12751292            {
    12761293                ++iRowCount;
    12771294                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Scale-factor", "details (display)"),
    1278                                                          QString::number(uScaleFactor, 'f', 2));
     1295                                                         empReport(QString::number(uScaleFactor, 'f', 2),
     1296                                                                   QString::number(uScaleFactorOld, 'f', 2)));
    12791297            }
    12801298
     
    12821300            /* Unscaled HiDPI Video Output? */
    12831301            const QString strUnscaledOutput = unscaledOutputReport(comMachine);
     1302            const QString strUnscaledOutputOld = unscaledOutputReport(comMachineOld);
    12841303            if (!strUnscaledOutput.isNull())
    12851304            {
    12861305                ++iRowCount;
    12871306                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Unscaled HiDPI Video Output", "details (display)"),
    1288                                                          strUnscaledOutput);
     1307                                                         empReport(strUnscaledOutput, strUnscaledOutputOld));
    12891308            }
    12901309#endif /* VBOX_WS_MAC */
     
    12921311            /* Acceleration? */
    12931312            const QString strAcceleration = displayAccelerationReport(comMachine);
     1313            const QString strAccelerationOld = displayAccelerationReport(comMachineOld);
    12941314            if (!strAcceleration.isNull())
    12951315            {
    12961316                ++iRowCount;
    12971317                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Acceleration", "details (display)"),
    1298                                                          strAcceleration);
     1318                                                         empReport(strAcceleration, strAccelerationOld));
    12991319            }
    13001320
    13011321            /* Remote Desktop Server: */
    13021322            QStringList aVrdeReport = vrdeServerReport(comMachine);
     1323            QStringList aVrdeReportOld = vrdeServerReport(comMachineOld);
    13031324            if (!aVrdeReport.isEmpty())
    13041325            {
    13051326                ++iRowCount;
    13061327                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Remote Desktop Server Port", "details (display/vrde)"),
    1307                                                          aVrdeReport.value(0));
     1328                                                         empReport(aVrdeReport.value(0), aVrdeReportOld.value(0)));
    13081329            }
    13091330            else
     
    13111332                ++iRowCount;
    13121333                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Remote Desktop Server", "details (display/vrde)"),
    1313                                                          QApplication::translate("UIGDetails", "Disabled", "details (display/vrde/VRDE server)"));
     1334                                                         empReport(QApplication::translate("UIGDetails", "Disabled", "details (display/vrde/VRDE server)"), aVrdeReportOld.isEmpty()));
    13141335            }
    13151336
    13161337            /* Video Capture: */
    13171338            QStringList aVideoCaptureReport = videoCaptureReport(comMachine);
     1339            QStringList aVideoCaptureReportOld = videoCaptureReport(comMachineOld);
    13181340            if (!aVideoCaptureReport.isEmpty())
    13191341            {
    13201342                ++iRowCount;
    13211343                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Video Capture File", "details (display/video capture)"),
    1322                                                          aVideoCaptureReport.value(0));
     1344                                                         empReport(aVideoCaptureReport.value(0), aVideoCaptureReportOld.value(0)));
    13231345                ++iRowCount;
    13241346                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Video Capture Attributes", "details (display/video capture)"),
    1325                                                          aVideoCaptureReport.value(1));
     1347                                                         empReport(aVideoCaptureReport.value(1), aVideoCaptureReportOld.value(1)));
    13261348            }
    13271349            else
     
    13291351                ++iRowCount;
    13301352                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Video Capture", "details (display/video capture)"),
    1331                                                          QApplication::translate("UIGDetails", "Disabled", "details (display/video capture)"));
     1353                                                         empReport(QApplication::translate("UIGDetails", "Disabled", "details (display/video capture)"), aVideoCaptureReportOld.isEmpty()));
    13321354            }
    13331355
     
    13401362            QStringList aControllers = report.first;
    13411363            QList<QMap<QString, QString> > aAttachments = report.second;
     1364            QPair<QStringList, QList<QMap<QString, QString> > > reportOld = storageReport(comMachineOld);
     1365            QStringList aControllersOld = reportOld.first;
     1366            QList<QMap<QString, QString> > aAttachmentsOld = reportOld.second;
    13421367
    13431368            /* Iterate through storage controllers: */
     
    13461371                /* Add controller information: */
    13471372                ++iRowCount;
    1348                 strItem += QString(sSectionItemTpl3).arg(aControllers.value(i));
     1373                strItem += QString(sSectionItemTpl3).arg(empReport(aControllers.value(i), aControllersOld.value(i)));
    13491374
    13501375                /* Iterate through storage attachments: */
    13511376                QMap<QString, QString> aCurrentAttachments = aAttachments.value(i);
     1377                QMap<QString, QString> aCurrentAttachmentsOld = aAttachmentsOld.value(i);
    13521378                for (int j = 0; j < aCurrentAttachments.keys().size(); ++j)
    13531379                {
    1354                     const QString &strSlotInfo = aCurrentAttachments.keys().value(j);
    1355                     const QString &strMediumInfo = aCurrentAttachments.value(aCurrentAttachments.keys().value(j));
     1380                    const QString &strSlotInfo = empReport(aCurrentAttachments.keys().value(j),
     1381                                                           aCurrentAttachmentsOld.keys().value(j));
     1382                    const QString &strMediumInfo = empReport(aCurrentAttachments.value(aCurrentAttachments.keys().value(j)),
     1383                                                             aCurrentAttachmentsOld.value(aCurrentAttachments.keys().value(j)));
    13561384                    /* Add attachment information: */
    13571385                    ++iRowCount;
     
    13651393                /* Not Attached: */
    13661394                ++iRowCount;
    1367                 strItem = QString(sSectionItemTpl1).arg(QApplication::translate("UIGDetails", "Not Attached", "details (storage)"));
     1395                strItem = QString(sSectionItemTpl1).arg(empReport(QApplication::translate("UIGDetails", "Not Attached", "details (storage)"), aControllersOld.isEmpty()));
    13681396            }
    13691397
     
    13741402            /* Audio: */
    13751403            QStringList aReport = audioReport(comMachine);
     1404            QStringList aReportOld = audioReport(comMachineOld);
    13761405
    13771406            /* If there is something to report: */
     
    13811410                ++iRowCount;
    13821411                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Host Driver", "details (audio)"),
    1383                                                          aReport.value(0));
     1412                                                         empReport(aReport.value(0), aReportOld.value(0)));
    13841413
    13851414                /* Controller: */
    13861415                ++iRowCount;
    13871416                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Controller", "details (audio)"),
    1388                                                          aReport.value(1));
     1417                                                         empReport(aReport.value(1), aReportOld.value(1)));
    13891418
    13901419#ifdef VBOX_WITH_AUDIO_INOUT_INFO
     
    13921421                ++iRowCount;
    13931422                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Audio Output", "details (audio)"),
    1394                                                          aReport.value(2));
     1423                                                         empReport(aReport.value(2), aReportOld.value(2)));
    13951424
    13961425                /* Input: */
    13971426                ++iRowCount;
    13981427                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Audio Input", "details (audio)"),
    1399                                                          aReport.value(3));
     1428                                                         empReport(aReport.value(3), aReportOld.value(3)));
    14001429#endif /* VBOX_WITH_AUDIO_INOUT_INFO */
    14011430            }
     
    14061435                /* Disabled: */
    14071436                ++iRowCount;
    1408                 strItem = QString(sSectionItemTpl1).arg(QApplication::translate("UIGDetails", "Disabled", "details (audio)"));
     1437                strItem = QString(sSectionItemTpl1).arg(empReport(QApplication::translate("UIGDetails", "Disabled", "details (audio)"), aReportOld.isEmpty()));
    14091438            }
    14101439
     
    14151444            /* Network: */
    14161445            QStringList aReport = networkReport(comMachine);
     1446            QStringList aReportOld = networkReport(comMachineOld);
    14171447
    14181448            /* Iterate through network adapters: */
     
    14201450            {
    14211451                const QString &strAdapterInformation = aReport.value(i);
     1452                const QString &strAdapterInformationOld = aReportOld.value(i);
    14221453                /* Add adapter information: */
    14231454                ++iRowCount;
    14241455                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Adapter %1", "details (network)").arg(i + 1),
    1425                                                          strAdapterInformation);
     1456                                                         empReport(strAdapterInformation, strAdapterInformationOld));
    14261457            }
    14271458
     
    14311462                /* Disabled: */
    14321463                ++iRowCount;
    1433                 strItem = QString(sSectionItemTpl1).arg(QApplication::translate("UIGDetails", "Disabled", "details (network/adapter)"));
     1464                strItem = QString(sSectionItemTpl1).arg(empReport(QApplication::translate("UIGDetails", "Disabled", "details (network/adapter)"), aReportOld.isEmpty()));
    14341465            }
    14351466
     
    14401471            /* Serial: */
    14411472            QStringList aReport = serialReport(comMachine);
     1473            QStringList aReportOld = serialReport(comMachineOld);
    14421474
    14431475            /* Iterate through serial ports: */
     
    14451477            {
    14461478                const QString &strPortInformation = aReport.value(i);
     1479                const QString &strPortInformationOld = aReportOld.value(i);
    14471480                /* Add port information: */
    14481481                ++iRowCount;
    14491482                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Port %1", "details (serial)").arg(i + 1),
    1450                                                          strPortInformation);
     1483                                                         empReport(strPortInformation, strPortInformationOld));
    14511484            }
    14521485
     
    14561489                /* Disabled: */
    14571490                ++iRowCount;
    1458                 strItem = QString(sSectionItemTpl1).arg(QApplication::translate("UIGDetails", "Disabled", "details (serial)"));
     1491                strItem = QString(sSectionItemTpl1).arg(empReport(QApplication::translate("UIGDetails", "Disabled", "details (serial)"), aReportOld.isEmpty()));
    14591492            }
    14601493
     
    14651498            /* USB: */
    14661499            QStringList aReport = usbReport(comMachine);
     1500            QStringList aReportOld = usbReport(comMachineOld);
    14671501
    14681502            /* If there is something to report: */
     
    14721506                ++iRowCount;
    14731507                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "USB Controller", "details (usb)"),
    1474                                                          aReport.value(0));
     1508                                                         empReport(aReport.value(0), aReportOld.value(0)));
    14751509
    14761510                /* Device Filters: */
    14771511                ++iRowCount;
    14781512                strItem += QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Device Filters", "details (usb)"),
    1479                                                          aReport.value(1));
     1513                                                         empReport(aReport.value(1), aReportOld.value(1)));
    14801514            }
    14811515
     
    14851519                /* Disabled: */
    14861520                ++iRowCount;
    1487                 strItem = QString(sSectionItemTpl1).arg(QApplication::translate("UIGDetails", "Disabled", "details (usb)"));
     1521                strItem = QString(sSectionItemTpl1).arg(empReport(QApplication::translate("UIGDetails", "Disabled", "details (usb)"), aReportOld.isEmpty()));
    14881522            }
    14891523
     
    14941528            /* Shared Folders: */
    14951529            const ulong cFolders = comMachine.GetSharedFolders().size();
     1530            const ulong cFoldersOld = comMachineOld.GetSharedFolders().size();
    14961531            if (cFolders > 0)
    14971532            {
    14981533                ++iRowCount;
    14991534                strItem = QString(sSectionItemTpl2).arg(QApplication::translate("UIGDetails", "Shared Folders", "details (shared folders)"),
    1500                                                         QString::number(cFolders));
     1535                                                        empReport(QString::number(cFolders), QString::number(cFoldersOld)));
    15011536            }
    15021537            else
    15031538            {
    15041539                ++iRowCount;
    1505                 strItem = QString(sSectionItemTpl1).arg(QApplication::translate("UIGDetails", "None", "details (shared folders)"));
     1540                strItem = QString(sSectionItemTpl1).arg(empReport(QApplication::translate("UIGDetails", "None", "details (shared folders)"), cFoldersOld == 0));
    15061541            }
    15071542
     
    19271962
    19281963/* static */
     1964QString UISnapshotDetailsWidget::empReport(const QString &strValue, const QString &strOldValue)
     1965{
     1966    return strValue == strOldValue ? strValue : QString("<u>%1</u>").arg(strValue);
     1967}
     1968
     1969/* static */
     1970QString UISnapshotDetailsWidget::empReport(const QString &strValue, bool fIgnore)
     1971{
     1972    return fIgnore ? strValue : QString("<u>%1</u>").arg(strValue);
     1973}
     1974
     1975/* static */
    19291976QString UISnapshotDetailsWidget::summarizeGenericProperties(const CNetworkAdapter &comNetwork)
    19301977{
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/UISnapshotDetailsWidget.h

    r68763 r68764  
    148148
    149149    /** Returns details report of requested @a enmType for a given @a comMachine. */
    150     QString detailsReport(DetailsElementType enmType, const CMachine &comMachine) const;
     150    QString detailsReport(DetailsElementType enmType, const CMachine &comMachine, const CSnapshot &comSnapshot = CSnapshot()) const;
    151151
    152152    /** Acquires @a comMachine group report. */
     
    184184    static QString wipeHtmlStuff(const QString &strString);
    185185
     186    /** Prepares emhasized report for a given @a strValue, comparing to @a strOldValue. */
     187    static QString empReport(const QString &strValue, const QString &strOldValue);
     188    /** Prepares emhasized report for a given @a strValue, depending on @a fDo flag. */
     189    static QString empReport(const QString &strValue, bool fIgnore);
     190
    186191    /** Summarizes generic properties. */
    187192    static QString summarizeGenericProperties(const CNetworkAdapter &adapter);
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