- Timestamp:
- Aug 9, 2019 6:08:55 AM (5 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime/information
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIPerformanceMonitor.cpp
r80193 r80203 38 38 39 39 const ULONG iPeriod = 1; 40 const int iMaximumQueueSize = 1 00;40 const int iMaximumQueueSize = 120; 41 41 const int iMetricSetupCount = 1; 42 42 … … 80 80 QSize m_size; 81 81 QFont m_font; 82 int m_iMargin; 82 int m_iMarginLeft; 83 int m_iMarginRight; 84 int m_iMarginTop; 85 int m_iMarginBottom; 83 86 QStringList m_textList; 84 87 int m_iPieChartSize; … … 105 108 m_dataSeriesColor[1] = QColor(Qt::blue); 106 109 107 m_iMargin = qApp->QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); 110 m_iMarginLeft = 1 * qApp->QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); 111 m_iMarginRight = 4 * qApp->QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); 112 m_iMarginTop = 0.3 * qApp->QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); 113 m_iMarginBottom = 2 * qApp->QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); 108 114 m_iPieChartSize = 1.5f * qApp->style()->pixelMetric(QStyle::PM_LargeIconSize); 109 m_pieChartRect = QRect(1.5 * m_iMargin , 1.5 * m_iMargin, m_iPieChartSize, m_iPieChartSize);110 m_size = QSize(6 * m_iPieChartSize, 1.8* m_iPieChartSize);115 m_pieChartRect = QRect(1.5 * m_iMarginLeft, 1.5 * m_iMarginTop, m_iPieChartSize, m_iPieChartSize); 116 m_size = QSize(6 * m_iPieChartSize, 2 * m_iPieChartSize); 111 117 } 112 118 … … 214 220 do{ 215 221 int iWidth = QFontMetrics(m_font).width(strText); 216 if (iWidth + 2 * m_iMargin> m_size.width())222 if (iWidth + m_iMarginLeft + m_iMarginRight > m_size.width()) 217 223 --iFontSize; 218 224 else … … 230 236 231 237 /* Draw a rectanglar grid over which we will draw the line graphs: */ 232 float fChartHeight = height() - 2 * m_iMargin; 233 float fChartWidth = width() - 2 * m_iMargin; 234 painter.setPen(QColor(120, 120, 120)); 235 painter.drawRect(QRect(m_iMargin, m_iMargin, fChartWidth, fChartHeight)); 238 int iChartHeight = height() - (m_iMarginTop + m_iMarginBottom); 239 int iChartWidth = width() - (m_iMarginLeft + m_iMarginRight); 240 QColor mainAxisColor(120, 120, 120); 241 painter.setPen(mainAxisColor); 242 painter.drawRect(QRect(m_iMarginLeft, m_iMarginTop, iChartWidth, iChartHeight)); 236 243 painter.setPen(QColor(200, 200, 200)); 237 int iYParts = 4; 238 for (int i = 1; i < iYParts; ++i) 239 painter.drawLine(m_iMargin, m_iMargin + i *fChartHeight / (float)iYParts, width() - m_iMargin, m_iMargin + i * fChartHeight / (float)iYParts); 240 int iXParts = 5; 241 for (int i = 1; i < iXParts; ++i) 242 painter.drawLine(m_iMargin + i * fChartWidth / (float)iXParts, m_iMargin, m_iMargin + i * fChartWidth / (float)iXParts, height() - m_iMargin); 243 244 /* Y subaxes: */ 245 int iYSubAxisCount = 3; 246 for (int i = 0; i < iYSubAxisCount; ++i) 247 { 248 float fSubAxisY = m_iMarginTop + (i + 1) * iChartHeight / (float) (iYSubAxisCount + 1); 249 painter.drawLine(m_iMarginLeft, fSubAxisY, 250 width() - m_iMarginRight, fSubAxisY); 251 } 252 /* X subaxes: */ 253 int iXSubAxisCount = 5; 254 for (int i = 0; i < iXSubAxisCount; ++i) 255 { 256 float fSubAxisX = m_iMarginLeft + (i + 1) * iChartWidth / (float) (iXSubAxisCount + 1); 257 painter.drawLine(fSubAxisX, m_iMarginTop, fSubAxisX, height() - m_iMarginBottom); 258 } 259 /* Draw XAxis tick labels: */ 260 painter.setPen(mainAxisColor); 261 int iTotalSeconds = iPeriod * iMaximumQueueSize; 262 QFontMetrics fontMetrics(painter.font()); 263 int iFontHeight = fontMetrics.height(); 264 for (int i = 0; i < iXSubAxisCount + 2; ++i) 265 { 266 int iTextX = m_iMarginLeft + i * iChartWidth / (float) (iXSubAxisCount + 1); 267 QString strCurentSec = QString::number(iTotalSeconds - i * iTotalSeconds / (float)(iXSubAxisCount + 1)); 268 int iTextWidth = fontMetrics.width(strCurentSec); 269 if (i == 0) 270 { 271 strCurentSec += " seconds"; 272 painter.drawText(iTextX, height() - m_iMarginBottom + iFontHeight, strCurentSec); 273 } 274 else 275 painter.drawText(iTextX - 0.5 * iTextWidth, height() - m_iMarginBottom + iFontHeight, strCurentSec); 276 } 244 277 245 278 /* Draw a half-transparent rectangle over the whole widget to indicate the it is disabled: */ … … 255 288 256 289 ULONG iMaximum = m_pSubMetric->maximum(); 257 if (m_pSubMetric->isPercentage())258 iMaximum = 100;259 290 if (iMaximum == 0) 260 291 return; 261 292 /* Draw the data lines: */ 262 293 if (isEnabled()) 263 294 { 264 float fBarWidth = fChartWidth / (float) (iMaximumQueueSize - 1);265 float fH = fChartHeight / (float)iMaximum;295 float fBarWidth = iChartWidth / (float) (iMaximumQueueSize - 1); 296 float fH = iChartHeight / (float)iMaximum; 266 297 if (m_fUseGradientLineColor) 267 298 { 268 QLinearGradient gradient(0, 0, 0, fChartHeight);299 QLinearGradient gradient(0, 0, 0, iChartHeight); 269 300 gradient.setColorAt(1.0, Qt::green); 270 301 gradient.setColorAt(0.0, Qt::red); … … 280 311 int j = i + 1; 281 312 float fHeight = fH * data->at(i); 282 float fX = (width() - m_iMargin ) - ((data->size() -i - 1) * fBarWidth);313 float fX = (width() - m_iMarginRight) - ((data->size() -i - 1) * fBarWidth); 283 314 float fHeight2 = fH * data->at(j); 284 float fX2 = (width() - m_iMargin ) - ((data->size() -j - 1) * fBarWidth);285 QLineF bar(fX, height() - (fHeight + m_iMargin ), fX2, height() - (fHeight2 + m_iMargin));315 float fX2 = (width() - m_iMarginRight) - ((data->size() -j - 1) * fBarWidth); 316 QLineF bar(fX, height() - (fHeight + m_iMarginBottom), fX2, height() - (fHeight2 + m_iMarginBottom)); 286 317 painter.drawLine(bar); 287 318 } 288 319 } 320 } 321 322 /* Draw YAxis tick labels: */ 323 painter.setPen(mainAxisColor); 324 for (int i = 1; i < iYSubAxisCount + 2; ++i) 325 { 326 327 int iTextY = m_iMarginTop + i * iChartHeight / (float) (iYSubAxisCount + 1); 328 QString strValue; 329 ULONG iValue = iMaximum - (i +1) * iMaximum / (float) (iYSubAxisCount + 2); 330 if (m_pSubMetric->unit().compare("%", Qt::CaseInsensitive) == 0) 331 strValue = QString::number(iValue); 332 else if (m_pSubMetric->unit().compare("kb", Qt::CaseInsensitive) == 0) 333 strValue = uiCommon().formatSize(_1K * (quint64)iValue); 334 else if (m_pSubMetric->unit().compare("b", Qt::CaseInsensitive) == 0 || 335 m_pSubMetric->unit().compare("b/s", Qt::CaseInsensitive) == 0) 336 strValue = uiCommon().formatSize(iValue); 337 338 // QString strCurentSec = QString::number(iTotalSeconds - i * iTotalSeconds / (float)(iXSubAxisCount + 1)); 339 // int iTextWidth = fontMetrics.width(strCurentSec); 340 // if (i == 0) 341 // { 342 // strCurentSec += " seconds"; 343 // painter.drawText(iTextX, height() - m_iMarginBottom + iFontHeight, strCurentSec); 344 // } 345 // else 346 // painter.drawText(iTextX - 0.5 * iTextWidth, height() - m_iMarginBottom + iFontHeight, strCurentSec); 347 painter.drawText(width() - 0.9 * m_iMarginRight, iTextY, strValue); 289 348 } 290 349 … … 344 403 , m_fRequiresGuestAdditions(false) 345 404 { 346 if (isPercentage())347 m_iMaximum = 100;348 405 } 349 406 … … 392 449 return 0; 393 450 return &m_data[iDataSeriesIndex]; 394 }395 396 bool UISubMetric::isPercentage() const397 {398 return m_strUnit == "%";399 451 } 400 452 … … 655 707 UISubMetric &CPUMetric = m_subMetrics[m_strCPUMetricName]; 656 708 CPUMetric.addData(0, iLoadPercentage); 709 CPUMetric.setMaximum(100); 657 710 if (m_infoLabels.contains(m_strCPUMetricName) && m_infoLabels[m_strCPUMetricName]) 658 711 { -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIPerformanceMonitor.h
r80187 r80203 62 62 void addData(int iDataSeriesIndex, ULONG fData); 63 63 const QQueue<ULONG> *data(int iDataSeriesIndex) const; 64 65 bool isPercentage() const;66 64 67 65 bool requiresGuestAdditions() const;
Note:
See TracChangeset
for help on using the changeset viewer.