summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Keller <rainer.keller@nokia.com>2011-05-20 10:42:59 +0200
committerRainer Keller <rainer.keller@nokia.com>2011-06-06 14:02:23 +0200
commitcce93731691332406ce7f5141a7fe15efed2fe44 (patch)
tree2491d631f263e80c92917a6b82f063b05e0c2361
parente04dd17419c571e8e2f098c8dbe1550ee26b0200 (diff)
Add plugin support
Reviewed-by: ckamm Task-number: QTSIM-161
-rw-r--r--src/ui/mainwindow.cpp42
-rw-r--r--src/ui/mainwindow.h1
-rw-r--r--src/ui/viewui.cpp2
-rw-r--r--src/ui/viewui.h2
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 &);