aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-10 14:31:16 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-14 07:05:23 +0200
commitf0e873b26e036f3a6374ac3859987403cfc01d52 (patch)
tree0b20f7fb605de5867c52d9596d228575c0ba753f
parent667026f0c829ba1be3d69726d7145b3ecd224dbd (diff)
cli: new `--store-in-storage' action to be able to select where to store the SMS
Expects the storage as the enum nickname string, e.g: "me" for MM_SMS_STORAGE_ME or "sm" for MM_SMS_STORAGE_SM
-rw-r--r--cli/mmcli-sms.c51
-rw-r--r--libmm-common/mm-common-helpers.c23
-rw-r--r--libmm-common/mm-common-helpers.h2
3 files changed, 73 insertions, 3 deletions
diff --git a/cli/mmcli-sms.c b/cli/mmcli-sms.c
index bc45a4a4..b3e2d66c 100644
--- a/cli/mmcli-sms.c
+++ b/cli/mmcli-sms.c
@@ -46,6 +46,7 @@ static Context *ctx;
static gboolean info_flag; /* set when no action found */
static gboolean send_flag;
static gboolean store_flag;
+static gchar *store_in_storage_str;
static GOptionEntry entries[] = {
{ "send", 0, 0, G_OPTION_ARG_NONE, &send_flag,
@@ -53,7 +54,11 @@ static GOptionEntry entries[] = {
NULL,
},
{ "store", 0, 0, G_OPTION_ARG_NONE, &store_flag,
- "Store the SMS in the device.",
+ "Store the SMS in the device, at the default storage",
+ NULL,
+ },
+ { "store-in-storage", 0, 0, G_OPTION_ARG_STRING, &store_in_storage_str,
+ "Store the SMS in the device, at the specified storage",
NULL,
},
{ NULL }
@@ -85,7 +90,8 @@ mmcli_sms_options_enabled (void)
return !!n_actions;
n_actions = (send_flag +
- store_flag);
+ store_flag +
+ !!store_in_storage_str);
if (n_actions == 0 && mmcli_get_common_sms_string ()) {
/* default to info */
@@ -245,6 +251,26 @@ get_sms_ready (GObject *source,
return;
}
+ /* Requesting to store the SMS in a specific storage? */
+ if (store_in_storage_str) {
+ MMSmsStorage storage;
+ GError *error = NULL;
+
+ storage = mm_common_get_sms_storage_from_string (store_in_storage_str, &error);
+ if (error) {
+ g_printerr ("error: couldn't store the SMS: '%s'\n",
+ error->message);
+ exit (EXIT_FAILURE);
+ }
+
+ mm_sms_store (ctx->sms,
+ storage,
+ ctx->cancellable,
+ (GAsyncReadyCallback)store_ready,
+ NULL);
+ return;
+ }
+
g_warn_if_reached ();
}
@@ -310,5 +336,26 @@ mmcli_sms_run_synchronous (GDBusConnection *connection)
return;
}
+ /* Requesting to store the SMS in a specific storage? */
+ if (store_in_storage_str) {
+ gboolean operation_result;
+ MMSmsStorage storage;
+ GError *error = NULL;
+
+ storage = mm_common_get_sms_storage_from_string (store_in_storage_str, &error);
+ if (error) {
+ g_printerr ("error: couldn't store the SMS: '%s'\n",
+ error->message);
+ exit (EXIT_FAILURE);
+ }
+
+ operation_result = mm_sms_store_sync (ctx->sms,
+ storage,
+ NULL,
+ &error);
+ store_process_reply (operation_result, error);
+ return;
+ }
+
g_warn_if_reached ();
}
diff --git a/libmm-common/mm-common-helpers.c b/libmm-common/mm-common-helpers.c
index 488c771e..1115cbe5 100644
--- a/libmm-common/mm-common-helpers.c
+++ b/libmm-common/mm-common-helpers.c
@@ -320,7 +320,6 @@ mm_common_get_rm_protocol_from_string (const gchar *str,
enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_MODEM_CDMA_RM_PROTOCOL));
-
for (i = 0; enum_class->values[i].value_nick; i++) {
if (!g_ascii_strcasecmp (str, enum_class->values[i].value_nick))
return enum_class->values[i].value;
@@ -356,6 +355,28 @@ mm_common_get_ip_type_from_string (const gchar *str,
return MM_BEARER_IP_FAMILY_UNKNOWN;
}
+MMSmsStorage
+mm_common_get_sms_storage_from_string (const gchar *str,
+ GError **error)
+{
+ GEnumClass *enum_class;
+ guint i;
+
+ enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_SMS_STORAGE));
+
+ for (i = 0; enum_class->values[i].value_nick; i++) {
+ if (!g_ascii_strcasecmp (str, enum_class->values[i].value_nick))
+ return enum_class->values[i].value;
+ }
+
+ g_set_error (error,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_INVALID_ARGS,
+ "Couldn't match '%s' with a valid MMSmsStorage value",
+ str);
+ return MM_SMS_STORAGE_UNKNOWN;
+}
+
GVariant *
mm_common_build_bands_unknown (void)
{
diff --git a/libmm-common/mm-common-helpers.h b/libmm-common/mm-common-helpers.h
index 13d5b505..b4fb3431 100644
--- a/libmm-common/mm-common-helpers.h
+++ b/libmm-common/mm-common-helpers.h
@@ -38,6 +38,8 @@ MMModemCdmaRmProtocol mm_common_get_rm_protocol_from_string (const gchar *str,
GError **error);
MMBearerIpFamily mm_common_get_ip_type_from_string (const gchar *str,
GError **error);
+MMSmsStorage mm_common_get_sms_storage_from_string (const gchar *str,
+ GError **error);
GArray *mm_common_bands_variant_to_garray (GVariant *variant);
MMModemBand *mm_common_bands_variant_to_array (GVariant *variant,