libnm-core: move detection of UTF-8 capable terminals to clients/
Having it in libnm doesn't make any sense and prevents using it for more internal functionality. Too bad nm_utils_wifi_strength_bars() is already a public API. No problem -- replace it with a compatible yet dumber equivalent.
This commit is contained in:
@@ -831,7 +831,7 @@ fill_output_access_point (gpointer data, gpointer user_data)
|
|||||||
strength_str = g_strdup_printf ("%u", strength);
|
strength_str = g_strdup_printf ("%u", strength);
|
||||||
wpa_flags_str = ap_wpa_rsn_flags_to_string (wpa_flags);
|
wpa_flags_str = ap_wpa_rsn_flags_to_string (wpa_flags);
|
||||||
rsn_flags_str = ap_wpa_rsn_flags_to_string (rsn_flags);
|
rsn_flags_str = ap_wpa_rsn_flags_to_string (rsn_flags);
|
||||||
sig_bars = nm_utils_wifi_strength_bars (strength);
|
sig_bars = nmc_wifi_strength_bars (strength);
|
||||||
|
|
||||||
security_str = g_string_new (NULL);
|
security_str = g_string_new (NULL);
|
||||||
|
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "nm-default.h"
|
#include "nm-default.h"
|
||||||
|
|
||||||
#include "nm-client-utils.h"
|
#include "nm-client-utils.h"
|
||||||
|
#include "nm-utils.h"
|
||||||
|
|
||||||
#include "nm-device-bond.h"
|
#include "nm-device-bond.h"
|
||||||
#include "nm-device-bridge.h"
|
#include "nm-device-bridge.h"
|
||||||
@@ -505,3 +506,58 @@ nmc_activation_get_effective_state (NMActiveConnection *active,
|
|||||||
|
|
||||||
return ac_state;
|
return ac_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
can_show_graphics (void)
|
||||||
|
{
|
||||||
|
static gboolean can_show_graphics_set = FALSE;
|
||||||
|
gboolean can_show_graphics = TRUE;
|
||||||
|
char *locale_str;
|
||||||
|
|
||||||
|
if (G_LIKELY (can_show_graphics_set))
|
||||||
|
return can_show_graphics;
|
||||||
|
|
||||||
|
if (!g_get_charset (NULL)) {
|
||||||
|
/* Non-UTF-8 locale */
|
||||||
|
locale_str = g_locale_from_utf8 ("\342\226\202\342\226\204\342\226\206\342\226\210", -1, NULL, NULL, NULL);
|
||||||
|
if (locale_str)
|
||||||
|
g_free (locale_str);
|
||||||
|
else
|
||||||
|
can_show_graphics = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The linux console font typically doesn't have characters we need */
|
||||||
|
if (g_strcmp0 (g_getenv ("TERM"), "linux") == 0)
|
||||||
|
can_show_graphics = FALSE;
|
||||||
|
|
||||||
|
return can_show_graphics;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nmc_wifi_strength_bars:
|
||||||
|
* @strength: the access point strength, from 0 to 100
|
||||||
|
*
|
||||||
|
* Converts @strength into a 4-character-wide graphical representation of
|
||||||
|
* strength suitable for printing to stdout. If the current locale and terminal
|
||||||
|
* support it, this will use unicode graphics characters to represent
|
||||||
|
* "bars". Otherwise it will use 0 to 4 asterisks.
|
||||||
|
*
|
||||||
|
* Returns: the graphical representation of the access point strength
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
nmc_wifi_strength_bars (guint8 strength)
|
||||||
|
{
|
||||||
|
if (!can_show_graphics ())
|
||||||
|
return nm_utils_wifi_strength_bars (strength);
|
||||||
|
|
||||||
|
if (strength > 80)
|
||||||
|
return /* ▂▄▆█ */ "\342\226\202\342\226\204\342\226\206\342\226\210";
|
||||||
|
else if (strength > 55)
|
||||||
|
return /* ▂▄▆_ */ "\342\226\202\342\226\204\342\226\206_";
|
||||||
|
else if (strength > 30)
|
||||||
|
return /* ▂▄__ */ "\342\226\202\342\226\204__";
|
||||||
|
else if (strength > 5)
|
||||||
|
return /* ▂___ */ "\342\226\202___";
|
||||||
|
else
|
||||||
|
return /* ____ */ "____";
|
||||||
|
}
|
||||||
|
@@ -54,4 +54,6 @@ NMActiveConnectionState nmc_activation_get_effective_state (NMActiveConnection *
|
|||||||
NMDevice *device,
|
NMDevice *device,
|
||||||
const char **reason);
|
const char **reason);
|
||||||
|
|
||||||
|
const char *nmc_wifi_strength_bars (guint8 strength);
|
||||||
|
|
||||||
#endif /* __NM_CLIENT_UTILS_H__ */
|
#endif /* __NM_CLIENT_UTILS_H__ */
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* Copyright 2013 Red Hat, Inc.
|
* Copyright 2013 - 2017 Red Hat, Inc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#include "nmtui.h"
|
#include "nmtui.h"
|
||||||
#include "nmt-connect-connection-list.h"
|
#include "nmt-connect-connection-list.h"
|
||||||
|
#include "nm-client-utils.h"
|
||||||
|
|
||||||
G_DEFINE_TYPE (NmtConnectConnectionList, nmt_connect_connection_list, NMT_TYPE_NEWT_LISTBOX)
|
G_DEFINE_TYPE (NmtConnectConnectionList, nmt_connect_connection_list, NMT_TYPE_NEWT_LISTBOX)
|
||||||
|
|
||||||
@@ -525,7 +526,7 @@ nmt_connect_connection_list_rebuild (NmtConnectConnectionList *list)
|
|||||||
if (nmtconn->ap) {
|
if (nmtconn->ap) {
|
||||||
guint8 strength = nm_access_point_get_strength (nmtconn->ap);
|
guint8 strength = nm_access_point_get_strength (nmtconn->ap);
|
||||||
|
|
||||||
strength_col = nm_utils_wifi_strength_bars (strength);
|
strength_col = nmc_wifi_strength_bars (strength);
|
||||||
} else
|
} else
|
||||||
strength_col = NULL;
|
strength_col = NULL;
|
||||||
|
|
||||||
|
@@ -3438,59 +3438,28 @@ nm_utils_wifi_5ghz_freqs (void)
|
|||||||
* @strength: the access point strength, from 0 to 100
|
* @strength: the access point strength, from 0 to 100
|
||||||
*
|
*
|
||||||
* Converts @strength into a 4-character-wide graphical representation of
|
* Converts @strength into a 4-character-wide graphical representation of
|
||||||
* strength suitable for printing to stdout. If the current locale and terminal
|
* strength suitable for printing to stdout.
|
||||||
* support it, this will use unicode graphics characters to represent
|
*
|
||||||
* "bars". Otherwise it will use 0 to 4 asterisks.
|
* Previous versions used to take a guess at the terminal type and possibly
|
||||||
|
* return a wide UTF-8 encoded string. Now it always returns a 7-bit
|
||||||
|
* clean strings of one to 0 to 4 asterisks. Users that actually need
|
||||||
|
* the functionality are encouraged to make their implementations instead.
|
||||||
*
|
*
|
||||||
* Returns: the graphical representation of the access point strength
|
* Returns: the graphical representation of the access point strength
|
||||||
*/
|
*/
|
||||||
const char *
|
const char *
|
||||||
nm_utils_wifi_strength_bars (guint8 strength)
|
nm_utils_wifi_strength_bars (guint8 strength)
|
||||||
{
|
{
|
||||||
static const char *strength_full, *strength_high, *strength_med, *strength_low, *strength_none;
|
|
||||||
|
|
||||||
if (G_UNLIKELY (strength_full == NULL)) {
|
|
||||||
gboolean can_show_graphics = TRUE;
|
|
||||||
char *locale_str;
|
|
||||||
|
|
||||||
if (!g_get_charset (NULL)) {
|
|
||||||
/* Non-UTF-8 locale */
|
|
||||||
locale_str = g_locale_from_utf8 ("\342\226\202\342\226\204\342\226\206\342\226\210", -1, NULL, NULL, NULL);
|
|
||||||
if (locale_str)
|
|
||||||
g_free (locale_str);
|
|
||||||
else
|
|
||||||
can_show_graphics = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The linux console font doesn't have these characters */
|
|
||||||
if (g_strcmp0 (g_getenv ("TERM"), "linux") == 0)
|
|
||||||
can_show_graphics = FALSE;
|
|
||||||
|
|
||||||
if (can_show_graphics) {
|
|
||||||
strength_full = /* ▂▄▆█ */ "\342\226\202\342\226\204\342\226\206\342\226\210";
|
|
||||||
strength_high = /* ▂▄▆_ */ "\342\226\202\342\226\204\342\226\206_";
|
|
||||||
strength_med = /* ▂▄__ */ "\342\226\202\342\226\204__";
|
|
||||||
strength_low = /* ▂___ */ "\342\226\202___";
|
|
||||||
strength_none = /* ____ */ "____";
|
|
||||||
} else {
|
|
||||||
strength_full = "****";
|
|
||||||
strength_high = "*** ";
|
|
||||||
strength_med = "** ";
|
|
||||||
strength_low = "* ";
|
|
||||||
strength_none = " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strength > 80)
|
if (strength > 80)
|
||||||
return strength_full;
|
return "****";
|
||||||
else if (strength > 55)
|
else if (strength > 55)
|
||||||
return strength_high;
|
return "*** ";
|
||||||
else if (strength > 30)
|
else if (strength > 30)
|
||||||
return strength_med;
|
return "** ";
|
||||||
else if (strength > 5)
|
else if (strength > 5)
|
||||||
return strength_low;
|
return "* ";
|
||||||
else
|
else
|
||||||
return strength_none;
|
return " ";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user