You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2014/05/06 01:43:15 UTC

[09/11] git commit: allow inter plugin communication

allow inter plugin communication


Project: http://git-wip-us.apache.org/repos/asf/cordova-ubuntu/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ubuntu/commit/67869587
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ubuntu/tree/67869587
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ubuntu/diff/67869587

Branch: refs/heads/master
Commit: 67869587550e8dcc658360238f9e4c86c83d5b30
Parents: 02f8363
Author: Maxim Ermilov <ma...@canonical.com>
Authored: Fri May 2 01:38:39 2014 +0400
Committer: Maxim Ermilov <ma...@canonical.com>
Committed: Fri May 2 01:38:39 2014 +0400

----------------------------------------------------------------------
 src/cordova.cpp | 38 +++++++++++++++++++-------------------
 src/cordova.h   | 23 ++++++++++++++++-------
 2 files changed, 35 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ubuntu/blob/67869587/src/cordova.cpp
----------------------------------------------------------------------
diff --git a/src/cordova.cpp b/src/cordova.cpp
index 893e8f7..1c34a3e 100644
--- a/src/cordova.cpp
+++ b/src/cordova.cpp
@@ -24,19 +24,19 @@
 #include <QQuickItem>
 #include <QQmlContext>
 
-Cordova::Cordova(QDir wwwDir, QString contentFile, QQuickItem *item, QObject *parent): QObject(parent), m_item(item), m_www(wwwDir) {
-    qDebug() << "Using" << m_www.absolutePath() << "as working dir";
+Cordova::Cordova(QDir wwwDir, QString contentFile, QQuickItem *item, QObject *parent): QObject(parent), _item(item), _www(wwwDir) {
+    qDebug() << "Using" << _www.absolutePath() << "as working dir";
 
-    if (!m_www.exists(contentFile))
+    if (!_www.exists(contentFile))
         qCritical() << contentFile << "does not exists";
 
-    m_mainUrl = QUrl::fromUserInput(m_www.absoluteFilePath(contentFile)).toString();
+    _mainUrl = QUrl::fromUserInput(_www.absoluteFilePath(contentFile)).toString();
 
-    qCritical() << QString(m_mainUrl);
+    qCritical() << QString(_mainUrl);
 }
 
 QString Cordova::get_app_dir() {
-    return m_www.absolutePath();
+    return _www.absolutePath();
 }
 
 struct Splash {
@@ -45,7 +45,7 @@ struct Splash {
 };
 
 QString Cordova::getSplashscreenPath() {
-    double ratio = (double)m_item->width() / m_item->height();
+    double ratio = (double)_item->width() / _item->height();
 
     QDir dir(get_app_dir());
     if (!dir.cd("splashscreen"))
@@ -58,7 +58,7 @@ QString Cordova::getSplashscreenPath() {
             continue;
         Splash t;
         t.path = info.absoluteFilePath();
-        t.rating = std::abs((image.width() / (double)m_item->width()) * ((image.width() / image.height()) / ratio) - 1);
+        t.rating = std::abs((image.width() / (double)_item->width()) * ((image.width() / image.height()) / ratio) - 1);
         images.push_back(t);
     }
     std::min_element(images.begin(), images.end(), [](Splash &f, Splash &s) {
@@ -72,7 +72,7 @@ QString Cordova::getSplashscreenPath() {
 void Cordova::initPlugins() {
     QList<QDir> searchPath = {get_app_dir()};
 
-    m_plugins.clear();
+    _plugins.clear();
     for (QDir pluginsDir: searchPath) {
         for (const QString &fileName: pluginsDir.entryList(QDir::Files)) {
             QString path = pluginsDir.absoluteFilePath(fileName);
@@ -93,7 +93,7 @@ void Cordova::initPlugins() {
                 qDebug() << "Enable plugin" << plugin->fullName();
                 emit pluginWantsToBeAdded(plugin->fullName(), plugin.data(), plugin->shortName());
             }
-            m_plugins += plugins;
+            _plugins += plugins;
         }
     }
 }
@@ -113,35 +113,35 @@ void Cordova::execJS(const QString &js) {
 }
 
 QString Cordova::mainUrl() const {
-    return m_mainUrl;
+    return _mainUrl;
 }
 
 QObject *Cordova::topLevelEventsReceiver() {
-    return dynamic_cast<QQuickView*>(m_item->window());
+    return dynamic_cast<QQuickView*>(_item->window());
 }
 
 QQuickItem *Cordova::rootObject() {
-    return m_item->parentItem();
+    return _item->parentItem();
 }
 
 void Cordova::setTitle(const QString &title) {
-    dynamic_cast<QQuickView*>(m_item->window())->setTitle(title);
+    dynamic_cast<QQuickView*>(_item->window())->setTitle(title);
 }
 
 void Cordova::pushViewState(const QString &state) {
-    if (m_states.empty()) {
+    if (_states.empty()) {
         rootObject()->setState(state);
     }
-    m_states.push_front(state);
+    _states.push_front(state);
 }
 
 void Cordova::popViewState(const QString &state) {
-    if (!m_states.removeOne(state))
+    if (!_states.removeOne(state))
         qDebug() << "WARNING: incorrect view states order";
 
-    if (m_states.empty()) {
+    if (_states.empty()) {
         rootObject()->setState("main");
     } else {
-        rootObject()->setState(m_states.front());
+        rootObject()->setState(_states.front());
     }
 }

http://git-wip-us.apache.org/repos/asf/cordova-ubuntu/blob/67869587/src/cordova.h
----------------------------------------------------------------------
diff --git a/src/cordova.h b/src/cordova.h
index 48ad3b3..9c0fa7e 100644
--- a/src/cordova.h
+++ b/src/cordova.h
@@ -41,6 +41,17 @@ public:
     void pushViewState(const QString &state);
     void popViewState(const QString &state);
     QString getSplashscreenPath();
+
+    template<typename A>
+    QSharedPointer<CPlugin> getPlugin() {
+        for (QSharedPointer<CPlugin> &plugin: _plugins) {
+            if (plugin->fullName() != A::fullID())
+                continue;
+            return plugin;
+        }
+
+        return QSharedPointer<CPlugin>();
+    }
 signals:
     void javaScriptExecNeeded(const QString &js);
     void qmlExecNeeded(const QString &src);
@@ -53,16 +64,14 @@ public slots:
     void execQML(const QString &src);
 
 private:
-    int m_alertCallback;
-
     void initPlugins();
 
-    QQuickItem *m_item;
-    QList<QSharedPointer<CPlugin>> m_plugins;
+    QQuickItem *_item;
+    QList<QSharedPointer<CPlugin>> _plugins;
 
-    QDir m_www;
-    QString m_mainUrl;
-    QList<QString> m_states;
+    QDir _www;
+    QString _mainUrl;
+    QList<QString> _states;
     Q_DISABLE_COPY(Cordova)
 };