Files
qt5-legatus-legacy/Lts/Plugins/OnlineHelp/Gui/OnlineHelpViewer/online_help_viewer_dialog.cpp
T
2026-08-13 18:33:10 +02:00

118 lines
3.5 KiB
C++
Executable File

/**
* @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 <ngltranslator/ngltranslator.h>
#include <ngltools/ngltools_filesystem.h>
#include <QWebEngineView>
#include <QWebEngineHistory>
#include <QMenu>
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