diff options
author | Rainer Keller <rainer.keller@nokia.com> | 2011-05-20 10:42:59 +0200 |
---|---|---|
committer | Rainer Keller <rainer.keller@nokia.com> | 2011-06-06 14:02:23 +0200 |
commit | cce93731691332406ce7f5141a7fe15efed2fe44 (patch) | |
tree | 2491d631f263e80c92917a6b82f063b05e0c2361 | |
parent | e04dd17419c571e8e2f098c8dbe1550ee26b0200 (diff) |
Add plugin support
Reviewed-by: ckamm
Task-number: QTSIM-161
-rw-r--r-- | src/ui/mainwindow.cpp | 42 | ||||
-rw-r--r-- | src/ui/mainwindow.h | 1 | ||||
-rw-r--r-- | src/ui/viewui.cpp | 2 | ||||
-rw-r--r-- | src/ui/viewui.h | 2 |
4 files changed, 45 insertions, 2 deletions
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 3e07a7e..6ac29f8 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -64,6 +64,7 @@ #include <remotecontrolwidget/signalstrengthbutton.h> #include <remotecontrolwidget/networkmodebutton.h> #include <remotecontrolwidget/favoritescriptbutton.h> +#include <remotecontrolwidget/plugininterface.h> #include <QtCore/QDebug> #include <QtCore/QTimer> @@ -79,6 +80,7 @@ #include <QtGui/QDesktopWidget> #include <QtGui/QMessageBox> #include <QtGui/QDesktopServices> +#include <QtCore/QPluginLoader> #if defined(Q_WS_X11) #include <private/qt_x11_p.h> @@ -317,6 +319,8 @@ MainWindow::MainWindow(QWidget *parent) config->setWindowFlags(Qt::Tool); + loadPlugins(); + // read settings QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); mTouchUi->readSettings(settings); @@ -622,3 +626,41 @@ QString MainWindow::userResourcePath() const return urp; } + +void MainWindow::loadPlugins() +{ + // NOTE: static plugins are not supported + + QDir pluginsDir = QDir(qApp->applicationDirPath()); + +#if defined(Q_OS_WIN) + if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release") + pluginsDir.cdUp(); +#elif defined(Q_OS_MAC) + if (pluginsDir.dirName() == "MacOS") { + pluginsDir.cdUp(); + pluginsDir.cdUp(); + pluginsDir.cdUp(); + } +#endif + pluginsDir.cd("plugins"); + pluginsDir.cd("simulator"); + + foreach (QString fileName, pluginsDir.entryList(QDir::Files)) { + QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); + QObject *plugin = loader.instance(); + if (plugin) { + PluginInterface *pi = qobject_cast<PluginInterface *>(plugin); + if (pi) { + foreach (ToolBoxPage *tbp, pi->pages(this)) { + config->addPage(tbp); + + QString name = tbp->scriptInterfaceName(); + QObject *obj = tbp->scriptInterface(); + if ( obj && !name.isEmpty() ) + scriptAdapter->addScriptInterface(name, obj); + } + } + } + } +} diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 94dcb77..04d6f8c 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -85,6 +85,7 @@ private: void writeSettings(QSettings &) const; void readSettings(QSettings &); void setupScriptDirectories(ScriptUi *ui, FavoriteScriptButton *button); + void loadPlugins(); private: QGraphicsView *view; diff --git a/src/ui/viewui.cpp b/src/ui/viewui.cpp index 8fbf029..ac3fef9 100644 --- a/src/ui/viewui.cpp +++ b/src/ui/viewui.cpp @@ -264,7 +264,7 @@ void ViewUi::changeOrientation(int orientation) emit orientationChangeRequested(static_cast<Orientation>(orientation), ui_inspector->rotateScreen->isChecked()); } -ViewScriptInterface *ViewUi::scriptInterface() const +QObject *ViewUi::scriptInterface() const { return mScriptInterface; } diff --git a/src/ui/viewui.h b/src/ui/viewui.h index d302541..461624a 100644 --- a/src/ui/viewui.h +++ b/src/ui/viewui.h @@ -52,7 +52,7 @@ public: int currentDeviceIndex() const; void initializeSelection(); bool initializeDeviceList(); - ViewScriptInterface * scriptInterface() const; + QObject * scriptInterface() const; void writeSettings(QSettings &) const; void readSettings(QSettings &); |