aboutsummaryrefslogtreecommitdiff
path: root/main/data
diff options
context:
space:
mode:
authoreerielili <lionel@les-miquelots.net>2024-08-25 13:32:38 +0000
committerGitHub <noreply@github.com>2024-08-25 13:32:38 +0000
commit45755727db79a2935376d24e7bde7eadb0f2f7ca (patch)
tree73715da99c9d980079df6f2d561822364655e04d /main/data
parent62cdea3a5e701c04f3a7fd9d6b5f48e28fef1f72 (diff)
parent51252f74c94c17d56aa75534652bdc5d43a504cb (diff)
downloaddino-45755727db79a2935376d24e7bde7eadb0f2f7ca.tar.gz
dino-45755727db79a2935376d24e7bde7eadb0f2f7ca.zip
Merge branch 'master' into add-yourselfadd-yourself
Diffstat (limited to 'main/data')
-rw-r--r--main/data/account_picker_row.ui32
-rw-r--r--main/data/add_conversation/list_row.ui46
-rw-r--r--main/data/conversation_details.ui6
-rw-r--r--main/data/gresource.xml7
-rw-r--r--main/data/icons/scalable/status/dino-status-offline.svg23
-rw-r--r--main/data/im.dino.Dino.appdata.xml100
-rw-r--r--main/data/im.dino.Dino.appdata.xml.in76
-rw-r--r--main/data/menu_app.ui8
-rw-r--r--main/data/preferences_window.ui32
-rw-r--r--main/data/preferences_window_account.ui136
-rw-r--r--main/data/preferences_window_general.ui68
-rw-r--r--main/data/settings_dialog.ui74
-rw-r--r--main/data/style-dark.css2
-rw-r--r--main/data/style.css4
14 files changed, 457 insertions, 157 deletions
diff --git a/main/data/account_picker_row.ui b/main/data/account_picker_row.ui
new file mode 100644
index 00000000..a67f7b3b
--- /dev/null
+++ b/main/data/account_picker_row.ui
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <template class="GtkListItem">
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="DinoUiAvatarPicture">
+ <property name="height-request">25</property>
+ <property name="width-request">25</property>
+ <binding name="model">
+ <lookup name="avatar-model" type="DinoUiViewModelAccountDetails">
+ <lookup name="item">GtkListItem</lookup>
+ </lookup>
+ </binding>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="xalign">0</property>
+ <binding name="label">
+ <lookup name="bare_jid" type="DinoUiViewModelAccountDetails">
+ <lookup name="item">GtkListItem</lookup>
+ </lookup>
+ </binding>
+ </object>
+ </child>
+ </object>
+ </property>
+ </template>
+</interface> \ No newline at end of file
diff --git a/main/data/add_conversation/list_row.ui b/main/data/add_conversation/list_row.ui
index b8a97174..e7dc62eb 100644
--- a/main/data/add_conversation/list_row.ui
+++ b/main/data/add_conversation/list_row.ui
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
- <object class="GtkGrid" id="outer_grid">
- <property name="margin-start">3</property>
- <property name="margin-end">3</property>
- <property name="margin-top">3</property>
- <property name="margin-bottom">3</property>
- <property name="column-spacing">10</property>
+ <object class="GtkBox" id="outer_box">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
<child>
<object class="DinoUiAvatarPicture" id="picture">
<property name="height-request">30</property>
@@ -15,34 +16,33 @@
</object>
</child>
<child>
- <object class="GtkGrid">
- <property name="valign">center</property>
+ <object class="GtkBox">
<property name="orientation">vertical</property>
+ <property name="valign">center</property>
<child>
- <object class="GtkLabel" id="name_label">
- <property name="max_width_chars">1</property>
- <property name="ellipsize">end</property>
- <property name="hexpand">1</property>
- <property name="xalign">0</property>
- <layout>
- <property name="column">0</property>
- <property name="row">0</property>
- </layout>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="name_label">
+ <property name="ellipsize">end</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="status_dot">
+ <property name="pixel-size">8</property>
+ </object>
+ </child>
</object>
</child>
<child>
<object class="GtkLabel" id="via_label">
- <property name="max_width_chars">1</property>
<property name="ellipsize">end</property>
- <property name="hexpand">1</property>
<property name="xalign">0</property>
<attributes>
<attribute name="scale" value="0.8"></attribute>
</attributes>
- <layout>
- <property name="column">0</property>
- <property name="row">1</property>
- </layout>
</object>
</child>
</object>
diff --git a/main/data/conversation_details.ui b/main/data/conversation_details.ui
index 4229d875..5ee156bb 100644
--- a/main/data/conversation_details.ui
+++ b/main/data/conversation_details.ui
@@ -122,11 +122,11 @@
</object>
</child>
<child>
- <object class="GtkButton" id="block_button">
+ <object class="GtkMenuButton" id="block_button">
<property name="visible" bind-source="model" bind-property="show-blocked" bind-flags="sync-create"/>
<child>
<object class="AdwButtonContent" id="block_button_content">
- <property name="icon-name">action-unavailable-symbolic</property>
+ <property name="icon-name">dino-block-symbolic</property>
<property name="label">Block</property>
</object>
</child>
@@ -203,4 +203,4 @@
</item>
</section>
</menu>
-</interface> \ No newline at end of file
+</interface>
diff --git a/main/data/gresource.xml b/main/data/gresource.xml
index 282838e0..8717fa85 100644
--- a/main/data/gresource.xml
+++ b/main/data/gresource.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/im/dino/Dino">
+ <file>account_picker_row.ui</file>
<file>add_conversation/add_contact_dialog.ui</file>
<file>add_conversation/add_groupchat_dialog.ui</file>
<file>add_conversation/conference_details_fragment.ui</file>
@@ -10,6 +11,7 @@
<file>chat_input.ui</file>
<file>conversation_content_view/item_metadata_header.ui</file>
<file>conversation_content_view/view.ui</file>
+ <file>conversation_details.css</file>
<file>conversation_details.ui</file>
<file>conversation_item_widget.ui</file>
<file>conversation_list_titlebar.ui</file>
@@ -49,6 +51,7 @@
<file>icons/scalable/status/dino-status-chat.svg</file>
<file>icons/scalable/status/dino-status-dnd.svg</file>
<file>icons/scalable/status/dino-status-online.svg</file>
+ <file>icons/scalable/status/dino-status-offline.svg</file>
<file>icons/scalable/status/dino-tick-symbolic.svg</file>
<file>icons/scalable/status/dino-video-off-symbolic.svg</file>
<file>icons/scalable/status/dino-video-symbolic.svg</file>
@@ -66,8 +69,10 @@
<file>occupant_list.ui</file>
<file>occupant_list_item.ui</file>
<file>quote.ui</file>
+ <file>preferences_window.ui</file>
+ <file>preferences_window_account.ui</file>
+ <file>preferences_window_general.ui</file>
<file>search_autocomplete.ui</file>
- <file>settings_dialog.ui</file>
<file>style-dark.css</file>
<file>style.css</file>
<file>unified_main_content.ui</file>
diff --git a/main/data/icons/scalable/status/dino-status-offline.svg b/main/data/icons/scalable/status/dino-status-offline.svg
new file mode 100644
index 00000000..40874238
--- /dev/null
+++ b/main/data/icons/scalable/status/dino-status-offline.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="28mm"
+ height="28mm"
+ version="1.1"
+ viewBox="0 0 99.213383 99.213383"
+ id="svg190"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs194" />
+ <g
+ transform="matrix(0.85040034,0,0,0.85040034,-46.369496,-569.55281)"
+ id="g188"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:16.8493;stroke-dasharray:none;stroke-opacity:1">
+ <circle
+ cx="112.86"
+ cy="728.08002"
+ r="50"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#6e6e6e;stroke-width:16.85;stroke-dasharray:none;stroke-opacity:1"
+ id="circle186" />
+ </g>
+</svg>
diff --git a/main/data/im.dino.Dino.appdata.xml b/main/data/im.dino.Dino.appdata.xml
index 6d889f33..616711db 100644
--- a/main/data/im.dino.Dino.appdata.xml
+++ b/main/data/im.dino.Dino.appdata.xml
@@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>im.dino.Dino</id>
- <launchable type="desktop-id">im.dino.Dino.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
- <project_license>GPL-3.0+</project_license>
<name>Dino</name>
<summary>Modern XMPP chat client</summary>
<summary xml:lang="zh_TW">現代化的 XMPP 用戶端聊天軟件</summary>
<summary xml:lang="zh_CN">现代 XMPP 聊天客户端</summary>
+ <summary xml:lang="uk">Сучасний кліент XMPP</summary>
<summary xml:lang="tr">Modern XMPP Sohbet İstemcisi</summary>
<summary xml:lang="sv">Modern XMPP-chattklient</summary>
<summary xml:lang="sq">Klient Modern Fjalosjesh XMPP</summary>
@@ -30,19 +29,25 @@
<summary xml:lang="hu">Modern XMPP csevegőprogram</summary>
<summary xml:lang="gl">Cliente moderno para conversas XMPP</summary>
<summary xml:lang="fr">Client de clavardage XMPP moderne</summary>
+ <summary xml:lang="fi">Nykyaikainen XMPP-asiakasohjelma</summary>
<summary xml:lang="fa">کلاینت نوین گپ XMPP</summary>
<summary xml:lang="eu">XMPP txat bezero modernoa</summary>
<summary xml:lang="es">Un cliente de XMPP moderno</summary>
<summary xml:lang="eo">Moderna XMPP-Retebabililo</summary>
<summary xml:lang="el">Σύγχρονος XMPP Chat Client</summary>
<summary xml:lang="de">Modernes XMPP-Chat-Programm</summary>
+ <summary xml:lang="da">Moderne XMPP-Chatklient</summary>
<summary xml:lang="cs">Moderní XMPP klient</summary>
<summary xml:lang="ca">Client de xat XMPP modern</summary>
<summary xml:lang="ar">تطبيق حديث للدردشة عبر XMPP</summary>
+ <icon type="stock">im.dino.Dino</icon>
+ <icon type="remote" width="128" height="128">https://dino.im/img/appdata/icon-dino-0.4-128x128.png</icon>
<description>
<p>Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.</p>
<p xml:lang="zh_TW">Dino 是一個爲桌面打造的現代化開放原始碼用戶端聊天軟件。它致力於提供一份簡洁而可靠的 Jabber/XMPP 體驗,同時亦尊重您的私隱。</p>
- <p xml:lang="zh_CN">Dino 是一个现代的开源聊天桌面客户端。它致力于提供一个清爽又可靠的 Jabber/XMPP 体验,同时又保护您的隐私。</p>
+ <p xml:lang="zh_CN">Dino 是现代的开源聊天桌面客户端。它致力于提供简洁可靠的 Jabber/XMPP 体验,同时兼顾用户隐私。</p>
+ <p xml:lang="vi">Dino là một ứng dụng chat mã nguồn mở hiện đại cho máy tính. Nó tập trung vào việc cung cấp một trải nghiệm Jabber/XMPP gọn gàng và tin cậy trong khi vẫn quan tâm đến quyền riêng tư của bạn.</p>
+ <p xml:lang="uk">Dino - це сучасний клієнт чату з відкритим вихідним кодом для комп’ютера. Він зосереджений на забезпеченні чистого та надійного досвіду Jabber/XMPP, зважаючи на вашу конфіденційність.</p>
<p xml:lang="tr">Dino masaüstü bilgisayarlar için modern, açık kaynaklı bir sohbet uygulamasıdır. Gizlilik hassasiyetinizi göz önünde bulundurarak temiz ve güvenilir bir Jabber/XMPP deneyimi sunmaya odaklanır.</p>
<p xml:lang="sv">Dino är en moden chattklient för skrivbordet med öppen källkod. Den erbjuder en elegant och pålitligt upplevelse av Jabber/XMPP samtidigt som den ser efter din integritet.</p>
<p xml:lang="sq">Dino është një klient modern fjalosjesh, me burim të hapur, për desktop. Ai përqendrohet në dhënien e një mënyre funksionimi të qartë dhe të qëndrueshme për protokoll Jabber/XMPP, teksa ka në mendje privatësinë tuaj.</p>
@@ -65,19 +70,22 @@
<p xml:lang="hu">A Dino egy modern, nyílt forráskódú csevegőprogram az asztali gépekre. Arra összpontosít, hogy tiszta és megbízható Jabber/XMPP-élményt nyújtson, miközben a magánszféra megőrzését is fontosnak tartja.</p>
<p xml:lang="gl">Dino é un cliente moderno e de código aberto para o escritorio. Orientado a fornecer unha experiencia Jabber/XMPP limpa e fiábel tendo a privacidade e seguranza presentes.</p>
<p xml:lang="fr">Dino est un client de clavardage libre et moderne pour le bureau. Il se concentre sur la fourniture d’une expérience XMPP simple et fiable tout en ayant toujours à l’esprit votre confidentialité.</p>
- <p xml:lang="fi">Dino on nykyaikainen avoimen lähdekoodin jutteluohjelma työpöydälle. Se keskittyy tarjoamaan selkeän ja luotettavan Jabber/XMPP-kokemuksen unohtamatta yksityisyyttäsi.</p>
+ <p xml:lang="fi">Dino on nykyaikainen avoimen lähdekoodin keskusteluohjelma työpöydälle. Se tarjoaa selkeän ja luotettavan Jabber/XMPP-kokemuksen huomioiden yksityisyytesi.</p>
<p xml:lang="fa">دینو یک کلاینت چت متن‌باز برای دسکتاپ است. تمرکز آن بر فراهم‌کردن تجربه‌ای شسته‌رفته و قابل‌اتکا از جَبِر/XMPP است درحالی که به حریم خصوصی‌تان اهمیت می‌دهد.</p>
<p xml:lang="eu">Dino mahaigainerako iturburu irekiko txat bezero moderno bat da. Jabber/XMPP esperientzia garbi eta fidagarri bat ematen du zure pribatutasuna kontuan hartzeaz gain.</p>
<p xml:lang="es">Dino es un cliente de mensajería moderno y libre para escritorio y móvil. Está enfocado en proveer una experiencia Jabber/XMPP limpia y confiable teniendo la privacidad en mente.</p>
<p xml:lang="eo">Dino estas moderna malfermfonta retbabililo por la tabla komputilo. Ĝi celas provizi puran kaj fidindan sperton de Jabber/XMPP, protektante vian privatecon.</p>
<p xml:lang="el">Το Dino είναι ένας σύγχρονος πελάτης συνομιλίας ανοιχτού κώδικα για desktop υπολογιστές. Επικεντρώνεται στην παροχή μιας καθαρής και αξιόπιστης εμπειρίας Jabber/XMPP έχοντας παράλληλα υπόψη την προστασία των προσωπικών δεδομένων σας.</p>
<p xml:lang="de">Dino ist ein modernes, quelloffenes Chat-Programm für den Desktop. Es bietet ein aufgeräumtes und robustes Jabber-/XMPP-Erlebnis und legt einen Schwerpunkt auf Privatsphäre.</p>
+ <p xml:lang="da">Dino er en moderne open-source chatklient til skrivebordet. Den fokuserer på at give en ren og pålidelig Jabber/XMPP-oplevelse som samtidig har dit privatliv på sinde.</p>
<p xml:lang="cs">Dino je moderní open-source chatovací klient pro stolní počítače. Jeho cílem je poskytování čistého a spolehlivého prostředí Jabber/XMPP s důrazem na zachování vašeho soukromí.</p>
<p xml:lang="ca">Dino és un client de xat lliure i modern per a l'escriptori. Està centrat en proveir una experiència neta i fiable de Jabber/XMPP, sempre tenint en compte la vostra privacitat.</p>
<p xml:lang="ar">إنّ Dino برنامج عصري ومفتوح المصدر للدردشة صُمّم لسطح المكتب. ويُركّز علي تقديم تجربة نظيفة وموثوق منها لجابر/XMPP مع أخذ خصوصيتكم بعين الإعتبار.</p>
<p>It supports end-to-end encryption with OMEMO and OpenPGP and allows configuring privacy-related features such as read receipts and typing notifications.</p>
<p xml:lang="zh_TW">它支持 OMEMO 和 OpenPGP 兩種端到端加密方式,並且容許設定私隱相關的特性譬如已讀回條和正在輸入提示。</p>
- <p xml:lang="zh_CN">它支持 OMEMO 和 OpenPGP 端对端加密并允许配置隐私相关的特性比如已读回执和输入提醒。</p>
+ <p xml:lang="zh_CN">它支持 OMEMO 和 OpenPGP 端对端加密并允许配置隐私相关的特性比如已读回执和输入通知。</p>
+ <p xml:lang="vi">Nó hỗ trợ mã hoá đầu cuối với OMEMO và OpenPGP, đồng thời cho phép cấu hình các tính năng liên quan đến quyền riêng tư như thông báo trạng thái tin nhắn và trạng thái đang nhập.</p>
+ <p xml:lang="uk">Він підтримує наскрізне шифрування за допомогою OMEMO та OpenPGP і дозволяє налаштовувати пов’язані з конфіденційністю функції, такі як сповіщення про прочитання та сповіщення про введення тексту.</p>
<p xml:lang="tr">OMEMO ve OpenPGP ile baştan sona şifreleme destekler ve "okundu" bilgisi, "yazıyor..." bildirimi gibi gizlilikle alakalı özelliklerin ayarlanabilmesini sağlar.</p>
<p xml:lang="sv">Dino stödjer end-to-end-kryptering med OMEMO och OpenPGP och tillåter konfigurering av funktioner med integritetspåverkan som läsbekräftelser och skriftaviseringar.</p>
<p xml:lang="sq">Mbulon fshehtëzim skaj-më-skaj me OMEMO dhe OpenPGP dhe lejon formësim veçorish të lidhura me privatësinë, bie fjala, dëshmish leximi dhe njoftime shtypjeje.</p>
@@ -98,21 +106,24 @@
<p xml:lang="ie">It supporta ciffration terminal per OMEMO e OpenPGP e permisse configurar sensitiv functiones quam confirmation de lectada e notificationes de tippada.</p>
<p xml:lang="id">Mendukung enkripsi end-to-end dengan OMEMO dan OpenPGP, dan memungkinkan pengaturan fitur terkait privasi seperti tanda pesan dibaca dan pemberitahuan pengetikan.</p>
<p xml:lang="hu">Támogatja az OMEMO és az OpenPGP használatával történő végpontok közötti titkosítást, és lehetővé teszi a magánszférához kapcsolódó funkciókat, mint például az olvasási visszaigazolást és a gépelési értesítéseket.</p>
- <p xml:lang="gl">Suporta o cifrado de punto-a-punto con OMEMO e OpenPGP e permite configurar trazos orientados á privacidade tales coma confirmación de lectura e notificacións de escritura.</p>
+ <p xml:lang="gl">Suporta a cifraxe de punto-a-punto con OMEMO e OpenPGP e permite configurar funcións orientadas á privacidade tales coma confirmación de lectura e notificacións de escritura.</p>
<p xml:lang="fr">Il prend en charge le chiffrement de bout en bout avec OMEMO et OpenPGP et permet de configurer les fonctions liées à la confidentialité telles que les accusés de réception et les notifications d’écriture.</p>
- <p xml:lang="fi">Se tukee päästä päähän -salausta OMEMO:n ja OpenPGP:n avulla ja mahdollistaa yksityisyyteen liittyvien ominaisuuksien, kuten lukukuittausten ja kirjoitusilmoitusten asetusten määrittämisen.</p>
+ <p xml:lang="fi">Se tukee päästä päähän -salausta OMEMO:n ja OpenPGP:n avulla ja mahdollistaa yksityisyyteen liittyvien ominaisuuksien, kuten lukukuittausten ja kirjoitusilmoitusten asetusten määrittämisen.</p>
<p xml:lang="fa">از رمزگذاری سرتاسر با اُمیمو و اُپن‌پی‌جی‌پی پشتیبانی می‌کند و اجازه تنظیم قابلیت‌های مربوط به حریم خصوصی را می‌دهد، از جمله: رسید خوانده‌شدن پیام‌ها و اعلان در حال نوشتن بودن.</p>
<p xml:lang="eu">Amaieratik amaierarako enkriptazioa onartzen du OMEMO eta OpenPGPrekin eta pribatutasun ezaugarriak konfiguratzea baimentzen du irakurtze markak eta idazketa jakinarazpenak bezala.</p>
<p xml:lang="es">Soporta cifrado fin-a-fin a través de OMEMO y OpenPGP y permite configurar características relacionadas con la privacidad, como confirmaciones de lectura y notificaciones de escritura.</p>
<p xml:lang="eo">Ĝi subtenas fin-al-finan ĉifradon per OMEMO kaj OpenPGP kaj permesas agordi funkciojn pri privateco kiel kvitancojn de legiteco kaj sciigojn pri tajpado.</p>
<p xml:lang="el">Υποστηρίζει κρυπτογράφηση από άκρο σε άκρο με OMEMO και OpenPGP και επιτρέπει την ρύθμιση λειτουργιών που σχετίζονται με το απόρρητο, όπως αποδείξεις ανάγνωσης και ειδοποιήσεις πληκτρολόγησης.</p>
<p xml:lang="de">Er unterstützt Ende-zu-Ende Verschlüsselung mit OMEMO und OpenPGP und enthält Privatsphäre-Einstellungen zu Lesebestätigungen und Tippbenachrichtigungen.</p>
+ <p xml:lang="da">Den understøtter end-to-end kryptering med OMEMO og OpenPGP og tillader at konfigurere privatlivs-relaterede features så som læsekvitteringer og besked om skrivning.</p>
<p xml:lang="cs">Podporuje šifrování end-to-end pomocí OMEMO a OpenPGP a umožňuje konfigurovat funkce související se soukromím, jako jsou potvrzení o přečtení a oznámení o psaní.</p>
<p xml:lang="ca">Implementa xifratge punt a punt amb OMEMO i OpenPGP, i permet configurar funcionalitats relacionades amb la privacitat com per exemple rebuts de lectura i notificacions d'escriptura.</p>
<p xml:lang="ar">وهو يدعم التشفير بواسطة OMEMO و OpenPGP يسمح بإعداد ميزات الخصوصية كالإيصالات المقروءة والإخطارات عند الكتابة.</p>
<p>Dino fetches history from the server and synchronizes messages with other devices.</p>
<p xml:lang="zh_TW">Dino 從伺服器取得訊息並與其他裝置同步。</p>
<p xml:lang="zh_CN">Dino 从服务器获取消息并和其他设备同步。</p>
+ <p xml:lang="vi">Dino lấy lịch sử từ server và đồng bộ tin nhắn với các thiết bị khác.</p>
+ <p xml:lang="uk">Dino отримує історію з сервера та синхронізує повідомлення з іншими пристроями.</p>
<p xml:lang="tr">Dino sunucudan konuşma geçmişini sunucudan çeker ve diğer cihazlara senkronize eder.</p>
<p xml:lang="sv">Dino hämtar historik från servern och synkroniserar meddelanden med andra enheter.</p>
<p xml:lang="sq">Dino e sjell historikun prej shërbyesve dhe njëkohëson mesazhet në pajisje të tjera.</p>
@@ -135,39 +146,34 @@
<p xml:lang="hu">A Dino lekéri az előzményeket a kiszolgálóról, és szinkronizálja az üzeneteket a többi eszközzel.</p>
<p xml:lang="gl">Dino obtén o histórico dende o servidor e sincroniza as mensaxes con outros dispositivos.</p>
<p xml:lang="fr">Dino récupère l’historique du serveur et synchronise les messages avec les autres clients.</p>
- <p xml:lang="fi">Dino hakee historian palvelimelta ja synkronisoi viestit muiden laitteiden kanssa.</p>
+ <p xml:lang="fi">Dino hakee historian palvelimelta ja synkronoi viestit muiden laitteiden kanssa.</p>
<p xml:lang="fa">دینو تاریخچه را از سرور دریافت می‌کند و پیام‌ها را با دیگر دستگاه‌ها همگام‌سازی می‌کند.</p>
<p xml:lang="eu">Dinok zerbitzaritik hartzen du historia eta beste gailuekin mezuak sinkronizatzen ditu.</p>
<p xml:lang="es">Dino recupera el historial de mensajes desde el servidor y sincroniza los mensajes con otros dispositivos.</p>
<p xml:lang="eo">Dino prenas historion el la servilo kaj sinkronigas mesaĝojn kun aliaj aparatoj.</p>
<p xml:lang="el">Το Dino ανακτά το ιστορικό από τον διακομιστή και συγχρονίζει τα μηνύματα με άλλες συσκευές.</p>
<p xml:lang="de">Dino ruft Gesprächsverläufe vom Server ab und synchronisiert Nachrichten mit anderen Geräten.</p>
+ <p xml:lang="da">Dino henter tidligere beskeder fra serveren og synkroniserer beskeder med andre enheder.</p>
<p xml:lang="cs">Dino načítá historii ze serveru a synchronizuje zprávy s ostatními zařízeními.</p>
<p xml:lang="ca">Dino recupera l'historial del servidor i sincronitza els missatges amb altres dispositius.</p>
<p xml:lang="ar">يقوم Dino بجلب السِجلّ مِن السيرفر ثم يُزامِن الرسائل مع الأجهزة الأخرى.</p>
</description>
- <screenshots>
- <screenshot type="default">
- <image>https://dino.im/img/appdata/2022-02_screenshot-main.png</image>
- </screenshot>
- <screenshot>
- <image>https://dino.im/img/appdata/2022-02_screenshot-call.png</image>
- </screenshot>
- <screenshot>
- <image>https://dino.im/img/appdata/start_chat.png</image>
- </screenshot>
- </screenshots>
- <translation type="gettext">dino</translation>
- <developer_name>Dino Development Team</developer_name>
+ <categories>
+ <category>Network</category>
+ <category>InstantMessaging</category>
+ <category>Chat</category>
+ <category>GTK</category>
+ </categories>
+ <keywords>
+ <keyword translate="no">Jabber</keyword>
+ <keyword translate="no">XMPP</keyword>
+ </keywords>
<url type="homepage">https://dino.im</url>
<url type="bugtracker">https://github.com/dino/dino/issues</url>
<url type="donation">https://dino.im/#donate</url>
+ <url type="vcs-browser">https://github.com/dino/dino</url>
<url type="translate">https://hosted.weblate.org/projects/dino/</url>
- <update_contact>appstream@dino.im</update_contact>
- <branding>
- <color type="primary" scheme_preference="light">#B2DFDB</color>
- <color type="primary" scheme_preference="dark">#004D40</color>
- </branding>
+ <launchable type="desktop-id">im.dino.Dino.desktop</launchable>
<releases>
<release date="2023-02-07" version="0.4">
<description>
@@ -190,8 +196,50 @@
</description>
</release>
</releases>
+ <provides>
+ <mediatype>x-scheme-handler/xmpp</mediatype>
+ </provides>
+ <recommends>
+ <internet>always</internet>
+ </recommends>
+ <supports>
+ <control>pointing</control>
+ <control>keyboard</control>
+ <control>touch</control>
+ </supports>
+ <project_license>GPL-3.0+</project_license>
+ <developer id="im.dino">
+ <name>Dino Development Team</name>
+ <url>https://dino.im/</url>
+ </developer>
+ <!-- Deprecated: -->
+ <developer_name>Dino Development Team</developer_name>
+ <screenshots>
+ <screenshot type="default">
+ <image type="source" width="2244" height="1644" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-main-2244x1644@2.png</image>
+ <caption>Main screen</caption>
+ </screenshot>
+ <screenshot>
+ <image type="source" width="1441" height="929" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-call-1441x929@2.png</image>
+ <caption>Video call screen</caption>
+ </screenshot>
+ <screenshot>
+ <image type="source" width="2244" height="1644" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-search-2244x1644@2.png</image>
+ <caption>Main screen featuring search overlay</caption>
+ </screenshot>
+ <screenshot>
+ <image type="source" width="964" height="1552" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-mobile-964x1552@2.png</image>
+ <caption>Main screen in mobile size window</caption>
+ </screenshot>
+ </screenshots>
+ <translation type="gettext">dino</translation>
<content_rating type="oars-1.1">
<content_attribute id="social-chat">intense</content_attribute>
<content_attribute id="social-audio">intense</content_attribute>
</content_rating>
+ <update_contact>appstream@dino.im</update_contact>
+ <branding>
+ <color type="primary" scheme_preference="light">#B2DFDB</color>
+ <color type="primary" scheme_preference="dark">#004D40</color>
+ </branding>
</component>
diff --git a/main/data/im.dino.Dino.appdata.xml.in b/main/data/im.dino.Dino.appdata.xml.in
index e6c87738..4022a3d6 100644
--- a/main/data/im.dino.Dino.appdata.xml.in
+++ b/main/data/im.dino.Dino.appdata.xml.in
@@ -1,38 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>im.dino.Dino</id>
- <launchable type="desktop-id">im.dino.Dino.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
- <project_license>GPL-3.0+</project_license>
<name>Dino</name>
<summary>Modern XMPP chat client</summary>
+ <icon type="stock">im.dino.Dino</icon>
+ <icon type="remote" width="128" height="128">https://dino.im/img/appdata/icon-dino-0.4-128x128.png</icon>
<description>
<p>Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.</p>
<p>It supports end-to-end encryption with OMEMO and OpenPGP and allows configuring privacy-related features such as read receipts and typing notifications.</p>
<p>Dino fetches history from the server and synchronizes messages with other devices.</p>
</description>
- <screenshots>
- <screenshot type="default">
- <image>https://dino.im/img/appdata/2022-02_screenshot-main.png</image>
- </screenshot>
- <screenshot>
- <image>https://dino.im/img/appdata/2022-02_screenshot-call.png</image>
- </screenshot>
- <screenshot>
- <image>https://dino.im/img/appdata/start_chat.png</image>
- </screenshot>
- </screenshots>
- <translation type="gettext">dino</translation>
- <developer_name>Dino Development Team</developer_name>
+ <categories>
+ <category>Network</category>
+ <category>InstantMessaging</category>
+ <category>Chat</category>
+ <category>GTK</category>
+ </categories>
+ <keywords>
+ <keyword translate="no">Jabber</keyword>
+ <keyword translate="no">XMPP</keyword>
+ </keywords>
<url type="homepage">https://dino.im</url>
<url type="bugtracker">https://github.com/dino/dino/issues</url>
<url type="donation">https://dino.im/#donate</url>
+ <url type="vcs-browser">https://github.com/dino/dino</url>
<url type="translate">https://hosted.weblate.org/projects/dino/</url>
- <update_contact>appstream@dino.im</update_contact>
- <branding>
- <color type="primary" scheme_preference="light">#B2DFDB</color>
- <color type="primary" scheme_preference="dark">#004D40</color>
- </branding>
+ <launchable type="desktop-id">im.dino.Dino.desktop</launchable>
<releases>
<release date="2023-02-07" version="0.4">
<description>
@@ -55,8 +49,50 @@
</description>
</release>
</releases>
+ <provides>
+ <mediatype>x-scheme-handler/xmpp</mediatype>
+ </provides>
+ <recommends>
+ <internet>always</internet>
+ </recommends>
+ <supports>
+ <control>pointing</control>
+ <control>keyboard</control>
+ <control>touch</control>
+ </supports>
+ <project_license>GPL-3.0+</project_license>
+ <developer id="im.dino">
+ <name>Dino Development Team</name>
+ <url>https://dino.im/</url>
+ </developer>
+ <!-- Deprecated: -->
+ <developer_name>Dino Development Team</developer_name>
+ <screenshots>
+ <screenshot type="default">
+ <image type="source" width="2244" height="1644" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-main-2244x1644@2.png</image>
+ <caption>Main screen</caption>
+ </screenshot>
+ <screenshot>
+ <image type="source" width="1441" height="929" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-call-1441x929@2.png</image>
+ <caption>Video call screen</caption>
+ </screenshot>
+ <screenshot>
+ <image type="source" width="2244" height="1644" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-search-2244x1644@2.png</image>
+ <caption>Main screen featuring search overlay</caption>
+ </screenshot>
+ <screenshot>
+ <image type="source" width="964" height="1552" scale="2">https://dino.im/img/appdata/screenshot-dino-0.4-mobile-964x1552@2.png</image>
+ <caption>Main screen in mobile size window</caption>
+ </screenshot>
+ </screenshots>
+ <translation type="gettext">dino</translation>
<content_rating type="oars-1.1">
<content_attribute id="social-chat">intense</content_attribute>
<content_attribute id="social-audio">intense</content_attribute>
</content_rating>
+ <update_contact>appstream@dino.im</update_contact>
+ <branding>
+ <color type="primary" scheme_preference="light">#B2DFDB</color>
+ <color type="primary" scheme_preference="dark">#004D40</color>
+ </branding>
</component>
diff --git a/main/data/menu_app.ui b/main/data/menu_app.ui
index bb33ff65..9b85634d 100644
--- a/main/data/menu_app.ui
+++ b/main/data/menu_app.ui
@@ -3,13 +3,7 @@
<menu id="menu_app">
<section>
<item>
- <attribute name="action">app.accounts</attribute>
- <attribute name="label" translatable="yes">Accounts</attribute>
- </item>
- </section>
- <section>
- <item>
- <attribute name="action">app.settings</attribute>
+ <attribute name="action">app.preferences</attribute>
<attribute name="label" translatable="yes">Preferences</attribute>
</item>
<item>
diff --git a/main/data/preferences_window.ui b/main/data/preferences_window.ui
new file mode 100644
index 00000000..d262dd76
--- /dev/null
+++ b/main/data/preferences_window.ui
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <object class="DinoUiViewModelPreferencesWindow" id="model" />
+ <template class="DinoUiPreferencesWindow">
+ <property name="default-width">500</property>
+ <property name="default-height">600</property>
+ <property name="modal">True</property>
+ <child>
+ <object class="DinoUiPreferencesWindowAccounts" id="accounts_page">
+ <property name="title">Accounts</property>
+ <property name="name">accounts</property>
+ <property name="icon-name">system-users-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="DinoUiPreferencesWindowEncryption" id="encryption_page">
+ <property name="title">Encryption</property>
+ <property name="name">encryption</property>
+ <property name="icon-name">changes-prevent-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="DinoUiGeneralPreferencesPage" id="general_page">
+ <property name="title">General</property>
+ <property name="name">general</property>
+ <property name="icon-name">preferences-system-symbolic</property>
+ <property name="model" bind-source="model" bind-property="general-page" bind-flags="sync-create" />
+ </object>
+ </child>
+ </template>
+</interface> \ No newline at end of file
diff --git a/main/data/preferences_window_account.ui b/main/data/preferences_window_account.ui
new file mode 100644
index 00000000..e0fa4f76
--- /dev/null
+++ b/main/data/preferences_window_account.ui
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <template class="DinoUiAccountPreferencesSubpage">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="AdwHeaderBar" id="headerbar">
+ <style>
+ <class name="flat"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="back_button">
+ <property name="icon-name">go-previous-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="vexpand">True</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="AdwClamp">
+ <child>
+ <object class="GtkBox">
+ <property name="margin-top">24</property>
+ <property name="margin-bottom">24</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="spacing">24</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkOverlay">
+ <property name="halign">center</property>
+ <property name="child">
+ <object class="DinoUiAvatarPicture" id="avatar">
+ <property name="height-request">144</property>
+ <property name="width-request">144</property>
+ </object>
+ </property>
+ <child type="overlay">
+ <object class="GtkBox" id="avatar_menu_box">
+ <property name="opacity">0.9</property>
+ <property name="margin-end">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="halign">end</property>
+ <property name="valign">end</property>
+ <style>
+ <class name="card"/>
+ <class name="toolbar"/>
+ <class name="overlay-toolbar"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="edit_avatar_button">
+ <property name="icon-name">document-edit-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove_avatar_button">
+ <property name="icon-name">user-trash-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwPreferencesGroup">
+ <child>
+ <object class="AdwActionRow" id="xmpp_address">
+ <property name="title" translatable="yes">XMPP Address</property>
+ <style>
+ <class name="property"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="AdwActionRow" id="local_alias">
+ <property name="title" translatable="yes">Local alias</property>
+ <child type="suffix">
+ <object class="GtkEntry" id="local_alias_entry">
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwActionRow" id="connection_status">
+ <property name="title" translatable="yes">Connection status</property>
+ <style>
+ <class name="property"/>
+ </style>
+ <child type="suffix">
+ <object class="GtkButton" id="enter_password_button">
+ <property name="label">Enter password</property>
+ <property name="valign">center</property>
+ <property name="visible">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="button_container">
+ <property name="halign">center</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkButton" id="disable_account_button">
+ <property name="label" translatable="1">Disable account</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="pill"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove_account_button">
+ <property name="label" translatable="1">Remove account</property>
+ <property name="halign">center</property>
+ <style>
+ <class name="pill"/>
+ <class name="destructive-action"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface> \ No newline at end of file
diff --git a/main/data/preferences_window_general.ui b/main/data/preferences_window_general.ui
new file mode 100644
index 00000000..33d1a2c9
--- /dev/null
+++ b/main/data/preferences_window_general.ui
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <template class="DinoUiGeneralPreferencesPage" parent="AdwPreferencesPage">
+ <child>
+ <object class="AdwPreferencesGroup">
+ <child>
+ <object class="AdwActionRow">
+ <property name="title" translatable="yes">Send _Typing Notifications</property>
+ <property name="use-underline">True</property>
+ <property name="activatable-widget">typing_switch</property>
+ <child type="suffix">
+ <object class="GtkSwitch" id="typing_switch">
+<!-- <property name="active" bind-source="DinoUiGeneralPreferencesPage" bind-property="send-typing" bind-flags="sync-create|bidirectional" />-->
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwActionRow">
+ <property name="title" translatable="yes">Send _Read Receipts</property>
+ <property name="use-underline">True</property>
+ <property name="activatable-widget">marker_switch</property>
+ <child type="suffix">
+ <object class="GtkSwitch" id="marker_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwPreferencesGroup">
+ <child>
+ <object class="AdwActionRow">
+ <property name="title" translatable="yes">_Notifications</property>
+ <property name="subtitle" translatable="yes">Notify when a new message arrives</property>
+ <property name="use-underline">True</property>
+ <property name="activatable-widget">notification_switch</property>
+ <child type="suffix">
+ <object class="GtkSwitch" id="notification_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwPreferencesGroup">
+ <child>
+ <object class="AdwActionRow">
+ <property name="title" translatable="yes">_Convert Smileys to Emoji</property>
+ <property name="use-underline">True</property>
+ <property name="activatable-widget">emoji_switch</property>
+ <child type="suffix">
+ <object class="GtkSwitch" id="emoji_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface>
diff --git a/main/data/settings_dialog.ui b/main/data/settings_dialog.ui
deleted file mode 100644
index a8b24135..00000000
--- a/main/data/settings_dialog.ui
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="DinoUiSettingsDialog" parent="AdwPreferencesWindow">
- <property name="default-width">500</property>
- <property name="default-height">360</property>
- <property name="modal">True</property>
- <property name="search-enabled">False</property>
- <child>
- <object class="AdwPreferencesPage">
- <child>
- <object class="AdwPreferencesGroup">
- <child>
- <object class="AdwActionRow">
- <property name="title" translatable="yes">Send _Typing Notifications</property>
- <property name="use-underline">True</property>
- <property name="activatable-widget">typing_switch</property>
- <child type="suffix">
- <object class="GtkSwitch" id="typing_switch">
- <property name="valign">center</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="AdwActionRow">
- <property name="title" translatable="yes">Send _Read Receipts</property>
- <property name="use-underline">True</property>
- <property name="activatable-widget">marker_switch</property>
- <child type="suffix">
- <object class="GtkSwitch" id="marker_switch">
- <property name="valign">center</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="AdwPreferencesGroup">
- <child>
- <object class="AdwActionRow">
- <property name="title" translatable="yes">_Notifications</property>
- <property name="subtitle" translatable="yes">Notify when a new message arrives</property>
- <property name="use-underline">True</property>
- <property name="activatable-widget">notification_switch</property>
- <child type="suffix">
- <object class="GtkSwitch" id="notification_switch">
- <property name="valign">center</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="AdwPreferencesGroup">
- <child>
- <object class="AdwActionRow">
- <property name="title" translatable="yes">_Convert Smileys to Emoji</property>
- <property name="use-underline">True</property>
- <property name="activatable-widget">emoji_switch</property>
- <child type="suffix">
- <object class="GtkSwitch" id="emoji_switch">
- <property name="valign">center</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
-</interface>
diff --git a/main/data/style-dark.css b/main/data/style-dark.css
index 3bd0add0..791ae9c8 100644
--- a/main/data/style-dark.css
+++ b/main/data/style-dark.css
@@ -1,3 +1,3 @@
-.dino-main .overlay-toolbar {
+.overlay-toolbar {
background-color: shade(@view_bg_color, 1.5);
} \ No newline at end of file
diff --git a/main/data/style.css b/main/data/style.css
index a7a1d8df..5a70ba83 100644
--- a/main/data/style.css
+++ b/main/data/style.css
@@ -127,13 +127,13 @@ picture.avatar {
/* Overlay Toolbar */
-.dino-main .overlay-toolbar {
+.overlay-toolbar {
padding: 2px;
border-radius: 6px;
border-spacing: 0;
}
-.dino-main .overlay-toolbar > * {
+.overlay-toolbar > * {
margin-top: 0;
margin-bottom: 0;
}