aboutsummaryrefslogtreecommitdiff
path: root/src/mm-sms-list.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-02-01 22:30:20 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:15:00 +0100
commit1eb7f60e4cee9295980d14de7d586a0bca24e869 (patch)
tree6ff11326efea8c966da0f97ad4b181ceb46c567d /src/mm-sms-list.c
parent6f103c136660eee618d6b38c69d3ba91e3b41921 (diff)
sms: assemble and export the SMS when its completed
Diffstat (limited to 'src/mm-sms-list.c')
-rw-r--r--src/mm-sms-list.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/mm-sms-list.c b/src/mm-sms-list.c
index 6b1082d6..dd709b66 100644
--- a/src/mm-sms-list.c
+++ b/src/mm-sms-list.c
@@ -184,12 +184,21 @@ take_singlepart (MMSmsList *self,
gboolean received)
{
MMSms *sms;
+ GError *error = NULL;
- sms = mm_sms_new (self->priv->modem, part);
- self->priv->list = g_list_prepend (self->priv->list, sms);
- g_signal_emit (self, signals[SIGNAL_ADDED], 0,
- mm_sms_get_path (sms),
- received);
+ sms = mm_sms_new (self->priv->modem,
+ received,
+ part,
+ &error);
+ if (!sms) {
+ mm_warn ("Couldn't create single-part SMS: '%s'", error->message);
+ g_error_free (error);
+ } else {
+ self->priv->list = g_list_prepend (self->priv->list, sms);
+ g_signal_emit (self, signals[SIGNAL_ADDED], 0,
+ mm_sms_get_path (sms),
+ received);
+ }
}
static gboolean
@@ -214,15 +223,23 @@ take_multipart (MMSmsList *self,
} else {
/* Create new Multipart */
sms = mm_sms_multipart_new (self->priv->modem,
+ received,
concat_reference,
mm_sms_part_get_concat_max (part),
- part);
+ part,
+ error);
+ if (!sms)
+ return FALSE;
+
self->priv->list = g_list_prepend (self->priv->list, sms);
- g_signal_emit (self, signals[SIGNAL_ADDED], 0,
- mm_sms_get_path (sms),
- received);
}
+ /* Check if completed and assembled */
+ if (mm_sms_multipart_is_complete (sms) &&
+ mm_sms_multipart_is_assembled (sms))
+ g_signal_emit (self, signals[SIGNAL_ADDED], 0,
+ mm_sms_get_path (sms));
+
return TRUE;
}