VirtualBox

Changeset 86961 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Nov 23, 2020 5:26:14 PM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9831. Adding a menu to view current tabs

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/VirtualBox1.qrc

    r86861 r86961  
    390390        <file alias="help_browser_home_32px.png">images/help_browser_home_32px.png</file>
    391391        <file alias="help_browser_search.png">images/help_browser_search.png</file>
     392        <file alias="help_browser_star_16px.png">images/help_browser_star_16px.png</file>
    392393        <file alias="help_16px.png">images/help_16px.png</file>
    393394        <file alias="help_button_normal_mac_24px.png">images/help_button_normal_mac_24px.png</file>
  • trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp

    r86958 r86961  
    400400    void sigSourceChanged(const QUrl &url);
    401401    void sigAddBookmark(const QUrl &url, const QString &strTitle);
     402    /** list.first is tab title and list.second is tab's index. */
     403    void sigTabsListChanged(const QStringList &titleList);
    402404
    403405public:
     
    405407    UIHelpBrowserTabManager(const QHelpEngine  *pHelpEngine, const QUrl &homeUrl,
    406408                            const QStringList &urlList, QWidget *pParent = 0);
     409    /* Return the list of urls of all open tabs as QStringList. */
    407410    QStringList tabUrlList() const;
     411    QStringList tabTitleList() const;
     412
    408413    /** Either start with a single tab showin the home url or saved tab(s). Depending on the params. passed to ctor. */
    409414    void initializeTabs();
     
    411416    QUrl currentSource() const;
    412417    void setSource(const QUrl &url, bool fNewTab = false);
    413     /* Return the list of urls of all open tabs as QStringList. */
    414     QStringList tabUrlList();
    415418    void setToolBarVisible(bool fVisible);
    416419    void printCurrent(QPrinter &printer);
     
    419422    int fontPointSize() const;
    420423    void setFontScaleWidgetVisible(bool fToggled);
     424    void switchToTab(int iIndex);
    421425
    422426protected:
     
    441445    void clearAndDeleteTabs();
    442446    void addNewTab(const QUrl &initialUrl);
     447    /** Check if lists of tab url/title has changed. if so emit a signal. */
     448    void updateTabUrlTitleList();
    443449    const QHelpEngine* m_pHelpEngine;
    444450    UIFontScaleWidget *m_pFontScaleWidget;
     
    448454    bool m_fSwitchToNewTab;
    449455    bool m_fToolBarVisible;
     456    QStringList m_tabTitleList;
    450457};
    451458
     
    14901497}
    14911498
     1499void UIHelpBrowserTabManager::updateTabUrlTitleList()
     1500{
     1501    QList<QPair<QString, int> > newList;
     1502
     1503    QStringList titles = tabTitleList();
     1504
     1505    if (titles == m_tabTitleList)
     1506        return;
     1507
     1508    m_tabTitleList = titles;
     1509
     1510    emit sigTabsListChanged(m_tabTitleList);
     1511}
     1512
    14921513void UIHelpBrowserTabManager::initializeTabs()
    14931514{
     
    15001521        for (int i = 0; i < m_savedUrlList.size(); ++i)
    15011522            addNewTab(m_savedUrlList[i]);
     1523    updateTabUrlTitleList();
    15021524}
    15031525
     
    15211543    else
    15221544        addNewTab(url);
    1523 }
    1524 
    1525 QStringList UIHelpBrowserTabManager::tabUrlList()
     1545
     1546    updateTabUrlTitleList();
     1547}
     1548
     1549QStringList UIHelpBrowserTabManager::tabUrlList() const
    15261550{
    15271551    QStringList list;
     
    15361560}
    15371561
     1562QStringList UIHelpBrowserTabManager::tabTitleList() const
     1563{
     1564    QStringList list;
     1565    for (int i = 0; i < count(); ++i)
     1566    {
     1567        UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(widget(i));
     1568        if (!pTab || !pTab->source().isValid())
     1569            continue;
     1570        list << pTab->documentTitle();
     1571    }
     1572    return list;
     1573}
     1574
     1575
    15381576void UIHelpBrowserTabManager::setToolBarVisible(bool fVisible)
    15391577{
     
    16021640    if (m_pFontScaleWidget)
    16031641        m_pFontScaleWidget->setVisible(fToggled);
     1642}
     1643
     1644void UIHelpBrowserTabManager::switchToTab(int iIndex)
     1645{
     1646    if (iIndex == currentIndex())
     1647        return;
     1648    setCurrentIndex(iIndex);
    16041649}
    16051650
     
    16151660        }
    16161661    }
     1662    updateTabUrlTitleList();
    16171663}
    16181664
     
    16211667    if (url.isValid())
    16221668        addNewTab(url);
     1669    updateTabUrlTitleList();
    16231670}
    16241671
     
    16321679    removeTab(iTabIndex);
    16331680    delete pWidget;
     1681    updateTabUrlTitleList();
    16341682}
    16351683
     
    16641712    }
    16651713    addTab(widgetList[iTabIndex], strTitle);
     1714    updateTabUrlTitleList();
    16661715}
    16671716
     
    17351784    , m_pFileMenu(0)
    17361785    , m_pViewMenu(0)
     1786    , m_pTabsMenu(0)
    17371787    , m_pContentWidget(0)
    17381788    , m_pIndexWidget(0)
     
    17691819    menuList
    17701820        << m_pFileMenu
    1771         << m_pViewMenu;
     1821        << m_pViewMenu
     1822        << m_pTabsMenu;
    17721823    return menuList;
    17731824}
     
    17971848
    17981849    prepareActions();
     1850    prepareMenu();
    17991851    prepareWidgets();
    18001852    prepareSearchWidgets();
    1801     prepareMenu();
    18021853    loadBookmarks();
    18031854    retranslateUi();
     
    18381889
    18391890    connect(m_pFontSizeLargerAction, &QAction::triggered,
    1840             this, &UIHelpBrowserWidget::sltHandleFontSizeactions);
     1891            this, &UIHelpBrowserWidget::sltHandleFontSizeActions);
    18411892    connect(m_pFontSizeSmallerAction, &QAction::triggered,
    1842             this, &UIHelpBrowserWidget::sltHandleFontSizeactions);
     1893            this, &UIHelpBrowserWidget::sltHandleFontSizeActions);
    18431894    connect(m_pFontSizeResetAction, &QAction::triggered,
    1844             this, &UIHelpBrowserWidget::sltHandleFontSizeactions);
     1895            this, &UIHelpBrowserWidget::sltHandleFontSizeActions);
    18451896}
    18461897
     
    18831934    connect(m_pTabManager, &UIHelpBrowserTabManager::sigAddBookmark,
    18841935           this, &UIHelpBrowserWidget::sltAddNewBookmark);
     1936    connect(m_pTabManager, &UIHelpBrowserTabManager::sigTabsListChanged,
     1937           this, &UIHelpBrowserWidget::sltHandleTabListChanged);
     1938    connect(m_pTabManager, &UIHelpBrowserTabManager::currentChanged,
     1939           this, &UIHelpBrowserWidget::sltHandleCurrentTabChanged);
    18851940    connect(m_pHelpEngine, &QHelpEngine::setupFinished,
    18861941            this, &UIHelpBrowserWidget::sltHandleHelpEngineSetupFinished);
     
    19692024    m_pFileMenu = new QMenu(tr("File"), this);
    19702025    m_pViewMenu = new QMenu(tr("View"), this);
    1971     AssertReturnVoid(m_pViewMenu);
     2026    m_pTabsMenu = new QMenu(tr("Tabs"), this);
     2027
     2028    AssertReturnVoid(m_pFileMenu && m_pViewMenu && m_pTabsMenu);
    19722029
    19732030    if (m_pPrintDialogAction)
     
    20122069        ++i;
    20132070        const QString &strTitle = bookmarks[i];
    2014         printf("%s %s\n", qPrintable(url), qPrintable(strTitle));
    20152071        m_pBookmarksWidget->addBookmark(url, strTitle);
    20162072    }
     
    23332389}
    23342390
     2391void UIHelpBrowserWidget::updateTabsMenu(const QStringList &titles)
     2392{
     2393    if (!m_pTabsMenu)
     2394        return;
     2395    m_pTabsMenu->clear();
     2396    for (int i = 0; i < titles.size(); ++i)
     2397    {
     2398        QAction *pAction = m_pTabsMenu->addAction(titles[i]);
     2399        pAction->setData(i);
     2400        connect(pAction, &QAction::triggered, this, &UIHelpBrowserWidget::sltHandleTabChoose);
     2401    }
     2402    if (m_pTabManager)
     2403        sltHandleCurrentTabChanged(m_pTabManager->currentIndex());
     2404}
     2405
    23352406void UIHelpBrowserWidget::sltOpenLinkWithUrl(const QUrl &url)
    23362407{
     
    23392410}
    23402411
    2341 void UIHelpBrowserWidget::sltHandleFontSizeactions()
     2412void UIHelpBrowserWidget::sltHandleFontSizeActions()
    23422413{
    23432414    if (!sender() || !m_pTabManager)
     
    23572428}
    23582429
     2430void UIHelpBrowserWidget::sltHandleTabListChanged(const QStringList &titleList)
     2431{
     2432    updateTabsMenu(titleList);
     2433}
     2434
     2435void UIHelpBrowserWidget::sltHandleTabChoose()
     2436{
     2437    QAction *pAction = qobject_cast<QAction*>(sender());
     2438    if (!pAction)
     2439        return;
     2440    int iIndex = pAction->data().toInt();
     2441    if (m_pTabManager)
     2442        m_pTabManager->switchToTab(iIndex);
     2443}
     2444
     2445void UIHelpBrowserWidget::sltHandleCurrentTabChanged(int iIndex)
     2446{
     2447    Q_UNUSED(iIndex);
     2448    if (!m_pTabsMenu)
     2449        return;
     2450    QList<QAction*> list = m_pTabsMenu->actions();
     2451    if (iIndex >= list.size())
     2452        return;
     2453
     2454    for (int i = 0; i < list.size(); ++i)
     2455    {
     2456        if (i == iIndex)
     2457            list[i]->setIcon(UIIconPool::iconSet(":/help_browser_star_16px.png"));
     2458        else
     2459            list[i]->setIcon(QIcon());
     2460    }
     2461}
     2462
    23592463#include "UIHelpBrowserWidget.moc"
    23602464
  • trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h

    r86958 r86961  
    100100    void sltCopyLink();
    101101    void sltAddNewBookmark(const QUrl &url, const QString &strTitle);
    102     void sltHandleFontSizeactions();
     102    void sltHandleFontSizeActions();
     103    void sltHandleTabListChanged(const QStringList &titleList);
     104    void sltHandleTabChoose();
     105    void sltHandleCurrentTabChanged(int iIndex);
    103106
    104107private:
     
    121124    QUrl contentWidgetUrl(const QModelIndex &itemIndex);
    122125    void openLinkSlotHandler(QObject *pSenderObject, bool fOpenInNewTab);
     126    void updateTabsMenu(const QStringList &titleList);
    123127
    124128    /** @name Event handling stuff.
     
    156160    QMenu               *m_pFileMenu;
    157161    QMenu               *m_pViewMenu;
     162    QMenu               *m_pTabsMenu;
    158163    QHelpContentWidget  *m_pContentWidget;
    159164    QHelpIndexWidget    *m_pIndexWidget;
Note: See TracChangeset for help on using the changeset viewer.

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