summaryrefslogtreecommitdiff
path: root/panels
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2016-11-09 12:30:13 -0200
committerDebarshi Ray <debarshir@gnome.org>2016-11-30 17:16:35 +0100
commit902ab4e44897b149f85607a1cc4c6259eddef4e1 (patch)
tree7d2c9461cc2ab2feaddac8d08e1805fde391e09e /panels
parente5208a397a923e4f42dba423a83dd79d9b24c9d5 (diff)
downloadgnome-control-center-902ab4e44897b149f85607a1cc4c6259eddef4e1.tar.gz
online-accounts: Turn into a template class
https://bugzilla.gnome.org/show_bug.cgi?id=774222
Diffstat (limited to 'panels')
-rw-r--r--panels/online-accounts/cc-online-accounts-panel.c78
-rw-r--r--panels/online-accounts/online-accounts.ui26
2 files changed, 45 insertions, 59 deletions
diff --git a/panels/online-accounts/cc-online-accounts-panel.c b/panels/online-accounts/cc-online-accounts-panel.c
index 47cf97e6f..502ef9483 100644
--- a/panels/online-accounts/cc-online-accounts-panel.c
+++ b/panels/online-accounts/cc-online-accounts-panel.c
@@ -39,12 +39,14 @@ struct _CcGoaPanel
{
CcPanel parent_instance;
- GtkBuilder *builder;
-
GoaClient *client;
GoaPanelAccountsModel *accounts_model;
+ GtkWidget *accounts_notebook;
+ GtkWidget *accounts_tree_box;
+ GtkWidget *accounts_tree_label;
+ GtkWidget *add_account_button;
GtkWidget *toolbar;
GtkWidget *toolbar_add_button;
GtkWidget *toolbar_remove_button;
@@ -185,7 +187,6 @@ cc_goa_panel_finalize (GObject *object)
g_clear_object (&panel->accounts_model);
g_clear_object (&panel->client);
- g_clear_object (&panel->builder);
G_OBJECT_CLASS (cc_goa_panel_parent_class)->finalize (object);
}
@@ -193,8 +194,6 @@ cc_goa_panel_finalize (GObject *object)
static void
cc_goa_panel_init (CcGoaPanel *panel)
{
- GtkWidget *button;
- GtkWidget *w;
GError *error;
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
@@ -202,22 +201,11 @@ cc_goa_panel_init (CcGoaPanel *panel)
GNetworkMonitor *monitor;
g_resources_register (cc_online_accounts_get_resource ());
- monitor = g_network_monitor_get_default();
- panel->builder = gtk_builder_new ();
- error = NULL;
- if (gtk_builder_add_from_resource (panel->builder,
- "/org/gnome/control-center/online-accounts/online-accounts.ui",
- &error) == 0)
- {
- g_warning ("Error loading UI file: %s (%s, %d)",
- error->message, g_quark_to_string (error->domain), error->code);
- g_error_free (error);
- goto out;
- }
+ gtk_widget_init_template (GTK_WIDGET (panel));
+
+ monitor = g_network_monitor_get_default();
- panel->toolbar = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-toolbar"));
- panel->toolbar_add_button = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-toolbutton-add"));
g_object_bind_property (monitor, "network-available",
panel->toolbar_add_button, "sensitive",
G_BINDING_SYNC_CREATE);
@@ -225,29 +213,24 @@ cc_goa_panel_init (CcGoaPanel *panel)
"clicked",
G_CALLBACK (on_toolbar_add_button_clicked),
panel);
- panel->toolbar_remove_button = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-toolbutton-remove"));
g_signal_connect (panel->toolbar_remove_button,
"clicked",
G_CALLBACK (on_toolbar_remove_button_clicked),
panel);
- panel->accounts_treeview = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-treeview"));
g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (panel->accounts_treeview)),
"changed",
G_CALLBACK (on_tree_view_selection_changed),
panel);
- button = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-button-add"));
g_object_bind_property (monitor, "network-available",
- button, "sensitive",
+ panel->add_account_button, "sensitive",
G_BINDING_SYNC_CREATE);
- g_signal_connect (button,
+ g_signal_connect (panel->add_account_button,
"clicked",
G_CALLBACK (on_add_button_clicked),
panel);
- panel->accounts_vbox = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-vbox"));
-
/* TODO: probably want to avoid _sync() ... */
error = NULL;
panel->client = goa_client_new_sync (NULL /* GCancellable */, &error);
@@ -255,8 +238,7 @@ cc_goa_panel_init (CcGoaPanel *panel)
{
g_warning ("Error getting a GoaClient: %s (%s, %d)",
error->message, g_quark_to_string (error->domain), error->code);
- w = GTK_WIDGET (gtk_builder_get_object (panel->builder, "goa-top-widget"));
- gtk_widget_set_sensitive (w, FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (panel), FALSE);
g_error_free (error);
goto out;
}
@@ -312,9 +294,7 @@ cc_goa_panel_init (CcGoaPanel *panel)
&iter);
out:
- w = GTK_WIDGET (gtk_builder_get_object (panel->builder, "goa-top-widget"));
- gtk_container_add (GTK_CONTAINER (panel), w);
- gtk_widget_show_all (w);
+ gtk_widget_show_all (GTK_WIDGET (panel));
}
static const char *
@@ -326,6 +306,7 @@ cc_goa_panel_get_help_uri (CcPanel *panel)
static void
cc_goa_panel_class_init (CcGoaPanelClass *klass)
{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
@@ -335,6 +316,18 @@ cc_goa_panel_class_init (CcGoaPanelClass *klass)
object_class->finalize = cc_goa_panel_finalize;
g_object_class_override_property (object_class, PROP_PARAMETERS, "parameters");
+
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/online-accounts/online-accounts.ui");
+
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, accounts_notebook);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, accounts_treeview);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, accounts_tree_box);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, accounts_tree_label);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, accounts_vbox);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, add_account_button);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, toolbar);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, toolbar_add_button);
+ gtk_widget_class_bind_template_child (widget_class, CcGoaPanel, toolbar_remove_button);
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -343,24 +336,16 @@ static void
show_page (CcGoaPanel *panel,
gint page_num)
{
- GtkNotebook *notebook;
- notebook = GTK_NOTEBOOK (gtk_builder_get_object (panel->builder, "accounts-notebook"));
- gtk_notebook_set_current_page (notebook, page_num);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (panel->accounts_notebook), page_num);
}
static void
show_page_nothing_selected (CcGoaPanel *panel)
{
- GtkWidget *box;
- GtkWidget *label;
-
show_page (panel, 0);
- box = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-box"));
- gtk_widget_set_sensitive (box, FALSE);
-
- label = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-label"));
- gtk_widget_show (label);
+ gtk_widget_set_sensitive (panel->accounts_tree_box, FALSE);
+ gtk_widget_show (panel->accounts_tree_label);
}
static void
@@ -369,8 +354,6 @@ show_page_account (CcGoaPanel *panel,
{
GList *children;
GList *l;
- GtkWidget *box;
- GtkWidget *label;
GoaProvider *provider;
GoaAccount *account;
const gchar *provider_type;
@@ -378,11 +361,8 @@ show_page_account (CcGoaPanel *panel,
provider = NULL;
show_page (panel, 1);
- box = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-box"));
- gtk_widget_set_sensitive (box, TRUE);
-
- label = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-label"));
- gtk_widget_hide (label);
+ gtk_widget_set_sensitive (panel->accounts_tree_box, TRUE);
+ gtk_widget_hide (panel->accounts_tree_label);
/* Out with the old */
children = gtk_container_get_children (GTK_CONTAINER (panel->accounts_vbox));
diff --git a/panels/online-accounts/online-accounts.ui b/panels/online-accounts/online-accounts.ui
index 3bba624fd..add2a995b 100644
--- a/panels/online-accounts/online-accounts.ui
+++ b/panels/online-accounts/online-accounts.ui
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
- <object class="GtkBox" id="goa-top-widget">
+ <template class="CcGoaPanel" parent="CcPanel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">18</property>
@@ -12,7 +16,7 @@
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<child>
- <object class="GtkBox" id="accounts-tree-box">
+ <object class="GtkBox" id="accounts_tree_box">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="spacing">0</property>
@@ -27,7 +31,7 @@
<property name="shadow_type">in</property>
<property name="min_content_height">300</property>
<child>
- <object class="GtkTreeView" id="accounts-tree-treeview">
+ <object class="GtkTreeView" id="accounts_treeview">
<property name="width_request">278</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -44,7 +48,7 @@
</object>
</child>
<child type="overlay">
- <object class="GtkLabel" id="accounts-tree-label">
+ <object class="GtkLabel" id="accounts_tree_label">
<property name="can_focus">False</property>
<property name="no-show-all">True</property>
<property name="justify">center</property>
@@ -61,7 +65,7 @@
</packing>
</child>
<child>
- <object class="GtkToolbar" id="accounts-tree-toolbar">
+ <object class="GtkToolbar" id="toolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="toolbar_style">icons</property>
@@ -70,7 +74,7 @@
<class name="inline-toolbar"/>
</style>
<child>
- <object class="GtkToolButton" id="accounts-tree-toolbutton-add">
+ <object class="GtkToolButton" id="toolbar_add_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_action_appearance">False</property>
@@ -83,7 +87,7 @@
</packing>
</child>
<child>
- <object class="GtkToolButton" id="accounts-tree-toolbutton-remove">
+ <object class="GtkToolButton" id="toolbar_remove_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_action_appearance">False</property>
@@ -105,7 +109,7 @@
</object>
</child>
<child>
- <object class="GtkNotebook" id="accounts-notebook">
+ <object class="GtkNotebook" id="accounts_notebook">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_tabs">False</property>
@@ -124,7 +128,7 @@
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
- <object class="GtkButton" id="accounts-button-add">
+ <object class="GtkButton" id="add_account_button">
<property name="label" translatable="yes">Add an online account</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
@@ -175,7 +179,7 @@
</packing>
</child>
<child>
- <object class="GtkBox" id="accounts-vbox">
+ <object class="GtkBox" id="accounts_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
@@ -216,4 +220,6 @@
</packing>
</child>
</object>
+ </child>
+ </template>
</interface>