- Timestamp:
- Jan 14, 2025 3:36:23 PM (4 weeks ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp
r107708 r107759 191 191 void sigMouseOverImage(const QString &strImageName); 192 192 void sigZoomRequest(UIHelpViewer::ZoomOperation enmZoomOperation); 193 void sigGoHome(); 193 194 194 195 public: 195 196 196 UIHelpBrowserTab(const QHelpEngine *pHelpEngine, const QUrl &homeUrl, 197 const QUrl &initialUrl, QWidget *pParent = 0); 197 UIHelpBrowserTab(const QHelpEngine *pHelpEngine, const QUrl &initialUrl, QWidget *pParent = 0); 198 198 199 199 QUrl source() const; … … 213 213 214 214 void sltFindInPageAction(bool fToggled); 215 void sltHomeAction();216 215 void sltForwardAction(); 217 216 void sltBackwardAction(); … … 246 245 UIHelpViewer *m_pContentViewer; 247 246 const QHelpEngine* m_pHelpEngine; 248 QUrl m_homeUrl;249 247 }; 250 248 … … 270 268 void sigHistoryChanged(bool fBackwardAvailable, bool fForwardAvailable); 271 269 void sigMouseOverImage(const QString &strImageName); 270 void sigGoHome(); 272 271 273 272 public: 274 273 275 UIHelpBrowserTabManager(const QHelpEngine *pHelpEngine, const QUrl &homeUrl, 276 const QStringList &urlList, QWidget *pParent = 0); 274 UIHelpBrowserTabManager(const QHelpEngine *pHelpEngine, const QStringList &urlList, QWidget *pParent = 0); 277 275 /* Returns the list of urls of all open tabs as QStringList. */ 278 276 QStringList tabUrlList() const; … … 301 299 void sltCloseCurrentTab(); 302 300 void sltCloseOtherTabs(); 303 void sltHomeAction();304 301 void sltAddBookmarkAction(); 305 302 void sltForwardAction(); … … 332 329 333 330 const QHelpEngine* m_pHelpEngine; 334 QUrl m_homeUrl;335 331 QStringList m_savedUrlList; 336 332 /** Immediately switch the newly created tab. Otherwise open the tab in background. */ … … 545 541 *********************************************************************************************************************************/ 546 542 547 UIHelpBrowserTab::UIHelpBrowserTab(const QHelpEngine *pHelpEngine, const QUrl &homeUrl, 548 const QUrl &initialUrl, QWidget *pParent /* = 0 */) 543 UIHelpBrowserTab::UIHelpBrowserTab(const QHelpEngine *pHelpEngine, const QUrl &initialUrl, QWidget *pParent /* = 0 */) 549 544 : QWidget(pParent) 550 545 , m_pHomeAction(0) … … 559 554 , m_pContentViewer(0) 560 555 , m_pHelpEngine(pHelpEngine) 561 , m_homeUrl(homeUrl)562 556 { 563 557 if (initialUrl.isValid()) 564 558 prepare(initialUrl); 565 559 else 566 prepare( m_homeUrl);560 prepare(QUrl()); 567 561 } 568 562 … … 576 570 void UIHelpBrowserTab::setSource(const QUrl &url) 577 571 { 572 if (url == source()) 573 return; 578 574 if (m_pContentViewer) 579 {580 m_pContentViewer->blockSignals(true);581 575 m_pContentViewer->setSource(url); 582 m_pContentViewer->blockSignals(false);583 /* emit historyChanged signal explicitly since we have blocked the signals: */584 m_pContentViewer->emitHistoryChangedSignal();585 }586 576 } 587 577 … … 685 675 this, &UIHelpBrowserTab::sltForwardAction); 686 676 connect(m_pContentViewer, &UIHelpViewer::sigGoHome, 687 this, &UIHelpBrowserTab::s ltHomeAction);677 this, &UIHelpBrowserTab::sigGoHome); 688 678 connect(m_pContentViewer, &UIHelpViewer::sigAddBookmark, 689 679 this, &UIHelpBrowserTab::sltAddBookmarkAction); … … 699 689 this, &UIHelpBrowserTab::sigZoomRequest); 700 690 701 m_pContentViewer->setSource(initialUrl); 691 if (initialUrl.isValid()) 692 m_pContentViewer->setSource(initialUrl); 693 else 694 emit sigGoHome(); 702 695 } 703 696 … … 728 721 m_pFindInPageAction->setCheckable(true); 729 722 730 connect(m_pHomeAction, &QAction::triggered, this, &UIHelpBrowserTab::s ltHomeAction);723 connect(m_pHomeAction, &QAction::triggered, this, &UIHelpBrowserTab::sigGoHome); 731 724 connect(m_pAddBookmarkAction, &QAction::triggered, this, &UIHelpBrowserTab::sltAddBookmarkAction); 732 725 connect(m_pForwardAction, &QAction::triggered, this, &UIHelpBrowserTab::sltForwardAction); … … 776 769 } 777 770 778 void UIHelpBrowserTab::sltHomeAction()779 {780 if (!m_pContentViewer)781 return;782 m_pContentViewer->setSource(m_homeUrl);783 }784 785 771 void UIHelpBrowserTab::sltForwardAction() 786 772 { … … 887 873 *********************************************************************************************************************************/ 888 874 889 UIHelpBrowserTabManager::UIHelpBrowserTabManager(const QHelpEngine *pHelpEngine, const QUrl &homeUrl,875 UIHelpBrowserTabManager::UIHelpBrowserTabManager(const QHelpEngine *pHelpEngine, 890 876 const QStringList &urlList, QWidget *pParent /* = 0 */) 891 877 : QITabWidget(pParent) 892 878 , m_pHelpEngine(pHelpEngine) 893 , m_homeUrl(homeUrl)894 879 , m_savedUrlList(urlList) 895 880 , m_fSwitchToNewTab(true) … … 913 898 } 914 899 #endif 915 UIHelpBrowserTab *pTabWidget = new UIHelpBrowserTab(m_pHelpEngine, m_homeUrl,initialUrl);900 UIHelpBrowserTab *pTabWidget = new UIHelpBrowserTab(m_pHelpEngine, initialUrl); 916 901 AssertReturnVoid(pTabWidget); 917 902 pTabWidget->setToolBarVisible(m_fToolBarVisible); … … 937 922 connect(pTabWidget, &UIHelpBrowserTab::sigZoomRequest, 938 923 this, &UIHelpBrowserTabManager::sltHandleZoomRequest); 924 connect(pTabWidget, &UIHelpBrowserTab::sigGoHome, 925 this, &UIHelpBrowserTabManager::sigGoHome); 939 926 940 927 pTabWidget->setZoomPercentage(zoomPercentage()); … … 1226 1213 1227 1214 menu.exec(tabBar()->mapToGlobal(pos)); 1228 }1229 1230 void UIHelpBrowserTabManager::sltHomeAction()1231 {1232 UIHelpBrowserTab *pTab = qobject_cast<UIHelpBrowserTab*>(currentWidget());1233 if (pTab)1234 pTab->sltHomeAction();1235 1215 } 1236 1216 … … 1505 1485 m_pHomeAction = new QAction(this); 1506 1486 connect(m_pHomeAction, &QAction::triggered, 1507 this, &UIHelpBrowserWidget::s igGoHome);1487 this, &UIHelpBrowserWidget::sltGoHome); 1508 1488 1509 1489 m_pReloadPageAction = new QAction(this); … … 1526 1506 if (m_pTabManager) 1527 1507 { 1528 connect(m_pHomeAction, &QAction::triggered, m_pTabManager, &UIHelpBrowserTabManager::s ltHomeAction);1508 connect(m_pHomeAction, &QAction::triggered, m_pTabManager, &UIHelpBrowserTabManager::sigGoHome); 1529 1509 connect(m_pAddBookmarkAction, &QAction::triggered, m_pTabManager, &UIHelpBrowserTabManager::sltAddBookmarkAction); 1530 1510 connect(m_pForwardAction, &QAction::triggered, m_pTabManager, &UIHelpBrowserTabManager::sltForwardAction); … … 1542 1522 m_pHelpEngine = new QHelpEngine(m_strHelpFilePath, this); 1543 1523 m_pBookmarksWidget = new UIBookmarksListContainer(this); 1524 1525 m_pContentWidget = m_pHelpEngine->contentWidget(); 1526 m_pIndexWidget = m_pHelpEngine->indexWidget(); 1527 m_pContentModel = m_pHelpEngine->contentModel(); 1528 AssertReturnVoid(m_pContentWidget && m_pIndexWidget && m_pContentModel); 1529 1544 1530 m_pTabWidget = new QITabWidget; 1545 m_pTabManager = new UIHelpBrowserTabManager(m_pHelpEngine, findIndexHtml(),loadSavedUrlList());1531 m_pTabManager = new UIHelpBrowserTabManager(m_pHelpEngine, loadSavedUrlList()); 1546 1532 m_pTabManager->setHelpFileList(m_pHelpEngine->files(m_pHelpEngine->namespaceName(m_strHelpFilePath), QStringList())); 1547 1548 1533 AssertReturnVoid(m_pTabWidget && 1549 1534 m_pHelpEngine && … … 1551 1536 m_pTabManager); 1552 1537 1553 m_pContentWidget = m_pHelpEngine->contentWidget();1554 m_pIndexWidget = m_pHelpEngine->indexWidget();1555 m_pContentModel = m_pHelpEngine->contentModel();1556 1557 AssertReturnVoid(m_pContentWidget && m_pIndexWidget && m_pContentModel);1558 1538 m_pSplitter->addWidget(m_pTabWidget); 1559 1539 m_pContentWidget->setContextMenuPolicy(Qt::CustomContextMenu); … … 1592 1572 connect(m_pTabManager, &UIHelpBrowserTabManager::sigMouseOverImage, 1593 1573 this, &UIHelpBrowserWidget::sltMouseOverImage); 1574 connect(m_pTabManager, &UIHelpBrowserTabManager::sigGoHome, 1575 this, &UIHelpBrowserWidget::sltGoHome); 1576 1594 1577 1595 1578 connect(m_pHelpEngine, &QHelpEngine::setupFinished, … … 1752 1735 QUrl UIHelpBrowserWidget::findIndexHtml() const 1753 1736 { 1737 if (m_pHelpEngine && m_pHelpEngine->contentModel()) 1738 { 1739 QModelIndex modelIndex = m_pHelpEngine->contentModel()->index(0, 0); 1740 if (modelIndex.isValid()) 1741 { 1742 QUrl url = contentWidgetUrl(modelIndex); 1743 if (url.isValid()) 1744 return url; 1745 } 1746 } 1754 1747 QList<QUrl> files = m_pHelpEngine->files(m_pHelpEngine->namespaceName(m_strHelpFilePath), QStringList()); 1755 1748 int iIndex = -1; 1756 1749 for (int i = 0; i < files.size(); ++i) 1757 1750 { 1758 if (QString::compare(files[i].fileName(), "preface.html", Qt::CaseInsensitive) == 0) 1751 if (files[i].toString().contains(".html", Qt::CaseInsensitive) || 1752 files[i].toString().contains(".htm", Qt::CaseInsensitive)) 1759 1753 { 1760 1754 iIndex = i; … … 1762 1756 } 1763 1757 } 1764 if (iIndex == -1) 1765 { 1766 /* If index html/htm could not be found try to find a html file at least: */ 1767 for (int i = 0; i < files.size(); ++i) 1768 { 1769 if (files[i].toString().contains(".html", Qt::CaseInsensitive) || 1770 files[i].toString().contains(".htm", Qt::CaseInsensitive)) 1771 { 1772 iIndex = i; 1773 break; 1774 } 1775 } 1776 } 1758 1777 1759 if (iIndex != -1 && files.size() > iIndex) 1778 1760 return files[iIndex]; … … 1781 1763 } 1782 1764 1783 QUrl UIHelpBrowserWidget::contentWidgetUrl(const QModelIndex &itemIndex) 1765 QUrl UIHelpBrowserWidget::contentWidgetUrl(const QModelIndex &itemIndex) const 1784 1766 { 1785 1767 QHelpContentModel *pContentModel = … … 1915 1897 } 1916 1898 1899 void UIHelpBrowserWidget::sltGoHome() 1900 { 1901 QUrl homeUrl = findIndexHtml(); 1902 if (homeUrl.isValid() && m_pTabManager) 1903 m_pTabManager->setSource(homeUrl); 1904 } 1905 1917 1906 void UIHelpBrowserWidget::sltHistoryChanged(bool fBackwardAvailable, bool fForwardAvailable) 1918 1907 { … … 1998 1987 } 1999 1988 1989 QModelIndex findItemByUrl(QHelpContentModel* model, const QModelIndex& parent, const QUrl& targetUrl) 1990 { 1991 for (int row = 0; row < model->rowCount(parent); ++row) 1992 { 1993 QModelIndex index = model->index(row, 0, parent); 1994 if (!index.isValid()) 1995 continue; 1996 QHelpContentItem* item = model->contentItemAt(index); 1997 if (!item) 1998 continue; 1999 if (item && item->url() == targetUrl) 2000 return index; 2001 2002 QModelIndex childIndex = findItemByUrl(model, index, targetUrl); 2003 if (childIndex.isValid()) 2004 return childIndex; 2005 } 2006 2007 return QModelIndex(); 2008 } 2009 2000 2010 void UIHelpBrowserWidget::sltViewerSourceChange(const QUrl &source) 2001 2011 { 2002 2012 if (m_fModelContentCreated && m_pContentWidget && source.isValid() && m_pContentModel) 2003 2013 { 2004 QModelIndex index = m_pContentWidget->indexOf(source); 2005 QItemSelectionModel *pSelectionModel = m_pContentWidget->selectionModel(); 2006 if (pSelectionModel && index.isValid()) 2014 QModelIndex index = findItemByUrl(m_pContentModel, QModelIndex(), source); 2015 if (index.isValid()) 2007 2016 { 2008 2017 m_pContentWidget->blockSignals(true); 2009 pSelectionModel->select(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);2018 m_pContentWidget->setCurrentIndex(index); 2010 2019 m_pContentWidget->scrollTo(index, QAbstractItemView::EnsureVisible); 2011 2020 m_pContentWidget->expand(index); -
trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h
r107001 r107759 67 67 void sigGoBackward(); 68 68 void sigGoForward(); 69 void sigGoHome();70 69 void sigReloadPage(); 71 70 void sigAddBookmark(); … … 122 121 void sltRetranslateUI(); 123 122 void sltCommitDataSignalReceived(); 123 void sltGoHome(); 124 124 125 125 private: … … 142 142 QUrl findIndexHtml() const; 143 143 /* Returns the url of the item with @p itemIndex. */ 144 QUrl contentWidgetUrl(const QModelIndex &itemIndex) ;144 QUrl contentWidgetUrl(const QModelIndex &itemIndex) const; 145 145 void openLinkSlotHandler(QObject *pSenderObject, bool fOpenInNewTab); 146 146 void updateTabsMenu(const QStringList &titleList);
Note:
See TracChangeset
for help on using the changeset viewer.