diff options
author | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-09-11 17:57:08 -0300 |
---|---|---|
committer | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-09-11 17:57:08 -0300 |
commit | 6bacc0d5db885a72202cb7f80e505642a36052d4 (patch) | |
tree | 608aa95f959b9e362d7813476e59d37c6c07ddf6 /src/common/qdbusactiongroup.h | |
parent | 31f8103187d2e27b1bb76eaed10dc9c9be226c90 (diff) | |
download | qmenumodel-6bacc0d5db885a72202cb7f80e505642a36052d4.tar.gz qmenumodel-6bacc0d5db885a72202cb7f80e505642a36052d4.tar.bz2 qmenumodel-6bacc0d5db885a72202cb7f80e505642a36052d4.zip |
Splitted qmenumodel plugin in two libraries to make it testable.
Create unit test for qmenumodel library.
Diffstat (limited to 'src/common/qdbusactiongroup.h')
-rw-r--r-- | src/common/qdbusactiongroup.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/common/qdbusactiongroup.h b/src/common/qdbusactiongroup.h new file mode 100644 index 0000000..fe743b6 --- /dev/null +++ b/src/common/qdbusactiongroup.h @@ -0,0 +1,63 @@ +#ifndef QDBUSACTIONGROUP_H +#define QDBUSACTIONGROUP_H + +#include "qdbusobject.h" + +#include <QObject> +#include <QAction> +#include <QSet> + +class QDBusActionGroup : public QObject, public QDBusObject +{ + Q_OBJECT + Q_PROPERTY(int busType READ busType WRITE setIntBusType NOTIFY busTypeChanged) + Q_PROPERTY(QString busName READ busName WRITE setBusName NOTIFY busNameChanged) + Q_PROPERTY(QString objectPath READ objectPath WRITE setObjectPath NOTIFY objectPathChanged) + Q_PROPERTY(int status READ status NOTIFY statusChanged) + +public: + QDBusActionGroup(QObject *parent=0); + ~QDBusActionGroup(); + +Q_SIGNALS: + void busTypeChanged(); + void busNameChanged(); + void objectPathChanged(); + void statusChanged(); + +public Q_SLOTS: + void start(); + void stop(); + QAction *getAction(const QString &actionName); + +protected: + virtual void serviceAppear(GDBusConnection *connection); + virtual void serviceVanish(GDBusConnection *connection); + + virtual void busTypeChanged(BusType type); + virtual void busNameChanged(const QString &busNameChanged); + virtual void objectPathChanged(const QString &objectPath); + virtual void statusChanged(ConnectionStatus status); + +private: + GActionGroup *m_actionGroup; + QSet<QAction*> m_actions; + int m_signalActionAddId; + int m_signalActionRemovedId; + + // workaround to support int as bustType + void setIntBusType(int busType); + + void setActionGroup(GDBusActionGroup *ag); + void addAction(const char *actionName); + void removeAction(const char *actionName); + void updateAction(const char *actionName, GVariant *state); + void clear(); + + // glib slots + static void onActionAdded(GDBusActionGroup *ag, gchar *actionName, gpointer data); + static void onActionRemoved(GDBusActionGroup *ag, gchar *actionName, gpointer data); + static void onActionStateChanged(GDBusActionGroup *ag, gchar *actionName, GVariant *value, gpointer data); +}; + +#endif |