118 lines
3.5 KiB
C++
Executable File
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
|