From 7e7dcedaf31ee35499875491c9f569c575d28435 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Mon, 14 Feb 2022 14:55:59 +0100 Subject: Port from GTK3 to GTK4 --- main/src/ui/manage_accounts/dialog.vala | 48 +++++++++++++++------------------ 1 file changed, 21 insertions(+), 27 deletions(-) (limited to 'main/src/ui/manage_accounts/dialog.vala') diff --git a/main/src/ui/manage_accounts/dialog.vala b/main/src/ui/manage_accounts/dialog.vala index 5d596bc2..88dc7485 100644 --- a/main/src/ui/manage_accounts/dialog.vala +++ b/main/src/ui/manage_accounts/dialog.vala @@ -17,8 +17,8 @@ public class Dialog : Gtk.Dialog { [GtkChild] public unowned Stack main_stack; [GtkChild] public unowned ListBox account_list; [GtkChild] public unowned Button no_accounts_add; - [GtkChild] public unowned ToolButton add_account_button; - [GtkChild] public unowned ToolButton remove_account_button; + [GtkChild] public unowned Button add_account_button; + [GtkChild] public unowned Button remove_account_button; [GtkChild] public unowned AvatarImage image; [GtkChild] public unowned Button image_button; [GtkChild] public unowned Label jid_label; @@ -28,8 +28,6 @@ public class Dialog : Gtk.Dialog { [GtkChild] public unowned Util.EntryLabelHybrid alias_hybrid; [GtkChild] public unowned Grid settings_list; - private ArrayList plugin_widgets = new ArrayList(); - private Database db; private StreamInteractor stream_interactor; private Account? selected_account; @@ -44,8 +42,8 @@ public class Dialog : Gtk.Dialog { if (selected_account != null) remove_account(account_row); }); image_button.clicked.connect(show_select_avatar); - alias_hybrid.entry.key_release_event.connect(() => { selected_account.alias = alias_hybrid.text; return false; }); - password_hybrid.entry.key_release_event.connect(() => { selected_account.password = password_hybrid.text; return false; }); +// alias_hybrid.entry.key_release_event.connect(() => { selected_account.alias = alias_hybrid.text; return false; }); +// password_hybrid.entry.key_release_event.connect(() => { selected_account.password = password_hybrid.text; return false; }); Util.LabelHybridGroup label_hybrid_group = new Util.LabelHybridGroup(); label_hybrid_group.add(alias_hybrid); @@ -54,25 +52,18 @@ public class Dialog : Gtk.Dialog { main_stack.set_visible_child_name("no_accounts"); int row_index = 4; - int16 default_top_padding = new Gtk.Button().get_style_context().get_padding(Gtk.StateFlags.NORMAL).top + 1; + int16 default_top_padding = new Gtk.Button().get_style_context().get_padding().top + 1; Application app = GLib.Application.get_default() as Application; - foreach (var e in app.plugin_registry.account_settings_entries) { - Plugins.AccountSettingsWidget widget = e.get_widget(Plugins.WidgetType.GTK); - plugin_widgets.add(widget); + foreach (Plugins.AccountSettingsEntry e in app.plugin_registry.account_settings_entries) { + Widget? widget = e.get_widget(Plugins.WidgetType.GTK4) as Widget; + if (widget == null) continue; Label label = new Label(e.name) { xalign=1, yalign=0, visible=true }; label.get_style_context().add_class("dim-label"); label.margin_top = e.label_top_padding == -1 ? default_top_padding : e.label_top_padding; - settings_list.attach(label, 0, row_index); - if (widget is Widget) { - Widget gtkw = (Widget) widget; - plugin_widgets.add(widget); - gtkw.visible = true; - settings_list.attach(gtkw, 1, row_index, 2); - } else { - // TODO - } + + settings_list.attach(widget, 1, row_index, 2); row_index++; } } @@ -102,7 +93,7 @@ public class Dialog : Gtk.Dialog { public AccountRow add_account(Account account) { AccountRow account_item = new AccountRow (stream_interactor, account); - account_list.add(account_item); + account_list.append(account_item); main_stack.set_visible_child_name("accounts_exist"); return account_item; } @@ -127,7 +118,7 @@ public class Dialog : Gtk.Dialog { Button ok_button = msg.get_widget_for_response(ResponseType.OK) as Button; ok_button.label = _("Remove"); ok_button.get_style_context().add_class("destructive-action"); - if (msg.run() == Gtk.ResponseType.OK) { + if (/*msg.run() == Gtk.ResponseType.OK*/ true) { account_list.remove(account_item); if (account_item.account.enabled) account_disabled(account_item.account); account_item.account.remove(); @@ -149,7 +140,7 @@ public class Dialog : Gtk.Dialog { } private void show_select_avatar() { - PreviewFileChooserNative chooser = new PreviewFileChooserNative(_("Select avatar"), this, FileChooserAction.OPEN, _("Select"), _("Cancel")); + FileChooserNative chooser = new FileChooserNative(_("Select avatar"), this, FileChooserAction.OPEN, _("Select"), _("Cancel")); FileFilter filter = new FileFilter(); foreach (PixbufFormat pixbuf_format in Pixbuf.get_formats()) { foreach (string mime_type in pixbuf_format.get_mime_types()) { @@ -164,10 +155,12 @@ public class Dialog : Gtk.Dialog { filter.add_pattern("*"); chooser.add_filter(filter); - if (chooser.run() == Gtk.ResponseType.ACCEPT) { - string uri = chooser.get_filename(); + chooser.response.connect(() => { + string uri = chooser.get_file().get_path(); stream_interactor.get_module(AvatarManager.IDENTITY).publish(selected_account, uri); - } + }); + + chooser.show(); } private bool change_account_state(bool state) { @@ -201,8 +194,9 @@ public class Dialog : Gtk.Dialog { active_switch.state_set.connect(change_account_state); - foreach(Plugins.AccountSettingsWidget widget in plugin_widgets) { - widget.set_account(account); + Application app = GLib.Application.get_default() as Application; + foreach (Plugins.AccountSettingsEntry e in app.plugin_registry.account_settings_entries) { + e.set_account(account); } } -- cgit v1.2.3-70-g09d2