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:
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;