messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

commit 3b7003ea0cf2f53311e268a773f5f3b23d70e23e
parent 86a293280616a6cf27334218d431114e514b5073
Author: Jacki <jacki@thejackimonster.de>
Date:   Sat, 15 Jun 2024 16:48:31 +0200

Add dialog for discourses in chats

Signed-off-by: Jacki <jacki@thejackimonster.de>

Diffstat:
Mresources/ui.gresource.xml | 3++-
Mresources/ui/chat.ui | 50++++++++++++++++++++++++++++++++++++++++++++++++--
Mresources/ui/chat_title.ui | 2++
Aresources/ui/discourse.ui | 350+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresources/ui/play_media.ui | 1+
Msrc/ui/chat.c | 4++++
Msrc/ui/chat.h | 1+
7 files changed, 408 insertions(+), 3 deletions(-)

diff --git a/resources/ui.gresource.xml b/resources/ui.gresource.xml @@ -2,6 +2,7 @@ <gresources> <gresource prefix="/org/gnunet/Messenger"> <file compressed="true">ui/about.ui</file> + <file compressed="true">ui/account_entry.ui</file> <file compressed="true">ui/accounts.ui</file> <file compressed="true">ui/chat_entry.ui</file> <file compressed="true">ui/chat_title.ui</file> @@ -10,6 +11,7 @@ <file compressed="true">ui/contact_info.ui</file> <file compressed="true">ui/contacts.ui</file> <file compressed="true">ui/delete_messages.ui</file> + <file compressed="true">ui/discourse.ui</file> <file compressed="true">ui/files.ui</file> <file compressed="true">ui/file_entry.ui</file> <file compressed="true">ui/file_load_entry.ui</file> @@ -28,7 +30,6 @@ <file compressed="true">ui/new_tag.ui</file> <file compressed="true">ui/picker.ui</file> <file compressed="true">ui/play_media.ui</file> - <file compressed="true">ui/account_entry.ui</file> <file compressed="true">ui/send_file.ui</file> <file compressed="true">ui/settings.ui</file> <file compressed="true">ui/tag.ui</file> diff --git a/resources/ui/chat.ui b/resources/ui/chat.ui @@ -474,6 +474,52 @@ Author: Tobias Frisch </packing> </child> <child> + <object class="GtkButton" id="discourse_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="border-width">4</property> + <property name="spacing">16</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">user-available-symbolic</property> + <property name="icon_size">3</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes">Open Discourse</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> <object class="GtkStack" id="block_stack"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -574,7 +620,7 @@ Author: Tobias Frisch <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -624,7 +670,7 @@ Author: Tobias Frisch <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <style> diff --git a/resources/ui/chat_title.ui b/resources/ui/chat_title.ui @@ -35,6 +35,7 @@ Author: Tobias Frisch <object class="GtkBox" id="title_box"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="valign">center</property> <property name="spacing">8</property> <child> <object class="GtkButton" id="back_button"> @@ -72,6 +73,7 @@ Author: Tobias Frisch <object class="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="valign">center</property> <property name="border-width">4</property> <property name="orientation">vertical</property> <child> diff --git a/resources/ui/discourse.ui b/resources/ui/discourse.ui @@ -0,0 +1,350 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.40.0 + +Copyright (C) 2024 GNUnet e.V. + +GNUnet is free software: you can redistribute it and/or modify it +under the terms of the GNU Affero General Public License as published +by the Free Software Foundation, either version 3 of the License, +or (at your option) any later version. + +GNUnet 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 +Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +SPDX-License-Identifier: AGPL3.0-or-later +Author: Tobias Frisch + +--> +<interface> + <requires lib="gtk+" version="3.24"/> + <requires lib="libhandy" version="1.2"/> + <object class="HdyWindow" id="discourse_window"> + <property name="can-focus">False</property> + <property name="modal">True</property> + <property name="window-position">center-on-parent</property> + <property name="type-hint">dialog</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="HdyWindowHandle"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="HdyHeaderBar" id="title_bar"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="title" translatable="yes">Discourse</property> + <property name="show-close-button">True</property> + <child> + <object class="GtkButton" id="back_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">go-previous-symbolic</property> + </object> + </child> + </object> + </child> + <child> + <object class="GtkButton" id="details_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">view-more-symbolic</property> + </object> + </child> + </object> + <packing> + <property name="pack-type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="HdyFlap" id="details_flap"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="flap-position">end</property> + <property name="reveal-flap">False</property> + <property name="fold-policy">always</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkFlowBox"> + <property name="width-request">280</property> + <property name="height-request">180</property> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="border-width">16</property> + <property name="column-spacing">2</property> + <property name="row-spacing">2</property> + <property name="selection-mode">none</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">center</property> + <property name="border-width">8</property> + <property name="spacing">8</property> + <child> + <object class="GtkButton" id="microphone_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkStack"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkImage" id="microphone_on_icon"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">microphone-sensitivity-high-symbolic</property> + </object> + <packing> + <property name="name">page0</property> + <property name="title" translatable="yes">page0</property> + </packing> + </child> + <child> + <object class="GtkImage" id="microphone_off_icon"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">microphone-sensitivity-muted-symbolic</property> + </object> + <packing> + <property name="name">page1</property> + <property name="title" translatable="yes">page1</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="camera_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">camera-web-symbolic</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="screen_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">video-display-symbolic</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="speakers_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkStack"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkImage" id="speakers_on_icon"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">audio-volume-high-symbolic</property> + </object> + <packing> + <property name="name">page0</property> + <property name="title" translatable="yes">page0</property> + </packing> + </child> + <child> + <object class="GtkImage" id="speakers_off_icon"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">audio-volume-muted-symbolic</property> + </object> + <packing> + <property name="name">page1</property> + <property name="title" translatable="yes">page1</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="call_button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="relief">none</property> + <child> + <object class="GtkStack"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkImage" id="call_start_icon"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">call-start-symbolic</property> + </object> + <packing> + <property name="name">page0</property> + <property name="title" translatable="yes">page0</property> + </packing> + </child> + <child> + <object class="GtkImage" id="call_stop_icon"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">call-stop-symbolic</property> + </object> + <packing> + <property name="name">page1</property> + <property name="title" translatable="yes">page1</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack-type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="separator"> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + </object> + </child> + <child type="flap"> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkScrolledWindow"> + <property name="width-request">240</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="shadow-type">in</property> + <child> + <object class="GtkViewport"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkListBox" id="contacts_listbox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> +</interface> diff --git a/resources/ui/play_media.ui b/resources/ui/play_media.ui @@ -60,6 +60,7 @@ Author: Tobias Frisch <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> + <property name="relief">none</property> <child> <object class="GtkImage"> <property name="visible">True</property> diff --git a/src/ui/chat.c b/src/ui/chat.c @@ -1281,6 +1281,10 @@ ui_chat_new(MESSENGER_Application *app, handle ); + handle->discourse_button = GTK_BUTTON( + gtk_builder_get_object(handle->builder, "discourse_button") + ); + handle->block_stack = GTK_STACK( gtk_builder_get_object(handle->builder, "block_stack") ); diff --git a/src/ui/chat.h b/src/ui/chat.h @@ -86,6 +86,7 @@ typedef struct UI_CHAT_Handle HdyAvatar *chat_details_avatar; GtkButton *reveal_identity_button; + GtkButton *discourse_button; GtkStack *block_stack; GtkButton *block_button; GtkButton *unblock_button;