[gnome-contacts] Cleanup, use GtkTemplate for AccountsList



commit 0b745460ec5ae30bb3995fc81ec77ca693b4d17a
Author: Niels De Graef <nielsdegraef gmail com>
Date:   Tue Aug 22 11:55:40 2017 +0200

    Cleanup, use GtkTemplate for AccountsList

 data/Makefile.am                  |    1 +
 data/contacts.gresource.xml       |    1 +
 data/ui/contacts-accounts-list.ui |   44 +++++++++++++++++++++++++
 po/POTFILES.in                    |    1 +
 src/contacts-accounts-list.vala   |   63 ++++++++++++-------------------------
 5 files changed, 67 insertions(+), 43 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 28e5191..32d56d9 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -37,6 +37,7 @@ EXTRA_DIST = \
        org.gnome.Contacts.SearchProvider.service.in \
        contacts.gresource.xml \
        ui/app-menu.ui \
+       ui/contacts-accounts-list.ui \
        ui/contacts-address-map.ui \
        ui/contacts-avatar-dialog.ui \
        ui/contacts-contact-editor.ui \
diff --git a/data/contacts.gresource.xml b/data/contacts.gresource.xml
index 52be8a9..69cacc7 100644
--- a/data/contacts.gresource.xml
+++ b/data/contacts.gresource.xml
@@ -3,6 +3,7 @@
   <gresource prefix="/org/gnome/contacts">
     <file compressed="true">ui/style.css</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/app-menu.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">ui/contacts-accounts-list.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-address-map.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-avatar-dialog.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-contact-editor.ui</file>
diff --git a/data/ui/contacts-accounts-list.ui b/data/ui/contacts-accounts-list.ui
new file mode 100644
index 0000000..5b6152c
--- /dev/null
+++ b/data/ui/contacts-accounts-list.ui
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.22 -->
+  <template class="ContactsAccountsList" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkScrolledWindow" id="scrolled">
+        <property name="visible">True</property>
+        <property name="min_content_height">210</property>
+        <property name="shadow_type">in</property>
+        <property name="hscrollbar_policy">never</property>
+        <property name="vscrollbar_policy">automatic</property>
+        <child>
+          <object class="GtkListBox" id="accounts_view">
+            <property name="visible">True</property>
+            <property name="selection_mode">none</property>
+            <property name="width_request">372</property>
+          </object>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkButton" id="goa_button">
+        <property name="visible">True</property>
+        <signal name="clicked" handler="on_goa_button_clicked" swapped="no"/>
+        <style>
+          <class name="raised"/>
+        </style>
+        <child>
+          <object class="GtkLabel">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Online Accounts</property>
+            <property name="margin_start">6</property>
+            <property name="margin_end">6</property>
+            <property name="margin_top">3</property>
+            <property name="margin_bottom">3</property>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0f80370..008f079 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -3,6 +3,7 @@
 data/org.gnome.Contacts.appdata.xml.in
 data/org.gnome.Contacts.desktop.in
 data/ui/app-menu.ui
+data/ui/contacts-accounts-list.ui
 data/ui/contacts-avatar-dialog.ui
 data/ui/contacts-contact-editor.ui
 data/ui/contacts-contact-pane.ui
diff --git a/src/contacts-accounts-list.vala b/src/contacts-accounts-list.vala
index 0dd7f17..e742819 100644
--- a/src/contacts-accounts-list.vala
+++ b/src/contacts-accounts-list.vala
@@ -1,4 +1,3 @@
-/* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 8 -*- */
 /*
  * Copyright (C) 2011 Erick PĂ©rez Castellanos <erick red gmail com>
  *
@@ -19,54 +18,22 @@
 using Gtk;
 using Folks;
 
-public class Contacts.AccountsList : Grid {
-  ListBox accounts_view;
-  ListBoxRow last_selected_row;
-  Button add_account_button;
+[GtkTemplate (ui = "/org/gnome/contacts/ui/contacts-accounts-list.ui")]
+public class Contacts.AccountsList : Box {
+  [GtkChild]
+  private ListBox accounts_view;
+
+  private ListBoxRow last_selected_row;
 
   public PersonaStore selected_store;
 
   public signal void account_selected ();
 
   construct {
-    set_orientation (Orientation.VERTICAL);
-    set_row_spacing (12);
-
-    selected_store = null;
-
-    accounts_view = new ListBox ();
-    accounts_view.set_selection_mode (SelectionMode.NONE);
-    accounts_view.set_size_request (372, -1);
-    accounts_view.set_header_func (add_separator);
-
-    var scrolled = new ScrolledWindow(null, null);
-    scrolled.set_min_content_height (210);
-    scrolled.set_policy (PolicyType.NEVER, PolicyType.AUTOMATIC);
-    scrolled.set_shadow_type (ShadowType.IN);
-    scrolled.add (accounts_view);
-
-    add_account_button = new Button.with_label (_("Online Accounts"));
-    add_account_button.get_style_context ().add_class (STYLE_CLASS_RAISED);
-    add_account_button.get_child ().margin_start = 6;
-    add_account_button.get_child ().margin_end = 6;
-    add_account_button.get_child ().margin_top = 3;
-    add_account_button.get_child ().margin_bottom = 3;
-    add_account_button.clicked.connect (() => {
-        try {
-          Process.spawn_command_line_async ("gnome-control-center online-accounts");
-        }
-        catch (Error e) {
-          // TODO: Show error dialog
-        }
-      });
-
-    add (scrolled);
-    add (add_account_button);
-
-    show_all ();
-
-    /* signal handling */
-    accounts_view.row_activated.connect (row_activated);
+    this.selected_store = null;
+
+    this.accounts_view.set_header_func (add_separator);
+    this.accounts_view.row_activated.connect (row_activated);
   }
 
   private void row_activated (ListBoxRow? row) {
@@ -183,4 +150,14 @@ public class Contacts.AccountsList : Grid {
 
     accounts_view.show_all ();
   }
+
+  [GtkCallback]
+  private void on_goa_button_clicked () {
+    try {
+      Process.spawn_command_line_async ("gnome-control-center online-accounts");
+    } catch (Error e) {
+      // TODO: Show error dialog
+      warning ("Couldn't open GOA: %s", e.message);
+    }
+  }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]