diff multichoicedialog.cpp @ 341:1fc2e0269ae0 help

Add Help button to multi-choice dialog
author Chris Cannam
date Tue, 15 Mar 2011 12:36:26 +0000
parents 8fd71f570884
children
line wrap: on
line diff
--- a/multichoicedialog.cpp	Tue Mar 15 12:00:31 2011 +0000
+++ b/multichoicedialog.cpp	Tue Mar 15 12:36:26 2011 +0000
@@ -27,10 +27,13 @@
 #include <QFont>
 #include <QDir>
 #include <QFileDialog>
+#include <QDesktopServices>
 #include <QUrl>
 
-MultiChoiceDialog::MultiChoiceDialog(QString title, QString heading, QWidget *parent) :
-    QDialog(parent)
+MultiChoiceDialog::MultiChoiceDialog(QString title, QString heading,
+                                     QString helpUrl, QWidget *parent) :
+    QDialog(parent),
+    m_helpUrl(helpUrl)
 {
     setModal(true);
     setWindowTitle(title);
@@ -77,11 +80,21 @@
     outer->addWidget(m_browseButton, 4, 2);
     connect(m_browseButton, SIGNAL(clicked()), this, SLOT(browse()));
 
-    QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok |
-                                                  QDialogButtonBox::Cancel);
+    outer->addItem(new QSpacerItem(2, 12), 5, 0);
+
+    QDialogButtonBox *bbox;
+    if (helpUrl != "") {
+        bbox = new QDialogButtonBox(QDialogButtonBox::Help |
+                                    QDialogButtonBox::Ok |
+                                    QDialogButtonBox::Cancel);
+    } else {
+        bbox = new QDialogButtonBox(QDialogButtonBox::Ok |
+                                    QDialogButtonBox::Cancel);
+    }        
     connect(bbox, SIGNAL(accepted()), this, SLOT(accept()));
     connect(bbox, SIGNAL(rejected()), this, SLOT(reject()));
-    outer->addWidget(bbox, 5, 0, 1, 3);
+    connect(bbox, SIGNAL(helpRequested()), this, SLOT(helpRequested()));
+    outer->addWidget(bbox, 6, 0, 1, 3);
 
     m_okButton = bbox->button(QDialogButtonBox::Ok);
     updateOkButton();
@@ -89,6 +102,12 @@
     setMinimumWidth(480);
 }
 
+void
+MultiChoiceDialog::helpRequested()
+{
+    QDesktopServices::openUrl(m_helpUrl);
+}
+
 QString
 MultiChoiceDialog::getCurrentChoice()
 {