summaryrefslogtreecommitdiff
path: root/src/contacts-accounts-list.vala
diff options
context:
space:
mode:
authorAdrien Plazas <kekun.plazas@laposte.net>2019-01-17 19:56:41 +0100
committerNiels De Graef <nielsdegraef@gmail.com>2020-01-08 22:14:28 +0000
commitcfc906f29927d3cd4469523284b74c446dc03008 (patch)
tree33550beeac69278991c420e2bd1d52c8d1d61e42 /src/contacts-accounts-list.vala
parent7729fe93db1182140625cf332de1fc1ccf410144 (diff)
downloadgnome-contacts-cfc906f29927d3cd4469523284b74c446dc03008.tar.gz
AccountsList: Use Hdy.ActionRow
This simplifies the code and make the rows adaptive, allowing them to fit in smaller windows.
Diffstat (limited to 'src/contacts-accounts-list.vala')
-rw-r--r--src/contacts-accounts-list.vala84
1 files changed, 37 insertions, 47 deletions
diff --git a/src/contacts-accounts-list.vala b/src/contacts-accounts-list.vala
index 1575555..0341a69 100644
--- a/src/contacts-accounts-list.vala
+++ b/src/contacts-accounts-list.vala
@@ -16,6 +16,7 @@
*/
using Gtk;
+using Hdy;
using Folks;
[GtkTemplate (ui = "/org/gnome/Contacts/ui/contacts-accounts-list.ui")]
@@ -48,25 +49,18 @@ public class Contacts.AccountsList : Box {
return;
}
- var row_data = (row as Bin).get_child () as Grid;
- var checkmark = new Image.from_icon_name ("object-select-symbolic", IconSize.MENU);
- checkmark.set ("margin-end", 12,
- "valign", Align.CENTER,
- "halign", Align.END,
- "vexpand", true,
- "hexpand", true);
+ var checkmark = row.get_data<Image> ("checkmark");
checkmark.show ();
- row_data.attach (checkmark, 2, 0, 1, 2);
if (last_selected_row != null) {
- var last_row_data = (last_selected_row as Bin).get_child () as Grid;
- if (last_row_data != null)
- last_row_data.get_child_at (2, 0).destroy ();
+ checkmark = last_selected_row.get_data<Image> ("checkmark");
+ if (checkmark != null)
+ checkmark.hide ();
}
last_selected_row = row;
- selected_store = row_data.get_data<PersonaStore> ("store");
+ selected_store = row.get_data<PersonaStore> ("store");
account_selected ();
}
@@ -98,58 +92,54 @@ public class Contacts.AccountsList : Box {
source_account_id = goa_source_ext.account_id;
}
- var row_data = new Grid ();
- row_data.set_data ("store", persona_store);
- row_data.margin = 6;
- row_data.margin_start = 5;
- row_data.set_row_spacing (1);
- row_data.set_column_spacing (10);
+ var row = new ActionRow ();
+ row.set_data ("store", persona_store);
Gtk.Image provider_image;
if (source_account_id != "")
provider_image = Contacts.get_icon_for_goa_account (source_account_id);
else
provider_image = new Image.from_icon_name (Config.APP_ID, IconSize.DIALOG);
- row_data.attach (provider_image, 0, 0, 1, 2);
-
- var provider_label = new Label (provider_name);
- provider_label.set_halign (Align.START);
- provider_label.set_hexpand (true);
- provider_label.set_valign (Align.END);
- row_data.attach (provider_label, 1, 0, 1, 1);
-
- var account_name = parent_source.display_name;
- var account_label = new Label (account_name);
- account_label.set_halign (Align.START);
- account_label.set_hexpand (true);
- account_label.set_valign (Align.START);
- account_label.get_style_context ().add_class ("dim-label");
- row_data.attach (account_label, 1, 1, 1, 1);
-
- accounts_view.add (row_data);
+ row.add_prefix (provider_image);
+ row.title = provider_name;
+ row.subtitle = parent_source.display_name;
+ row.show_all ();
+ row.no_show_all = true;
+ var checkmark = new Image.from_icon_name ("object-select-symbolic", IconSize.MENU);
+ checkmark.set ("margin-end", 6,
+ "valign", Align.CENTER,
+ "halign", Align.END,
+ "vexpand", true,
+ "hexpand", true);
+ row.add_action (checkmark);
+ row.set_data ("checkmark", checkmark);
+ accounts_view.add (row);
if (select_active &&
persona_store == this.contacts_store.aggregator.primary_store) {
- var row = row_data.get_parent () as ListBoxRow;
row_activated (row);
}
}
if (local_store != null) {
- var local_data = new Grid ();
- local_data.margin = 6;
- local_data.margin_start = 5;
- local_data.set_column_spacing (10);
- local_data.set_data ("store", local_store);
+ var local_row = new ActionRow ();
var provider_image = new Image.from_icon_name (Config.APP_ID, IconSize.DIALOG);
- local_data.add (provider_image);
- var local_label = new Label (_("Local Address Book"));
- local_data.add (local_label);
- accounts_view.add (local_data);
+ local_row.add_prefix (provider_image);
+ local_row.title = _("Local Address Book");
+ local_row.show_all ();
+ local_row.no_show_all = true;
+ var checkmark = new Image.from_icon_name ("object-select-symbolic", IconSize.MENU);
+ checkmark.set ("margin-end", 6,
+ "valign", Align.CENTER,
+ "halign", Align.END,
+ "vexpand", true,
+ "hexpand", true);
+ local_row.add_action (checkmark);
+ local_row.set_data ("checkmark", checkmark);
+ accounts_view.add (local_row);
if (select_active &&
local_store == this.contacts_store.aggregator.primary_store) {
- var row = local_data.get_parent () as ListBoxRow;
- row_activated (row);
+ row_activated (local_row);
}
}