diff --git a/demos/demoLauncher/graphicsbutton.cpp b/demos/demoLauncher/graphicsbutton.cpp index daa23f0..3c8e820 100644 --- a/demos/demoLauncher/graphicsbutton.cpp +++ b/demos/demoLauncher/graphicsbutton.cpp @@ -7,16 +7,23 @@ GraphicsButton::GraphicsButton(const QString& path, QDir appFolder, const QStri QWidget(parent), m_path(path), m_appFolder(appFolder), - m_app(app) + m_app(app), + m_demoApp(0) { m_pixmap = QPixmap(path); } +GraphicsButton::~GraphicsButton() +{ + if (m_demoApp) + m_demoApp->close(); +} + void GraphicsButton::mousePressEvent(QMouseEvent * event) { QString program = m_appFolder.absolutePath() + QDir::separator() + m_app; - QProcess *demoApp = new QProcess(this); - demoApp->start(program); + m_demoApp = new QProcess(this); + m_demoApp->start(program); event->accept(); } diff --git a/demos/demoLauncher/graphicsbutton.h b/demos/demoLauncher/graphicsbutton.h index 9986995..fd98129 100644 --- a/demos/demoLauncher/graphicsbutton.h +++ b/demos/demoLauncher/graphicsbutton.h @@ -4,11 +4,14 @@ #include #include +class QProcess; + class GraphicsButton : public QWidget { Q_OBJECT public: explicit GraphicsButton(const QString& path, QDir appFolder, const QString& app, QWidget *parent = 0); + ~GraphicsButton(); protected: void mousePressEvent(QMouseEvent * event); @@ -19,6 +22,7 @@ private: QString m_path; QDir m_appFolder; QString m_app; + QProcess *m_demoApp; }; #endif // GRAPHICSBUTTON_H diff --git a/demos/demoLauncher/widget.cpp b/demos/demoLauncher/widget.cpp index 98061a6..81aaa07 100644 --- a/demos/demoLauncher/widget.cpp +++ b/demos/demoLauncher/widget.cpp @@ -1,33 +1,15 @@ #include "widget.h" -#include #include #include #include -#include -#include -#include -#include #include "graphicsbutton.h" Widget::Widget(QWidget *parent) - : QWidget(parent), - m_demoApp(0) + : QWidget(parent) { setMinimumSize(200, 200); - // Create a list of executables - QList appList; - m_appFolder = QDir(QApplication::applicationDirPath()); - QStringList filter; - filter << "audio"; - filter << "callout"; - filter << "chartthemes"; - filter << "nesteddonuts"; - filter << "zoomlinechart"; - filter << "stackedbarchartdrilldown"; - filter << "piechartcustomization"; - filter << "barmodelmapper"; - m_appFolder.setNameFilters(filter); + m_appFolder = QDir(QApplication::applicationDirPath()); #ifdef Q_OS_MAC // The executable is inside an application bundle (a folder) on OSX m_appFolder.cdUp(); @@ -38,71 +20,42 @@ Widget::Widget(QWidget *parent) QDir imageFolder = m_appFolder; imageFolder.cdUp(); imageFolder.cdUp(); - - int width = 300; + imageFolder.cd("doc"); + imageFolder.cd("images"); // Create push buttons for starting the executables QGridLayout* demosLayout = new QGridLayout; - GraphicsButton *button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/demos_audio.png", m_appFolder, "audio", this); + GraphicsButton *button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() + "demos_audio.png", m_appFolder, "audio", this); demosLayout->addWidget(button, 0, 0); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/examples_callout.png", m_appFolder, "callout", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"examples_callout.png", m_appFolder, "callout", this); demosLayout->addWidget(button, 0, 1); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/demo_chartthemes_blue_cerulean.png", m_appFolder, "chartthemes", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"demo_chartthemes_blue_cerulean.png", m_appFolder, "chartthemes", this); demosLayout->addWidget(button, 0, 2); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/demos_nesteddonuts.png", m_appFolder, "nesteddonuts", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"demos_nesteddonuts.png", m_appFolder, "nesteddonuts", this); demosLayout->addWidget(button, 1, 0); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/examples_zoomlinechart1.png", m_appFolder, "zoomlinechart", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"examples_zoomlinechart1.png", m_appFolder, "zoomlinechart", this); demosLayout->addWidget(button, 1, 1); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/examples_stackedbarchartdrilldown1.png", m_appFolder, "stackedbarchartdrilldown", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"examples_stackedbarchartdrilldown1.png", m_appFolder, "stackedbarchartdrilldown", this); demosLayout->addWidget(button, 1, 2); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/piechart_customization.png", m_appFolder, "piechartcustomization", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"piechart_customization.png", m_appFolder, "piechartcustomization", this); demosLayout->addWidget(button, 2, 0); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/examples_datetimeaxis.png", m_appFolder, "datetimeaxis", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"examples_datetimeaxis.png", m_appFolder, "datetimeaxis", this); demosLayout->addWidget(button, 2, 1); - button = new GraphicsButton(imageFolder.absolutePath() + "/doc/images/examples_donutbreakdown.png", m_appFolder, "donutbreakdown", this); + button = new GraphicsButton(imageFolder.absolutePath() + QDir::separator() +"examples_donutbreakdown.png", m_appFolder, "donutbreakdown", this); demosLayout->addWidget(button, 2, 2); setLayout(demosLayout); } Widget::~Widget() -{ - QList children = this->children(); - for (int i = 0; i < children.count(); i++) { - QProcess *app = qobject_cast(children.at(i)); - if (app) - app->close(); - } -} - -void Widget::runApp() -{ - QString name = qobject_cast(sender())->text(); - QString program = m_appFolder.absolutePath() + QDir::separator() + name; - m_demoApp = new QProcess(this); - m_demoApp->start(program); -} - -void Widget::mousePressEvent(QMouseEvent * event) -{ - for (int i = 0; i < layout()->count(); i++) { - QWidget *pic = layout()->itemAt(i)->widget(); - if (pic && pic->rect().contains(pic->mapFromParent(event->pos()))) { - QString value = m_map.value(pic); - QString program = m_appFolder.absolutePath() + QDir::separator() + value; - m_demoApp = new QProcess(this); - m_demoApp->start(program); - event->accept(); - return; - } - } +{ } diff --git a/demos/demoLauncher/widget.h b/demos/demoLauncher/widget.h index f559c2e..2d588aa 100644 --- a/demos/demoLauncher/widget.h +++ b/demos/demoLauncher/widget.h @@ -3,10 +3,6 @@ #include #include -#include - -class QProcess; -class QMouseEvent; class Widget : public QWidget { @@ -16,16 +12,8 @@ public: Widget(QWidget *parent = 0); ~Widget(); -protected: - void mousePressEvent(QMouseEvent * event); - -public slots: - void runApp(); - private: QDir m_appFolder; - QProcess *m_demoApp; - QMap m_map; }; #endif // WIDGET_H