diff ui/mainwindow.cpp @ 940:7c89c5dc2200

(issue89) Add ui to open help in browser
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 22 Aug 2014 19:56:04 +0200
parents 57371f2e8dae
children 879a634d0a40
line wrap: on
line diff
--- a/ui/mainwindow.cpp	Fri Aug 22 19:55:08 2014 +0200
+++ b/ui/mainwindow.cpp	Fri Aug 22 19:56:04 2014 +0200
@@ -29,6 +29,7 @@
 #include <QButtonGroup>
 #include <QToolButton>
 #include <QStandardPaths>
+#include <QDesktopServices>
 
 #include "certificatelist.h"
 #include "downloader.h"
@@ -81,6 +82,14 @@
 # endif
 #endif
 
+/* Help installation path the path relative to the installation directory where
+ * the help is placed.*/
+#ifdef WIN32
+#define HELP_PATH "/doc/index.html"
+#else
+#define HELP_PATH "/../share/doc/trustbridge/index.html"
+#endif
+
 MainWindow::MainWindow(bool trayMode):
     mTrayMode(trayMode)
 {
@@ -514,6 +523,14 @@
     infoCenterLayout->insertSpacing(2, 10);
     infoCenterLayout->insertSpacing(4, 10);
     infoCenterLayout->insertSpacing(6, 10);
+
+    QHBoxLayout *helpButtonLayout = new QHBoxLayout();
+    QPushButton *helpButton = new QPushButton(tr("Show Help"));
+    connect(helpButton, SIGNAL(clicked()), this, SLOT(showHelp()));
+    helpButtonLayout->addWidget(helpButton);
+    helpButtonLayout->addStretch();
+    infoCenterLayout->addLayout(helpButtonLayout);
+
     infoCenterLayout->insertStretch(8, 10);
 
     infoPanelLayout->addLayout(infoHeaderLayout);
@@ -1375,3 +1392,23 @@
         emit changesChanged(QString("%1").arg(cnt));
     }
 }
+
+void MainWindow::showHelp()
+{
+    char *inst_dir = get_install_dir();
+    if (!inst_dir) {
+        qDebug() << "Failed to find install dir";
+        return;
+    }
+    QString helpPath = QString::fromUtf8(inst_dir);
+    helpPath += HELP_PATH;
+    QFileInfo fiHelp(helpPath);
+    qDebug() << "Opening help: " << fiHelp.absoluteFilePath();
+    if (!fiHelp.exists()) {
+        QMessageBox::warning(this, tr("Error!"), tr ("Failed to find the manual"));
+        return;
+    }
+    QDesktopServices::openUrl(QUrl(fiHelp.absoluteFilePath()));
+    free (inst_dir);
+    return;
+}

http://wald.intevation.org/projects/trustbridge/