tui: Enable/disable Wi-Fi and WWAN radios
This commit adds functionality to nmtui to enable or disable the Wi-Fi and WWAN radios. Additionally, it provides a display of the hardware status. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1655
This commit is contained in:

committed by
Fernando Fernandez Mancera

parent
dd561875dc
commit
b3b8323499
@@ -5200,6 +5200,8 @@ src_nmtui_nmtui_SOURCES = \
|
|||||||
src/nmtui/nmtui-edit.h \
|
src/nmtui/nmtui-edit.h \
|
||||||
src/nmtui/nmtui-hostname.c \
|
src/nmtui/nmtui-hostname.c \
|
||||||
src/nmtui/nmtui-hostname.h \
|
src/nmtui/nmtui-hostname.h \
|
||||||
|
src/nmtui/nmtui-radio.c \
|
||||||
|
src/nmtui/nmtui-radio.h \
|
||||||
\
|
\
|
||||||
src/nmtui/nm-editor-bindings.c \
|
src/nmtui/nm-editor-bindings.c \
|
||||||
src/nmtui/nm-editor-bindings.h \
|
src/nmtui/nm-editor-bindings.h \
|
||||||
|
@@ -47,6 +47,7 @@ executable(
|
|||||||
'nmtui-connect.c',
|
'nmtui-connect.c',
|
||||||
'nmtui-edit.c',
|
'nmtui-edit.c',
|
||||||
'nmtui-hostname.c',
|
'nmtui-hostname.c',
|
||||||
|
'nmtui-radio.c',
|
||||||
'nmt-utils.c',
|
'nmt-utils.c',
|
||||||
'nmt-widget-list.c',
|
'nmt-widget-list.c',
|
||||||
),
|
),
|
||||||
|
130
src/nmtui/nmtui-radio.c
Normal file
130
src/nmtui/nmtui-radio.c
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2023 Javier Sánchez Parra, javsanpar@riseup.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:nmtui-radio
|
||||||
|
* @short_description: radio-setting functionality
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libnm-client-aux-extern/nm-default-client.h"
|
||||||
|
|
||||||
|
#include "libnmt-newt/nmt-newt-toggle-button.h"
|
||||||
|
#include "libnmt-newt/nmt-newt-types.h"
|
||||||
|
#include "libnmt-newt/nmt-newt.h"
|
||||||
|
|
||||||
|
#include "nmtui.h"
|
||||||
|
#include "nmtui-radio.h"
|
||||||
|
#include "nmt-utils.h"
|
||||||
|
|
||||||
|
static void
|
||||||
|
nmtui_radio_toggle_wifi(GObject *object, gpointer radio_type)
|
||||||
|
{
|
||||||
|
NmtNewtToggleButton *button = NMT_NEWT_TOGGLE_BUTTON(object);
|
||||||
|
gboolean enable_flag;
|
||||||
|
|
||||||
|
enable_flag = nmt_newt_toggle_button_get_active(button);
|
||||||
|
nm_client_wireless_set_enabled(nm_client, enable_flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nmtui_radio_toggle_wwan(GObject *object, gpointer radio_type)
|
||||||
|
{
|
||||||
|
NmtNewtToggleButton *button = NMT_NEWT_TOGGLE_BUTTON(object);
|
||||||
|
gboolean enable_flag;
|
||||||
|
|
||||||
|
enable_flag = nmt_newt_toggle_button_get_active(button);
|
||||||
|
nm_client_wwan_set_enabled(nm_client, enable_flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nmtui_radio_run_dialog(void)
|
||||||
|
{
|
||||||
|
gs_unref_object NmtNewtForm *form = NULL;
|
||||||
|
NmtNewtToggleButton *toggle_wifi, *toggle_wwan;
|
||||||
|
NmtNewtButtonBox *bbox;
|
||||||
|
NmtNewtWidget *widget;
|
||||||
|
NmtNewtGrid *grid;
|
||||||
|
gboolean enable_flag;
|
||||||
|
|
||||||
|
form = g_object_new(NMT_TYPE_NEWT_FORM, "title", _("Set the radio switches status"), NULL);
|
||||||
|
|
||||||
|
widget = nmt_newt_grid_new();
|
||||||
|
nmt_newt_form_set_content(form, widget);
|
||||||
|
grid = NMT_NEWT_GRID(widget);
|
||||||
|
|
||||||
|
widget = nmt_newt_label_new(_("Wi-Fi"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 0, 0);
|
||||||
|
|
||||||
|
widget = nmt_newt_label_new(_("Hardware:"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 0, 1);
|
||||||
|
|
||||||
|
if (!(nm_client_get_radio_flags(nm_client) & NM_RADIO_FLAG_WLAN_AVAILABLE)) {
|
||||||
|
widget = nmt_newt_label_new(_("Missing"));
|
||||||
|
} else {
|
||||||
|
enable_flag = nm_client_wireless_hardware_get_enabled(nm_client);
|
||||||
|
widget = nmt_newt_label_new(enable_flag ? _("Enabled") : _("Disabled"));
|
||||||
|
}
|
||||||
|
nmt_newt_grid_add(grid, widget, 1, 1);
|
||||||
|
nmt_newt_widget_set_padding(widget, 1, 0, 0, 0);
|
||||||
|
|
||||||
|
widget = nmt_newt_label_new(_("Software:"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 2, 1);
|
||||||
|
nmt_newt_widget_set_padding(widget, 3, 0, 0, 0);
|
||||||
|
|
||||||
|
widget = nmt_newt_toggle_button_new(_("Enabled"), _("Disabled"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 3, 1);
|
||||||
|
nmt_newt_widget_set_padding(widget, 1, 0, 0, 0);
|
||||||
|
toggle_wifi = NMT_NEWT_TOGGLE_BUTTON(widget);
|
||||||
|
enable_flag = nm_client_wireless_get_enabled(nm_client);
|
||||||
|
nmt_newt_toggle_button_set_active(toggle_wifi, enable_flag);
|
||||||
|
g_signal_connect(widget, "activated", G_CALLBACK(nmtui_radio_toggle_wifi), NULL);
|
||||||
|
|
||||||
|
widget = nmt_newt_label_new(_("WWAN"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 0, 2);
|
||||||
|
nmt_newt_widget_set_padding(widget, 0, 1, 0, 0);
|
||||||
|
|
||||||
|
widget = nmt_newt_label_new(_("Hardware:"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 0, 3);
|
||||||
|
|
||||||
|
if (!(nm_client_get_radio_flags(nm_client) & NM_RADIO_FLAG_WWAN_AVAILABLE)) {
|
||||||
|
widget = nmt_newt_label_new(_("Missing"));
|
||||||
|
} else {
|
||||||
|
enable_flag = nm_client_wwan_hardware_get_enabled(nm_client);
|
||||||
|
widget = nmt_newt_label_new(enable_flag ? _("Enabled") : _("Disabled"));
|
||||||
|
}
|
||||||
|
nmt_newt_grid_add(grid, widget, 1, 3);
|
||||||
|
nmt_newt_widget_set_padding(widget, 1, 0, 0, 0);
|
||||||
|
|
||||||
|
widget = nmt_newt_label_new(_("Software:"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 2, 3);
|
||||||
|
nmt_newt_widget_set_padding(widget, 3, 0, 0, 0);
|
||||||
|
|
||||||
|
widget = nmt_newt_toggle_button_new(_("Enabled"), _("Disabled"));
|
||||||
|
nmt_newt_grid_add(grid, widget, 3, 3);
|
||||||
|
nmt_newt_widget_set_padding(widget, 1, 0, 0, 0);
|
||||||
|
toggle_wwan = NMT_NEWT_TOGGLE_BUTTON(widget);
|
||||||
|
enable_flag = nm_client_wwan_get_enabled(nm_client);
|
||||||
|
nmt_newt_toggle_button_set_active(toggle_wwan, enable_flag);
|
||||||
|
g_signal_connect(widget, "activated", G_CALLBACK(nmtui_radio_toggle_wwan), NULL);
|
||||||
|
|
||||||
|
widget = nmt_newt_button_box_new(NMT_NEWT_BUTTON_BOX_HORIZONTAL);
|
||||||
|
nmt_newt_grid_add(grid, widget, 3, 4);
|
||||||
|
nmt_newt_widget_set_padding(widget, 0, 1, 0, 0);
|
||||||
|
bbox = NMT_NEWT_BUTTON_BOX(widget);
|
||||||
|
|
||||||
|
widget = nmt_newt_button_box_add_end(bbox, _("Back"));
|
||||||
|
nmt_newt_widget_set_exit_on_activate(widget, TRUE);
|
||||||
|
|
||||||
|
nmt_newt_form_run_sync(form);
|
||||||
|
}
|
||||||
|
|
||||||
|
NmtNewtForm *
|
||||||
|
nmtui_radio(gboolean is_top, int argc, char **argv)
|
||||||
|
{
|
||||||
|
nmtui_radio_run_dialog();
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
11
src/nmtui/nmtui-radio.h
Normal file
11
src/nmtui/nmtui-radio.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2023 Javier Sánchez Parra, javsanpar@riseup.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef NMTUI_RADIO_H
|
||||||
|
#define NMTUI_RADIO_H
|
||||||
|
|
||||||
|
NmtNewtForm *nmtui_radio(gboolean is_top, int argc, char **argv);
|
||||||
|
|
||||||
|
#endif /* NMTUI_RADIO_H */
|
@@ -26,6 +26,7 @@
|
|||||||
#include "nmtui-edit.h"
|
#include "nmtui-edit.h"
|
||||||
#include "nmtui-connect.h"
|
#include "nmtui-connect.h"
|
||||||
#include "nmtui-hostname.h"
|
#include "nmtui-hostname.h"
|
||||||
|
#include "nmtui-radio.h"
|
||||||
|
|
||||||
NMClient *nm_client;
|
NMClient *nm_client;
|
||||||
static GMainLoop *loop;
|
static GMainLoop *loop;
|
||||||
@@ -39,7 +40,8 @@ static const struct {
|
|||||||
} subprograms[] = {
|
} subprograms[] = {
|
||||||
{"edit", "nmtui-edit", N_("connection"), N_("Edit a connection"), nmtui_edit},
|
{"edit", "nmtui-edit", N_("connection"), N_("Edit a connection"), nmtui_edit},
|
||||||
{"connect", "nmtui-connect", N_("connection"), N_("Activate a connection"), nmtui_connect},
|
{"connect", "nmtui-connect", N_("connection"), N_("Activate a connection"), nmtui_connect},
|
||||||
{"hostname", "nmtui-hostname", N_("new hostname"), N_("Set system hostname"), nmtui_hostname}};
|
{"hostname", "nmtui-hostname", N_("new hostname"), N_("Set system hostname"), nmtui_hostname},
|
||||||
|
{"radio", "nmtui-radio", N_("radio"), N_("Radio"), nmtui_radio}};
|
||||||
static const int num_subprograms = G_N_ELEMENTS(subprograms);
|
static const int num_subprograms = G_N_ELEMENTS(subprograms);
|
||||||
static NmtNewtForm *toplevel_form;
|
static NmtNewtForm *toplevel_form;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user