Changeset 44285 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Jan 14, 2013 1:11:01 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 83193
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp
r43956 r44285 206 206 void UIGChooserItemMachine::updatePixmaps() 207 207 { 208 /* First row update required? */209 bool fFirstRowUpdateRequired = false;210 bool fSecondRowUpdateRequired = false;211 212 208 /* Update pixmap: */ 209 updatePixmap(); 210 211 /* Update state-pixmap: */ 212 updateStatePixmap(); 213 } 214 215 void UIGChooserItemMachine::updatePixmap() 216 { 217 /* Get new pixmap and pixmap-size: */ 213 218 QIcon icon = osIcon(); 214 219 QSize iconSize = icon.availableSizes().first(); 215 220 QPixmap pixmap = icon.pixmap(iconSize); 221 /* Update linked values: */ 222 if (m_pixmapSize != iconSize) 223 { 224 m_pixmapSize = iconSize; 225 updateFirstRowMaximumWidth(); 226 updateGeometry(); 227 } 216 228 if (m_pixmap.toImage() != pixmap.toImage()) 217 229 { … … 219 231 update(); 220 232 } 221 if (m_pixmapSize != iconSize) 222 { 223 m_pixmapSize = iconSize; 224 fFirstRowUpdateRequired = true; 225 } 226 227 /* Update state-pixmap: */ 233 } 234 235 void UIGChooserItemMachine::updateStatePixmap() 236 { 237 /* Get new state-pixmap and state-pixmap size: */ 228 238 QIcon stateIcon = machineStateIcon(); 229 239 QSize stateIconSize = stateIcon.availableSizes().first(); 230 m_statePixmap = stateIcon.pixmap(stateIconSize);231 240 QPixmap statePixmap = stateIcon.pixmap(stateIconSize); 241 /* Update linked values: */ 242 if (m_statePixmapSize != stateIconSize) 243 { 244 m_statePixmapSize = stateIconSize; 245 updateGeometry(); 246 } 232 247 if (m_statePixmap.toImage() != statePixmap.toImage()) 233 248 { … … 235 250 update(); 236 251 } 237 if (m_statePixmapSize != stateIconSize)238 {239 m_statePixmapSize = stateIconSize;240 fSecondRowUpdateRequired = true;241 }242 243 /* Update linked values: */244 if (fFirstRowUpdateRequired || fSecondRowUpdateRequired)245 updateGeometry();246 if (fFirstRowUpdateRequired)247 updateFirstRowMaximumWidth();248 252 } 249 253 250 254 void UIGChooserItemMachine::updateName() 251 255 { 252 /* Something changed?*/256 /* Get new name: */ 253 257 QString strName = name(); 258 259 /* Is there something changed? */ 254 260 if (m_strName == strName) 255 261 return; 256 262 257 /* Remember new name: */263 /* Update linked values: */ 258 264 m_strName = strName; 259 260 /* Update linked values: */261 265 updateMinimumNameWidth(); 262 266 updateVisibleName(); … … 265 269 void UIGChooserItemMachine::updateSnapshotName() 266 270 { 267 /* Something changed?*/271 /* Get new snapshot-name: */ 268 272 QString strSnapshotName = snapshotName(); 273 274 /* Is there something changed? */ 269 275 if (m_strSnapshotName == strSnapshotName) 270 276 return; 271 277 272 /* Remember new snapshot name: */278 /* Update linked values: */ 273 279 m_strSnapshotName = strSnapshotName; 274 275 /* Update linked values: */276 280 updateMinimumSnapshotNameWidth(); 277 281 updateVisibleSnapshotName(); … … 282 286 /* Prepare variables: */ 283 287 int iMargin = data(MachineItemData_Margin).toInt(); 284 int iPixmapWidth = m_pixmapSize.width(); 285 int iMachineItemMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 286 int iMachineItemMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 288 int iMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 287 289 int iToolBarWidth = data(MachineItemData_ToolBarSize).toSize().width(); 288 290 289 /* Calculate maximum width for the first row: */ 290 m_iFirstRowMaximumWidth = geometry().width(); 291 m_iFirstRowMaximumWidth -= iMargin; /* left margin */ 292 m_iFirstRowMaximumWidth -= iPixmapWidth; /* pixmap width */ 293 m_iFirstRowMaximumWidth -= iMachineItemMajorSpacing; /* spacing between pixmap and name */ 294 if (!snapshotName().isEmpty()) 295 m_iFirstRowMaximumWidth -= iMachineItemMinorSpacing; /* spacing between name and snapshot name */ 291 /* Calculate new maximum width for the first row: */ 292 int iFirstRowMaximumWidth = geometry().width(); 293 iFirstRowMaximumWidth -= iMargin; /* left margin */ 294 iFirstRowMaximumWidth -= m_pixmapSize.width(); /* pixmap width */ 295 iFirstRowMaximumWidth -= iMajorSpacing; /* spacing between pixmap and name(s) */ 296 296 if (m_pToolBar) 297 297 { 298 m_iFirstRowMaximumWidth -= iMachineItemMajorSpacing; /* spacing before toolbar */ 299 m_iFirstRowMaximumWidth -= iToolBarWidth; /* toolbar width */ 300 } 301 m_iFirstRowMaximumWidth -= iMargin; /* right margin */ 298 iFirstRowMaximumWidth -= iMajorSpacing; /* spacing before toolbar */ 299 iFirstRowMaximumWidth -= iToolBarWidth; /* toolbar width */ 300 } 301 iFirstRowMaximumWidth -= iMargin; /* right margin */ 302 303 /* Is there something changed? */ 304 if (m_iFirstRowMaximumWidth == iFirstRowMaximumWidth) 305 return; 302 306 303 307 /* Update linked values: */ 308 m_iFirstRowMaximumWidth = iFirstRowMaximumWidth; 304 309 updateMaximumNameWidth(); 305 310 updateMaximumSnapshotNameWidth(); … … 308 313 void UIGChooserItemMachine::updateMinimumNameWidth() 309 314 { 310 /* Calculate minimum name width: */315 /* Calculate new minimum name width: */ 311 316 QPaintDevice *pPaintDevice = model()->paintDevice(); 312 317 QFontMetrics fm(m_nameFont, pPaintDevice); 313 m_iMinimumNameWidth = fm.width(compressText(m_nameFont, pPaintDevice, m_strName, textWidth(m_nameFont, pPaintDevice, 15))); 318 int iMinimumNameWidth = fm.width(compressText(m_nameFont, pPaintDevice, m_strName, textWidth(m_nameFont, pPaintDevice, 15))); 319 320 /* Is there something changed? */ 321 if (m_iMinimumNameWidth == iMinimumNameWidth) 322 return; 314 323 315 324 /* Update linked values: */ 325 m_iMinimumNameWidth = iMinimumNameWidth; 316 326 updateGeometry(); 317 327 } … … 319 329 void UIGChooserItemMachine::updateMinimumSnapshotNameWidth() 320 330 { 321 /* Do we have a snapshot? */ 322 if (m_strSnapshotName.isEmpty()) 323 { 324 /* Clear minimum snapshot name width: */ 325 m_iMinimumSnapshotNameWidth = 0; 326 } 327 else 328 { 329 /* Calculate minimum snapshot name width: */ 331 /* Calculate new minimum snapshot-name width: */ 332 int iMinimumSnapshotNameWidth = 0; 333 /* Is there any snapshot exists? */ 334 if (!m_strSnapshotName.isEmpty()) 335 { 330 336 QFontMetrics fm(m_snapshotNameFont, model()->paintDevice()); 331 337 int iBracketWidth = fm.width("()"); /* bracket width */ 332 int iActualTextWidth = fm.width(m_strSnapshotName); /* snapshot 338 int iActualTextWidth = fm.width(m_strSnapshotName); /* snapshot-name width */ 333 339 int iMinimumTextWidth = fm.width("..."); /* ellipsis width */ 334 m_iMinimumSnapshotNameWidth = iBracketWidth + qMin(iActualTextWidth, iMinimumTextWidth); 335 } 340 iMinimumSnapshotNameWidth = iBracketWidth + qMin(iActualTextWidth, iMinimumTextWidth); 341 } 342 343 /* Is there something changed? */ 344 if (m_iMinimumSnapshotNameWidth == iMinimumSnapshotNameWidth) 345 return; 336 346 337 347 /* Update linked values: */ 348 m_iMinimumSnapshotNameWidth = iMinimumSnapshotNameWidth; 349 updateMaximumNameWidth(); 338 350 updateGeometry(); 339 updateMaximumNameWidth();340 351 } 341 352 342 353 void UIGChooserItemMachine::updateMaximumNameWidth() 343 354 { 344 /* Calculate maximum name width: */ 345 m_iMaximumNameWidth = m_iFirstRowMaximumWidth - m_iMinimumSnapshotNameWidth; 346 347 /* Calculate linked values: */ 355 /* Calculate new maximum name width: */ 356 int iMaximumNameWidth = m_iFirstRowMaximumWidth; 357 /* Do we have a minimum snapshot-name width? */ 358 if (m_iMinimumSnapshotNameWidth != 0) 359 { 360 /* Prepare variables: */ 361 int iMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 362 /* Take spacing and snapshot-name into account: */ 363 iMaximumNameWidth -= (iMinorSpacing + m_iMinimumSnapshotNameWidth); 364 } 365 366 /* Is there something changed? */ 367 if (m_iMaximumNameWidth == iMaximumNameWidth) 368 return; 369 370 /* Update linked values: */ 371 m_iMaximumNameWidth = iMaximumNameWidth; 348 372 updateVisibleName(); 349 373 } … … 351 375 void UIGChooserItemMachine::updateMaximumSnapshotNameWidth() 352 376 { 353 /* Calculate maximum snapshot name width: */ 354 m_iMaximumSnapshotNameWidth = m_iFirstRowMaximumWidth - m_visibleNameSize.width(); 377 /* Prepare variables: */ 378 int iMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 379 380 /* Calculate new maximum snapshot-name width: */ 381 int iMaximumSnapshotNameWidth = m_iFirstRowMaximumWidth; 382 iMaximumSnapshotNameWidth -= (iMinorSpacing + m_visibleNameSize.width()); 383 384 /* Is there something changed? */ 385 if (m_iMaximumSnapshotNameWidth == iMaximumSnapshotNameWidth) 386 return; 355 387 356 388 /* Update linked values: */ 389 m_iMaximumSnapshotNameWidth = iMaximumSnapshotNameWidth; 357 390 updateVisibleSnapshotName(); 358 391 } … … 363 396 QPaintDevice *pPaintDevice = model()->paintDevice(); 364 397 365 /* Calculate visible name: */366 m_strVisibleName = compressText(m_nameFont, pPaintDevice, m_strName, m_iMaximumNameWidth);367 m_visibleNameSize = textSize(m_nameFont, pPaintDevice, m_strVisibleName);398 /* Calculate new visible name and name-size: */ 399 QString strVisibleName = compressText(m_nameFont, pPaintDevice, m_strName, m_iMaximumNameWidth); 400 QSize visibleNameSize = textSize(m_nameFont, pPaintDevice, strVisibleName); 368 401 369 402 /* Update linked values: */ 370 updateGeometry(); 371 updateMaximumSnapshotNameWidth(); 372 update(); 403 if (m_visibleNameSize != visibleNameSize) 404 { 405 m_visibleNameSize = visibleNameSize; 406 updateMaximumSnapshotNameWidth(); 407 updateGeometry(); 408 } 409 if (m_strVisibleName != strVisibleName) 410 { 411 m_strVisibleName = strVisibleName; 412 update(); 413 } 373 414 } 374 415 … … 378 419 QPaintDevice *pPaintDevice = model()->paintDevice(); 379 420 380 /* Calculate visible snapshotname: */421 /* Calculate new visible snapshot-name: */ 381 422 int iBracketWidth = QFontMetrics(m_snapshotNameFont, pPaintDevice).width("()"); 382 423 QString strVisibleSnapshotName = compressText(m_snapshotNameFont, pPaintDevice, m_strSnapshotName, 383 424 m_iMaximumSnapshotNameWidth - iBracketWidth); 384 m_strVisibleSnapshotName = QString("(%1)").arg(strVisibleSnapshotName);385 m_visibleSnapshotNameSize = textSize(m_snapshotNameFont, pPaintDevice, m_strVisibleSnapshotName);425 strVisibleSnapshotName = QString("(%1)").arg(strVisibleSnapshotName); 426 QSize visibleSnapshotNameSize = textSize(m_snapshotNameFont, pPaintDevice, strVisibleSnapshotName); 386 427 387 428 /* Update linked values: */ 388 updateGeometry(); 389 update(); 429 if (m_visibleSnapshotNameSize != visibleSnapshotNameSize) 430 { 431 m_visibleSnapshotNameSize = visibleSnapshotNameSize; 432 updateGeometry(); 433 } 434 if (m_strVisibleSnapshotName != strVisibleSnapshotName) 435 { 436 m_strVisibleSnapshotName = strVisibleSnapshotName; 437 update(); 438 } 390 439 } 391 440 392 441 void UIGChooserItemMachine::updateStateText() 393 442 { 394 /* Something changed?*/443 /* Get new state-text and state-text size: */ 395 444 QString strStateText = machineStateName(); 396 if (m_strStateText == strStateText) 397 return; 398 399 /* Update state text: */ 400 m_strStateText = strStateText; 401 m_stateTextSize = textSize(m_stateTextFont, model()->paintDevice(), m_strStateText); 445 QSize stateTextSize = textSize(m_stateTextFont, model()->paintDevice(), m_strStateText); 402 446 403 447 /* Update linked values: */ 404 updateGeometry(); 405 update(); 448 if (m_stateTextSize != stateTextSize) 449 { 450 m_stateTextSize = stateTextSize; 451 updateGeometry(); 452 } 453 if (m_strStateText != strStateText) 454 { 455 m_strStateText = strStateText; 456 update(); 457 } 406 458 } 407 459 … … 553 605 { 554 606 /* Prepare variables: */ 555 int iMa chineItemMargin = data(MachineItemData_Margin).toInt();556 int iMa chineItemMajorSpacing = data(MachineItemData_MajorSpacing).toInt();557 int iM achineItemMinorSpacing = data(MachineItemData_MinorSpacing).toInt();607 int iMargin = data(MachineItemData_Margin).toInt(); 608 int iMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 609 int iMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 558 610 int iToolBarWidth = data(MachineItemData_ToolBarSize).toSize().width(); 559 611 … … 562 614 563 615 /* Two margins: */ 564 iProposedWidth += 2 * iMa chineItemMargin;616 iProposedWidth += 2 * iMargin; 565 617 /* And machine-item content to take into account: */ 566 int iTopLineWidth = m_iMinimumNameWidth + 567 iMachineItemMinorSpacing + 568 m_iMinimumSnapshotNameWidth; 618 int iTopLineWidth = m_iMinimumNameWidth; 619 if (!m_strSnapshotName.isEmpty()) 620 iTopLineWidth += (iMinorSpacing + 621 m_iMinimumSnapshotNameWidth); 569 622 int iBottomLineWidth = m_statePixmapSize.width() + 570 iM achineItemMinorSpacing +623 iMinorSpacing + 571 624 m_stateTextSize.width(); 572 625 int iRightColumnWidth = qMax(iTopLineWidth, iBottomLineWidth); 573 626 int iMachineItemWidth = m_pixmapSize.width() + 574 iMa chineItemMajorSpacing +627 iMajorSpacing + 575 628 iRightColumnWidth; 576 629 if (m_pToolBar) 577 iMachineItemWidth += (iMa chineItemMajorSpacing + iToolBarWidth);630 iMachineItemWidth += (iMajorSpacing + iToolBarWidth); 578 631 iProposedWidth += iMachineItemWidth; 579 632 … … 585 638 { 586 639 /* Prepare variables: */ 587 int iMa chineItemMargin = data(MachineItemData_Margin).toInt();640 int iMargin = data(MachineItemData_Margin).toInt(); 588 641 int iMachineItemTextSpacing = data(MachineItemData_TextSpacing).toInt(); 589 642 int iToolBarHeight = data(MachineItemData_ToolBarSize).toSize().height(); … … 593 646 594 647 /* Two margins: */ 595 iProposedHeight += 2 * iMa chineItemMargin;648 iProposedHeight += 2 * iMargin; 596 649 /* And machine-item content to take into account: */ 597 650 int iTopLineHeight = qMax(m_visibleNameSize.height(), m_visibleSnapshotNameSize.height()); … … 865 918 int iFullHeight = fullRect.height(); 866 919 int iMargin = data(MachineItemData_Margin).toInt(); 867 int iMa chineItemMajorSpacing = data(MachineItemData_MajorSpacing).toInt();868 int iM achineItemMinorSpacing = data(MachineItemData_MinorSpacing).toInt();920 int iMajorSpacing = data(MachineItemData_MajorSpacing).toInt(); 921 int iMinorSpacing = data(MachineItemData_MinorSpacing).toInt(); 869 922 int iMachineItemTextSpacing = data(MachineItemData_TextSpacing).toInt(); 870 923 … … 908 961 int iRightColumnIndent = iLeftColumnIndent + 909 962 m_pixmapSize.width() + 910 iMa chineItemMajorSpacing;963 iMajorSpacing; 911 964 912 965 /* Paint right column: */ … … 941 994 int iSnapshotNameIndent = iRightColumnIndent + 942 995 m_visibleNameSize.width() + 943 iM achineItemMinorSpacing;996 iMinorSpacing; 944 997 945 998 /* Paint right element: */ … … 949 1002 int iSnapshotNameX = iSnapshotNameIndent; 950 1003 int iSnapshotNameY = iTopLineIndent; 951 /* Paint snapshot 1004 /* Paint snapshot-name: */ 952 1005 paintText(/* Painter: */ 953 1006 pPainter, … … 985 1038 int iMachineStateTextIndent = iRightColumnIndent + 986 1039 m_statePixmapSize.width() + 987 iM achineItemMinorSpacing;1040 iMinorSpacing; 988 1041 989 1042 /* Paint right element: */ -
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.h
r43853 r44285 93 93 /* Helpers: Update stuff: */ 94 94 void updatePixmaps(); 95 void updatePixmap(); 96 void updateStatePixmap(); 95 97 void updateName(); 96 98 void updateSnapshotName();
Note:
See TracChangeset
for help on using the changeset viewer.