summaryrefslogtreecommitdiff
path: root/src/plugins/help/helpviewer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/help/helpviewer.cpp')
-rw-r--r--src/plugins/help/helpviewer.cpp26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/plugins/help/helpviewer.cpp b/src/plugins/help/helpviewer.cpp
index 6877cb3d98..856c9080af 100644
--- a/src/plugins/help/helpviewer.cpp
+++ b/src/plugins/help/helpviewer.cpp
@@ -34,13 +34,18 @@
#include "helpconstants.h"
#include "localhelpmanager.h"
+#include <coreplugin/icore.h>
+
+#include <utils/fileutils.h>
+
#include <QtCore/QFileInfo>
#include <QtCore/QStringBuilder>
-#include <QtCore/QTemporaryFile>
+#include <QtCore/QDir>
#include <QtCore/QUrl>
#include <QtGui/QApplication>
#include <QtGui/QDesktopServices>
+#include <QtGui/QMainWindow>
#include <QtGui/QMouseEvent>
#include <QtHelp/QHelpEngine>
@@ -131,19 +136,12 @@ bool HelpViewer::launchWithExternalApp(const QUrl &url)
const QString& path = resolvedUrl.path();
if (!canOpenPage(path)) {
- QTemporaryFile tmpTmpFile;
- if (!tmpTmpFile.open())
- return false;
-
- const QString &extension = QFileInfo(path).completeSuffix();
- QFile actualTmpFile(tmpTmpFile.fileName() % QLatin1String(".")
- % extension);
- if (!actualTmpFile.open(QIODevice::ReadWrite | QIODevice::Truncate))
- return false;
-
- actualTmpFile.write(helpEngine.fileData(resolvedUrl));
- actualTmpFile.close();
- return QDesktopServices::openUrl(QUrl(actualTmpFile.fileName()));
+ Utils::TempFileSaver saver(QDir::tempPath()
+ + QLatin1String("/qtchelp_XXXXXX.") + QFileInfo(path).completeSuffix());
+ if (!saver.hasError())
+ saver.write(helpEngine.fileData(resolvedUrl));
+ if (saver.finalize(Core::ICore::instance()->mainWindow()))
+ return QDesktopServices::openUrl(QUrl(saver.fileName()));
}
}
return false;