VirtualBox

Ignore:
Timestamp:
Jul 22, 2020 1:37:29 PM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9686, bugref:9510. Handling widget disable better in info labels

Location:
trunk/src/VBox/Frontends/VirtualBox/src/monitor/performance
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/performance/UIPerformanceMonitor.cpp

    r85410 r85413  
    8787    QString XAxisLabel();
    8888    void setXAxisLabel(const QString &strLabel);
     89
     90    bool isAvailable() const;
     91    void setIsAvailable(bool fIsAvailable);
    8992
    9093protected:
     
    135138     *  We draw first data0 then data 1 on top. Makes sense where the summation of data is guaranteed not to exceed some max. */
    136139    bool m_fUseAreaChart;
     140    /** False if the chart is not useable for some reason. For example it depends guest additions and they are not installed. */
     141    bool m_fIsAvailable;
    137142    /** For some charts it does not make sense to have an area chart. */
    138143    bool m_fIsAreaChartAllowed;
     
    158163    , m_fUseGradientLineColor(false)
    159164    , m_fUseAreaChart(true)
     165    , m_fIsAvailable(true)
    160166    , m_fIsAreaChartAllowed(false)
    161167{
     
    274280}
    275281
     282bool UIChart::isAvailable() const
     283{
     284    return m_fIsAvailable;
     285}
     286
     287void UIChart::setIsAvailable(bool fIsAvailable)
     288{
     289    if (m_fIsAvailable == fIsAvailable)
     290        return;
     291    m_fIsAvailable = fIsAvailable;
     292    update();
     293}
     294
    276295QSize UIChart::minimumSizeHint() const
    277296{
     
    336355    drawXAxisLabels(painter, iXSubAxisCount);
    337356
    338     /* Draw a half-transparent rectangle over the whole widget to indicate the it is disabled: */
    339357    if (!isEnabled())
     358        return;
     359
     360    /* Draw a half-transparent rectangle over the whole widget to indicate the it is not available: */
     361    if (!isAvailable())
    340362    {
    341363        drawDisabledChartRectangle(painter);
     
    743765    if (m_comMachine.GetState() == KMachineState_Running)
    744766    {
     767        setEnabled(true);
    745768        openSession();
    746769        start();
     
    944967    if (m_comMachine.GetState() == KMachineState_Running)
    945968    {
     969        setEnabled(true);
    946970        openSession();
    947971        start();
     
    10561080            continue;
    10571081        if (m_charts.contains(iterator.key()) && m_charts[iterator.key()])
    1058         {
    1059             m_charts[iterator.key()]->setEnabled(fEnable);
    1060             m_charts[iterator.key()]->update();
    1061         }
     1082            m_charts[iterator.key()]->setIsAvailable(fEnable);
    10621083        if (m_infoLabels.contains(iterator.key()) && m_infoLabels[iterator.key()])
    10631084        {
     
    10771098    {
    10781099        QString strInfo;
    1079         if (m_infoLabels[m_strCPUMetricName]->isEnabled())
    1080             strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4%5</font><br/><font color=\"%6\">%7: %8%9</font>")
    1081                 .arg(m_strCPUInfoLabelTitle)
    1082                 .arg(dataColorString(m_strCPUMetricName, 0))
    1083                 .arg(m_strCPUInfoLabelGuest).arg(QString::number(iExecutingPercentage)).arg(CPUMetric.unit())
    1084                 .arg(dataColorString(m_strCPUMetricName, 1))
    1085                 .arg(m_strCPUInfoLabelVMM).arg(QString::number(iOtherPercentage)).arg(CPUMetric.unit());
    1086         else
    1087             strInfo = QString("<b>%1</b><br/>%2%3").arg(m_strCPUInfoLabelTitle).arg("--").arg("%");
     1100
     1101        strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4%5</font><br/><font color=\"%6\">%7: %8%9</font>")
     1102            .arg(m_strCPUInfoLabelTitle)
     1103            .arg(dataColorString(m_strCPUMetricName, 0))
     1104            .arg(m_strCPUInfoLabelGuest).arg(QString::number(iExecutingPercentage)).arg(CPUMetric.unit())
     1105            .arg(dataColorString(m_strCPUMetricName, 1))
     1106            .arg(m_strCPUInfoLabelVMM).arg(QString::number(iOtherPercentage)).arg(CPUMetric.unit());
    10881107        m_infoLabels[m_strCPUMetricName]->setText(strInfo);
    10891108    }
     
    11011120    {
    11021121        QString strInfo;
    1103         if (m_infoLabels[m_strRAMMetricName]->isEnabled())
    1104             strInfo = QString("<b>%1</b><br/>%2: %3<br/>%4: %5<br/>%6: %7").arg(m_strRAMInfoLabelTitle).arg(m_strRAMInfoLabelTotal).arg(uiCommon().formatSize(_1K * iTotalRAM, g_iDecimalCount))
    1105                 .arg(m_strRAMInfoLabelFree).arg(uiCommon().formatSize(_1K * (iFreeRAM), g_iDecimalCount))
    1106                 .arg(m_strRAMInfoLabelUsed).arg(uiCommon().formatSize(_1K * (iTotalRAM - iFreeRAM), g_iDecimalCount));
    1107         else
    1108             strInfo = QString("<b>%1</b><br/>%2: %3<br/>%4: %5<br/>%6: %7").arg(m_strRAMInfoLabelTitle).arg(m_strRAMInfoLabelTotal).arg("---").arg(m_strRAMInfoLabelFree).arg("---").arg(m_strRAMInfoLabelUsed).arg("---");
     1122        strInfo = QString("<b>%1</b><br/>%2: %3<br/>%4: %5<br/>%6: %7").arg(m_strRAMInfoLabelTitle).arg(m_strRAMInfoLabelTotal).arg(uiCommon().formatSize(_1K * iTotalRAM, g_iDecimalCount))
     1123            .arg(m_strRAMInfoLabelFree).arg(uiCommon().formatSize(_1K * (iFreeRAM), g_iDecimalCount))
     1124            .arg(m_strRAMInfoLabelUsed).arg(uiCommon().formatSize(_1K * (iTotalRAM - iFreeRAM), g_iDecimalCount));
    11091125        m_infoLabels[m_strRAMMetricName]->setText(strInfo);
    11101126    }
     
    11231139    NetMetric.setTotal(1, iTransmitTotal);
    11241140
    1125     /* Do not set data and maximum if the metric has not been initialized  since we need to initialize totals "(t-1)" first: */
    11261141    if (!NetMetric.isInitialized())
    11271142    {
     
    11291144        return;
    11301145    }
     1146
    11311147    NetMetric.addData(0, iReceiveRate);
    11321148    NetMetric.addData(1, iTransmitRate);
     
    11371153    {
    11381154        QString strInfo;
    1139         if (m_infoLabels[m_strNetworkMetricName]->isEnabled())
    1140             strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
    1141                 .arg(m_strNetworkInfoLabelTitle)
    1142                 .arg(dataColorString(m_strNetworkMetricName, 0)).arg(m_strNetworkInfoLabelReceived).arg(uiCommon().formatSize((quint64)iReceiveRate, g_iDecimalCount))
    1143                 .arg(m_strNetworkInfoLabelReceivedTotal).arg(uiCommon().formatSize((quint64)iReceiveTotal, g_iDecimalCount))
    1144                 .arg(dataColorString(m_strNetworkMetricName, 1)).arg(m_strNetworkInfoLabelTransmitted).arg(uiCommon().formatSize((quint64)iTransmitRate, g_iDecimalCount))
    1145                 .arg(m_strNetworkInfoLabelTransmittedTotal).arg(uiCommon().formatSize((quint64)iTransmitTotal, g_iDecimalCount));
    1146 
    1147         else
    1148             strInfo = QString("<b>%1</b><br/>%2: %3<br/>%4: %5").
    1149                 arg(m_strNetworkInfoLabelTitle)
    1150                 .arg(m_strNetworkInfoLabelReceived).arg("---")
    1151                 .arg(m_strNetworkInfoLabelTransmitted).arg("---");
     1155        strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
     1156            .arg(m_strNetworkInfoLabelTitle)
     1157            .arg(dataColorString(m_strNetworkMetricName, 0)).arg(m_strNetworkInfoLabelReceived).arg(uiCommon().formatSize((quint64)iReceiveRate, g_iDecimalCount))
     1158            .arg(m_strNetworkInfoLabelReceivedTotal).arg(uiCommon().formatSize((quint64)iReceiveTotal, g_iDecimalCount))
     1159            .arg(dataColorString(m_strNetworkMetricName, 1)).arg(m_strNetworkInfoLabelTransmitted).arg(uiCommon().formatSize((quint64)iTransmitRate, g_iDecimalCount))
     1160            .arg(m_strNetworkInfoLabelTransmittedTotal).arg(uiCommon().formatSize((quint64)iTransmitTotal, g_iDecimalCount));
    11521161        m_infoLabels[m_strNetworkMetricName]->setText(strInfo);
    11531162    }
     
    11561165}
    11571166
     1167void UIPerformanceMonitor::resetCPUInfoLabel()
     1168{
     1169    if (m_infoLabels.contains(m_strCPUMetricName)  && m_infoLabels[m_strCPUMetricName])
     1170    {
     1171        QString strInfo =QString("<b>%1</b></b><br/>%2: %3<br/>%4: %5")
     1172            .arg(m_strCPUInfoLabelTitle)
     1173            .arg(m_strCPUInfoLabelGuest).arg("--")
     1174            .arg(m_strCPUInfoLabelVMM).arg("--");
     1175        m_infoLabels[m_strCPUMetricName]->setText(strInfo);
     1176    }
     1177}
     1178
     1179void UIPerformanceMonitor::resetRAMInfoLabel()
     1180{
     1181    if (m_infoLabels.contains(m_strRAMMetricName)  && m_infoLabels[m_strRAMMetricName])
     1182    {
     1183        QString strInfo = QString("<b>%1</b><br/>%2: %3<br/>%4: %5<br/>%6: %7").
     1184            arg(m_strRAMInfoLabelTitle).arg(m_strRAMInfoLabelTotal).arg("--")
     1185            .arg(m_strRAMInfoLabelFree).arg("--")
     1186            .arg(m_strRAMInfoLabelUsed).arg("--");
     1187        m_infoLabels[m_strRAMMetricName]->setText(strInfo);
     1188    }
     1189}
     1190
     1191void UIPerformanceMonitor::resetNetworkInfoLabel()
     1192{
     1193    if (m_infoLabels.contains(m_strNetworkMetricName)  && m_infoLabels[m_strNetworkMetricName])
     1194    {
     1195        QString strInfo = QString("<b>%1</b></b><br/>%2: %3<br/>%4 %5<br/>%6: %7<br/>%8 %9")
     1196            .arg(m_strNetworkInfoLabelTitle)
     1197            .arg(m_strNetworkInfoLabelReceived).arg("--")
     1198            .arg(m_strNetworkInfoLabelReceivedTotal).arg("--")
     1199            .arg(m_strNetworkInfoLabelTransmitted).arg("--")
     1200            .arg(m_strNetworkInfoLabelTransmittedTotal).arg("--");
     1201        m_infoLabels[m_strNetworkMetricName]->setText(strInfo);
     1202    }
     1203}
     1204
     1205void UIPerformanceMonitor::resetVMExitInfoLabel()
     1206{
     1207    if (m_infoLabels.contains(m_strVMExitMetricName)  && m_infoLabels[m_strVMExitMetricName])
     1208    {
     1209        QString strInfo;
     1210        strInfo = QString("<b>%1</b></b><br/>%2: %3<br/>%4: %5")
     1211            .arg(m_strVMExitInfoLabelTitle)
     1212            .arg(m_strVMExitLabelCurrent).arg("--")
     1213            .arg(m_strVMExitLabelTotal).arg("--");
     1214
     1215        m_infoLabels[m_strVMExitMetricName]->setText(strInfo);
     1216    }
     1217}
     1218
     1219void UIPerformanceMonitor::resetDiskIOInfoLabel()
     1220{
     1221    if (m_infoLabels.contains(m_strDiskIOMetricName)  && m_infoLabels[m_strDiskIOMetricName])
     1222    {
     1223        QString strInfo = QString("<b>%1</b></b><br/>%2: %3<br/>%4 %5<br/>%6: %7<br/>%8 %9")
     1224            .arg(m_strDiskIOInfoLabelTitle)
     1225            .arg(m_strDiskIOInfoLabelWritten).arg("--")
     1226            .arg(m_strDiskIOInfoLabelWrittenTotal).arg("--")
     1227            .arg(m_strDiskIOInfoLabelRead).arg("--")
     1228            .arg(m_strDiskIOInfoLabelReadTotal).arg("--");
     1229        m_infoLabels[m_strDiskIOMetricName]->setText(strInfo);
     1230    }
     1231}
     1232
    11581233void UIPerformanceMonitor::updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead)
    11591234{
     
    11661241    diskMetric.setTotal(1, uDiskIOTotalRead);
    11671242
    1168     /* Do not set data and maximum if the metric has not been initialized  since we need to initialize totals "(t-1)" first: */
    1169     if (!diskMetric.isInitialized())
    1170     {
    1171         diskMetric.setIsInitialized(true);
    1172         return;
    1173     }
    11741243    diskMetric.addData(0, iWriteRate);
    11751244    diskMetric.addData(1, iReadRate);
     1245    /* Do not set data and maximum if the metric has not been initialized  since we need to initialize totals "(t-1)" first: */
     1246    if (!diskMetric.isInitialized()){
     1247        diskMetric.setIsInitialized(true);
     1248        return;
     1249    }
     1250
    11761251    quint64 iMaximum = qMax(diskMetric.maximum(), qMax(iWriteRate, iReadRate));
    11771252    diskMetric.setMaximum(iMaximum);
     
    11791254    if (m_infoLabels.contains(m_strDiskIOMetricName)  && m_infoLabels[m_strDiskIOMetricName])
    11801255    {
    1181         QString strInfo;
    1182         if (m_infoLabels[m_strDiskIOMetricName]->isEnabled())
    1183             strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
    1184                 .arg(m_strDiskIOInfoLabelTitle)
    1185                 .arg(dataColorString(m_strDiskIOMetricName, 0)).arg(m_strDiskIOInfoLabelWritten).arg(uiCommon().formatSize((quint64)iWriteRate, g_iDecimalCount))
    1186                 .arg(m_strDiskIOInfoLabelWrittenTotal).arg(uiCommon().formatSize((quint64)uDiskIOTotalWritten, g_iDecimalCount))
    1187                 .arg(dataColorString(m_strDiskIOMetricName, 1)).arg(m_strDiskIOInfoLabelRead).arg(uiCommon().formatSize((quint64)iReadRate, g_iDecimalCount))
    1188                 .arg(m_strDiskIOInfoLabelReadTotal).arg(uiCommon().formatSize((quint64)uDiskIOTotalRead, g_iDecimalCount));
    1189 
    1190         else
    1191             strInfo = QString("<b>%1</b><br/>%2: %3<br/>%4: %5").
    1192                 arg(m_strDiskIOInfoLabelTitle)
    1193                 .arg(m_strDiskIOInfoLabelWritten).arg("---")
    1194                 .arg(m_strDiskIOInfoLabelRead).arg("---");
     1256        QString strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4<br/>%5 %6</font><br/><font color=\"%7\">%8: %9<br/>%10 %11</font>")
     1257            .arg(m_strDiskIOInfoLabelTitle)
     1258            .arg(dataColorString(m_strDiskIOMetricName, 0)).arg(m_strDiskIOInfoLabelWritten).arg(uiCommon().formatSize((quint64)iWriteRate, g_iDecimalCount))
     1259            .arg(m_strDiskIOInfoLabelWrittenTotal).arg(uiCommon().formatSize((quint64)uDiskIOTotalWritten, g_iDecimalCount))
     1260            .arg(dataColorString(m_strDiskIOMetricName, 1)).arg(m_strDiskIOInfoLabelRead).arg(uiCommon().formatSize((quint64)iReadRate, g_iDecimalCount))
     1261            .arg(m_strDiskIOInfoLabelReadTotal).arg(uiCommon().formatSize((quint64)uDiskIOTotalRead, g_iDecimalCount));
    11951262        m_infoLabels[m_strDiskIOMetricName]->setText(strInfo);
    11961263    }
     
    12191286    {
    12201287        QString strInfo;
    1221         if (m_infoLabels[m_strVMExitMetricName]->isEnabled())
    1222             strInfo = QString("<b>%1</b></b><br/>%2: %3 %4<br/>%5: %6 %7")
    1223                 .arg(m_strVMExitInfoLabelTitle)
    1224                 .arg(m_strVMExitLabelCurrent).arg(UICommon::addMetricSuffixToNumber(iRate)).arg(VMExitMetric.unit())
    1225                 .arg(m_strVMExitLabelTotal).arg(UICommon::addMetricSuffixToNumber(uTotalVMExits)).arg(VMExitMetric.unit());
    1226         else
    1227             strInfo = QString("<b>%1</b><br/>%2%3").arg(m_strVMExitInfoLabelTitle).arg("--").arg("%");
    1228         m_infoLabels[m_strVMExitMetricName]->setText(strInfo);
     1288        strInfo = QString("<b>%1</b></b><br/>%2: %3 %4<br/>%5: %6 %7")
     1289            .arg(m_strVMExitInfoLabelTitle)
     1290            .arg(m_strVMExitLabelCurrent).arg(UICommon::addMetricSuffixToNumber(iRate)).arg(VMExitMetric.unit())
     1291            .arg(m_strVMExitLabelTotal).arg(UICommon::addMetricSuffixToNumber(uTotalVMExits)).arg(VMExitMetric.unit());
     1292         m_infoLabels[m_strVMExitMetricName]->setText(strInfo);
    12291293    }
    12301294    if (m_charts.contains(m_strVMExitMetricName))
     
    12351299{
    12361300    if (!m_charts.contains(strChartName))
    1237         return QColor(Qt::red).name(QColor::HexRgb);
     1301        return QColor(Qt::black).name(QColor::HexRgb);
    12381302    UIChart *pChart = m_charts[strChartName];
    12391303    if (!pChart)
    1240         return QColor(Qt::red).name(QColor::HexRgb);
     1304        return QColor(Qt::black).name(QColor::HexRgb);
    12411305    return pChart->dataSeriesColor(iDataIndex).name(QColor::HexRgb);
    12421306}
     
    12451309{
    12461310    m_fGuestAdditionsAvailable = false;
     1311    setEnabled(false);
     1312
    12471313    if (m_pTimer)
    12481314        m_pTimer->stop();
     
    12561322        iterator.value()->update();
    12571323    /* Reset the info labels: */
    1258     updateRAMGraphsAndMetric(0, 0);
    1259     updateCPUGraphsAndMetric(0, 0);
    1260     updateNetworkGraphsAndMetric(0, 0);
    1261     updateDiskIOGraphsAndMetric(0, 0);
    1262     updateVMExitMetric(0);
     1324    resetCPUInfoLabel();
     1325    resetRAMInfoLabel();
     1326    resetNetworkInfoLabel();
     1327    resetDiskIOInfoLabel();
     1328    resetVMExitInfoLabel();
     1329    update();
    12631330}
    12641331
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/performance/UIPerformanceMonitor.h

    r85406 r85413  
    153153        void updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead);
    154154        void updateVMExitMetric(quint64 uTotalVMExits);
     155    /** @} */
     156
     157    /** @name The following functions reset corresponding info labels
     158      * @{ */
     159        void resetCPUInfoLabel();
     160        void resetRAMInfoLabel();
     161        void resetNetworkInfoLabel();
     162        void resetDiskIOInfoLabel();
     163        void resetVMExitInfoLabel();
    155164    /** @} */
    156165
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