introspection,api: new 'Messages' property in the Messaging interface
https://bugzilla.gnome.org/show_bug.cgi?id=712276
This commit is contained in:
@@ -95,6 +95,13 @@
|
|||||||
<arg name="path" type="o" />
|
<arg name="path" type="o" />
|
||||||
</signal>
|
</signal>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Messages:
|
||||||
|
|
||||||
|
The list of SMS object paths.
|
||||||
|
-->
|
||||||
|
<property name="Messages" type="ao" access="read" />
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SupportedStorages:
|
SupportedStorages:
|
||||||
|
|
||||||
|
@@ -236,7 +236,7 @@ sms_object_list_free (GList *list)
|
|||||||
static void
|
static void
|
||||||
list_sms_context_complete_and_free (ListSmsContext *ctx)
|
list_sms_context_complete_and_free (ListSmsContext *ctx)
|
||||||
{
|
{
|
||||||
g_simple_async_result_complete (ctx->result);
|
g_simple_async_result_complete_in_idle (ctx->result);
|
||||||
|
|
||||||
g_strfreev (ctx->sms_paths);
|
g_strfreev (ctx->sms_paths);
|
||||||
sms_object_list_free (ctx->sms_objects);
|
sms_object_list_free (ctx->sms_objects);
|
||||||
@@ -331,32 +331,6 @@ create_next_sms (ListSmsContext *ctx)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
list_ready (MMModemMessaging *self,
|
|
||||||
GAsyncResult *res,
|
|
||||||
ListSmsContext *ctx)
|
|
||||||
{
|
|
||||||
GError *error = NULL;
|
|
||||||
|
|
||||||
mm_gdbus_modem_messaging_call_list_finish (MM_GDBUS_MODEM_MESSAGING (self), &ctx->sms_paths, res, &error);
|
|
||||||
if (error) {
|
|
||||||
g_simple_async_result_take_error (ctx->result, error);
|
|
||||||
list_sms_context_complete_and_free (ctx);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If no SMS, just end here. */
|
|
||||||
if (!ctx->sms_paths || !ctx->sms_paths[0]) {
|
|
||||||
g_simple_async_result_set_op_res_gpointer (ctx->result, NULL, NULL);
|
|
||||||
list_sms_context_complete_and_free (ctx);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Got list of paths. If at least one found, start creating objects for each */
|
|
||||||
ctx->i = 0;
|
|
||||||
create_next_sms (ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mm_modem_messaging_list:
|
* mm_modem_messaging_list:
|
||||||
* @self: A #MMModemMessaging.
|
* @self: A #MMModemMessaging.
|
||||||
@@ -390,10 +364,18 @@ mm_modem_messaging_list (MMModemMessaging *self,
|
|||||||
if (cancellable)
|
if (cancellable)
|
||||||
ctx->cancellable = g_object_ref (cancellable);
|
ctx->cancellable = g_object_ref (cancellable);
|
||||||
|
|
||||||
mm_gdbus_modem_messaging_call_list (MM_GDBUS_MODEM_MESSAGING (self),
|
ctx->sms_paths = mm_gdbus_modem_messaging_dup_messages (MM_GDBUS_MODEM_MESSAGING (self));
|
||||||
cancellable,
|
|
||||||
(GAsyncReadyCallback)list_ready,
|
/* If no SMS, just end here. */
|
||||||
ctx);
|
if (!ctx->sms_paths || !ctx->sms_paths[0]) {
|
||||||
|
g_simple_async_result_set_op_res_gpointer (ctx->result, NULL, NULL);
|
||||||
|
list_sms_context_complete_and_free (ctx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Got list of paths. If at least one found, start creating objects for each */
|
||||||
|
ctx->i = 0;
|
||||||
|
create_next_sms (ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -420,11 +402,7 @@ mm_modem_messaging_list_sync (MMModemMessaging *self,
|
|||||||
|
|
||||||
g_return_val_if_fail (MM_IS_MODEM_MESSAGING (self), NULL);
|
g_return_val_if_fail (MM_IS_MODEM_MESSAGING (self), NULL);
|
||||||
|
|
||||||
if (!mm_gdbus_modem_messaging_call_list_sync (MM_GDBUS_MODEM_MESSAGING (self),
|
sms_paths = mm_gdbus_modem_messaging_dup_messages (MM_GDBUS_MODEM_MESSAGING (self));
|
||||||
&sms_paths,
|
|
||||||
cancellable,
|
|
||||||
error))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* Only non-empty lists are returned */
|
/* Only non-empty lists are returned */
|
||||||
if (!sms_paths)
|
if (!sms_paths)
|
||||||
|
@@ -489,6 +489,17 @@ mm_iface_modem_messaging_is_storage_supported_for_receiving (MMIfaceModemMessagi
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_message_list (MmGdbusModemMessaging *skeleton,
|
||||||
|
MMSmsList *list)
|
||||||
|
{
|
||||||
|
gchar **paths;
|
||||||
|
|
||||||
|
paths = mm_sms_list_get_paths (list);
|
||||||
|
mm_gdbus_modem_messaging_set_messages (skeleton, (const gchar *const *)paths);
|
||||||
|
g_strfreev (paths);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sms_added (MMSmsList *list,
|
sms_added (MMSmsList *list,
|
||||||
const gchar *sms_path,
|
const gchar *sms_path,
|
||||||
@@ -498,6 +509,7 @@ sms_added (MMSmsList *list,
|
|||||||
mm_dbg ("Added %s SMS at '%s'",
|
mm_dbg ("Added %s SMS at '%s'",
|
||||||
received ? "received" : "local",
|
received ? "received" : "local",
|
||||||
sms_path);
|
sms_path);
|
||||||
|
update_message_list (skeleton, list);
|
||||||
mm_gdbus_modem_messaging_emit_added (skeleton, sms_path, received);
|
mm_gdbus_modem_messaging_emit_added (skeleton, sms_path, received);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,6 +519,7 @@ sms_deleted (MMSmsList *list,
|
|||||||
MmGdbusModemMessaging *skeleton)
|
MmGdbusModemMessaging *skeleton)
|
||||||
{
|
{
|
||||||
mm_dbg ("Deleted SMS at '%s'", sms_path);
|
mm_dbg ("Deleted SMS at '%s'", sms_path);
|
||||||
|
update_message_list (skeleton, list);
|
||||||
mm_gdbus_modem_messaging_emit_deleted (skeleton, sms_path);
|
mm_gdbus_modem_messaging_emit_deleted (skeleton, sms_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -225,6 +225,9 @@ mm_sms_list_add_sms (MMSmsList *self,
|
|||||||
MMSms *sms)
|
MMSms *sms)
|
||||||
{
|
{
|
||||||
self->priv->list = g_list_prepend (self->priv->list, g_object_ref (sms));
|
self->priv->list = g_list_prepend (self->priv->list, g_object_ref (sms));
|
||||||
|
g_signal_emit (self, signals[SIGNAL_ADDED], 0,
|
||||||
|
mm_sms_get_path (sms),
|
||||||
|
FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
Reference in New Issue
Block a user