VirtualBox

Changeset 88522 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 15, 2021 11:24:13 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
143789
Message:

FE/Qt: bugref:9831. Adding the edit menu.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp

    r88496 r88522  
    183183
    184184    void sigSourceChanged(const QUrl &url);
     185    void sigCopyAvailableChanged(bool fAvailable);
    185186    void sigTitleUpdate(const QString &strTitle);
    186187    void sigOpenLinkInNewTab(const QUrl &url, bool fBackground);
     
    188189    void sigLinkHighlighted(const QString &strLink);
    189190    void sigZoomPercentageChanged(int iPercentage);
     191    void sigFindInPageWidgetVisibilityChanged(bool fVisible);
    190192
    191193public:
     
    203205    void setZoomPercentage(int iZoomPercentage);
    204206    void setHelpFileList(const QList<QUrl> &helpFileList);
     207    void copySelectedText() const;
     208    bool hasSelectedText() const;
     209    bool isFindInPageWidgetVisible() const;
     210
     211public slots:
     212
     213    void sltHandleFindInPageAction(bool fToggled);
    205214
    206215private slots:
     
    209218    void sltHandleForwardAction();
    210219    void sltHandleBackwardAction();
    211     void sltHandleFindInPageAction(bool fToggled);
    212220    void sltHandleHistoryChanged();
    213221    void sltHandleAddressBarIndexChanged(int index);
    214222    void sltHandleAddBookmarkAction();
    215223    void sltAnchorClicked(const QUrl &link);
    216     void sltCloseFindInPageWidget();
     224    void sltFindInPageWidgetVisibilityChanged(bool  fVisible);
    217225
    218226private:
     
    255263    void sigLinkHighlighted(const QString &strLink);
    256264    void sigZoomPercentageChanged(int iPercentage);
     265    void sigCopyAvailableChanged(bool fAvailable);
     266    void sigFindInPageWidgetVisibilityChanged(bool fVisible);
    257267
    258268public:
     
    277287    void setZoomPercentage(int iZoomPercentage);
    278288    void setHelpFileList(const QList<QUrl> &helpFileList);
     289    void copySelectedText() const;
     290    bool hasCurrentTabSelectedText() const;
     291    bool isFindInPageWidgetVisible() const;
     292    void toggleFindInPage(bool fTrigger);
    279293
    280294public slots:
     
    293307    void sltShowTabBarContextMenu(const QPoint &pos);
    294308    void sltHandleCloseOtherTabsContextMenuAction();
     309    void sltCopyAvailableChanged(bool fAvailable);
    295310
    296311private:
     
    599614}
    600615
     616void UIHelpBrowserTab::copySelectedText() const
     617{
     618    if (m_pContentViewer && m_pContentViewer->hasSelectedText())
     619        m_pContentViewer->copy();
     620}
     621
     622bool UIHelpBrowserTab::hasSelectedText() const
     623{
     624    if (m_pContentViewer)
     625        return m_pContentViewer->textCursor().hasSelection();
     626    return false;
     627}
     628
     629bool UIHelpBrowserTab::isFindInPageWidgetVisible() const
     630{
     631    if (m_pContentViewer)
     632        return m_pContentViewer->isFindInPageWidgetVisible();
     633    return false;
     634}
     635
    601636int UIHelpBrowserTab::zoomPercentage() const
    602637{
     
    632667    connect(m_pContentViewer, &UIHelpViewer::sigOpenLinkInNewTab,
    633668        this, &UIHelpBrowserTab::sigOpenLinkInNewTab);
    634     connect(m_pContentViewer, &UIHelpViewer::sigCloseFindInPageWidget,
    635             this, &UIHelpBrowserTab::sltCloseFindInPageWidget);
    636669    connect(m_pContentViewer, &UIHelpViewer::sigGoBackward,
    637670            this, &UIHelpBrowserTab::sltHandleBackwardAction);
     
    646679    connect(m_pContentViewer, &UIHelpViewer::sigZoomPercentageChanged,
    647680            this, &UIHelpBrowserTab::sigZoomPercentageChanged);
     681    connect(m_pContentViewer, &UIHelpViewer::copyAvailable,
     682            this, &UIHelpBrowserTab::sigCopyAvailableChanged);
     683    connect(m_pContentViewer, &UIHelpViewer::sigFindInPageWidgetToogle,
     684            this, &UIHelpBrowserTab::sltFindInPageWidgetVisibilityChanged);
    648685
    649686    m_pContentViewer->setSource(initialUrl);
     
    737774{
    738775    if (m_pContentViewer)
    739         m_pContentViewer->sltToggleFindInPageWidget(fToggled);
     776        m_pContentViewer->toggleFindInPageWidget(fToggled);
    740777}
    741778
     
    795832}
    796833
    797 void UIHelpBrowserTab::sltCloseFindInPageWidget()
     834void UIHelpBrowserTab::sltFindInPageWidgetVisibilityChanged(bool fVisible)
    798835{
    799836    if (m_pFindInPageAction)
    800         m_pFindInPageAction->setChecked(false);
    801 }
    802 
     837    {
     838        m_pFindInPageAction->blockSignals(true);
     839        m_pFindInPageAction->setChecked(fVisible);
     840        m_pFindInPageAction->blockSignals(false);
     841    }
     842    emit sigFindInPageWidgetVisibilityChanged(fVisible);
     843}
    803844
    804845/*********************************************************************************************************************************
     
    845886    connect(pTabWidget, &UIHelpBrowserTab::sigLinkHighlighted,
    846887            this, &UIHelpBrowserTabManager::sigLinkHighlighted);
     888    connect(pTabWidget, &UIHelpBrowserTab::sigCopyAvailableChanged,
     889            this, &UIHelpBrowserTabManager::sltCopyAvailableChanged);
     890    connect(pTabWidget, &UIHelpBrowserTab::sigFindInPageWidgetVisibilityChanged,
     891            this, &UIHelpBrowserTabManager::sigFindInPageWidgetVisibilityChanged);
    847892
    848893    pTabWidget->setZoomPercentage(zoomPercentage());
     
    10081053}
    10091054
     1055void UIHelpBrowserTabManager::copySelectedText() const
     1056{
     1057    UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(currentWidget());
     1058    if (!pTab)
     1059        return;
     1060    return pTab->copySelectedText();
     1061}
     1062
     1063bool UIHelpBrowserTabManager::hasCurrentTabSelectedText() const
     1064{
     1065    UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(currentWidget());
     1066    if (!pTab)
     1067        return false;
     1068    return pTab->hasSelectedText();
     1069}
     1070
     1071bool UIHelpBrowserTabManager::isFindInPageWidgetVisible() const
     1072{
     1073    UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(currentWidget());
     1074    if (!pTab)
     1075        return false;
     1076    return pTab->isFindInPageWidgetVisible();
     1077}
     1078
     1079void UIHelpBrowserTabManager::toggleFindInPage(bool fTrigger)
     1080{
     1081    UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(currentWidget());
     1082    if (pTab)
     1083        pTab->sltHandleFindInPageAction(fTrigger);
     1084}
     1085
    10101086void UIHelpBrowserTabManager::sltHandletabTitleChange(const QString &strTitle)
    10111087{
     
    10271103        addNewTab(url, fBackground);
    10281104    updateTabUrlTitleList();
     1105}
     1106
     1107void UIHelpBrowserTabManager::sltCopyAvailableChanged(bool fAvailable)
     1108{
     1109    UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(currentWidget());
     1110    /* Emit coresponding signal only if sender is the current tab: */
     1111    if (pTab && sender() == pTab)
     1112        emit sigCopyAvailableChanged(fAvailable);
    10291113}
    10301114
     
    11471231    , m_pSplitter(0)
    11481232    , m_pFileMenu(0)
     1233    , m_pEditMenu(0)
    11491234    , m_pViewMenu(0)
    11501235    , m_pTabsMenu(0)
     
    11621247    , m_pShowHideToolBarAction(0)
    11631248    , m_pShowHideStatusBarAction(0)
     1249    , m_pCopySelectedTextAction(0)
     1250    , m_pFindInPageAction(0)
    11641251    , m_pZoomMenuAction(0)
    11651252    , m_fModelContentCreated(false)
     
    11811268    menuList
    11821269        << m_pFileMenu
     1270        << m_pEditMenu
    11831271        << m_pViewMenu
    11841272        << m_pTabsMenu;
     
    12371325            this, &UIHelpBrowserWidget::sltHandleWidgetVisibilityToggle);
    12381326
     1327    m_pCopySelectedTextAction = new QAction(this);
     1328    connect(m_pCopySelectedTextAction, &QAction::triggered,
     1329            this, &UIHelpBrowserWidget::sltCopySelectedText);
     1330    m_pCopySelectedTextAction->setShortcut(QString("Ctrl+C"));
     1331
     1332    m_pFindInPageAction = new QAction(this);
     1333    m_pFindInPageAction->setCheckable(true);
     1334    m_pFindInPageAction->setChecked(false);
     1335    connect(m_pFindInPageAction, &QAction::triggered,
     1336            this, &UIHelpBrowserWidget::sltFindInPage);
     1337    m_pFindInPageAction->setShortcut(QString("Ctrl+F"));
    12391338
    12401339    m_pPrintAction = new QAction(this);
     
    12891388
    12901389    connect(m_pTabManager, &UIHelpBrowserTabManager::sigSourceChanged,
    1291             this, &UIHelpBrowserWidget::sltHandleHelpBrowserViewerSourceChange);
     1390            this, &UIHelpBrowserWidget::sltViewerSourceChange);
    12921391    connect(m_pTabManager, &UIHelpBrowserTabManager::sigAddBookmark,
    12931392            this, &UIHelpBrowserWidget::sltAddNewBookmark);
     
    13001399    connect(m_pTabManager, &UIHelpBrowserTabManager::sigZoomPercentageChanged,
    13011400            this, &UIHelpBrowserWidget::sltZoomPercentageChanged);
     1401    connect(m_pTabManager, &UIHelpBrowserTabManager::sigCopyAvailableChanged,
     1402            this, &UIHelpBrowserWidget::sltCopyAvailableChanged);
     1403    connect(m_pTabManager, &UIHelpBrowserTabManager::sigFindInPageWidgetVisibilityChanged,
     1404            this, &UIHelpBrowserWidget::sltFindInPageWidgetVisibilityChanged);
    13021405
    13031406    connect(m_pHelpEngine, &QHelpEngine::setupFinished,
     
    13861489{
    13871490    m_pFileMenu = new QMenu(tr("&File"), this);
     1491    m_pEditMenu = new QMenu(tr("&Edit"), this);
    13881492    m_pViewMenu = new QMenu(tr("&View"), this);
    13891493    m_pTabsMenu = new QMenu(tr("&Tabs"), this);
     
    13951499    if (m_pQuitAction)
    13961500        m_pFileMenu->addAction(m_pQuitAction);
     1501
     1502    if (m_pCopySelectedTextAction)
     1503        m_pEditMenu->addAction(m_pCopySelectedTextAction);
     1504    if(m_pFindInPageAction)
     1505        m_pEditMenu->addAction(m_pFindInPageAction);
    13971506
    13981507    if (m_pZoomMenuAction)
     
    15311640    if (m_pQuitAction)
    15321641        m_pQuitAction->setText(tr("&Quit"));
     1642
     1643    if (m_pCopySelectedTextAction)
     1644        m_pCopySelectedTextAction->setText(tr("&Copy Selected Text"));
     1645    if (m_pFindInPageAction)
     1646        m_pFindInPageAction->setText(tr("&Find in Page"));
    15331647}
    15341648
     
    15721686    else if (sender() == m_pShowHideStatusBarAction)
    15731687        emit sigStatusBarVisible(fToggled);
     1688}
     1689
     1690void UIHelpBrowserWidget::sltCopySelectedText()
     1691{
     1692    if (m_pTabManager)
     1693        m_pTabManager->copySelectedText();
     1694}
     1695
     1696void UIHelpBrowserWidget::sltFindInPage(bool fChecked)
     1697{
     1698    if (m_pTabManager)
     1699        m_pTabManager->toggleFindInPage(fChecked);
     1700}
     1701
     1702void UIHelpBrowserWidget::sltCopyAvailableChanged(bool fAvailable)
     1703{
     1704    if (m_pCopySelectedTextAction)
     1705        m_pCopySelectedTextAction->setEnabled(fAvailable);
     1706}
     1707
     1708void UIHelpBrowserWidget::sltFindInPageWidgetVisibilityChanged(bool fVisible)
     1709{
     1710    if (m_pFindInPageAction)
     1711    {
     1712        m_pFindInPageAction->blockSignals(true);
     1713        m_pFindInPageAction->setChecked(fVisible);
     1714        m_pFindInPageAction->blockSignals(false);
     1715    }
    15741716}
    15751717
     
    16051747}
    16061748
    1607 void UIHelpBrowserWidget::sltHandleHelpBrowserViewerSourceChange(const QUrl &source)
     1749void UIHelpBrowserWidget::sltViewerSourceChange(const QUrl &source)
    16081750{
    16091751    if (m_fModelContentCreated && m_pContentWidget && source.isValid() && m_pContentModel)
     
    16261768    m_fModelContentCreated = true;
    16271769    if (m_pTabManager)
    1628         sltHandleHelpBrowserViewerSourceChange(m_pTabManager->currentSource());
     1770        sltViewerSourceChange(m_pTabManager->currentSource());
    16291771}
    16301772
     
    18341976        return;
    18351977    list[iIndex+3]->setIcon(UIIconPool::iconSet(":/help_browser_star_16px.png"));
     1978
     1979    if (m_pTabManager)
     1980    {
     1981        if (m_pCopySelectedTextAction)
     1982            m_pCopySelectedTextAction->setEnabled(m_pTabManager->hasCurrentTabSelectedText());
     1983        if (m_pFindInPageAction)
     1984            m_pFindInPageAction->setChecked(m_pTabManager->isFindInPageWidgetVisible());
     1985    }
    18361986}
    18371987
  • trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h

    r88470 r88522  
    8585    void sltHandleSearchingStarted();
    8686    void sltHandleSearchStart();
    87     void sltHandleHelpBrowserViewerSourceChange(const QUrl &source);
     87    void sltViewerSourceChange(const QUrl &source);
    8888    void sltOpenLinkWithUrl(const QUrl &url);
    8989    void sltShowLinksContextMenu(const QPoint &pos);
     
    9797    void sltHandleCurrentTabChanged(int iIndex);
    9898    void sltZoomPercentageChanged(int iPercentage);
     99    void sltCopySelectedText();
     100    void sltCopyAvailableChanged(bool fAvailable);
     101    void sltFindInPage(bool fChecked);
     102    void sltFindInPageWidgetVisibilityChanged(bool fVisible);
    99103
    100104private:
     
    152156    QSplitter           *m_pSplitter;
    153157    QMenu               *m_pFileMenu;
     158    QMenu               *m_pEditMenu;
    154159    QMenu               *m_pViewMenu;
    155160    QMenu               *m_pTabsMenu;
     
    168173    QAction             *m_pShowHideToolBarAction;
    169174    QAction             *m_pShowHideStatusBarAction;
     175    QAction             *m_pCopySelectedTextAction;
     176    QAction             *m_pFindInPageAction;
    170177    UIZoomMenuAction    *m_pZoomMenuAction;
    171178
  • trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.cpp

    r88517 r88522  
    354354            this, &UIHelpViewer::sltSelectNextMatch);
    355355    connect(m_pFindInPageWidget, &UIFindInPageWidget::sigClose,
    356             this, &UIHelpViewer::sigCloseFindInPageWidget);
     356            this, &UIHelpViewer::sltCloseFindInPageWidget);
    357357
    358358    m_defaultCursor = cursor();
     
    408408}
    409409
    410 void UIHelpViewer::sltToggleFindInPageWidget(bool fVisible)
     410void UIHelpViewer::toggleFindInPageWidget(bool fVisible)
    411411{
    412412    if (!m_pFindInPageWidget)
    413413        return;
     414
    414415    /* Closing the find in page widget causes QTextBrowser to jump to the top of the document. This hack puts it back into position: */
    415416    int iPosition = verticalScrollBar()->value();
     
    432433    else
    433434        m_pFindInPageWidget->setFocus();
     435    emit sigFindInPageWidgetToogle(fVisible);
     436}
     437
     438void UIHelpViewer::sltToggleFindInPageWidget(bool fVisible)
     439{
     440    clearOverlay();
     441    toggleFindInPageWidget(fVisible);
     442}
     443
     444void UIHelpViewer::sltCloseFindInPageWidget()
     445{
     446    sltToggleFindInPageWidget(false);
    434447}
    435448
     
    494507}
    495508
    496 bool UIHelpViewer::isInOverlayMode() const
    497 {
    498     return m_fOverlayMode;
     509bool UIHelpViewer::hasSelectedText() const
     510{
     511    return textCursor().hasSelection();
    499512}
    500513
     
    9931006            viewport()->setCursor(m_defaultCursor);
    9941007            emit sigOverlayModeChanged(true);
     1008            toggleFindInPageWidget(false);
    9951009        }
    9961010    }
    9971011}
    9981012
     1013
    9991014#include "UIHelpViewer.moc"
    10001015
  • trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.h

    r88496 r88522  
    4444
    4545    void sigOpenLinkInNewTab(const QUrl &url, bool fBackground);
    46     void sigCloseFindInPageWidget();
     46    void sigFindInPageWidgetToogle(bool fVisible);
    4747    void sigFontPointSizeChanged(int iFontPointSize);
    4848    void sigGoBackward();
     
    7373    void setZoomPercentage(int iZoomPercentage);
    7474    void setHelpFileList(const QList<QUrl> &helpFileList);
    75     bool isInOverlayMode() const;
    76 
     75    bool hasSelectedText() const;
    7776    static const QPair<int, int> zoomPercentageMinMax;
    78 
    79 public slots:
    80 
    81     void sltToggleFindInPageWidget(bool fVisible);
     77    void toggleFindInPageWidget(bool fVisible);
    8278
    8379protected:
     
    10399    void sltSelectPreviousMatch();
    104100    void sltSelectNextMatch();
     101    void sltToggleFindInPageWidget(bool fVisible);
     102    void sltCloseFindInPageWidget();
    105103
    106104private:
     
    110108        qreal m_fInitialWidth;
    111109        qreal m_fScaledWidth;
    112         //int m_iPosition;
    113110        QTextCursor m_textCursor;
    114111        QPixmap m_pixmap;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette