Fri, 10 May 2024 01:10:09 -0500
Some cleanups for PidginDisplayItem
Set the title labels to ellipsize at the end, fix the position of the
notification indicators, and hide the notification indicators when the item is
selected. We're hiding them because a later review request is going to allow
us to show additional widgets on hover and selection.
Testing Done:
Ran the turtles and opened a bunch of conversations and notifications. See the screen shots in the review.
Reviewed at https://reviews.imfreedom.org/r/3177/
<?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"> <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>