From 9840774a87b9d15523ecc04ee4c157270e9abfe5 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sat, 13 May 2017 17:48:13 +0200 Subject: omemo: store and display identity keys of all devices --- plugins/omemo/src/account_settings_widget.vala | 30 +++++++++++--------------- 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'plugins/omemo/src/account_settings_widget.vala') diff --git a/plugins/omemo/src/account_settings_widget.vala b/plugins/omemo/src/account_settings_widget.vala index 2842c698..da3f6ca2 100644 --- a/plugins/omemo/src/account_settings_widget.vala +++ b/plugins/omemo/src/account_settings_widget.vala @@ -7,6 +7,7 @@ public class AccountSettingWidget : Plugins.AccountSettingsWidget, Box { private Plugin plugin; private Label fingerprint; private Account account; + private Button btn; public AccountSettingWidget(Plugin plugin) { this.plugin = plugin; @@ -18,38 +19,31 @@ public class AccountSettingWidget : Plugins.AccountSettingsWidget, Box { fingerprint.visible = true; pack_start(fingerprint); - Button btn = new Button(); + btn = new Button(); btn.image = new Image.from_icon_name("view-list-symbolic", IconSize.BUTTON); btn.relief = ReliefStyle.NONE; - btn.visible = true; + btn.visible = false; btn.valign = Align.CENTER; - btn.clicked.connect(() => { activated(); }); + btn.clicked.connect(() => { + activated(); + AccountSettingsDialog dialog = new AccountSettingsDialog(plugin, account); + dialog.set_transient_for((Window) get_toplevel()); + dialog.present(); + }); pack_start(btn, false); } public void set_account(Account account) { this.account = account; + btn.visible = false; try { Qlite.Row? row = plugin.db.identity.row_with(plugin.db.identity.account_id, account.id).inner; if (row == null) { fingerprint.set_markup("%s\n%s".printf(_("Own fingerprint"), _("Will be generated on first connect"))); } else { - uint8[] arr = Base64.decode(((!)row)[plugin.db.identity.identity_key_public_base64]); - arr = arr[1:arr.length]; - string res = ""; - foreach (uint8 i in arr) { - string s = i.to_string("%x"); - if (s.length == 1) s = "0" + s; - res = res + s; - if ((res.length % 9) == 8) { - if (res.length == 35) { - res += "\n"; - } else { - res += " "; - } - } - } + string res = fingerprint_markup(fingerprint_from_base64(((!)row)[plugin.db.identity.identity_key_public_base64])); fingerprint.set_markup("%s\n%s".printf(_("Own fingerprint"), res)); + btn.visible = true; } } catch (Qlite.DatabaseError e) { fingerprint.set_markup("%s\n%s".printf(_("Own fingerprint"), _("Database error"))); -- cgit v1.2.3-54-g00ecf