- Timestamp:
- Apr 9, 2021 11:42:55 AM (4 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.cpp
r88423 r88430 345 345 , m_iSearchTermLength(0) 346 346 , m_iZoomPercentage(100) 347 , m_f ImageOverlay(false)348 , m_ pOverlayWidget(0)347 , m_fOverlayMode(false) 348 , m_fCursorChanged(false) 349 349 , m_pOverlayLabel(0) 350 350 { … … 368 368 m_pFindInPageWidget->setVisible(false); 369 369 370 371 m_pOverlayWidget = new QWidget(this);372 QHBoxLayout *overlayLayout = new QHBoxLayout(m_pOverlayWidget);373 m_pOverlayLabel = new QLabel;374 overlayLayout->addWidget(m_pOverlayLabel);375 m_pOverlayWidget->hide();370 m_pOverlayLabel = new QLabel(this); 371 if (m_pOverlayLabel) 372 { 373 m_pOverlayLabel->hide(); 374 m_pOverlayLabel->installEventFilter(this); 375 } 376 376 377 377 m_pOverlayBlurEffect = new QGraphicsBlurEffect(this); 378 viewport()->setGraphicsEffect(m_pOverlayBlurEffect); 379 m_pOverlayBlurEffect->setEnabled(false); 380 m_pOverlayBlurEffect->setBlurRadius(8); 378 if (m_pOverlayBlurEffect) 379 { 380 viewport()->setGraphicsEffect(m_pOverlayBlurEffect); 381 m_pOverlayBlurEffect->setEnabled(false); 382 m_pOverlayBlurEffect->setBlurRadius(8); 383 } 381 384 retranslateUi(); 382 385 } … … 398 401 void UIHelpViewer::setSource(const QUrl &url) 399 402 { 403 clearOverlay(); 400 404 QTextBrowser::setSource(url); 401 405 QTextDocument *pDocument = document(); 402 406 iterateDocumentImages(); 403 407 if (!pDocument || pDocument->isEmpty()) 404 {405 408 setText(tr("<div><p><h3>404. Not found.</h3>The page <b>%1</b> could not be found.</p></div>").arg(url.toString())); 406 }407 409 if (m_pFindInPageWidget && m_pFindInPageWidget->isVisible()) 408 410 { … … 494 496 } 495 497 498 bool UIHelpViewer::isInOverlayMode() const 499 { 500 return m_fOverlayMode; 501 } 502 496 503 int UIHelpViewer::zoomPercentage() const 497 504 { … … 560 567 void UIHelpViewer::resizeEvent(QResizeEvent *pEvent) 561 568 { 569 clearOverlay(); 562 570 /* Make sure the widget stays inside the parent during parent resize: */ 563 571 if (m_pFindInPageWidget) … … 571 579 void UIHelpViewer::wheelEvent(QWheelEvent *pEvent) 572 580 { 573 if (m_fImageOverlay) 574 return; 575 581 if (m_fOverlayMode) 582 return; 576 583 /* QTextBrowser::wheelEvent scales font when some modifiers are pressed. We dont want: */ 577 584 if (pEvent && pEvent->modifiers() == Qt::NoModifier) … … 581 588 void UIHelpViewer::mousePressEvent(QMouseEvent *pEvent) 582 589 { 583 if (m_fImageOverlay) 584 clearOverlay(); 590 clearOverlay(); 585 591 586 592 QIWithRetranslateUI<QTextBrowser>::mousePressEvent(pEvent); 587 588 593 QString strAnchor = anchorAt(pEvent->pos()); 589 594 if (!strAnchor.isEmpty()) … … 596 601 } 597 602 } 598 599 603 loadImageAtPosition(pEvent->globalPos()); 600 604 } … … 602 606 void UIHelpViewer::mouseMoveEvent(QMouseEvent *pEvent) 603 607 { 604 if (m_fImageOverlay) 605 return; 606 607 QIWithRetranslateUI<QTextBrowser>::mouseMoveEvent(pEvent); 608 if (m_fOverlayMode) 609 return; 608 610 609 611 QPoint viewportCoordinates = viewport()->mapFromGlobal(pEvent->globalPos()); 610 612 QTextCursor cursor = cursorForPosition(viewportCoordinates); 611 if (cursor.charFormat().isImageFormat()) 613 if (!m_fCursorChanged && cursor.charFormat().isImageFormat()) 614 { 615 m_fCursorChanged = true; 612 616 viewport()->setCursor(m_handCursor); 613 else 617 } 618 if (m_fCursorChanged && !cursor.charFormat().isImageFormat()) 619 { 614 620 viewport()->setCursor(m_defaultCursor); 621 m_fCursorChanged = false; 622 } 623 QIWithRetranslateUI<QTextBrowser>::mouseMoveEvent(pEvent); 615 624 } 616 625 617 626 void UIHelpViewer::mouseDoubleClickEvent(QMouseEvent *pEvent) 618 627 { 619 if (m_fImageOverlay) 620 clearOverlay(); 621 628 clearOverlay(); 622 629 QIWithRetranslateUI<QTextBrowser>::mouseDoubleClickEvent(pEvent); 623 630 } … … 626 633 { 627 634 QIWithRetranslateUI<QTextBrowser>::paintEvent(pEvent); 628 // if (m_pOverlayBlurEffect && m_pOverlayBlurEffect->isEnabled()) 629 // m_pOverlayBlurEffect->setEnabled(false); 630 631 if (m_pOverlayLabel && m_pOverlayWidget) 632 { 633 if (m_fImageOverlay) 635 636 if (m_pOverlayLabel) 637 { 638 if (m_fOverlayMode) 634 639 { 635 636 // QPainter painter(viewport());637 // painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);638 640 QSize size(0.8 * width(), 0.8 * height()); 639 641 m_pOverlayLabel->setPixmap(m_overlayPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation)); 640 m_pOverlayWidget->move(0.1 * width(), 0.1 * height()); 641 m_pOverlayWidget->show(); 642 // QRect rect(10, 10, 0.4 * width() - 20, height() - 20); 643 // painter.drawPixmap(rect, m_overlayPixmap); 644 //painter.fillRect(rect, Qt::red); 642 int x = 0.5 * (width() - m_pOverlayLabel->width()); 643 int y = 0.5 * (height() - m_pOverlayLabel->height()); 644 m_pOverlayLabel->move(x, y); 645 m_pOverlayLabel->show(); 645 646 } 646 647 else 647 m_pOverlayWidget->hide(); 648 649 } 648 m_pOverlayLabel->hide(); 649 } 650 } 651 652 bool UIHelpViewer::eventFilter(QObject *pObject, QEvent *pEvent) 653 { 654 if (pObject == m_pOverlayLabel) 655 { 656 if (pEvent->type() == QEvent::MouseButtonPress || 657 pEvent->type() == QEvent::MouseButtonDblClick) 658 clearOverlay(); 659 } 660 return QIWithRetranslateUI<QTextBrowser>::eventFilter(pObject, pEvent); 650 661 } 651 662 … … 862 873 void UIHelpViewer::clearOverlay() 863 874 { 875 if (!m_fOverlayMode) 876 return; 864 877 m_overlayPixmap = QPixmap(); 865 m_f ImageOverlay= false;878 m_fOverlayMode = false; 866 879 if (m_pOverlayBlurEffect) 867 880 m_pOverlayBlurEffect->setEnabled(false); 881 emit sigOverlayModeChanged(false); 868 882 } 869 883 … … 895 909 if (!m_overlayPixmap.isNull()) 896 910 { 897 m_f ImageOverlay= true;911 m_fOverlayMode = true; 898 912 if (m_pOverlayBlurEffect) 899 913 m_pOverlayBlurEffect->setEnabled(true); 900 914 viewport()->setCursor(m_defaultCursor); 915 emit sigOverlayModeChanged(true); 901 916 } 902 917 } -
trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.h
r88423 r88430 51 51 void sigAddBookmark(); 52 52 void sigZoomPercentageChanged(int iPercentage); 53 void sigOverlayModeChanged(bool fEnabled); 53 54 54 55 public: … … 72 73 void setZoomPercentage(int iZoomPercentage); 73 74 void setHelpFileList(const QList<QUrl> &helpFileList); 75 bool isInOverlayMode() const; 74 76 75 77 static const QPair<int, int> zoomPercentageMinMax; … … 88 90 virtual void mouseDoubleClickEvent(QMouseEvent *pEvent) /* override */; 89 91 virtual void paintEvent(QPaintEvent *pEvent) /* override */; 92 virtual bool eventFilter(QObject *pObject, QEvent *pEvent) /* override */; 90 93 91 94 private slots: … … 138 141 QList<QUrl> m_helpFileList; 139 142 QPixmap m_overlayPixmap; 140 bool m_fImageOverlay; 141 142 QWidget *m_pOverlayWidget; 143 bool m_fOverlayMode; 144 bool m_fCursorChanged; 143 145 QLabel *m_pOverlayLabel; 144 146 QGraphicsBlurEffect *m_pOverlayBlurEffect; 147 145 148 }; 146 149
Note:
See TracChangeset
for help on using the changeset viewer.