wwan-device: Fix network mode strings to be translatable

creating the mode strings by simply concating them
blindly can result in hard to translate strings.

Fixes #1446
This commit is contained in:
Mohammed Sadiq 2021-08-26 17:56:13 +05:30 committed by Georges Basile Stavracas Neto
parent 51500e38a8
commit 191a179612

View file

@ -974,14 +974,6 @@ cc_wwan_device_get_supported_modes (CcWwanDevice *self,
return TRUE; return TRUE;
} }
#define APPEND_MODE_TO_STRING(_str, _now, _preferred, _mode_str) do { \
if (_str->len > 0) \
g_string_append (_str, ", "); \
g_string_append (_str, _mode_str); \
if (_preferred == _now) \
g_string_append (_str, _(" (Preferred)")); \
} while (0)
gchar * gchar *
cc_wwan_device_get_string_from_mode (CcWwanDevice *self, cc_wwan_device_get_string_from_mode (CcWwanDevice *self,
MMModemMode allowed, MMModemMode allowed,
@ -992,26 +984,66 @@ cc_wwan_device_get_string_from_mode (CcWwanDevice *self,
g_return_val_if_fail (CC_IS_WWAN_DEVICE (self), NULL); g_return_val_if_fail (CC_IS_WWAN_DEVICE (self), NULL);
g_return_val_if_fail (allowed != 0, NULL); g_return_val_if_fail (allowed != 0, NULL);
if (allowed == MM_MODEM_MODE_2G)
return g_strdup (_("2G Only"));
if (allowed == MM_MODEM_MODE_3G)
return g_strdup (_("3G Only"));
if (allowed == MM_MODEM_MODE_4G)
return g_strdup (_("4G Only"));
str = g_string_sized_new (10); str = g_string_sized_new (10);
if (allowed & MM_MODEM_MODE_2G) if (allowed & MM_MODEM_MODE_2G &&
APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_2G, preferred, "2G"); allowed & MM_MODEM_MODE_3G &&
if (allowed & MM_MODEM_MODE_3G) allowed & MM_MODEM_MODE_4G)
APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_3G, preferred, "3G"); {
if (allowed & MM_MODEM_MODE_4G) if (preferred & MM_MODEM_MODE_4G)
APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_4G, preferred, "4G"); g_string_append (str, _("2G, 3G, 4G (Preferred)"));
else if (preferred & MM_MODEM_MODE_3G)
if (allowed == MM_MODEM_MODE_2G || g_string_append (str, _("2G, 3G (Preferred), 4G"));
allowed == MM_MODEM_MODE_3G || else if (preferred & MM_MODEM_MODE_2G)
allowed == MM_MODEM_MODE_4G) g_string_append (str, _("2G (Preferred), 3G, 4G"));
g_string_append (str, _(" Only"));
if (str->len == 0)
return g_string_free (str, TRUE);
else else
g_string_append (str, _("2G, 3G, 4G"));
}
else if (allowed & MM_MODEM_MODE_3G &&
allowed & MM_MODEM_MODE_4G)
{
if (preferred & MM_MODEM_MODE_4G)
g_string_append (str, _("3G, 4G (Preferred)"));
else if (preferred & MM_MODEM_MODE_3G)
g_string_append (str, _("3G (Preferred), 4G"));
else
g_string_append (str, _("3G, 4G"));
}
else if (allowed & MM_MODEM_MODE_2G &&
allowed & MM_MODEM_MODE_4G)
{
if (preferred & MM_MODEM_MODE_4G)
g_string_append (str, _("2G, 4G (Preferred)"));
else if (preferred & MM_MODEM_MODE_2G)
g_string_append (str, _("2G (Preferred), 4G"));
else
g_string_append (str, _("2G, 4G"));
}
else if (allowed & MM_MODEM_MODE_2G &&
allowed & MM_MODEM_MODE_3G)
{
if (preferred & MM_MODEM_MODE_3G)
g_string_append (str, _("2G, 3G (Preferred)"));
else if (preferred & MM_MODEM_MODE_2G)
g_string_append (str, _("2G (Preferred), 3G"));
else
g_string_append (str, _("2G, 3G"));
}
if (!str->len)
g_string_append (str, C_("Network mode", "Unknown"));
return g_string_free (str, FALSE); return g_string_free (str, FALSE);
} }
#undef APPEND_MODE_TO_STRING
static void static void
wwan_network_list_free (GList *network_list) wwan_network_list_free (GList *network_list)