Changeset 45515 in vbox
- Timestamp:
- Apr 12, 2013 10:16:08 AM (11 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/globals
- Files:
-
- 2 edited
-
UIPopupCenter.cpp (modified) (6 diffs)
-
UIPopupCenter.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIPopupCenter.cpp
r45508 r45515 255 255 , m_fPolished(false) 256 256 , m_strId(strId) 257 , m_iMainLayoutMargin(2), m_iMainFrameLayoutMargin(5), m_iMainFrameLayoutSpacing(5) 257 258 , m_strMessage(strMessage), m_strDetails(strDetails) 258 259 , m_iButton1(iButton1), m_iButton2(iButton2), m_iButton3(iButton3) … … 260 261 , m_iButtonEsc(0) 261 262 , m_iParentStatusBarHeight(parentStatusBarHeight(pParent)) 262 , m_pMainLayout(0), m_pFrameLayout(0)263 263 , m_pTextPane(0), m_pButtonBox(0) 264 264 , m_pButton1(0), m_pButton2(0), m_pButton3(0) … … 334 334 } 335 335 336 int UIPopupPane::minimumWidthHint() const 337 { 338 /* Prepare minimum width hint: */ 339 int iMinimumWidthHint = 0; 340 341 /* Take into account main layout: */ 342 iMinimumWidthHint += 2 * m_iMainLayoutMargin; 343 { 344 /* Take into account main-frame layout: */ 345 iMinimumWidthHint += 2 * m_iMainFrameLayoutMargin; 346 { 347 /* Take into account widgets: */ 348 const int iTextPaneWidth = m_pTextPane->minimumSizeHint().width(); 349 const int iButtonBoxWidth = m_pButtonBox->minimumSizeHint().width(); 350 iMinimumWidthHint += qMax(iTextPaneWidth, iButtonBoxWidth); 351 } 352 } 353 354 /* Return minimum width hint: */ 355 return iMinimumWidthHint; 356 } 357 358 int UIPopupPane::minimumHeightHint() const 359 { 360 /* Prepare minimum height hint: */ 361 int iMinimumHeightHint = 0; 362 363 /* Take into account main layout: */ 364 iMinimumHeightHint += 2 * m_iMainLayoutMargin; 365 { 366 /* Take into account main-frame layout: */ 367 iMinimumHeightHint += 2 * m_iMainFrameLayoutMargin; 368 { 369 /* Take into account widgets: */ 370 iMinimumHeightHint += m_pTextPane->minimumSizeHint().height(); 371 iMinimumHeightHint += m_iMainFrameLayoutSpacing; 372 iMinimumHeightHint += m_pButtonBox->minimumSizeHint().height(); 373 } 374 } 375 376 /* Return minimum height hint: */ 377 return iMinimumHeightHint; 378 } 379 380 QSize UIPopupPane::minimumSizeHint() const 381 { 382 return QSize(minimumWidthHint(), minimumHeightHint()); 383 } 384 336 385 void UIPopupPane::adjustAccordingParent() 337 386 { 338 /* Get some variables: */387 /* Get parent attributes: */ 339 388 const int iWidth = parentWidget()->width(); 340 389 const int iHeight = parentWidget()->height(); 341 390 342 /* Resize popup according parent: */ 391 /* Adjust text-pane according parent width: */ 392 if (m_pTextPane) 393 { 394 m_pTextPane->setMinimumTextWidth(iWidth - 2 * m_iMainLayoutMargin 395 - 2 * m_iMainFrameLayoutMargin); 396 } 397 398 /* Resize popup according parent width: */ 343 399 resize(iWidth, minimumSizeHint().height()); 344 400 … … 349 405 raise(); 350 406 351 /* Resize text-pane according new size: */ 352 if (m_pTextPane) 353 { 354 int iMinimumTextWidth = iWidth; 355 int iLeft, iTop, iRight, iBottom; 356 m_pMainLayout->getContentsMargins(&iLeft, &iTop, &iRight, &iBottom); 357 iMinimumTextWidth -= iLeft; 358 iMinimumTextWidth -= iRight; 359 m_pFrameLayout->getContentsMargins(&iLeft, &iTop, &iRight, &iBottom); 360 iMinimumTextWidth -= iLeft; 361 iMinimumTextWidth -= iRight; 362 m_pTextPane->setMinimumTextWidth(iMinimumTextWidth); 407 /* Update layout: */ 408 updateLayout(); 409 } 410 411 void UIPopupPane::updateLayout() 412 { 413 /* This attributes: */ 414 const int iWidth = width(); 415 const int iHeight = height(); 416 /* Main layout: */ 417 { 418 /* Main-frame: */ 419 m_pMainFrame->move(m_iMainLayoutMargin, 420 m_iMainLayoutMargin); 421 m_pMainFrame->resize(iWidth - 2 * m_iMainLayoutMargin, 422 iHeight - 2 * m_iMainLayoutMargin); 423 const int iMainFrameWidth = m_pMainFrame->width(); 424 /* Main-frame layout: */ 425 { 426 /* Text-pane: */ 427 const int iTextPaneHeight = m_pTextPane->minimumSizeHint().height(); 428 m_pTextPane->move(m_iMainFrameLayoutMargin, 429 m_iMainFrameLayoutMargin); 430 m_pTextPane->resize(iMainFrameWidth - 2 * m_iMainFrameLayoutMargin, 431 iTextPaneHeight); 432 /* Button-box: */ 433 const int iButtonBoxHeight = m_pButtonBox->minimumSizeHint().height(); 434 m_pButtonBox->move(m_iMainFrameLayoutMargin, 435 m_iMainFrameLayoutMargin + iTextPaneHeight + m_iMainFrameLayoutSpacing); 436 m_pButtonBox->resize(iMainFrameWidth - 2 * m_iMainFrameLayoutMargin, 437 iButtonBoxHeight); 438 } 363 439 } 364 440 } … … 366 442 void UIPopupPane::prepareContent() 367 443 { 368 /* Configure this: */444 /* Prepare this: */ 369 445 setFocusPolicy(Qt::StrongFocus); 370 /* Create main-layout: */ 371 m_pMainLayout = new QVBoxLayout(this); 372 { 373 /* Configure layout: */ 374 m_pMainLayout->setContentsMargins(2, 2, 2, 2); 375 m_pMainLayout->setSpacing(0); 376 /* Create main frame: */ 377 UIPopupPaneFrame *pMainFrame = new UIPopupPaneFrame; 378 { 379 /* Add into layout: */ 380 m_pMainLayout->addWidget(pMainFrame); 381 /* Create frame-layout: */ 382 m_pFrameLayout = new QVBoxLayout(pMainFrame); 383 { 384 /* Configure layout: */ 385 m_pFrameLayout->setContentsMargins(15, 0, 15, 0); 386 m_pFrameLayout->setSpacing(0); 387 /* Create message-label: */ 388 m_pTextPane = new QIRichTextLabel; 389 { 390 /* Add into layout: */ 391 m_pFrameLayout->addWidget(m_pTextPane); 392 /* Configure label: */ 393 m_pTextPane->setFocusPolicy(Qt::StrongFocus); 394 m_pTextPane->installEventFilter(pMainFrame); 395 m_pTextPane->setText(m_strMessage); 396 m_pTextPane->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); 397 } 398 /* Create button-box: */ 399 m_pButtonBox = new QIDialogButtonBox; 400 { 401 /* Add into layout: */ 402 m_pFrameLayout->addWidget(m_pButtonBox); 403 /* Configure button-box: */ 404 m_pButtonBox->installEventFilter(pMainFrame); 405 prepareButtons(); 406 } 407 } 446 /* Create main-frame: */ 447 m_pMainFrame = new UIPopupPaneFrame(this); 448 { 449 /* Prepare frame: */ 450 m_pMainFrame->installEventFilter(m_pMainFrame); 451 /* Create message-label: */ 452 m_pTextPane = new QIRichTextLabel(m_pMainFrame); 453 { 454 /* Prepare label: */ 455 m_pTextPane->setFocusPolicy(Qt::StrongFocus); 456 m_pTextPane->installEventFilter(m_pMainFrame); 457 m_pTextPane->setText(m_strMessage); 458 m_pTextPane->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); 459 } 460 /* Create button-box: */ 461 m_pButtonBox = new QIDialogButtonBox(m_pMainFrame); 462 { 463 /* Prepare button-box: */ 464 m_pButtonBox->installEventFilter(m_pMainFrame); 465 prepareButtons(); 408 466 } 409 467 } … … 547 605 void UIPopupPaneFrame::prepare() 548 606 { 549 /* Install event-filter: */550 installEventFilter(this);551 607 /* Install 'hover' animation for 'opacity' property: */ 552 608 UIAnimationFramework::installPropertyAnimation(this, QByteArray("opacity"), -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIPopupCenter.h
r45508 r45515 30 30 31 31 /* Forward declaration: */ 32 class UIPopupPane;33 class QVBoxLayout;34 32 class QPushButton; 35 33 class QIRichTextLabel; 36 34 class QIDialogButtonBox; 35 class UIPopupPane; 36 class UIPopupPaneFrame; 37 37 38 38 /* Global popup-center object: */ … … 178 178 virtual void keyPressEvent(QKeyEvent *pEvent); 179 179 180 /* Helper: Adjust stuff: */ 180 /* Helper: Layout stuff: */ 181 int minimumWidthHint() const; 182 int minimumHeightHint() const; 183 QSize minimumSizeHint() const; 181 184 void adjustAccordingParent(); 185 void updateLayout(); 182 186 183 187 /* Helpers: Prepare stuff: */ … … 196 200 bool m_fPolished; 197 201 const QString m_strId; 202 int m_iMainLayoutMargin; 203 int m_iMainFrameLayoutMargin; 204 int m_iMainFrameLayoutSpacing; 198 205 QString m_strMessage, m_strDetails; 199 206 int m_iButton1, m_iButton2, m_iButton3; … … 203 210 204 211 /* Widgets: */ 205 QVBoxLayout *m_pMainLayout; 206 QVBoxLayout *m_pFrameLayout; 212 UIPopupPaneFrame *m_pMainFrame; 207 213 QIRichTextLabel *m_pTextPane; 208 214 QIDialogButtonBox *m_pButtonBox;
Note:
See TracChangeset
for help on using the changeset viewer.

