diff options
author | fiaxh <git@lightrise.org> | 2023-09-24 19:54:04 +0200 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2023-09-24 19:54:04 +0200 |
commit | e2c34bf2235c9f85fc91de9c0f1b74858f4ef89e (patch) | |
tree | f5565f57a7cbea8a13748e8a1c613540bbb4d76c /main/src/ui/contact_details/muc_config_form_provider.vala | |
parent | 9eafe4139d6b2c0cabe3c77a903d6ae931a26975 (diff) | |
download | dino-e2c34bf2235c9f85fc91de9c0f1b74858f4ef89e.tar.gz dino-e2c34bf2235c9f85fc91de9c0f1b74858f4ef89e.zip |
Rewrite contact details dialog
Diffstat (limited to 'main/src/ui/contact_details/muc_config_form_provider.vala')
-rw-r--r-- | main/src/ui/contact_details/muc_config_form_provider.vala | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/main/src/ui/contact_details/muc_config_form_provider.vala b/main/src/ui/contact_details/muc_config_form_provider.vala deleted file mode 100644 index 1244a759..00000000 --- a/main/src/ui/contact_details/muc_config_form_provider.vala +++ /dev/null @@ -1,93 +0,0 @@ -using Gee; -using Gtk; - -using Dino.Entities; -using Xmpp.Xep; - -namespace Dino.Ui.ContactDetails { - -public class MucConfigFormProvider : Plugins.ContactDetailsProvider, Object { - public string id { get { return "muc_config_form"; } } - private StreamInteractor stream_interactor; - - public MucConfigFormProvider(StreamInteractor stream_interactor) { - this.stream_interactor = stream_interactor; - } - - public void populate(Conversation conversation, Plugins.ContactDetails contact_details, Plugins.WidgetType type) { - if (type != Plugins.WidgetType.GTK4) return; - if (conversation.type_ == Conversation.Type.GROUPCHAT) { - Xmpp.XmppStream? stream = stream_interactor.get_stream(conversation.account); - if (stream == null) return; - - stream_interactor.get_module(MucManager.IDENTITY).get_config_form.begin(conversation.account, conversation.counterpart, (_, res) => { - DataForms.DataForm? data_form = stream_interactor.get_module(MucManager.IDENTITY).get_config_form.end(res); - if (data_form == null) return; - - for (int i = 0; i < data_form.fields.size; i++) { - DataForms.DataForm.Field field = data_form.fields[i]; - add_field(field, contact_details); - } - - string config_backup = data_form.stanza_node.to_string(); - contact_details.save.connect(() => { - // Only send the config form if something was changed - if (config_backup != data_form.stanza_node.to_string()) { - stream_interactor.get_module(MucManager.IDENTITY).set_config_form.begin(conversation.account, conversation.counterpart, data_form); - } - }); - }); - } - } - - public static void add_field(DataForms.DataForm.Field field, Plugins.ContactDetails contact_details) { - string label = field.label ?? ""; - string? desc = null; - - if (field.var != null) { - switch (field.var) { - case "muc#roomconfig_roomname": - label = _("Name of the room"); - break; - case "muc#roomconfig_roomdesc": - label = _("Description of the room"); - break; - case "muc#roomconfig_persistentroom": - label = _("Persistent"); - desc = _("The room will persist after the last occupant leaves"); - break; - case "muc#roomconfig_publicroom": - label = _("Publicly searchable"); - break; - case "muc#roomconfig_changesubject": - label = _("Occupants may change the subject"); - break; - case "muc#roomconfig_whois": - label = _("Permission to view JIDs"); - desc = _("Who is allowed to view the occupants' JIDs?"); - break; - case "muc#roomconfig_roomsecret": - label = _("Password"); - desc = _("A password to restrict access to the room"); - break; - case "muc#roomconfig_moderatedroom": - label = _("Moderated"); - desc = _("Only occupants with voice may send messages"); - break; - case "muc#roomconfig_membersonly": - label = _("Members only"); - desc = _("Only members may enter the room"); - break; - case "muc#roomconfig_historylength": - label = _("Message history"); - desc = _("Maximum amount of backlog issued by the room"); - break; - } - } - - Widget? widget = Util.get_data_form_field_widget(field); - if (widget != null) contact_details.add(_("Room Configuration"), label, desc, widget); - } -} - -} |