diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-06 17:33:45 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-06 19:58:02 +0200 |
commit | b03985a019181511c5147e9ec54790a87e004e66 (patch) | |
tree | 6119a4ed33dd4f481501dc04c4e817d3f2443e37 | |
parent | 39e819788d9d6751a1b90be4dc1b400b7e6cbcc4 (diff) |
sms: user-created SMS objects will have either 'text' or 'data'
-rw-r--r-- | introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml | 3 | ||||
-rw-r--r-- | src/mm-sms.c | 14 |
2 files changed, 12 insertions, 5 deletions
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml b/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml index aef5063c..d16dc9cd 100644 --- a/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml +++ b/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml @@ -55,7 +55,8 @@ The '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Number">Number</link>' and - '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Text">Text</link>' + either '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Text">Text</link>' or + '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Data">Data</link>' properties are mandatory, others are optional. If the SMSC is not specified and one is required, the default SMSC is diff --git a/src/mm-sms.c b/src/mm-sms.c index f3f89871..d32b4aa4 100644 --- a/src/mm-sms.c +++ b/src/mm-sms.c @@ -982,14 +982,17 @@ assemble_sms (MMSms *self, return FALSE; } + /* When the user creates the SMS, it will have either 'text' or 'data', + * not both */ + parttext = mm_sms_part_get_text (sorted_parts[idx]); partdata = mm_sms_part_get_data (sorted_parts[idx]); - if (!parttext || !partdata) { + if (!parttext && !partdata) { g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, - "Cannot assemble SMS, part at index (%u) has no text or data", + "Cannot assemble SMS, part at index (%u) has neither text nor data", idx); g_string_free (fulltext, TRUE); g_byte_array_free (fulldata, TRUE); @@ -997,8 +1000,10 @@ assemble_sms (MMSms *self, return FALSE; } - g_string_append (fulltext, parttext); - g_byte_array_append (fulldata, partdata->data, partdata->len); + if (parttext) + g_string_append (fulltext, parttext); + if (partdata) + g_byte_array_append (fulldata, partdata->data, partdata->len); } /* If we got all parts, we also have the first one always */ @@ -1207,6 +1212,7 @@ mm_sms_new_from_properties (MMBaseModem *modem, part = mm_sms_part_new (SMS_PART_INVALID_INDEX); mm_sms_part_set_text (part, mm_sms_properties_get_text (properties)); + mm_sms_part_take_data (part, mm_sms_properties_get_data_bytearray (properties)); mm_sms_part_set_number (part, mm_sms_properties_get_number (properties)); mm_sms_part_set_smsc (part, mm_sms_properties_get_smsc (properties)); mm_sms_part_set_validity (part, mm_sms_properties_get_validity (properties)); |