summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-01-25 13:36:16 +0100
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-01-25 13:55:23 +0100
commit2b331fb9769be6b64e14c9bc7ef061c370e85a2d (patch)
treed545ba17cd6f215edd252a3dd217ba40c9b796c9
parentd93a5f53f2ddaa0c97220488a4ade2014bc41cef (diff)
downloadtelepathy-glib-2b331fb9769be6b64e14c9bc7ef061c370e85a2d.tar.gz
simple-account: add API to change the presence
https://bugs.freedesktop.org/show_bug.cgi?id=45120
-rw-r--r--tests/lib/simple-account.c54
-rw-r--r--tests/lib/simple-account.h8
2 files changed, 57 insertions, 5 deletions
diff --git a/tests/lib/simple-account.c b/tests/lib/simple-account.c
index ce08468fb..7287df304 100644
--- a/tests/lib/simple-account.c
+++ b/tests/lib/simple-account.c
@@ -68,7 +68,9 @@ enum
struct _TpTestsSimpleAccountPrivate
{
- gpointer unused;
+ TpConnectionPresenceType presence;
+ gchar *presence_status;
+ gchar *presence_msg;
};
static void
@@ -87,6 +89,10 @@ tp_tests_simple_account_init (TpTestsSimpleAccount *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_ACCOUNT,
TpTestsSimpleAccountPrivate);
+
+ self->priv->presence = TP_CONNECTION_PRESENCE_TYPE_AWAY;
+ self->priv->presence_status = g_strdup ("currently-away");
+ self->priv->presence_msg = g_strdup ("this is my CurrentPresence");
}
/* you may have noticed this is not entirely realistic */
@@ -98,6 +104,7 @@ tp_tests_simple_account_get_property (GObject *object,
GValue *value,
GParamSpec *spec)
{
+ TpTestsSimpleAccount *self = TP_TESTS_SIMPLE_ACCOUNT (object);
GValue identifier = { 0, };
g_value_init (&identifier, G_TYPE_STRING);
@@ -146,9 +153,9 @@ tp_tests_simple_account_get_property (GObject *object,
break;
case PROP_CURRENT_PRESENCE:
g_value_take_boxed (value, tp_value_array_build (3,
- G_TYPE_UINT, TP_CONNECTION_PRESENCE_TYPE_AWAY,
- G_TYPE_STRING, "currently-away",
- G_TYPE_STRING, "this is my CurrentPresence",
+ G_TYPE_UINT, self->priv->presence,
+ G_TYPE_STRING, self->priv->presence_status,
+ G_TYPE_STRING, self->priv->presence_msg,
G_TYPE_INVALID));
break;
case PROP_REQUESTED_PRESENCE:
@@ -193,6 +200,17 @@ tp_tests_simple_account_get_property (GObject *object,
g_value_unset (&identifier);
}
+static void
+tp_tests_simple_account_finalize (GObject *object)
+{
+ TpTestsSimpleAccount *self = TP_TESTS_SIMPLE_ACCOUNT (object);
+
+ g_free (self->priv->presence_status);
+ g_free (self->priv->presence_msg);
+
+ G_OBJECT_CLASS (tp_tests_simple_account_parent_class)->finalize (object);
+}
+
/**
* This class currently only provides the minimum for
* tp_account_prepare to succeed. This turns out to be only a working
@@ -260,6 +278,7 @@ tp_tests_simple_account_class_init (TpTestsSimpleAccountClass *klass)
g_type_class_add_private (klass, sizeof (TpTestsSimpleAccountPrivate));
object_class->get_property = tp_tests_simple_account_get_property;
+ object_class->finalize = tp_tests_simple_account_finalize;
param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces",
"In this case we only implement Account, so none.",
@@ -403,3 +422,30 @@ tp_tests_simple_account_class_init (TpTestsSimpleAccountClass *klass)
tp_dbus_properties_mixin_class_init (object_class,
G_STRUCT_OFFSET (TpTestsSimpleAccountClass, dbus_props_class));
}
+
+void
+tp_tests_simple_account_set_presence (TpTestsSimpleAccount *self,
+ TpConnectionPresenceType presence,
+ const gchar *status,
+ const gchar *message)
+{
+ GHashTable *props;
+ GValueArray *v;
+
+ g_free (self->priv->presence_status);
+ g_free (self->priv->presence_msg);
+
+ self->priv->presence = presence;
+ self->priv->presence_status = g_strdup (status);
+ self->priv->presence_msg = g_strdup (message);
+
+ g_object_get (self, "current-presence", &v, NULL);
+
+ props = tp_asv_new (
+ "CurrentPresence", TP_STRUCT_TYPE_SIMPLE_PRESENCE, v,
+ NULL);
+
+ tp_svc_account_emit_account_property_changed (self, props);
+
+ g_boxed_free (TP_STRUCT_TYPE_SIMPLE_PRESENCE, v);
+}
diff --git a/tests/lib/simple-account.h b/tests/lib/simple-account.h
index 7af263d61..40f708c9c 100644
--- a/tests/lib/simple-account.h
+++ b/tests/lib/simple-account.h
@@ -12,8 +12,9 @@
#define __TP_TESTS_SIMPLE_ACCOUNT_H__
#include <glib-object.h>
-#include <telepathy-glib/dbus-properties-mixin.h>
+#include <telepathy-glib/connection.h>
+#include <telepathy-glib/dbus-properties-mixin.h>
G_BEGIN_DECLS
@@ -51,6 +52,11 @@ GType tp_tests_simple_account_get_type (void);
(G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT, \
TpTestsSimpleAccountClass))
+void tp_tests_simple_account_set_presence (TpTestsSimpleAccount *self,
+ TpConnectionPresenceType presence,
+ const gchar *status,
+ const gchar *message);
+
G_END_DECLS
#endif /* #ifndef __TP_TESTS_SIMPLE_ACCOUNT_H__ */