88 lines
2.3 KiB
C++
88 lines
2.3 KiB
C++
#include "helpdialog.h"
|
|
#include "ui_helpdialog.h"
|
|
|
|
#include <QFileInfo>
|
|
#include <QHelpEngine>
|
|
#include <QHelpContentWidget>
|
|
#include <QHelpIndexWidget>
|
|
#include <QMessageBox>
|
|
#include <QSettings>
|
|
|
|
void HelpBrowser::setHelpEngine(QHelpEngine *helpEngine)
|
|
{
|
|
mHelpEngine = helpEngine;
|
|
}
|
|
|
|
QVariant HelpBrowser::loadResource(int type, const QUrl &name)
|
|
{
|
|
if (name.scheme() == "qthelp") {
|
|
QString url(name.toString());
|
|
while (url.indexOf("/./") > 0)
|
|
url.remove(url.indexOf("/./"), 2);
|
|
return QVariant(mHelpEngine->fileData(QUrl(url)));
|
|
}
|
|
return QTextBrowser::loadResource(type, name);
|
|
}
|
|
|
|
static QString getHelpFile()
|
|
{
|
|
QSettings settings;
|
|
const QString datadir = settings.value("DATADIR", QString()).toString();
|
|
|
|
QStringList paths;
|
|
paths << (datadir + "/help")
|
|
<< datadir
|
|
<< (QApplication::applicationDirPath() + "/help")
|
|
<< QApplication::applicationDirPath();
|
|
for (QString p: paths) {
|
|
QString filename = p + "/online-help.qhc";
|
|
if (QFileInfo(filename).exists())
|
|
return filename;
|
|
}
|
|
return QString();
|
|
}
|
|
|
|
HelpDialog::HelpDialog(QWidget *parent) :
|
|
QDialog(parent),
|
|
mUi(new Ui::HelpDialog)
|
|
{
|
|
mUi->setupUi(this);
|
|
|
|
QString helpFile = getHelpFile();
|
|
if (helpFile.isEmpty()) {
|
|
const QString msg = tr("Helpfile '%1' was not found").arg("online-help.qhc");
|
|
QMessageBox msgBox(QMessageBox::Warning,
|
|
tr("Cppcheck"),
|
|
msg,
|
|
QMessageBox::Ok,
|
|
this);
|
|
msgBox.exec();
|
|
mHelpEngine = nullptr;
|
|
return;
|
|
}
|
|
|
|
mHelpEngine = new QHelpEngine(helpFile);
|
|
mHelpEngine->setupData();
|
|
|
|
mUi->contents->addWidget(mHelpEngine->contentWidget());
|
|
mUi->index->addWidget(mHelpEngine->indexWidget());
|
|
|
|
mUi->textBrowser->setHelpEngine(mHelpEngine);
|
|
|
|
mUi->textBrowser->setSource(QUrl("qthelp://cppcheck.sourceforge.net/doc/index.html"));
|
|
connect(mHelpEngine->contentWidget(),
|
|
SIGNAL(linkActivated(QUrl)),
|
|
mUi->textBrowser,
|
|
SLOT(setSource(QUrl)));
|
|
|
|
connect(mHelpEngine->indexWidget(),
|
|
SIGNAL(linkActivated(QUrl, QString)),
|
|
mUi->textBrowser,
|
|
SLOT(setSource(QUrl)));
|
|
}
|
|
|
|
HelpDialog::~HelpDialog()
|
|
{
|
|
delete mUi;
|
|
}
|