Tue, 11 Jun 2024 14:25:00 -0500
Implement presenting and selecting conversations
Implement Pidgin.DisplayWindow.select.
Display conversations when their present signal is emitted.
Call Purple.Conversation.present from Pidgin.ContactList when a contact is
activated.
Testing Done:
Opened conversations from the contact list and verified they were selected properly.
Reviewed at https://reviews.imfreedom.org/r/3255/
<?xml version="1.0" encoding="UTF-8"?> <!-- Pidgin - Internet Messenger Copyright (C) Pidgin Developers <devel@pidgin.im> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, see <https://www.gnu.org/licenses/>. --> <interface> <requires lib="gtk" version="4.0"/> <requires lib="Adw" version="1.0"/> <requires lib="pidgin" version="3.0"/> <!-- interface-license-type gplv2 --> <!-- interface-name Pidgin --> <!-- interface-description Internet Messenger --> <!-- interface-copyright Pidgin Developers <devel@pidgin.im> --> <object class="GListStore" id="base_model"> <property name="item-type">PidginDisplayItem</property> <child> <object class="PidginDisplayItem"> <property name="icon-name">system-users-symbolic</property> <property name="id">__contacts__</property> <property name="title" translatable="1">Contacts</property> <property name="widget"> <object class="GtkScrolledWindow"> <child> <object class="PidginContactList" id="contact_list"/> </child> </object> </property> </object> </child> <child> <object class="PidginDisplayItem"> <property name="icon-name">emblem-important-symbolic</property> <property name="id">__notifications__</property> <property name="title" translatable="1">Notifications</property> <property name="widget"> <object class="GtkScrolledWindow"> <child> <object class="PidginNotificationList" id="notification_list"> <property name="orientation">vertical</property> </object> </child> </object> </property> <binding name="needs-attention"> <lookup name="needs-attention">notification_list</lookup> </binding> <binding name="badge-number"> <lookup name="notification-count">notification_list</lookup> </binding> </object> </child> <child> <object class="PidginDisplayItem"> <property name="icon-name">application-x-addon-symbolic</property> <property name="id">__plugins__</property> <property name="title" translatable="1">Plugins</property> <property name="widget"> <object class="GtkBox"> <property name="orientation">vertical</property> <child> <object class="PidginInfoPane"> <property name="title" translatable="yes">Plugins</property> <child> <object class="GtkBox"> <property name="margin-end">6</property> <property name="orientation">horizontal</property> <property name="spacing">6</property> <property name="valign">center</property> <child> <object class="GtkButton"> <property name="tooltip-text" translatable="yes">Refresh</property> <!-- we can't actually refresh the gplugin pluging list right now, so we just show an insensitive button to remind us to fix it later. --> <property name="sensitive">false</property> <child> <object class="GtkImage"> <property name="icon-name">view-refresh-symbolic</property> </object> </child> </object> </child> </object> </child> </object> </child> <child> <object class="GPluginGtkView" id="plugin_list"> <property name="orientation">vertical</property> </object> </child> </object> </property> </object> </child> <child> <object class="PidginDisplayItem" id="conversations_item"> <property name="icon-name">user-available-symbolic</property> <property name="id">__conversations__</property> <property name="title" translatable="1">Conversations</property> <property name="widget"> <object class="AdwStatusPage"> <property name="icon-name">mail-send-symbolic</property> <property name="title" translatable="1">Conversations</property> <property name="description" translatable="1">When you send a message to a friend or join a chat it will show up here!</property> </object> </property> <property name="children"> <object class="GListStore" id="conversation_model"> <property name="item-type">PidginDisplayItem</property> </object> </property> </object> </child> </object> <template class="PidginDisplayWindow" parent="GtkApplicationWindow"> <property name="show-menubar">1</property> <property name="default-height">450</property> <property name="default-width">950</property> <child> <object class="GtkEventControllerKey"> <property name="propagation-phase">capture</property> <signal name="key-pressed" handler="pidgin_display_window_key_pressed_cb"/> </object> </child> <child> <object class="GtkBox" id="vbox"> <property name="orientation">vertical</property> <child> <object class="GtkPaned" id="paned"> <property name="vexpand">1</property> <property name="focusable">1</property> <property name="position">220</property> <child> <object class="GtkBox"> <property name="margin-top">6</property> <property name="margin-start">6</property> <property name="margin-end">6</property> <property name="margin-bottom">6</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkScrolledWindow"> <property name="vexpand">1</property> <property name="focusable">1</property> <property name="propagate-natural-width">1</property> <style> <class name="sidebar"/> </style> <child> <object class="GtkListView" id="view"> <property name="model"> <object class="GtkSingleSelection" id="selection_model"> <property name="autoselect">1</property> <property name="can-unselect">0</property> <signal name="notify::selected-item" handler="pidgin_display_window_selected_item_changed_cb"/> </object> </property> <property name="factory"> <object class="GtkBuilderListItemFactory"> <property name="resource">/im/pidgin/Pidgin3/display-item.ui</property> </object> </property> </object> </child> </object> </child> </object> </child> <child> <object class="AdwBin" id="bin"> <property name="vexpand">1</property> <property name="hexpand">1</property> </object> </child> </object> </child> </object> </child> </template> </interface>