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.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/mm-sms-list.c b/src/mm-sms-list.c
index 393101ba..a34bd679 100644
--- a/src/mm-sms-list.c
+++ b/src/mm-sms-list.c
@@ -54,6 +54,35 @@ struct _MMSmsListPrivate {
/*****************************************************************************/
+gboolean
+mm_sms_list_has_local_multipart_reference (MMSmsList *self,
+ const gchar *number,
+ guint8 reference)
+{
+ GList *l;
+
+ /* No one should look for multipart reference 0, which isn't valid */
+ g_assert (reference != 0);
+
+ for (l = self->priv->list; l; l = g_list_next (l)) {
+ MMSms *sms = MM_SMS (l->data);
+
+ if (mm_sms_is_multipart (sms) &&
+ mm_gdbus_sms_get_pdu_type (MM_GDBUS_SMS (sms)) == MM_SMS_PDU_TYPE_SUBMIT &&
+ mm_sms_get_storage (sms) != MM_SMS_STORAGE_UNKNOWN &&
+ mm_sms_get_multipart_reference (sms) == reference &&
+ g_str_equal (mm_gdbus_sms_get_number (MM_GDBUS_SMS (sms)), number)) {
+ /* Yes, the SMS list has an SMS with the same destination number
+ * and multipart reference */
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+/*****************************************************************************/
+
guint
mm_sms_list_get_count (MMSmsList *self)
{