aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-06 17:33:45 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-06 19:58:02 +0200
commitb03985a019181511c5147e9ec54790a87e004e66 (patch)
tree6119a4ed33dd4f481501dc04c4e817d3f2443e37
parent39e819788d9d6751a1b90be4dc1b400b7e6cbcc4 (diff)
sms: user-created SMS objects will have either 'text' or 'data'
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml3
-rw-r--r--src/mm-sms.c14
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));