/** * @RDE_HEADER@ * Online Help Viewer Dialog * $Id$ * $HeadURL$ * $Author$ * Created by Astrid Müller, SGAS, 2018-04-10 */ #include "online_help_viewer_dialog.h" #include "ui_online_help_viewer_dialog.h" #include #include #include #include #include namespace OnlineHelp { OnlineHelpViewerDialog::OnlineHelpViewerDialog(bool isMain) : LtsWidgets::LtsDialog(nullptr, isMain ? LtsWidgets::ButtonCombination::SeamlessDialog : LtsWidgets::ButtonCombination::CloseOnly, !isMain /* closable if NOT main */) , m_ui(new Ui::OnlineHelpViewerDialog) , m_logger(getLogger("onlineHelp")) { m_ui->setupUi(this); } bool OnlineHelpViewerDialog::init(const QString &fileName) { QString locale; if (NGL::translationLocale() == "de_DE") // grrr.. locale = QStringLiteral("de_DE"); else locale = QStringLiteral("en_GB"); QString helpDir = NGL::directory(NGL::FileType::ConfigFile, QStringLiteral("help")); if (fileName.isEmpty()) helpDir += (locale + QStringLiteral("/index.html")); else // filename given helpDir += (locale + QStringLiteral("/%1.html").arg(fileName)); INFO_LOG(m_logger) << "helpDir=" << helpDir; #ifndef LTS_DEBUG m_ui->lblPage->setVisible(false); #endif connect(m_ui->wevOnlineHelpViewer, &QWebEngineView::loadFinished, this, [=](bool ok) { Q_UNUSED(ok); QString url = m_ui->wevOnlineHelpViewer->page()->url().toString(); m_ui->lblPage->setText(url); }); m_ui->wevOnlineHelpViewer->load(QUrl(QUrl::fromLocalFile(helpDir))); m_ui->wevOnlineHelpViewer->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_ui->wevOnlineHelpViewer, &QWebEngineView::customContextMenuRequested, this, &OnlineHelpViewerDialog::onContextMenuRequested); return true; } OnlineHelpViewerDialog::~OnlineHelpViewerDialog() { m_ui->wevOnlineHelpViewer->setParent(nullptr); m_ui->wevOnlineHelpViewer->hide(); m_ui->wevOnlineHelpViewer->deleteLater(); delete m_ui; } void OnlineHelpViewerDialog::retranslate() { translate(m_ui, tr("Online Help Viewer")); } void OnlineHelpViewerDialog::onContextMenuRequested(const QPoint &position) { QMenu menu(m_ui->wevOnlineHelpViewer); QAction *action = menu.addAction(tr("Next Page"), this, &OnlineHelpViewerDialog::onContextdMenuForwardRequested); action->setEnabled(m_ui->wevOnlineHelpViewer->page()->history()->canGoForward()); action = menu.addAction(tr("Last Page"), this, &OnlineHelpViewerDialog::onContextdMenuBackRequested); bool setEnable = (m_ui->wevOnlineHelpViewer->page()->history()->canGoBack()) && (m_ui->wevOnlineHelpViewer->page()->history()->backItems(2).size() > 1); // *) // *) Die erste HistorySeite ist nach dem Aufschalten des Widgets immer leer. // Hiermit wird verhindert dass man in diese erste leere Seite zurueckgehen kann. action->setEnabled(setEnable); menu.addAction(tr("Reload Page"), this, &OnlineHelpViewerDialog::onContextdMenuReloadRequested); menu.exec(m_ui->wevOnlineHelpViewer->mapToGlobal(position)); } void OnlineHelpViewerDialog::onContextdMenuForwardRequested() { m_ui->wevOnlineHelpViewer->page()->triggerAction(QWebEnginePage::Forward); } void OnlineHelpViewerDialog::onContextdMenuBackRequested() { m_ui->wevOnlineHelpViewer->page()->triggerAction(QWebEnginePage::Back); } void OnlineHelpViewerDialog::onContextdMenuReloadRequested() { m_ui->wevOnlineHelpViewer->page()->triggerAction(QWebEnginePage::Reload); } } // namespace OnlineHelp