diff options
-rw-r--r-- | examples/assistant/simpletextviewer/assistant.cpp | 43 | ||||
-rw-r--r-- | examples/assistant/simpletextviewer/assistant.h | 1 | ||||
-rw-r--r-- | examples/assistant/simpletextviewer/simpletextviewer.pro | 2 |
3 files changed, 38 insertions, 8 deletions
diff --git a/examples/assistant/simpletextviewer/assistant.cpp b/examples/assistant/simpletextviewer/assistant.cpp index 58103c14a..da29cea9e 100644 --- a/examples/assistant/simpletextviewer/assistant.cpp +++ b/examples/assistant/simpletextviewer/assistant.cpp @@ -50,11 +50,13 @@ #include "assistant.h" +#include <QApplication> #include <QByteArray> #include <QDir> #include <QLibraryInfo> #include <QMessageBox> #include <QProcess> +#include <QStandardPaths> Assistant::Assistant() : proc(0) @@ -85,6 +87,23 @@ void Assistant::showDocumentation(const QString &page) } //! [1] +QString documentationDirectory() +{ + QStringList paths; +#ifdef SRCDIR + paths.append(QLatin1String(SRCDIR)); +#endif + paths.append(QLibraryInfo::location(QLibraryInfo::ExamplesPath)); + paths.append(QCoreApplication::applicationDirPath()); + paths.append(QStandardPaths::standardLocations(QStandardPaths::AppDataLocation)); + for (const auto &dir : qAsConst(paths)) { + const QString path = dir + QLatin1String("/documentation"); + if (QFileInfo::exists(path)) + return path; + } + return QString(); +} + //! [2] bool Assistant::startAssistant() { @@ -99,21 +118,29 @@ bool Assistant::startAssistant() app += QLatin1String("Assistant.app/Contents/MacOS/Assistant"); #endif - QStringList args; - args << QLatin1String("-collectionFile") - << QLibraryInfo::location(QLibraryInfo::ExamplesPath) - + QLatin1String("/assistant/simpletextviewer/documentation/simpletextviewer.qhc") - << QLatin1String("-enableRemoteControl"); + const QString collectionDirectory = documentationDirectory(); + if (collectionDirectory.isEmpty()) { + showError(tr("The documentation directory cannot be found")); + return false; + } + + QStringList args{QLatin1String("-collectionFile"), + collectionDirectory + QLatin1String("/simpletextviewer.qhc"), + QLatin1String("-enableRemoteControl")}; proc->start(app, args); if (!proc->waitForStarted()) { - QMessageBox::critical(nullptr, - tr("Simple Text Viewer"), - tr("Unable to launch Qt Assistant (%1)").arg(app)); + showError(tr("Unable to launch Qt Assistant (%1): %2").arg(app, proc->errorString())); return false; } } return true; } //! [2] + +void Assistant::showError(const QString &message) +{ + QMessageBox::critical(QApplication::activeWindow(), + tr("Simple Text Viewer"), message); +} diff --git a/examples/assistant/simpletextviewer/assistant.h b/examples/assistant/simpletextviewer/assistant.h index 1ea7dd78f..c9b8f382c 100644 --- a/examples/assistant/simpletextviewer/assistant.h +++ b/examples/assistant/simpletextviewer/assistant.h @@ -69,6 +69,7 @@ public: private: bool startAssistant(); + void showError(const QString &message); QProcess *proc; }; diff --git a/examples/assistant/simpletextviewer/simpletextviewer.pro b/examples/assistant/simpletextviewer/simpletextviewer.pro index 314e75b36..b0de7f4e7 100644 --- a/examples/assistant/simpletextviewer/simpletextviewer.pro +++ b/examples/assistant/simpletextviewer/simpletextviewer.pro @@ -8,6 +8,8 @@ SOURCES = main.cpp \ assistant.cpp \ textedit.cpp +DEFINES += SRCDIR=\\\"$$PWD/\\\" + QT += widgets target.path = $$[QT_INSTALL_EXAMPLES]/assistant/simpletextviewer |