void HelpQuery::returnPressed() { QHelpEngine* he = mscore->helpEngine(); if (!he) return; QMap<QString,QUrl>list = he->linksForIdentifier(entry->text().toLower()); if (!list.isEmpty()) { mscore->showHelp(list.begin().value()); } entry->clear(); }
IndexWindow::IndexWindow() : m_searchLineEdit(0) , m_indexWidget(0) { QVBoxLayout *layout = new QVBoxLayout(this); m_searchLineEdit = new Utils::FilterLineEdit(); m_searchLineEdit->setPlaceholderText(QString()); setFocusProxy(m_searchLineEdit); connect(m_searchLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterIndices(QString))); m_searchLineEdit->installEventFilter(this); QLabel *l = new QLabel(tr("&Look for:")); l->setBuddy(m_searchLineEdit); layout->addWidget(l); layout->setMargin(0); layout->setSpacing(0); Utils::StyledBar *toolbar = new Utils::StyledBar(this); toolbar->setSingleRow(false); QLayout *tbLayout = new QHBoxLayout(); tbLayout->setSpacing(6); tbLayout->setMargin(4); tbLayout->addWidget(l); tbLayout->addWidget(m_searchLineEdit); toolbar->setLayout(tbLayout); layout->addWidget(toolbar); QHelpEngine *engine = &LocalHelpManager::helpEngine(); m_indexWidget = engine->indexWidget(); m_indexWidget->installEventFilter(this); connect(engine->indexModel(), SIGNAL(indexCreationStarted()), this, SLOT(disableSearchLineEdit())); connect(engine->indexModel(), SIGNAL(indexCreated()), this, SLOT(enableSearchLineEdit())); connect(m_indexWidget, SIGNAL(linkActivated(QUrl,QString)), this, SIGNAL(linkActivated(QUrl))); connect(m_indexWidget, SIGNAL(linksActivated(QMap<QString,QUrl>,QString)), this, SIGNAL(linksActivated(QMap<QString,QUrl>,QString))); connect(m_searchLineEdit, SIGNAL(returnPressed()), m_indexWidget, SLOT(activateCurrentItem())); m_indexWidget->setFrameStyle(QFrame::NoFrame); layout->addWidget(m_indexWidget); m_indexWidget->viewport()->installEventFilter(this); }
HelpWindow::HelpWindow(QWidget *parent) : QDockWidget (parent) { setMinimumWidth (MIN_WIDTH); setMinimumHeight (MIN_HEIGHT); QHelpEngine *helpEngine = new QHelpEngine (helpPath()); helpEngine->setupData(); QTabWidget *tabs = new QTabWidget; tabs->addTab (helpEngine->contentWidget(), tr ("Contents")); tabs->addTab (helpEngine->indexWidget(), tr ("Index")); HelpBrowser *browser = new HelpBrowser (helpEngine); // URL is constructed from <namespace>, <virtualFolder> and <file> in engauge.qhp browser->setSource (QUrl ("qthelp://engaugedigitizer.net/doc/index.html")); connect (helpEngine->contentWidget (), SIGNAL (linkActivated (QUrl)), browser, SLOT (setSource (QUrl))); connect (helpEngine->indexWidget (), SIGNAL (linkActivated (QUrl, QString)), browser, SLOT (setSource (QUrl))); QSplitter *splitter = new QSplitter (Qt::Horizontal); splitter->insertWidget (0, tabs); splitter->insertWidget (1, browser); setWidget (splitter); }
QNetworkReply *HelpNetworkAccessManager::createRequest(Operation /*op*/, const QNetworkRequest &request, QIODevice* /*outgoingData*/) { const QUrl& url = request.url(); QString mimeType = url.toString(); if (mimeType.endsWith(QLatin1String(".svg")) || mimeType.endsWith(QLatin1String(".svgz"))) { mimeType = QLatin1String("image/svg+xml"); } else if (mimeType.endsWith(QLatin1String(".css"))) { mimeType = QLatin1String("text/css"); } else if (mimeType.endsWith(QLatin1String(".js"))) { mimeType = QLatin1String("text/javascript"); } else { mimeType = QLatin1String("text/html"); } const QByteArray &data = helpEngine->findFile(url).isValid() ? helpEngine->fileData(url) : PageNotFoundMessage.arg(url.toString()).toUtf8(); return new HelpNetworkReply(request, data, mimeType); }
bool HelpPage::acceptNavigationRequest(QWebFrame *, const QNetworkRequest &request, QWebPage::NavigationType type) { const QUrl &url = request.url(); const bool closeNewTab = closeNewTabIfNeeded; closeNewTabIfNeeded = false; if (isLocalUrl(url)) { const QString& path = url.path(); if (path.endsWith(QLatin1String(".pdf"))) { const int lastDash = path.lastIndexOf(QChar('/')); QString fileName = QDir::tempPath() + QDir::separator(); if (lastDash < 0) fileName += path; else fileName += path.mid(lastDash + 1, path.length()); QFile tmpFile(QDir::cleanPath(fileName)); if (tmpFile.open(QIODevice::ReadWrite)) { tmpFile.write(helpEngine->fileData(url)); tmpFile.close(); } QDesktopServices::openUrl(QUrl(tmpFile.fileName())); if (closeNewTab) QMetaObject::invokeMethod(CentralWidget::instance(), "closeTab"); return false; } if (type == QWebPage::NavigationTypeLinkClicked && (m_keyboardModifiers & Qt::ControlModifier || m_pressedButtons == Qt::MidButton)) { HelpViewer* viewer = centralWidget->newEmptyTab(); if (viewer) CentralWidget::instance()->setSource(url); m_pressedButtons = Qt::NoButton; m_keyboardModifiers = Qt::NoModifier; return false; } return true; } QDesktopServices::openUrl(url); return false; }
QNetworkReply *HelpNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData) { const QString& scheme = request.url().scheme(); if (scheme == QLatin1String("qthelp") || scheme == QLatin1String("about")) { const QUrl& url = request.url(); QString mimeType = url.toString(); if (mimeType.endsWith(QLatin1String(".svg")) || mimeType.endsWith(QLatin1String(".svgz"))) { mimeType = QLatin1String("image/svg+xml"); } else if (mimeType.endsWith(QLatin1String(".css"))) { mimeType = QLatin1String("text/css"); } else if (mimeType.endsWith(QLatin1String(".js"))) { mimeType = QLatin1String("text/javascript"); } else { mimeType = QLatin1String("text/html"); } return new HelpNetworkReply(request, helpEngine->fileData(url), mimeType); } return QNetworkAccessManager::createRequest(op, request, outgoingData); }
bool HelpPage::acceptNavigationRequest(QWebFrame *, const QNetworkRequest &request, QWebPage::NavigationType) { const QUrl &url = request.url(); if (isLocalUrl(url)) { if (url.path().endsWith(QLatin1String("pdf"))) { QString fileName = url.toString(); fileName = QDir::tempPath() + QDir::separator() + fileName.right (fileName.length() - fileName.lastIndexOf(QChar('/'))); QFile tmpFile(QDir::cleanPath(fileName)); if (tmpFile.open(QIODevice::ReadWrite)) { tmpFile.write(helpEngine->fileData(url)); tmpFile.close(); } QDesktopServices::openUrl(QUrl(tmpFile.fileName())); return false; } return true; } QDesktopServices::openUrl(url); return false; }