summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-10-31 16:15:48 -0400
committerDan Winship <danw@redhat.com>2014-11-21 09:01:01 -0500
commit5f6b0be525d2d61fae207a4d5be79c44d396b412 (patch)
tree1ff2783fb2f1d40363b482b15c20d695d3a0f295
parent2afb1acb2d23f695266d1586c1320b59fff58134 (diff)
downloadNetworkManager-5f6b0be525d2d61fae207a4d5be79c44d396b412.tar.gz
tui: simplify DSL page handling
Rather than having NmtEditor need to know that DSL requires a DSL page, and Ethernet page, and a PPP page, just have the DSL page itself return multiple sections.
-rw-r--r--clients/tui/nmt-editor.c24
-rw-r--r--clients/tui/nmt-page-dsl.c73
-rw-r--r--clients/tui/nmt-page-dsl.h9
3 files changed, 76 insertions, 30 deletions
diff --git a/clients/tui/nmt-editor.c b/clients/tui/nmt-editor.c
index a6b0a60c22..1dbc4f84dc 100644
--- a/clients/tui/nmt-editor.c
+++ b/clients/tui/nmt-editor.c
@@ -299,6 +299,7 @@ nmt_editor_constructed (GObject *object)
NmtDeviceEntry *deventry;
GType hardware_type;
const char *slave_type;
+ NmtEditorPage *page;
if (G_OBJECT_CLASS (nmt_editor_parent_class)->constructed)
G_OBJECT_CLASS (nmt_editor_parent_class)->constructed (object);
@@ -345,24 +346,23 @@ nmt_editor_constructed (GObject *object)
/* Now add the various pages... */
if (nm_connection_is_type (priv->edit_connection, NM_SETTING_BOND_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_bond_new (priv->edit_connection, deventry));
+ page = nmt_page_bond_new (priv->edit_connection, deventry);
else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_BRIDGE_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_bridge_new (priv->edit_connection, deventry));
+ page = nmt_page_bridge_new (priv->edit_connection, deventry);
else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_INFINIBAND_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_infiniband_new (priv->edit_connection, deventry));
- else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_PPPOE_SETTING_NAME)) {
- add_sections_for_page (editor, grid, nmt_page_dsl_new (priv->edit_connection));
- add_sections_for_page (editor, grid, nmt_page_ethernet_new (priv->edit_connection, deventry));
- add_sections_for_page (editor, grid, nmt_page_ppp_new (priv->edit_connection));
- } else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_TEAM_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_team_new (priv->edit_connection, deventry));
+ page = nmt_page_infiniband_new (priv->edit_connection, deventry);
+ else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_PPPOE_SETTING_NAME))
+ page = nmt_page_dsl_new (priv->edit_connection, deventry);
+ else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_TEAM_SETTING_NAME))
+ page = nmt_page_team_new (priv->edit_connection, deventry);
else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_VLAN_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_vlan_new (priv->edit_connection, deventry));
+ page = nmt_page_vlan_new (priv->edit_connection, deventry);
else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_WIRED_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_ethernet_new (priv->edit_connection, deventry));
+ page = nmt_page_ethernet_new (priv->edit_connection, deventry);
else if (nm_connection_is_type (priv->edit_connection, NM_SETTING_WIRELESS_SETTING_NAME))
- add_sections_for_page (editor, grid, nmt_page_wifi_new (priv->edit_connection, deventry));
+ page = nmt_page_wifi_new (priv->edit_connection, deventry);
+ add_sections_for_page (editor, grid, page);
nmt_editor_grid_append (grid, NULL, nmt_newt_separator_new (), NULL);
slave_type = nm_setting_connection_get_slave_type (s_con);
diff --git a/clients/tui/nmt-page-dsl.c b/clients/tui/nmt-page-dsl.c
index d1d33969c5..e8894d1ad9 100644
--- a/clients/tui/nmt-page-dsl.c
+++ b/clients/tui/nmt-page-dsl.c
@@ -27,15 +27,26 @@
#include <glib/gi18n-lib.h>
#include "nmt-page-dsl.h"
+#include "nmt-page-ethernet.h"
+#include "nmt-page-ppp.h"
#include "nmt-password-fields.h"
-G_DEFINE_TYPE (NmtPageDsl, nmt_page_dsl, NMT_TYPE_EDITOR_PAGE)
+G_DEFINE_TYPE (NmtPageDsl, nmt_page_dsl, NMT_TYPE_EDITOR_PAGE_DEVICE)
+
+#define NMT_PAGE_DSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NMT_TYPE_PAGE_DSL, NmtPageDslPrivate))
+
+typedef struct {
+ NmtEditorPage *ethernet_page, *ppp_page;
+
+} NmtPageDslPrivate;
NmtEditorPage *
-nmt_page_dsl_new (NMConnection *conn)
+nmt_page_dsl_new (NMConnection *conn,
+ NmtDeviceEntry *deventry)
{
return g_object_new (NMT_TYPE_PAGE_DSL,
"connection", conn,
+ "device-entry", deventry,
NULL);
}
@@ -44,22 +55,12 @@ nmt_page_dsl_init (NmtPageDsl *dsl)
{
}
-static void
-nmt_page_dsl_constructed (GObject *object)
+static NmtEditorSection *
+build_dsl_section (NmtPageDsl *dsl, NMSettingPppoe *s_pppoe)
{
- NmtPageDsl *dsl = NMT_PAGE_DSL (object);
NmtEditorSection *section;
NmtEditorGrid *grid;
- NMSettingPppoe *s_pppoe;
NmtNewtWidget *widget;
- NMConnection *conn;
-
- conn = nmt_editor_page_get_connection (NMT_EDITOR_PAGE (dsl));
- s_pppoe = nm_connection_get_setting_pppoe (conn);
- if (!s_pppoe) {
- nm_connection_add_setting (conn, nm_setting_pppoe_new ());
- s_pppoe = nm_connection_get_setting_pppoe (conn);
- }
section = nmt_editor_section_new (_("DSL"), NULL, TRUE);
grid = nmt_editor_section_get_body (section);
@@ -82,15 +83,59 @@ nmt_page_dsl_constructed (GObject *object)
widget, "text",
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
+ return section;
+}
+
+static void
+nmt_page_dsl_constructed (GObject *object)
+{
+ NmtPageDsl *dsl = NMT_PAGE_DSL (object);
+ NmtPageDslPrivate *priv = NMT_PAGE_DSL_GET_PRIVATE (dsl);
+ NMConnection *conn;
+ NMSettingPppoe *s_pppoe;
+ NmtEditorSection *section;
+ const GSList *sections, *iter;
+
+ conn = nmt_editor_page_get_connection (NMT_EDITOR_PAGE (dsl));
+ s_pppoe = nm_connection_get_setting_pppoe (conn);
+ if (!s_pppoe) {
+ nm_connection_add_setting (conn, nm_setting_pppoe_new ());
+ s_pppoe = nm_connection_get_setting_pppoe (conn);
+ }
+
+ section = build_dsl_section (dsl, s_pppoe);
nmt_editor_page_add_section (NMT_EDITOR_PAGE (dsl), section);
+ priv->ethernet_page = nmt_page_ethernet_new (conn, nmt_editor_page_device_get_device_entry (NMT_EDITOR_PAGE_DEVICE (dsl)));
+ sections = nmt_editor_page_get_sections (priv->ethernet_page);
+ for (iter = sections; iter; iter = iter->next)
+ nmt_editor_page_add_section (NMT_EDITOR_PAGE (dsl), iter->data);
+
+ priv->ppp_page = nmt_page_ppp_new (conn);
+ sections = nmt_editor_page_get_sections (priv->ppp_page);
+ for (iter = sections; iter; iter = iter->next)
+ nmt_editor_page_add_section (NMT_EDITOR_PAGE (dsl), iter->data);
+
G_OBJECT_CLASS (nmt_page_dsl_parent_class)->constructed (object);
}
static void
+nmt_page_dsl_finalize (GObject *object)
+{
+ NmtPageDsl *dsl = NMT_PAGE_DSL (object);
+ NmtPageDslPrivate *priv = NMT_PAGE_DSL_GET_PRIVATE (dsl);
+
+ g_clear_object (&priv->ethernet_page);
+ g_clear_object (&priv->ppp_page);
+
+ G_OBJECT_CLASS (nmt_page_dsl_parent_class)->finalize (object);
+}
+
+static void
nmt_page_dsl_class_init (NmtPageDslClass *dsl_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (dsl_class);
object_class->constructed = nmt_page_dsl_constructed;
+ object_class->finalize = nmt_page_dsl_finalize;
}
diff --git a/clients/tui/nmt-page-dsl.h b/clients/tui/nmt-page-dsl.h
index 7a27fd0a07..b938ead238 100644
--- a/clients/tui/nmt-page-dsl.h
+++ b/clients/tui/nmt-page-dsl.h
@@ -19,7 +19,7 @@
#ifndef NMT_PAGE_DSL_H
#define NMT_PAGE_DSL_H
-#include "nmt-editor-page.h"
+#include "nmt-editor-page-device.h"
G_BEGIN_DECLS
@@ -31,18 +31,19 @@ G_BEGIN_DECLS
#define NMT_PAGE_DSL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NMT_TYPE_PAGE_DSL, NmtPageDslClass))
typedef struct {
- NmtEditorPage parent;
+ NmtEditorPageDevice parent;
} NmtPageDsl;
typedef struct {
- NmtEditorPageClass parent;
+ NmtEditorPageDeviceClass parent;
} NmtPageDslClass;
GType nmt_page_dsl_get_type (void);
-NmtEditorPage *nmt_page_dsl_new (NMConnection *conn);
+NmtEditorPage *nmt_page_dsl_new (NMConnection *conn,
+ NmtDeviceEntry *deventry);
G_END_DECLS