diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-sms.c | 22 | ||||
-rw-r--r-- | src/mm-base-sms.h | 1 | ||||
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 6 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 5 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 6 | ||||
-rw-r--r-- | src/mm-iface-modem-messaging.c | 22 | ||||
-rw-r--r-- | src/mm-iface-modem-messaging.h | 2 | ||||
-rw-r--r-- | src/mm-sms-at.c | 5 | ||||
-rw-r--r-- | src/mm-sms-at.h | 5 | ||||
-rw-r--r-- | src/mm-sms-list.c | 15 | ||||
-rw-r--r-- | src/mm-sms-list.h | 3 | ||||
-rw-r--r-- | src/mm-sms-mbim.c | 5 | ||||
-rw-r--r-- | src/mm-sms-mbim.h | 5 | ||||
-rw-r--r-- | src/mm-sms-qmi.c | 5 | ||||
-rw-r--r-- | src/mm-sms-qmi.h | 5 |
15 files changed, 96 insertions, 16 deletions
diff --git a/src/mm-base-sms.c b/src/mm-base-sms.c index daf7fb67..07081aa3 100644 --- a/src/mm-base-sms.c +++ b/src/mm-base-sms.c @@ -55,6 +55,7 @@ enum { PROP_MAX_PARTS, PROP_MULTIPART_REFERENCE, PROP_IS_3GPP, + PROP_DEFAULT_STORAGE, PROP_LAST }; @@ -93,6 +94,8 @@ struct _MMBaseSmsPrivate { /* TRUE for 3GPP SMS; FALSE for CDMA */ gboolean is_3gpp; + + MMSmsStorage default_storage; }; /*****************************************************************************/ @@ -486,9 +489,7 @@ handle_store (MMBaseSms *self, if (ctx->storage == MM_SMS_STORAGE_UNKNOWN) { /* We'll set now the proper storage, taken from the default mem2 one */ - g_object_get (self->priv->modem, - MM_IFACE_MODEM_MESSAGING_SMS_DEFAULT_STORAGE, &ctx->storage, - NULL); + ctx->storage = self->priv->default_storage; g_assert (ctx->storage != MM_SMS_STORAGE_UNKNOWN); } @@ -1265,6 +1266,9 @@ set_property (GObject *object, case PROP_IS_3GPP: self->priv->is_3gpp = g_value_get_boolean (value); break; + case PROP_DEFAULT_STORAGE: + self->priv->default_storage = g_value_get_enum (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1304,6 +1308,9 @@ get_property (GObject *object, case PROP_IS_3GPP: g_value_set_boolean (value, self->priv->is_3gpp); break; + case PROP_DEFAULT_STORAGE: + g_value_set_enum (value, self->priv->default_storage); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1440,4 +1447,13 @@ mm_base_sms_class_init (MMBaseSmsClass *klass) FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (object_class, PROP_IS_3GPP, properties[PROP_IS_3GPP]); + + properties[PROP_DEFAULT_STORAGE] = + g_param_spec_enum (MM_BASE_SMS_DEFAULT_STORAGE, + "Default storage", + "Default SMS storage", + MM_TYPE_SMS_STORAGE, + MM_SMS_STORAGE_UNKNOWN, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_DEFAULT_STORAGE, properties[PROP_DEFAULT_STORAGE]); } diff --git a/src/mm-base-sms.h b/src/mm-base-sms.h index 22d25ebb..14902167 100644 --- a/src/mm-base-sms.h +++ b/src/mm-base-sms.h @@ -53,6 +53,7 @@ typedef struct _MMBaseSmsPrivate MMBaseSmsPrivate; #define MM_BASE_SMS_MAX_PARTS "sms-max-parts" #define MM_BASE_SMS_MULTIPART_REFERENCE "sms-multipart-reference" #define MM_BASE_SMS_IS_3GPP "sms-is-3gpp" +#define MM_BASE_SMS_DEFAULT_STORAGE "sms-default-storage" struct _MMBaseSms { MmGdbusSmsSkeleton parent; diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 91a18cb2..5d7e37be 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -9242,8 +9242,12 @@ enable_unsolicited_events_messaging (MMIfaceModemMessaging *_self, static MMBaseSms * messaging_create_sms (MMBroadbandModem *self) { + MMSmsStorage default_storage; + + default_storage = mm_iface_modem_messaging_get_default_storage (MM_IFACE_MODEM_MESSAGING (self)); return mm_sms_mbim_new (MM_BASE_MODEM (self), - mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))); + mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self)), + default_storage); } /*****************************************************************************/ diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 6caccc21..4f153009 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -8881,14 +8881,17 @@ static MMBaseSms * messaging_create_sms (MMBroadbandModem *_self) { MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self); + MMSmsStorage default_storage; /* Handle AT URC only fallback */ if (self->priv->messaging_fallback_at_only) { return MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_qmi_parent_class)->create_sms (_self); } + default_storage = mm_iface_modem_messaging_get_default_storage (MM_IFACE_MODEM_MESSAGING (self)); return mm_sms_qmi_new (MM_BASE_MODEM (self), - mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))); + mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self)), + default_storage); } diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index c29c9190..f164be01 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -8259,8 +8259,12 @@ mm_broadband_modem_create_sms (MMBroadbandModem *self) static MMBaseSms * modem_messaging_create_sms (MMBroadbandModem *self) { + MMSmsStorage default_storage; + + default_storage = mm_iface_modem_messaging_get_default_storage (MM_IFACE_MODEM_MESSAGING (self)); return mm_sms_at_new (MM_BASE_MODEM (self), - mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))); + mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self)), + default_storage); } /*****************************************************************************/ diff --git a/src/mm-iface-modem-messaging.c b/src/mm-iface-modem-messaging.c index 51c8b24e..941e58e0 100644 --- a/src/mm-iface-modem-messaging.c +++ b/src/mm-iface-modem-messaging.c @@ -433,7 +433,8 @@ handle_set_default_storage_ready (MMIfaceModemMessaging *self, GAsyncResult *res, HandleSetDefaultStorageContext *ctx) { - GError *error = NULL; + GError *error = NULL; + g_autoptr(MMSmsList) list = NULL; if (!MM_IFACE_MODEM_MESSAGING_GET_IFACE (self)->set_default_storage_finish (self, res, &error)) { mm_obj_warn (self, "could not set default storage: %s", error->message); @@ -446,6 +447,13 @@ handle_set_default_storage_ready (MMIfaceModemMessaging *self, MM_IFACE_MODEM_MESSAGING_SMS_DEFAULT_STORAGE, ctx->storage, NULL); + /* Update default storage in all SMSs too */ + g_object_get (self, + MM_IFACE_MODEM_MESSAGING_SMS_LIST, &list, + NULL); + if (list) + mm_sms_list_set_default_storage (list, ctx->storage); + mm_obj_info (self, "set the default storage successfully"); mm_gdbus_modem_messaging_complete_set_default_storage (ctx->skeleton, ctx->invocation); handle_set_default_storage_context_free (ctx); @@ -598,6 +606,18 @@ mm_iface_modem_messaging_is_storage_supported_for_receiving (MMIfaceModemMessagi error); } +MMSmsStorage +mm_iface_modem_messaging_get_default_storage (MMIfaceModemMessaging *self) +{ + MMSmsStorage storage = MM_SMS_STORAGE_UNKNOWN; + + g_object_get (self, + MM_IFACE_MODEM_MESSAGING_SMS_DEFAULT_STORAGE, &storage, + NULL); + g_assert (storage != MM_SMS_STORAGE_UNKNOWN); + return storage; +} + /*****************************************************************************/ static void diff --git a/src/mm-iface-modem-messaging.h b/src/mm-iface-modem-messaging.h index f62324c9..d7f29b6d 100644 --- a/src/mm-iface-modem-messaging.h +++ b/src/mm-iface-modem-messaging.h @@ -193,6 +193,8 @@ gboolean mm_iface_modem_messaging_is_storage_supported_for_receiving (MMIfaceMod MMSmsStorage storage, GError **error); +MMSmsStorage mm_iface_modem_messaging_get_default_storage (MMIfaceModemMessaging *self); + /* SMS creation */ MMBaseSms *mm_iface_modem_messaging_create_sms (MMIfaceModemMessaging *self); diff --git a/src/mm-sms-at.c b/src/mm-sms-at.c index 3fc7c155..b79a95ab 100644 --- a/src/mm-sms-at.c +++ b/src/mm-sms-at.c @@ -788,13 +788,16 @@ sms_delete (MMBaseSms *sms, /*****************************************************************************/ MMBaseSms * -mm_sms_at_new (MMBaseModem *modem, gboolean is_3gpp) +mm_sms_at_new (MMBaseModem *modem, + gboolean is_3gpp, + MMSmsStorage default_storage) { MMBaseSms *sms; sms = MM_BASE_SMS (g_object_new (MM_TYPE_SMS_AT, MM_BASE_SMS_MODEM, modem, MM_BASE_SMS_IS_3GPP, is_3gpp, + MM_BASE_SMS_DEFAULT_STORAGE, default_storage, NULL)); MM_SMS_AT (sms)->priv->modem = g_object_ref (modem); return sms; diff --git a/src/mm-sms-at.h b/src/mm-sms-at.h index 26e2dae4..551d50eb 100644 --- a/src/mm-sms-at.h +++ b/src/mm-sms-at.h @@ -53,7 +53,8 @@ struct _MMSmsAtClass { GType mm_sms_at_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSmsAt, g_object_unref) -MMBaseSms *mm_sms_at_new (MMBaseModem *modem, - gboolean is_3gpp); +MMBaseSms *mm_sms_at_new (MMBaseModem *modem, + gboolean is_3gpp, + MMSmsStorage default_storage); #endif /* MM_SMS_AT_H */ diff --git a/src/mm-sms-list.c b/src/mm-sms-list.c index 21515aa5..69c62153 100644 --- a/src/mm-sms-list.c +++ b/src/mm-sms-list.c @@ -394,6 +394,21 @@ mm_sms_list_take_part (MMSmsList *self, /*****************************************************************************/ +void +mm_sms_list_set_default_storage (MMSmsList *self, + MMSmsStorage default_storage) +{ + GList *l; + + for (l = self->priv->list; l; l = g_list_next (l)) { + g_object_set (MM_BASE_SMS (l->data), + MM_BASE_SMS_DEFAULT_STORAGE, default_storage, + NULL); + } +} + +/*****************************************************************************/ + static gchar * log_object_build_id (MMLogObject *_self) { diff --git a/src/mm-sms-list.h b/src/mm-sms-list.h index e8503a22..53fa63f0 100644 --- a/src/mm-sms-list.h +++ b/src/mm-sms-list.h @@ -89,4 +89,7 @@ gboolean mm_sms_list_has_local_multipart_reference (MMSmsList *self, const gchar *number, guint8 reference); +void mm_sms_list_set_default_storage (MMSmsList *self, + MMSmsStorage default_storage); + #endif /* MM_SMS_LIST_H */ diff --git a/src/mm-sms-mbim.c b/src/mm-sms-mbim.c index 1cb442d6..7b3edb84 100644 --- a/src/mm-sms-mbim.c +++ b/src/mm-sms-mbim.c @@ -332,12 +332,15 @@ sms_delete (MMBaseSms *self, /*****************************************************************************/ MMBaseSms * -mm_sms_mbim_new (MMBaseModem *modem, gboolean is_3gpp) +mm_sms_mbim_new (MMBaseModem *modem, + gboolean is_3gpp, + MMSmsStorage default_storage) { return MM_BASE_SMS (g_object_new (MM_TYPE_SMS_MBIM, MM_BASE_SMS_MODEM, modem, MM_BIND_TO, G_OBJECT (modem), MM_BASE_SMS_IS_3GPP, is_3gpp, + MM_BASE_SMS_DEFAULT_STORAGE, default_storage, NULL)); } diff --git a/src/mm-sms-mbim.h b/src/mm-sms-mbim.h index 070ff677..7877c3f1 100644 --- a/src/mm-sms-mbim.h +++ b/src/mm-sms-mbim.h @@ -45,7 +45,8 @@ struct _MMSmsMbimClass { GType mm_sms_mbim_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSmsMbim, g_object_unref) -MMBaseSms *mm_sms_mbim_new (MMBaseModem *modem, - gboolean is_3gpp); +MMBaseSms *mm_sms_mbim_new (MMBaseModem *modem, + gboolean is_3gpp, + MMSmsStorage default_storage); #endif /* MM_SMS_MBIM_H */ diff --git a/src/mm-sms-qmi.c b/src/mm-sms-qmi.c index aa5101ee..ebd8f845 100644 --- a/src/mm-sms-qmi.c +++ b/src/mm-sms-qmi.c @@ -786,12 +786,15 @@ sms_delete (MMBaseSms *self, /*****************************************************************************/ MMBaseSms * -mm_sms_qmi_new (MMBaseModem *modem, gboolean is_3gpp) +mm_sms_qmi_new (MMBaseModem *modem, + gboolean is_3gpp, + MMSmsStorage default_storage) { return MM_BASE_SMS (g_object_new (MM_TYPE_SMS_QMI, MM_BASE_SMS_MODEM, modem, MM_BIND_TO, G_OBJECT (modem), MM_BASE_SMS_IS_3GPP, is_3gpp, + MM_BASE_SMS_DEFAULT_STORAGE, default_storage, NULL)); } diff --git a/src/mm-sms-qmi.h b/src/mm-sms-qmi.h index 250e406e..1dda2a95 100644 --- a/src/mm-sms-qmi.h +++ b/src/mm-sms-qmi.h @@ -47,7 +47,8 @@ struct _MMSmsQmiClass { GType mm_sms_qmi_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSmsQmi, g_object_unref) -MMBaseSms *mm_sms_qmi_new (MMBaseModem *modem, - gboolean is_3gpp); +MMBaseSms *mm_sms_qmi_new (MMBaseModem *modem, + gboolean is_3gpp, + MMSmsStorage default_storage); #endif /* MM_SMS_QMI_H */ |