[gnome-contacts] LinkedAccountsDialog: use GtkTemplate.



commit fa0f648a3b675dac942adf39dca78ca01f29472d
Author: Niels De Graef <nielsdegraef gmail com>
Date:   Mon Jan 22 19:58:19 2018 +0100

    LinkedAccountsDialog: use GtkTemplate.
    
    Also rename to LinkedPersonasDialog, and use the coding conventions a
    bit more.

 data/contacts.gresource.xml                        |    1 +
 data/ui/contacts-linked-personas-dialog.ui         |   53 ++++++++++++++
 po/POTFILES.in                                     |    3 +-
 po/POTFILES.skip                                   |    2 +-
 src/contacts-contact-pane.vala                     |    6 +-
 ...g.vala => contacts-linked-personas-dialog.vala} |   77 ++++++--------------
 src/meson.build                                    |    2 +-
 7 files changed, 83 insertions(+), 61 deletions(-)
---
diff --git a/data/contacts.gresource.xml b/data/contacts.gresource.xml
index 9d47d58..d8e1061 100644
--- a/data/contacts.gresource.xml
+++ b/data/contacts.gresource.xml
@@ -10,6 +10,7 @@
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-contact-pane.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-in-app-notification.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-link-suggestion-grid.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">ui/contacts-linked-personas-dialog.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-list-pane.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-setup-window.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">ui/contacts-window.ui</file>
diff --git a/data/ui/contacts-linked-personas-dialog.ui b/data/ui/contacts-linked-personas-dialog.ui
new file mode 100644
index 0000000..16e4610
--- /dev/null
+++ b/data/ui/contacts-linked-personas-dialog.ui
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="3.22"/>
+  <template class="ContactsLinkedPersonasDialog" parent="GtkDialog">
+    <property name="visible">True</property>
+    <property name="modal">True</property>
+    <property name="default_width">600</property>
+    <property name="default_height">400</property>
+    <child type="titlebar">
+      <object class="GtkHeaderBar">
+        <property name="visible">True</property>
+        <property name="subtitle" translatable="yes">Linked Accounts</property>
+      </object>
+    </child>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkGrid">
+            <property name="visible">True</property>
+            <property name="orientation">vertical</property>
+            <property name="column_spacing">8</property>
+            <property name="row_spacing">12</property>
+            <child>
+              <object class="GtkScrolledWindow">
+                <property name="visible">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkListBox" id="linked_accounts_view">
+                    <property name="visible">True</property>
+                    <property name="selection_mode">none</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="halign">center</property>
+                <property name="label" translatable="yes">You can link contacts by selecting them from the 
contacts list</property>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ff78c51..f710868 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -9,6 +9,7 @@ data/ui/contacts-avatar-selector.ui
 data/ui/contacts-contact-editor.ui
 data/ui/contacts-contact-pane.ui
 data/ui/contacts-link-suggestion-grid.ui
+data/ui/contacts-linked-personas-dialog.ui
 data/ui/contacts-list-pane.ui
 data/ui/contacts-setup-window.ui
 data/ui/contacts-window.ui
@@ -22,7 +23,7 @@ src/contacts-contact-pane.vala
 src/contacts-contact-sheet.vala
 src/contacts-contact.vala
 src/contacts-esd-setup.vala
-src/contacts-linked-accounts-dialog.vala
+src/contacts-linked-personas-dialog.vala
 src/contacts-link-suggestion-grid.vala
 src/contacts-settings.vala
 src/contacts-setup-window.vala
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 2e3738b..a69be8a 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -12,7 +12,7 @@ src/contacts-contact-list.c
 src/contacts-contact-pane.c
 src/contacts-contact-sheet.c
 src/contacts-esd-setup.c
-src/contacts-linked-accounts-dialog.c
+src/contacts-linked-personas-dialog.c
 src/contacts-link-suggestion-grid.c
 src/contacts-settings.c
 src/contacts-setup-window.c
diff --git a/src/contacts-contact-pane.vala b/src/contacts-contact-pane.vala
index 2c30710..f561fef 100644
--- a/src/contacts-contact-pane.vala
+++ b/src/contacts-contact-pane.vala
@@ -217,10 +217,8 @@ public class Contacts.ContactPane : Stack {
   }
 
   private void linked_accounts () {
-    var dialog = new LinkedAccountsDialog (this.parent_window, contact);
-    var result = dialog.run ();
-    if (result == ResponseType.CLOSE &&
-       dialog.any_unlinked) {
+    var dialog = new LinkedPersonasDialog (this.parent_window, contact);
+    if (dialog.run () == ResponseType.CLOSE && dialog.any_unlinked) {
       /* update edited contact if any_unlinked */
       set_edit_mode (false);
       set_edit_mode (true);
diff --git a/src/contacts-linked-accounts-dialog.vala b/src/contacts-linked-personas-dialog.vala
similarity index 54%
rename from src/contacts-linked-accounts-dialog.vala
rename to src/contacts-linked-personas-dialog.vala
index 231d113..b210bb9 100644
--- a/src/contacts-linked-accounts-dialog.vala
+++ b/src/contacts-linked-personas-dialog.vala
@@ -1,4 +1,3 @@
-/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
 /*
  * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
  *
@@ -19,63 +18,34 @@
 using Gtk;
 using Folks;
 
-public class Contacts.LinkedAccountsDialog : Dialog {
+[GtkTemplate (ui = "/org/gnome/Contacts/ui/contacts-linked-personas-dialog.ui")]
+public class Contacts.LinkedPersonasDialog : Dialog {
   private const int AVATAR_SIZE = 54;
 
-  Contact contact;
-  ListBox linked_accounts_view;
+  [GtkChild]
+  private ListBox linked_accounts_view;
 
-  public bool any_unlinked;
+  private Contact contact;
 
-  public LinkedAccountsDialog (Window main_win, Contact contact) {
+  public bool any_unlinked = false;
+
+  public LinkedPersonasDialog (Window main_win, Contact contact) {
     Object (
       use_header_bar: 1,
       transient_for: main_win,
-      modal: true
+      title: contact.individual.display_name
     );
 
     this.contact = contact;
-    any_unlinked = false;
-
-    var headerbar = get_header_bar () as Gtk.HeaderBar;
-    headerbar.set_title (contact.individual.display_name);
-    headerbar.set_subtitle (_("Linked Accounts"));
-
-    set_default_size (600, 400);
-
-    var grid = new Grid ();
-    grid.set_orientation (Orientation.VERTICAL);
-    grid.set_row_spacing (12);
-    grid.set_border_width (8);
-
-    var scrolled = new Gtk.ScrolledWindow (null, null);
-    scrolled.set_policy (PolicyType.NEVER, PolicyType.AUTOMATIC);
-    scrolled.set_hexpand (true);
-    scrolled.set_vexpand (true);
-    scrolled.set_shadow_type (ShadowType.IN);
-
-    linked_accounts_view = new ListBox ();
-    linked_accounts_view.set_selection_mode (SelectionMode.NONE);
-    linked_accounts_view.set_header_func (add_separator);
-
-    scrolled.add (linked_accounts_view);
-    grid.add (scrolled);
-
-    var label = new Label (_("You can link contacts by selecting them from the contacts list"));
-    label.set_halign (Align.CENTER);
-    grid.add (label);
-
-    grid.show_all ();
-    (get_content_area () as Container).add (grid);
+    this.linked_accounts_view.set_header_func (add_separator);
 
-    /* loading personas for display */
+    // loading personas for display
     var personas = contact.get_personas_for_display ();
-    /* Cause personas are sorted properly I can do this */
     bool is_first = true;
     foreach (var p in personas) {
       if (is_first) {
-       is_first = false;
-       continue;
+        is_first = false;
+        continue;
       }
 
       var row_grid = new Grid ();
@@ -90,8 +60,7 @@ public class Contacts.LinkedAccountsDialog : Dialog {
       display_name.set_halign (Align.START);
       display_name.set_valign (Align.END);
       display_name.set_hexpand (true);
-      display_name.set_markup (Markup.printf_escaped ("<span font='bold'>%s</span>",
-                                                     p.display_id));
+      display_name.set_markup (Markup.printf_escaped ("<span font='bold'>%s</span>", p.display_id));
 
       row_grid.attach (display_name, 1, 0, 1, 1);
 
@@ -110,19 +79,19 @@ public class Contacts.LinkedAccountsDialog : Dialog {
 
       /* signal */
       button.clicked.connect (() => {
-         unlink_persona.begin (contact, p, (obj, result) => {
-             unlink_persona.end (result);
+          unlink_persona.begin (contact, p, (obj, result) => {
+              unlink_persona.end (result);
 
-             row_grid.destroy ();
+              row_grid.destroy ();
 
-             any_unlinked = true;
-             /* TODO: Support undo */
-             /* TODO: Ensure we don't get suggestion for this linkage again */
-           });
-       });
+              this.any_unlinked = true;
+              /* TODO: Support undo */
+              /* TODO: Ensure we don't get suggestion for this linkage again */
+            });
+        });
 
       row_grid.show_all ();
-      linked_accounts_view.add (row_grid);
+      this.linked_accounts_view.add (row_grid);
     }
   }
 }
diff --git a/src/meson.build b/src/meson.build
index d8b4cd9..fc20c72 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -18,7 +18,7 @@ contacts_vala_sources = [
   'contacts-esd-setup.vala',
   'contacts-in-app-notification.vala',
   'contacts-link-suggestion-grid.vala',
-  'contacts-linked-accounts-dialog.vala',
+  'contacts-linked-personas-dialog.vala',
   'contacts-linking.vala',
   'contacts-list-pane.vala',
   'contacts-settings.vala',


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