diff options
author | fiaxh <git@lightrise.org> | 2022-02-14 14:55:59 +0100 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2022-07-27 20:34:20 +0200 |
commit | 7e7dcedaf31ee35499875491c9f569c575d28435 (patch) | |
tree | 0c5fee2b28baf320775fbc92b3c252e97d9d054f /main/src/ui/chat_input/encryption_button.vala | |
parent | f25bfb00969a7e09996da2d5500e6718f4cc0148 (diff) | |
download | dino-7e7dcedaf31ee35499875491c9f569c575d28435.tar.gz dino-7e7dcedaf31ee35499875491c9f569c575d28435.zip |
Port from GTK3 to GTK4
Diffstat (limited to 'main/src/ui/chat_input/encryption_button.vala')
-rw-r--r-- | main/src/ui/chat_input/encryption_button.vala | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/main/src/ui/chat_input/encryption_button.vala b/main/src/ui/chat_input/encryption_button.vala index 11466931..e5831802 100644 --- a/main/src/ui/chat_input/encryption_button.vala +++ b/main/src/ui/chat_input/encryption_button.vala @@ -5,27 +5,25 @@ using Dino.Entities; namespace Dino.Ui { -public class EncryptionButton : MenuButton { +public class EncryptionButton { public signal void encryption_changed(Plugins.EncryptionListEntry? encryption_entry); + private MenuButton menu_button; private Conversation? conversation; - private RadioButton? button_unencrypted; - private Map<RadioButton, Plugins.EncryptionListEntry> encryption_radios = new HashMap<RadioButton, Plugins.EncryptionListEntry>(); + private CheckButton? button_unencrypted; + private Map<CheckButton, Plugins.EncryptionListEntry> encryption_radios = new HashMap<CheckButton, Plugins.EncryptionListEntry>(); private string? current_icon; private StreamInteractor stream_interactor; - public EncryptionButton(StreamInteractor stream_interactor) { + public EncryptionButton(StreamInteractor stream_interactor, MenuButton menu_button) { this.stream_interactor = stream_interactor; - - use_popover = true; - image = new Image.from_icon_name("changes-allow-symbolic", IconSize.BUTTON); - get_style_context().add_class("flat"); + this.menu_button = menu_button; Builder builder = new Builder.from_resource("/im/dino/Dino/menu_encryption.ui"); - popover = builder.get_object("menu_encryption") as PopoverMenu; + menu_button.popover = builder.get_object("menu_encryption") as PopoverMenu; Box encryption_box = builder.get_object("encryption_box") as Box; - button_unencrypted = builder.get_object("button_unencrypted") as RadioButton; + button_unencrypted = builder.get_object("button_unencrypted") as CheckButton; button_unencrypted.toggled.connect(encryption_button_toggled); stream_interactor.get_module(MucManager.IDENTITY).room_info_updated.connect((account, muc_jid) => { @@ -36,17 +34,18 @@ public class EncryptionButton : MenuButton { Application app = GLib.Application.get_default() as Application; foreach (var e in app.plugin_registry.encryption_list_entries) { - RadioButton btn = new RadioButton.with_label(button_unencrypted.get_group(), e.name); + CheckButton btn = new CheckButton.with_label(e.name); + btn.set_group(button_unencrypted); encryption_radios[btn] = e; btn.toggled.connect(encryption_button_toggled); btn.visible = true; - encryption_box.pack_end(btn, false); + encryption_box.prepend(btn); } - clicked.connect(update_encryption_menu_state); + menu_button.activate.connect(update_encryption_menu_state); } private void encryption_button_toggled() { - foreach (RadioButton e in encryption_radios.keys) { + foreach (CheckButton e in encryption_radios.keys) { if (e.get_active()) { conversation.encryption = encryption_radios[e].encryption; encryption_changed(encryption_radios[e]); @@ -62,7 +61,7 @@ public class EncryptionButton : MenuButton { } private void update_encryption_menu_state() { - foreach (RadioButton e in encryption_radios.keys) { + foreach (CheckButton e in encryption_radios.keys) { if (conversation.encryption == encryption_radios[e].encryption) { e.set_active(true); encryption_changed(encryption_radios[e]); @@ -76,7 +75,7 @@ public class EncryptionButton : MenuButton { private void set_icon(string icon) { if (icon != current_icon) { - image = new Image.from_icon_name(icon, IconSize.BUTTON); + menu_button.set_icon_name(icon); current_icon = icon; } } @@ -87,23 +86,23 @@ public class EncryptionButton : MenuButton { private void update_visibility() { if (conversation.encryption != Encryption.NONE) { - visible = true; + menu_button.visible = true; return; } switch (conversation.type_) { case Conversation.Type.CHAT: - visible = true; + menu_button.visible = true; break; case Conversation.Type.GROUPCHAT_PM: - visible = false; + menu_button.visible = false; break; case Conversation.Type.GROUPCHAT: - visible = stream_interactor.get_module(MucManager.IDENTITY).is_private_room(conversation.account, conversation.counterpart); + menu_button.visible = stream_interactor.get_module(MucManager.IDENTITY).is_private_room(conversation.account, conversation.counterpart); break; } } - public new void set_conversation(Conversation conversation) { + public void set_conversation(Conversation conversation) { this.conversation = conversation; update_encryption_menu_state(); update_encryption_menu_icon(); @@ -111,4 +110,4 @@ public class EncryptionButton : MenuButton { } } -} +}
\ No newline at end of file |