aboutsummaryrefslogtreecommitdiff
path: root/src/mm-sms-list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-sms-list.c')
-rw-r--r--src/mm-sms-list.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/mm-sms-list.c b/src/mm-sms-list.c
index 3bad49aa..f2401dae 100644
--- a/src/mm-sms-list.c
+++ b/src/mm-sms-list.c
@@ -28,14 +28,18 @@
#include "mm-sms-list.h"
#include "mm-base-sms.h"
#include "mm-log-object.h"
+#include "mm-bind.h"
static void log_object_iface_init (MMLogObjectInterface *iface);
+static void bind_iface_init (MMBindInterface *iface);
G_DEFINE_TYPE_EXTENDED (MMSmsList, mm_sms_list, G_TYPE_OBJECT, 0,
- G_IMPLEMENT_INTERFACE (MM_TYPE_LOG_OBJECT, log_object_iface_init))
+ G_IMPLEMENT_INTERFACE (MM_TYPE_LOG_OBJECT, log_object_iface_init)
+ G_IMPLEMENT_INTERFACE (MM_TYPE_BIND, bind_iface_init))
enum {
PROP_0,
+ PROP_BIND_TO,
PROP_MODEM,
PROP_LAST
};
@@ -49,6 +53,8 @@ enum {
static guint signals[SIGNAL_LAST];
struct _MMSmsListPrivate {
+ /* The object this SMS list is bound to */
+ GObject *bind_to;
/* The owner modem */
MMBaseModem *modem;
/* List of sms objects */
@@ -397,11 +403,12 @@ log_object_build_id (MMLogObject *_self)
/*****************************************************************************/
MMSmsList *
-mm_sms_list_new (MMBaseModem *modem)
+mm_sms_list_new (MMBaseModem *modem, GObject *bind_to)
{
/* Create the object */
return g_object_new (MM_TYPE_SMS_LIST,
MM_SMS_LIST_MODEM, modem,
+ MM_BIND_TO, bind_to,
NULL);
}
@@ -414,13 +421,14 @@ set_property (GObject *object,
MMSmsList *self = MM_SMS_LIST (object);
switch (prop_id) {
+ case PROP_BIND_TO:
+ g_clear_object (&self->priv->bind_to);
+ self->priv->bind_to = g_value_dup_object (value);
+ mm_bind_to (MM_BIND (self), NULL, self->priv->bind_to);
+ break;
case PROP_MODEM:
g_clear_object (&self->priv->modem);
self->priv->modem = g_value_dup_object (value);
- if (self->priv->modem) {
- /* Set owner ID */
- mm_log_object_set_owner_id (MM_LOG_OBJECT (self), mm_log_object_get_id (MM_LOG_OBJECT (self->priv->modem)));
- }
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -437,6 +445,9 @@ get_property (GObject *object,
MMSmsList *self = MM_SMS_LIST (object);
switch (prop_id) {
+ case PROP_BIND_TO:
+ g_value_set_object (value, self->priv->bind_to);
+ break;
case PROP_MODEM:
g_value_set_object (value, self->priv->modem);
break;
@@ -461,6 +472,7 @@ dispose (GObject *object)
MMSmsList *self = MM_SMS_LIST (object);
g_clear_object (&self->priv->modem);
+ g_clear_object (&self->priv->bind_to);
g_list_free_full (self->priv->list, g_object_unref);
self->priv->list = NULL;
@@ -474,6 +486,11 @@ log_object_iface_init (MMLogObjectInterface *iface)
}
static void
+bind_iface_init (MMBindInterface *iface)
+{
+}
+
+static void
mm_sms_list_class_init (MMSmsListClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -494,6 +511,8 @@ mm_sms_list_class_init (MMSmsListClass *klass)
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_MODEM, properties[PROP_MODEM]);
+ g_object_class_override_property (object_class, PROP_BIND_TO, MM_BIND_TO);
+
/* Signals */
signals[SIGNAL_ADDED] =
g_signal_new (MM_SMS_ADDED,