aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib/mm-sms.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmm-glib/mm-sms.c')
-rw-r--r--libmm-glib/mm-sms.c59
1 files changed, 53 insertions, 6 deletions
diff --git a/libmm-glib/mm-sms.c b/libmm-glib/mm-sms.c
index 3a0bd5f5..a69b5dc7 100644
--- a/libmm-glib/mm-sms.c
+++ b/libmm-glib/mm-sms.c
@@ -375,19 +375,66 @@ mm_sms_dup_discharge_timestamp (MMSms *self)
/*****************************************************************************/
/**
- * mm_sms_get_validity:
+ * mm_sms_get_validity_type:
* @self: A #MMSms.
*
- * Gets the validity time of the SMS.
+ * Gets the type of validity information in the SMS.
*
- * Returns: the validity time or 0 if unknown.
+ * Returns: the validity type or #MM_SMS_VALIDITY_TYPE_UNKNOWN.
+ */
+MMSmsValidityType
+mm_sms_get_validity_type (MMSms *self)
+{
+ GVariant *variant;
+ guint type;
+ GVariant *value;
+
+ g_return_val_if_fail (MM_IS_SMS (self), MM_SMS_VALIDITY_TYPE_UNKNOWN);
+
+ variant = mm_gdbus_sms_dup_validity (MM_GDBUS_SMS (self));
+ if (!variant)
+ return MM_SMS_VALIDITY_TYPE_UNKNOWN;
+
+ g_variant_get (variant, "(uv)", &type, &value);
+ g_variant_unref (variant);
+ g_variant_unref (value);
+
+ return (MMSmsValidityType)type;
+}
+
+/**
+ * mm_sms_get_validity_relative:
+ * @self: A #MMSms.
+ *
+ * Gets the length of the validity period, in minutes.
+ *
+ * Only applicable if the type of validity is #MM_SMS_VALIDITY_TYPE_RELATIVE.
+ *
+ * Returns: the length of the validity period, or 0 if unknown.
*/
guint
-mm_sms_get_validity (MMSms *self)
+mm_sms_get_validity_relative (MMSms *self)
{
- g_return_val_if_fail (MM_IS_SMS (self), 0);
+ GVariant *variant;
+ guint type;
+ GVariant *value;
+ guint value_integer = 0;
+
+ g_return_val_if_fail (MM_IS_SMS (self), MM_SMS_VALIDITY_TYPE_UNKNOWN);
+
+ variant = mm_gdbus_sms_dup_validity (MM_GDBUS_SMS (self));
+ if (!variant)
+ return 0;
+
+ g_variant_get (variant, "(uv)", &type, &value);
+
+ if (type == MM_SMS_VALIDITY_TYPE_RELATIVE)
+ value_integer = g_variant_get_uint32 (value);
+
+ g_variant_unref (variant);
+ g_variant_unref (value);
- return mm_gdbus_sms_get_validity (MM_GDBUS_SMS (self));
+ return value_integer;
}
/*****************************************************************************/