From 963f1418caa6b438d80445b2eb66f5b42e5add06 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 14:47:42 -0500 Subject: Preliminary pidgin wrappers. --- src/status-provider-pidgin.c | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/status-provider-pidgin.c (limited to 'src/status-provider-pidgin.c') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c new file mode 100644 index 0000000..16fbb69 --- /dev/null +++ b/src/status-provider-pidgin.c @@ -0,0 +1,56 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "status-provider.h" +#include "status-provider-pidgin.h" + +typedef struct _StatusProviderPidginPrivate StatusProviderPidginPrivate; +struct _StatusProviderPidginPrivate { +}; + +#define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((o), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidginPrivate)) + +static void status_provider_pidgin_class_init (StatusProviderPidginClass *klass); +static void status_provider_pidgin_init (StatusProviderPidgin *self); +static void status_provider_pidgin_dispose (GObject *object); +static void status_provider_pidgin_finalize (GObject *object); + +G_DEFINE_TYPE (StatusProviderPidgin, status_provider_pidgin, STATUS_PROVIDER_TYPE); + +static void +status_provider_pidgin_class_init (StatusProviderPidginClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (StatusProviderPidginPrivate)); + + object_class->dispose = status_provider_pidgin_dispose; + object_class->finalize = status_provider_pidgin_finalize; + + return; +} + +static void +status_provider_pidgin_init (StatusProviderPidgin *self) +{ + + return; +} + +static void +status_provider_pidgin_dispose (GObject *object) +{ + + G_OBJECT_CLASS (status_provider_pidgin_parent_class)->dispose (object); + return; +} + +static void +status_provider_pidgin_finalize (GObject *object) +{ + + G_OBJECT_CLASS (status_provider_pidgin_parent_class)->finalize (object); + return; +} -- cgit v1.2.3 From 5ad8f590bc465555aac14f8de3ca17901b8675f3 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 15:54:13 -0500 Subject: Now we're setting the status provider functions of the StatusProvider interface. --- src/status-provider-pidgin.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/status-provider-pidgin.c') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index 16fbb69..a0a2ba1 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -12,10 +12,15 @@ struct _StatusProviderPidginPrivate { #define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), STATUS_PROVIDER_PIDGIN_TYPE, StatusProviderPidginPrivate)) +/* Prototypes */ +/* GObject stuff */ static void status_provider_pidgin_class_init (StatusProviderPidginClass *klass); static void status_provider_pidgin_init (StatusProviderPidgin *self); static void status_provider_pidgin_dispose (GObject *object); static void status_provider_pidgin_finalize (GObject *object); +/* Internal Funcs */ +static void set_status (StatusProvider * sp, StatusProviderStatus status); +static StatusProviderStatus get_status (StatusProvider * sp); G_DEFINE_TYPE (StatusProviderPidgin, status_provider_pidgin, STATUS_PROVIDER_TYPE); @@ -29,6 +34,11 @@ status_provider_pidgin_class_init (StatusProviderPidginClass *klass) object_class->dispose = status_provider_pidgin_dispose; object_class->finalize = status_provider_pidgin_finalize; + StatusProviderClass * spclass = STATUS_PROVIDER_CLASS(klass); + + spclass->set_status = set_status; + spclass->get_status = get_status; + return; } @@ -54,3 +64,17 @@ status_provider_pidgin_finalize (GObject *object) G_OBJECT_CLASS (status_provider_pidgin_parent_class)->finalize (object); return; } + +static void +set_status (StatusProvider * sp, StatusProviderStatus status) +{ + + return; +} + +static StatusProviderStatus +get_status (StatusProvider * sp) +{ + + return STATUS_PROVIDER_STATUS_OFFLINE; +} -- cgit v1.2.3 From 2cb1046794b8f2ef0a375d1d1061501473d43c73 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 16:27:03 -0500 Subject: Starting to connect things together. Let's get some Pidgin in there. --- src/status-provider-pidgin.c | 6 ++++++ src/status-provider-pidgin.h | 1 + src/status-service.c | 9 +++++++++ 3 files changed, 16 insertions(+) (limited to 'src/status-provider-pidgin.c') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index a0a2ba1..ef2bc63 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -65,6 +65,12 @@ status_provider_pidgin_finalize (GObject *object) return; } +StatusProvider * +status_provider_pidgin_new (void) +{ + return STATUS_PROVIDER(g_object_new(STATUS_PROVIDER_PIDGIN_TYPE, NULL)); +} + static void set_status (StatusProvider * sp, StatusProviderStatus status) { diff --git a/src/status-provider-pidgin.h b/src/status-provider-pidgin.h index 5d4459c..85077e8 100644 --- a/src/status-provider-pidgin.h +++ b/src/status-provider-pidgin.h @@ -27,6 +27,7 @@ struct _StatusProviderPidgin { }; GType status_provider_pidgin_get_type (void); +StatusProvider * status_provider_pidgin_new (void); G_END_DECLS diff --git a/src/status-service.c b/src/status-service.c index e839b16..901f46b 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -10,6 +10,15 @@ #include "dbus-shared-names.h" #include "status-provider.h" +#include "status-provider-pidgin.h" + +typedef StatusProvider * (*newfunc) (void); +#define STATUS_PROVIDER_CNT 1 +newfunc status_provider_newfuncs[STATUS_PROVIDER_CNT] = { + status_provider_pidgin_new +}; + +StatusProvider * status_providers[STATUS_PROVIDER_CNT] = { 0 }; static const gchar * status_strings [STATUS_PROVIDER_STATUS_LAST] = { /* STATUS_PROVIDER_STATUS_ONLINE, */ N_("Available"), -- cgit v1.2.3 From 54a3bda1d88cf6f72c0d913380b1d574e9b21cb6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 11 Jun 2009 21:14:22 -0500 Subject: Adding in a proxy to start gettin' us some Pidgin --- src/status-provider-pidgin.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/status-provider-pidgin.c') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index ef2bc63..4dde758 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -5,8 +5,11 @@ #include "status-provider.h" #include "status-provider-pidgin.h" +#include + typedef struct _StatusProviderPidginPrivate StatusProviderPidginPrivate; struct _StatusProviderPidginPrivate { + DBusGProxy * proxy; }; #define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ @@ -45,6 +48,9 @@ status_provider_pidgin_class_init (StatusProviderPidginClass *klass) static void status_provider_pidgin_init (StatusProviderPidgin *self) { + StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(self); + + priv->proxy = NULL; return; } -- cgit v1.2.3 From f3f762e1bb3c91ef2226ea82982d24c51ee7a39e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 12:50:02 -0500 Subject: Putting in the status translation tables. --- src/status-provider-pidgin.c | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) (limited to 'src/status-provider-pidgin.c') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index 4dde758..1f5c5cc 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -7,9 +7,42 @@ #include +typedef enum { + PG_STATUS_UNKNOWN, + PG_STATUS_OFFLINE, + PG_STATUS_AVAILABLE, + PG_STATUS_UNAVAILABLE, + PG_STATUS_INVISIBLE, + PG_STATUS_AWAY, + PG_STATUS_EXTENDEND_AWAY, + PG_STATUS_MOBILE, + PG_STATUS_TUNE +} pg_status_t; + +static const StatusProviderStatus pg_to_sp_map[] = { + /* PG_STATUS_UNKNOWN, */ STATUS_PROVIDER_STATUS_OFFLINE, + /* PG_STATUS_OFFLINE, */ STATUS_PROVIDER_STATUS_OFFLINE, + /* PG_STATUS_AVAILABLE, */ STATUS_PROVIDER_STATUS_ONLINE, + /* PG_STATUS_UNAVAILABLE, */ STATUS_PROVIDER_STATUS_DND, + /* PG_STATUS_INVISIBLE, */ STATUS_PROVIDER_STATUS_INVISIBLE, + /* PG_STATUS_AWAY, */ STATUS_PROVIDER_STATUS_AWAY, + /* PG_STATUS_EXTENDEND_AWAY, */ STATUS_PROVIDER_STATUS_AWAY, + /* PG_STATUS_MOBILE, */ STATUS_PROVIDER_STATUS_OFFLINE, + /* PG_STATUS_TUNE */ STATUS_PROVIDER_STATUS_OFFLINE +}; + +static const pg_status_t sp_to_pg_map[STATUS_PROVIDER_STATUS_LAST] = { + /* STATUS_PROVIDER_STATUS_ONLINE, */ PG_STATUS_AVAILABLE, + /* STATUS_PROVIDER_STATUS_AWAY, */ PG_STATUS_AWAY, + /* STATUS_PROVIDER_STATUS_DND */ PG_STATUS_UNAVAILABLE, + /* STATUS_PROVIDER_STATUS_INVISIBLE*/ PG_STATUS_INVISIBLE, + /* STATUS_PROVIDER_STATUS_OFFLINE */ PG_STATUS_OFFLINE +}; + typedef struct _StatusProviderPidginPrivate StatusProviderPidginPrivate; struct _StatusProviderPidginPrivate { DBusGProxy * proxy; + pg_status_t pg_status; }; #define STATUS_PROVIDER_PIDGIN_GET_PRIVATE(o) \ @@ -51,6 +84,7 @@ status_provider_pidgin_init (StatusProviderPidgin *self) StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(self); priv->proxy = NULL; + priv->pg_status = PG_STATUS_OFFLINE; return; } @@ -80,13 +114,17 @@ status_provider_pidgin_new (void) static void set_status (StatusProvider * sp, StatusProviderStatus status) { - + g_return_if_fail(IS_STATUS_PROVIDER_PIDGIN(sp)); + StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(sp); + pg_status_t pg_status = sp_to_pg_map[status]; + priv->pg_status = pg_status; return; } static StatusProviderStatus get_status (StatusProvider * sp) { - - return STATUS_PROVIDER_STATUS_OFFLINE; + g_return_val_if_fail(IS_STATUS_PROVIDER_PIDGIN(sp), STATUS_PROVIDER_STATUS_OFFLINE); + StatusProviderPidginPrivate * priv = STATUS_PROVIDER_PIDGIN_GET_PRIVATE(sp); + return pg_to_sp_map[priv->pg_status]; } -- cgit v1.2.3 From 922ee2a93ffaebb430d406d787abeb4687657b73 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Jun 2009 12:54:15 -0500 Subject: Some comments describing the intentions of the functions. --- src/status-provider-pidgin.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/status-provider-pidgin.c') diff --git a/src/status-provider-pidgin.c b/src/status-provider-pidgin.c index 1f5c5cc..600ee79 100644 --- a/src/status-provider-pidgin.c +++ b/src/status-provider-pidgin.c @@ -105,12 +105,22 @@ status_provider_pidgin_finalize (GObject *object) return; } +/** + status_provider_pidgin_new: + + Creates a new #StatusProviderPidgin object. No parameters or anything + like that. Just a convience function. + + Return value: A new instance of #StatusProviderPidgin +*/ StatusProvider * status_provider_pidgin_new (void) { return STATUS_PROVIDER(g_object_new(STATUS_PROVIDER_PIDGIN_TYPE, NULL)); } +/* Takes the status provided generically for Status providers + and turns it into a Pidgin status and sends it to Pidgin. */ static void set_status (StatusProvider * sp, StatusProviderStatus status) { @@ -121,6 +131,8 @@ set_status (StatusProvider * sp, StatusProviderStatus status) return; } +/* Takes the cached Pidgin status and makes it into the generic + Status provider status */ static StatusProviderStatus get_status (StatusProvider * sp) { -- cgit v1.2.3