using Dino.Entities; using Gtk; namespace Dino.Plugins.Omemo { public class AccountSettingsEntry : Plugins.AccountSettingsEntry { private Plugin plugin; private Account account; private Box box = new Box(Orientation.HORIZONTAL, 0); private Label fingerprint = new Label("...") { xalign=0 }; private Button btn = new Button.from_icon_name("view-list-symbolic") { has_frame=false, valign=Align.CENTER, visible=false }; public override string id { get { return "omemo_identity_key"; }} public override string name { get { return "OMEMO"; }} public AccountSettingsEntry(Plugin plugin) { this.plugin = plugin; Border border = new Button().get_style_context().get_padding(); fingerprint.margin_top = border.top + 1; fingerprint.margin_start = border.left + 1; fingerprint.visible = true; box.append(fingerprint); btn.clicked.connect(() => { activated(); ContactDetailsDialog dialog = new ContactDetailsDialog(plugin, account, account.bare_jid); dialog.set_transient_for((Window) box.get_root()); dialog.present(); }); // TODO expand=false? box.append(btn); } public override Object? get_widget(WidgetType type) { if (type != WidgetType.GTK4) return null; return box; } public override void set_account(Account account) { this.account = account; btn.visible = false; 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 connection"))); } else { 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; } } public override void deactivate() { } } }