From 05d9a8b6c6e0dcf5aaa1c87e284c9f3c6a88ffa2 Mon Sep 17 00:00:00 2001 From: Dan Breslau Date: Mon, 8 Aug 2016 14:24:34 -0400 Subject: [PATCH] Implemented 'Remember my identity choice for this service' checkbox on main selector dialog --- src/moonshot-identity-management-view.vala | 18 ++++++++++++++++-- src/moonshot-identity-request.vala | 16 +++++++--------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/moonshot-identity-management-view.vala b/src/moonshot-identity-management-view.vala index 93129e8..0f4c942 100644 --- a/src/moonshot-identity-management-view.vala +++ b/src/moonshot-identity-management-view.vala @@ -60,6 +60,8 @@ public class IdentityManagerView : Window { public GLib.Queue request_queue; + internal CheckButton remember_identity_binding = null; + private enum Columns { IDCARD_COL, @@ -417,7 +419,6 @@ public class IdentityManagerView : Window { TreeIter iter; IdCard id_card; - var children = this.custom_vbox.get_children(); this.custom_vbox.clear(); if (filter.get_iter_first(out iter)) @@ -483,6 +484,7 @@ public class IdentityManagerView : Window { filter.refilter(); redraw_id_card_widgets(); set_prompting_service(request.service); + remember_identity_binding.show(); make_visible(); } this.request_queue.push_tail(request); @@ -505,6 +507,7 @@ public class IdentityManagerView : Window { public IdCard check_add_password(IdCard identity, IdentityRequest request, IdentityManagerModel model) { + logger.trace(@"check_add_password"); IdCard retval = identity; bool idcard_has_pw = (identity.password != null) && (identity.password != ""); bool request_has_pw = (request.password != null) && (request.password != ""); @@ -566,7 +569,10 @@ public class IdentityManagerView : Window { if ((identity != null) && (!identity.IsNoIdentity())) parent_app.default_id_card = identity; - request.return_identity(identity); + request.return_identity(identity, remember_identity_binding.active); + + remember_identity_binding.active = false; + remember_identity_binding.hide(); } // private void label_make_bold(Label label) @@ -800,8 +806,16 @@ SUCH DAMAGE. menubar.modify_bg(StateType.NORMAL, white); #endif main_vbox.pack_start(vbox_left, true, true, 0); + + remember_identity_binding = new CheckButton.with_label(_("Remember my identity choice for this service")); + remember_identity_binding.active = false; + main_vbox.pack_start(remember_identity_binding, false, false, 6); + add(main_vbox); main_vbox.show_all(); + + if (this.request_queue.length == 0) + remember_identity_binding.hide(); } private void set_atk_name_description(Widget widget, string name, string description) diff --git a/src/moonshot-identity-request.vala b/src/moonshot-identity-request.vala index b00a5e5..2e1c132 100644 --- a/src/moonshot-identity-request.vala +++ b/src/moonshot-identity-request.vala @@ -32,6 +32,8 @@ public delegate void ReturnIdentityCallback(IdentityRequest request); public class IdentityRequest : Object { + static MoonshotLogger logger = get_logger("IdentityRequest"); + public IdCard? id_card = null; public bool complete = false; public bool select_default = false; @@ -79,12 +81,12 @@ public class IdentityRequest : Object { return false; } - public void return_identity(IdCard? id_card) { + public void return_identity(IdCard? id_card, bool update_card = true) { this.id_card = id_card; this.complete = true; /* update id_card service list */ - if (id_card != null && this.service != null && this.service != "") + if (update_card && id_card != null && this.service != null && this.service != "") { bool duplicate_service = false; @@ -93,21 +95,17 @@ public class IdentityRequest : Object { if (service == this.service) duplicate_service = true; } + logger.trace("return_identity: duplicate_service=" + duplicate_service.to_string()); if (duplicate_service == false) { - string[] services = new string[id_card.services.length + 1]; - - for (int i = 0; i < id_card.services.length; i++) - services[i] = id_card.services[i]; - - services[id_card.services.length] = this.service; - id_card.services = services; + id_card.add_service(this.service); this.id_card = this.parent_app.model.update_card(id_card); } } return_if_fail(callback != null); + logger.trace("return_identity: invoking callback"); callback(this); } -- 2.1.4