summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/assistant/simpletextviewer/assistant.cpp43
-rw-r--r--examples/assistant/simpletextviewer/assistant.h1
-rw-r--r--examples/assistant/simpletextviewer/simpletextviewer.pro2
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