~ubuntu-branches/ubuntu/utopic/qmenumodel/utopic-proposed

« back to all changes in this revision

Viewing changes to libqmenumodel/src/qdbusobject.cpp

  • Committer: Package Import Robot
  • Author(s): Ubuntu daily release, Nick Dedekind, Ubuntu daily release
  • Date: 2013-08-27 14:08:51 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20130827140851-cw3whouyblxq2stj
Tags: 0.2.7+13.10.20130827.3-0ubuntu1
[ Nick Dedekind ]
* UnityMenuModel::changeState now uses current state parameter type as
  a base for parameter GVariant conversion.
* Adds qt event spawning to direct glib main loop callbacks. (LP:
  #1183065, #1206991)

[ Ubuntu daily release ]
* Automatic snapshot from revision 78

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
}
24
24
 
25
25
#include "qdbusobject.h"
 
26
#include "qmenumodelevents.h"
26
27
 
27
28
#include <QDebug>
 
29
#include <QCoreApplication>
28
30
 
29
31
/*!
30
32
    \qmltype QDBusObject
73
75
    \endlist
74
76
*/
75
77
 
76
 
QDBusObject::QDBusObject()
77
 
    :m_watchId(0),
 
78
QDBusObject::QDBusObject(QObject* listener)
 
79
    :m_listener(listener),
 
80
     m_watchId(0),
78
81
     m_busType(DBusEnums::None),
79
82
     m_status(DBusEnums::Disconnected)
80
83
{
181
184
{
182
185
    QDBusObject *self = reinterpret_cast<QDBusObject*>(data);
183
186
 
184
 
    self->serviceAppear(connection);
185
 
    self->setStatus(DBusEnums::Connected);
 
187
    if (self->m_listener) {
 
188
        DbusObjectServiceEvent dose(connection, true);
 
189
        QCoreApplication::sendEvent(self->m_listener, &dose);
 
190
    }
186
191
}
187
192
 
188
193
void QDBusObject::onServiceVanished(GDBusConnection *connection, const gchar *, gpointer data)
189
194
{
190
 
    QDBusObject *self = reinterpret_cast<QDBusObject*>(data);    
191
 
 
192
 
    self->setStatus(DBusEnums::Connecting);
193
 
    self->serviceVanish(connection);
 
195
    QDBusObject *self = reinterpret_cast<QDBusObject*>(data);
 
196
 
 
197
    if (self->m_listener) {
 
198
        DbusObjectServiceEvent dose(connection, false);
 
199
        QCoreApplication::sendEvent(self->m_listener, &dose);
 
200
    }
 
201
}
 
202
 
 
203
bool QDBusObject::event(QEvent* e)
 
204
{
 
205
    if (e->type() == DbusObjectServiceEvent::eventType) {
 
206
        DbusObjectServiceEvent *dose = static_cast<DbusObjectServiceEvent*>(e);
 
207
        if (dose->visible) {
 
208
            serviceAppear(dose->connection);
 
209
            setStatus(DBusEnums::Connected);
 
210
        } else {
 
211
            setStatus(DBusEnums::Connecting);
 
212
            serviceVanish(dose->connection);
 
213
        }
 
214
        return true;
 
215
    }
 
216
    return false;
194
217
}