diff options
Diffstat (limited to 'main/data')
| -rw-r--r-- | main/data/chat_input.ui | 37 | ||||
| -rw-r--r-- | main/data/conversation_content_view/view.ui | 1 | ||||
| -rw-r--r-- | main/data/conversation_row.ui | 7 | ||||
| -rw-r--r-- | main/data/gresource.xml | 2 | ||||
| -rw-r--r-- | main/data/main_window.ui | 72 | ||||
| -rw-r--r-- | main/data/main_window_placeholder.ui | 5 | ||||
| -rw-r--r-- | main/data/menu_add.ui | 15 | ||||
| -rw-r--r-- | main/data/menu_app.ui | 16 | ||||
| -rw-r--r-- | main/data/preferences_window/account_preferences_subpage.ui | 11 | ||||
| -rw-r--r-- | main/data/preferences_window/general_preferences_page.ui | 54 | ||||
| -rw-r--r-- | main/data/preferences_window/preferences_dialog.ui | 10 | ||||
| -rw-r--r-- | main/data/preferences_window/tweaks_preferences_page.ui | 55 | ||||
| -rw-r--r-- | main/data/style.css | 199 |
13 files changed, 384 insertions, 100 deletions
diff --git a/main/data/chat_input.ui b/main/data/chat_input.ui index c440d815..1f6396d6 100644 --- a/main/data/chat_input.ui +++ b/main/data/chat_input.ui @@ -4,7 +4,6 @@ <template class="DinoUiChatInputView"> <property name="hexpand">True</property> <property name="orientation">vertical</property> - <property name="margin-top">4</property> <child> <object class="GtkBox" id="unavailable_box"> <property name="margin_start">14</property> @@ -27,15 +26,24 @@ </object> </child> <child> + <object class="GtkLabel" id="chat_input_status"> + <property name="xalign">0</property> + <property name="margin_bottom">3</property> + <property name="margin_start">14</property> + <property name="margin_end">14</property> + <property name="wrap">True</property> + <attributes> + <attribute name="scale" value="0.8"></attribute> + </attributes> + <style> + <class name="chat-input-status"/> + </style> + </object> + </child> + <child> <object class="GtkBox" id="outer_box"> - <property name="margin_start">14</property> - <property name="margin_end">14</property> <style> <class name="dino-chatinput"/> - <class name="card"/> - <class name="toolbar"/> - <class name="activatable"/> - <class name="compact-card-toolbar"/> </style> <child> <object class="GtkButton" id="file_button"> @@ -126,20 +134,5 @@ </child> </object> </child> - <child> - <object class="GtkLabel" id="chat_input_status"> - <property name="xalign">0</property> - <property name="margin_bottom">3</property> - <property name="margin_start">14</property> - <property name="margin_end">14</property> - <property name="wrap">True</property> - <attributes> - <attribute name="scale" value="0.8"></attribute> - </attributes> - <style> - <class name="chat-input-status"/> - </style> - </object> - </child> </template> </interface> diff --git a/main/data/conversation_content_view/view.ui b/main/data/conversation_content_view/view.ui index c5ee7a92..24ce5476 100644 --- a/main/data/conversation_content_view/view.ui +++ b/main/data/conversation_content_view/view.ui @@ -31,6 +31,7 @@ <class name="card"/> <class name="toolbar"/> <class name="compact-card-toolbar"/> + <class name="message-actions"/> </style> </object> </child> diff --git a/main/data/conversation_row.ui b/main/data/conversation_row.ui index 9b113427..461c1440 100644 --- a/main/data/conversation_row.ui +++ b/main/data/conversation_row.ui @@ -14,6 +14,13 @@ <property name="margin-start">2</property> <property name="margin-end">4</property> <child> + <object class="GtkDrawingArea" id="account_color_indicator"> + <property name="width-request">4</property> + <property name="margin-end">6</property> + <property name="vexpand">True</property> + </object> + </child> + <child> <object class="DinoUiAvatarPicture" id="picture"> <property name="height-request">35</property> <property name="width-request">35</property> diff --git a/main/data/gresource.xml b/main/data/gresource.xml index 86716ce9..29d9c7d3 100644 --- a/main/data/gresource.xml +++ b/main/data/gresource.xml @@ -94,6 +94,7 @@ <file>preferences_window/change_password_dialog.ui</file> <file>preferences_window/general_preferences_page.ui</file> <file>preferences_window/preferences_dialog.ui</file> + <file>preferences_window/tweaks_preferences_page.ui</file> <file>join_room_dialog.ui</file> <file>join_room_dialog1.ui</file> @@ -101,7 +102,6 @@ <file>main_window.ui</file> <file>main_window_placeholder.ui</file> <file>manage_key_dialog.ui</file> - <file>menu_add.ui</file> <file>menu_app.ui</file> <file>menu_conversation.ui</file> <file>menu_encryption.ui</file> diff --git a/main/data/main_window.ui b/main/data/main_window.ui index 6ca4e915..e62c952b 100644 --- a/main/data/main_window.ui +++ b/main/data/main_window.ui @@ -2,15 +2,19 @@ <interface> <requires lib="gtk" version="4.0"/> <requires lib="libadwaita" version="1.4"/> - <template class="DinoUiMainWindow" parent="AdwApplicationWindow"> - <child> - <object class="AdwBreakpoint"> - <condition>max-width: 600sp</condition> - <setter object="navigation_split_view" property="collapsed">True</setter> - </object> - </child> - <property name="content"> - <object class="GtkStack" id="stack"> + <template class="DinoUiMainWindow" parent="GtkApplicationWindow"> + <property name="child"> + <object class="AdwBreakpointBin"> + <property name="width-request">360</property> + <property name="height-request">320</property> + <child> + <object class="AdwBreakpoint"> + <condition>max-width: 600sp</condition> + <setter object="navigation_split_view" property="collapsed">True</setter> + </object> + </child> + <property name="child"> + <object class="GtkStack" id="stack"> <child> <object class="GtkStackPage"> <property name="name">main</property> @@ -24,26 +28,16 @@ <property name="child"> <object class="AdwToolbarView"> <child type="top"> - <object class="AdwHeaderBar" id="header_bar"> - <property name="show-title">False</property> - <property name="hexpand">False</property> + <object class="GtkBox" id="conversation_list_toolbar"> + <property name="spacing">6</property> <style> - <class name="dino-left"/> + <class name="toolbar"/> + <class name="dino-conversation-list-toolbar"/> </style> <child> - <object class="GtkMenuButton" id="add_button"> - <property name="has-frame">False</property> - <child> - <object class="GtkImage"> - <property name="icon-name">dino-list-add-symbolic</property> - <property name="icon-size">normal</property> - </object> - </child> - </object> - </child> - <child type="end"> <object class="GtkMenuButton" id="menu_button"> <property name="has-frame">False</property> + <property name="valign">center</property> <child> <object class="GtkImage"> <property name="icon-name">dino-open-menu-symbolic</property> @@ -52,6 +46,16 @@ </child> </object> </child> + <child> + <object class="GtkSearchEntry" id="conversation_search_entry"> + <property name="hexpand">True</property> + <property name="valign">center</property> + <property name="placeholder-text" translatable="yes">Search conversations</property> + <style> + <class name="dino-conversation-search-entry"/> + </style> + </object> + </child> </object> </child> <property name="content"> @@ -87,7 +91,7 @@ <property name="width_request">260</property> <property name="title" translatable="yes">You have no open chats</property> - <property name="description" translatable="yes">Click + to start a chat or join a channel</property> + <property name="description" translatable="yes">Use the menu to start a chat or join a channel</property> </object> </property> </object> @@ -108,8 +112,22 @@ <object class="AdwToolbarView"> <child type="top"> <object class="AdwHeaderBar" id="conversation_headerbar"> + <property name="show-start-title-buttons">False</property> + <property name="show-end-title-buttons">False</property> + <style> + <class name="dino-chat-headerbar"/> + </style> <property name="title-widget"> - <object class="AdwWindowTitle" id="conversation_window_title" /> + <object class="GtkButton" id="conversation_title_button"> + <property name="sensitive">False</property> + <property name="tooltip-text" translatable="yes">Conversation Details</property> + <style> + <class name="flat"/> + </style> + <property name="child"> + <object class="AdwWindowTitle" id="conversation_window_title" /> + </property> + </object> </property> </object> </child> @@ -185,6 +203,8 @@ </property> </object> </child> + </object> + </property> </object> </property> </template> diff --git a/main/data/main_window_placeholder.ui b/main/data/main_window_placeholder.ui index 123920fe..b9b72820 100644 --- a/main/data/main_window_placeholder.ui +++ b/main/data/main_window_placeholder.ui @@ -8,11 +8,6 @@ <property name="hexpand">True</property> <property name="vexpand">True</property> <child> - <object class="GtkHeaderBar"> - <property name="show-title-buttons">true</property> - </object> - </child> - <child> <object class="GtkBox"> <property name="orientation">vertical</property> <property name="valign">center</property> diff --git a/main/data/menu_add.ui b/main/data/menu_add.ui deleted file mode 100644 index c984e081..00000000 --- a/main/data/menu_add.ui +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<interface> - <menu id="menu_add"> - <section> - <item> - <attribute name="action">app.add_chat</attribute> - <attribute name="label" translatable="yes">Start Conversation</attribute> - </item> - <item> - <attribute name="action">app.add_conference</attribute> - <attribute name="label" translatable="yes">Join Channel</attribute> - </item> - </section> - </menu> -</interface> diff --git a/main/data/menu_app.ui b/main/data/menu_app.ui index 9b85634d..c056c1aa 100644 --- a/main/data/menu_app.ui +++ b/main/data/menu_app.ui @@ -3,6 +3,22 @@ <menu id="menu_app"> <section> <item> + <attribute name="action">app.add_chat</attribute> + <attribute name="label" translatable="yes">Start Conversation</attribute> + </item> + <item> + <attribute name="action">app.add_conference</attribute> + <attribute name="label" translatable="yes">Join Channel</attribute> + </item> + </section> + <section> + <item> + <attribute name="action">app.mark_all_as_read</attribute> + <attribute name="label" translatable="yes">Mark all as read</attribute> + </item> + </section> + <section> + <item> <attribute name="action">app.preferences</attribute> <attribute name="label" translatable="yes">Preferences</attribute> </item> diff --git a/main/data/preferences_window/account_preferences_subpage.ui b/main/data/preferences_window/account_preferences_subpage.ui index bb458e74..9860de27 100644 --- a/main/data/preferences_window/account_preferences_subpage.ui +++ b/main/data/preferences_window/account_preferences_subpage.ui @@ -78,6 +78,17 @@ </object> </child> <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">Conversation color</property> + <property name="subtitle" translatable="yes">Used to distinguish this account in the conversation list</property> + <child type="suffix"> + <object class="GtkBox" id="account_color_box"> + <property name="valign">center</property> + </object> + </child> + </object> + </child> + <child> <object class="AdwActionRow" id="password_change"> <property name="title" translatable="yes">Password</property> <child type="suffix"> diff --git a/main/data/preferences_window/general_preferences_page.ui b/main/data/preferences_window/general_preferences_page.ui index ca240511..c8d78654 100644 --- a/main/data/preferences_window/general_preferences_page.ui +++ b/main/data/preferences_window/general_preferences_page.ui @@ -27,13 +27,63 @@ </child> <child> <object class="AdwPreferencesGroup"> + <property name="title" translatable="yes">Notifications</property> <child> - <object class="AdwSwitchRow" id="notification_row"> - <property name="title" translatable="yes">_Notifications</property> + <object class="AdwSwitchRow" id="notification_badge_row"> + <property name="title" translatable="yes">Notification _Badge</property> + <property name="subtitle" translatable="yes">Show the unread count on the application icon</property> + <property name="use-underline">True</property> + </object> + </child> + <child> + <object class="AdwSwitchRow" id="notification_messages_row"> + <property name="title" translatable="yes">_Messages</property> <property name="subtitle" translatable="yes">Notify when a new message arrives</property> <property name="use-underline">True</property> </object> </child> + <child> + <object class="AdwSwitchRow" id="notification_files_row"> + <property name="title" translatable="yes">_Files</property> + <property name="subtitle" translatable="yes">Notify when a new file arrives</property> + <property name="use-underline">True</property> + </object> + </child> + <child> + <object class="AdwSwitchRow" id="notification_calls_row"> + <property name="title" translatable="yes">_Calls</property> + <property name="subtitle" translatable="yes">Notify about incoming calls</property> + <property name="use-underline">True</property> + </object> + </child> + <child> + <object class="AdwSwitchRow" id="notification_subscription_requests_row"> + <property name="title" translatable="yes">_Subscription Requests</property> + <property name="subtitle" translatable="yes">Notify when someone wants to add you as a contact</property> + <property name="use-underline">True</property> + </object> + </child> + <child> + <object class="AdwSwitchRow" id="notification_group_chat_invitations_row"> + <property name="title" translatable="yes">_Group Chat Invitations</property> + <property name="subtitle" translatable="yes">Notify when someone invites you to a group chat</property> + <property name="use-underline">True</property> + </object> + </child> + <child> + <object class="AdwSwitchRow" id="notification_permission_requests_row"> + <property name="title" translatable="yes">_Permission Requests</property> + <property name="subtitle" translatable="yes">Notify when someone requests permission to write in a group chat</property> + <property name="use-underline">True</property> + </object> + </child> + <child> + <object class="AdwSwitchRow" id="notification_connection_errors_row"> + <property name="title" translatable="yes">Connection _Errors</property> + <property name="subtitle" translatable="yes">Notify when an account cannot connect</property> + <property name="use-underline">True</property> + </object> + </child> </object> </child> <child> diff --git a/main/data/preferences_window/preferences_dialog.ui b/main/data/preferences_window/preferences_dialog.ui index 3a35b63f..dae1ce7c 100644 --- a/main/data/preferences_window/preferences_dialog.ui +++ b/main/data/preferences_window/preferences_dialog.ui @@ -28,5 +28,13 @@ <property name="model" bind-source="model" bind-property="general-page" bind-flags="sync-create" /> </object> </child> + <child> + <object class="DinoUiTweaksPreferencesPage" id="tweaks_page"> + <property name="title" translatable="yes">Tweaks</property> + <property name="name">tweaks</property> + <property name="icon-name">preferences-desktop-appearance-symbolic</property> + <property name="model" bind-source="model" bind-property="tweaks-page" bind-flags="sync-create" /> + </object> + </child> </template> -</interface>
\ No newline at end of file +</interface> diff --git a/main/data/preferences_window/tweaks_preferences_page.ui b/main/data/preferences_window/tweaks_preferences_page.ui new file mode 100644 index 00000000..6d011b46 --- /dev/null +++ b/main/data/preferences_window/tweaks_preferences_page.ui @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <requires lib="gtk" version="4.0"/> + <object class="GtkAdjustment" id="avatar_roundness_adjustment"> + <property name="lower">0</property> + <property name="upper">100</property> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> + <object class="GtkTextBuffer" id="custom_css_buffer"/> + <template class="DinoUiTweaksPreferencesPage" parent="AdwPreferencesPage"> + <child> + <object class="AdwPreferencesGroup"> + <property name="title" translatable="yes">Appearance</property> + <child> + <object class="AdwSpinRow" id="avatar_roundness_row"> + <property name="title" translatable="yes">Profile Picture Roundness (%)</property> + <property name="subtitle" translatable="yes">Set to 0 for square pictures or 100 for circular pictures</property> + <property name="adjustment">avatar_roundness_adjustment</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="snap-to-ticks">True</property> + </object> + </child> + </object> + </child> + <child> + <object class="AdwPreferencesGroup"> + <property name="title" translatable="yes">Custom CSS</property> + <property name="description" translatable="yes">Apply custom styles to the application</property> + <child> + <object class="GtkScrolledWindow"> + <property name="height-request">180</property> + <property name="has-frame">True</property> + <property name="child"> + <object class="GtkTextView"> + <property name="buffer">custom_css_buffer</property> + <property name="monospace">True</property> + <property name="wrap-mode">word-char</property> + <property name="top-margin">12</property> + <property name="bottom-margin">12</property> + <property name="left-margin">12</property> + <property name="right-margin">12</property> + <property name="accepts-tab">True</property> + <accessibility> + <property name="label" translatable="yes">Custom CSS</property> + </accessibility> + </object> + </property> + </object> + </child> + </object> + </child> + </template> +</interface> diff --git a/main/data/style.css b/main/data/style.css index 2c6d3d03..7038f901 100644 --- a/main/data/style.css +++ b/main/data/style.css @@ -9,18 +9,90 @@ statuspage { opacity: 0.5; } -window.dino-main .dino-header-right { - background: @theme_base_color; +window.dino-main, +window.dino-main > *, +window.dino-main navigation-split-view, +window.dino-main navigation-split-view > .sidebar-pane, +window.dino-main navigation-split-view > .content-pane, +window.dino-main toolbarview, +window.dino-main .dino-conversation { + margin: 0; + padding: 0; } -window.dino-main .dino-header-left { - background: @insensitive_bg_color; +window.dino-main { + outline: none; } -window.dino-main headerbar.dino-left label.title { - opacity: 0; - font-size: 0; - color: transparent; +window.dino-main headerbar.dino-chat-headerbar, +window.dino-main .dino-conversation-list-toolbar { + min-height: 44px; + margin: 0; + background-color: @window_bg_color; + background-image: none; +} + +window.dino-main .dino-conversation-list-toolbar { + border-bottom: none; + box-shadow: 0 3px 12px alpha(black, 0.18); +} + +window.dino-main headerbar.dino-chat-headerbar { + border-bottom: none; + box-shadow: 0 3px 12px alpha(black, 0.18); +} + +window.dino-main headerbar.dino-chat-headerbar windowtitle { + min-height: 2.5em; +} + +window.dino-main headerbar.dino-chat-headerbar > windowhandle > box, +window.dino-main .dino-conversation-list-toolbar { + padding-top: 0; + padding-bottom: 0; +} + +window.dino-main .dino-conversation-list-toolbar { + padding-left: 6px; + padding-right: 6px; +} + +window.dino-main headerbar button, +window.dino-main .dino-conversation-list-toolbar entry, +window.dino-main .dino-conversation-list-toolbar button, +window.dino-main .navigation-sidebar > row, +window.dino-main box.dino-chatinput, +window.dino-main box.dino-chatinput button, +window.dino-main popover > contents, +window.dino-main popover row { + border-radius: 0; +} + +window.dino-main .dino-conversation-list-toolbar entry.dino-conversation-search-entry { + border-radius: 6px; +} + +window.dino-main button.circular, +window.dino-main box.dino-chatinput button.circular { + border-radius: 999em; +} + +window.dino-main .navigation-sidebar { + margin: 0; + padding: 0; +} + +window.dino-main .navigation-sidebar > row { + margin: 0; +} + +window.dino-main navigation-split-view > .sidebar-pane, +window.dino-main navigation-split-view > .content-pane { + margin: 0; +} + +window.dino-main navigation-split-view > .content-pane { + border-left: 1px solid color-mix(in srgb, @window_bg_color 92%, @theme_fg_color); } window.dino-main .dino-conversation undershoot, @@ -97,7 +169,7 @@ window.dino-main .dino-conversation .message-box.edit-mode:hover { } window.dino-main .dino-conversation .message-box.edit-mode frame { - border-radius: 3px; + border-radius: 0; padding: 0 7px; } @@ -120,15 +192,47 @@ window.dino-main .dino-quote:hover { background: alpha(@theme_fg_color, 0.08); } +window.dino-main .code-block { + background: alpha(@theme_fg_color, 0.06); + border: 1px solid alpha(@theme_fg_color, 0.12); + border-radius: 0; +} + +window.dino-main .code-block-header { + background: alpha(@theme_fg_color, 0.06); + border-bottom: 1px solid alpha(@theme_fg_color, 0.1); + padding: 4px 6px 4px 12px; +} + +window.dino-main .code-block-language { + font-weight: bold; +} + +window.dino-main .code-block-meta { + color: alpha(@theme_fg_color, 0.65); + font-size: 0.85em; +} + +window.dino-main .code-block-download { + min-height: 24px; + min-width: 24px; + padding: 0; +} + +window.dino-main .code-block-content { + font-family: monospace; + padding: 10px 12px 12px; +} + picture.avatar { - border-radius: 3px; + border-radius: 0; } /* Overlay Toolbar */ .compact-card-toolbar { padding: 2px; - border-radius: 6px; + border-radius: 0; border-spacing: 0; } @@ -137,12 +241,30 @@ picture.avatar { margin-bottom: 0; } +window.dino-main .message-actions { + padding: 1px; + border-radius: 999em; +} + +window.dino-main .message-actions > button, +window.dino-main .message-actions > menubutton > button { + min-width: 28px; + min-height: 28px; + margin: 0; + padding: 0; + border-radius: 999em; +} + +window.dino-main .message-text { + caret-color: transparent; +} + /* File Widget */ window.dino-main .file-box-outer, window.dino-main .call-box-outer { background: @theme_base_color; - border-radius: 8px; + border-radius: 0; border: 1px solid var(--border-color); } @@ -151,9 +273,14 @@ window.dino-main .call-box { margin: 12px 16px 12px 12px; } -window.dino-main .file-image-widget { +window.dino-main .file-image-widget, +window.dino-main .file-video-widget { border: 1px solid alpha(@theme_fg_color, 0.1); - border-radius: 6px; + border-radius: 0; +} + +window.dino-main .file-video-widget { + background: black; } window.dino-main .file-image-widget .file-box-outer { @@ -173,13 +300,13 @@ window.dino-main .file-image-widget .file-box-outer button:hover { } .dino-main .file-image-widget picture { - border-radius: 6px; + border-radius: 0; } .dino-main .file-details { color: white; background: alpha(black, 0.3); - border-radius: 5px; + border-radius: 0; padding: 5px 10px; } @@ -214,6 +341,7 @@ window.dino-main .multiparty-participants { min-height: 16px; min-width: 30px; padding: 4px; + border-radius: 999em; } .dino-main .reaction-grid button.own-reaction, @@ -263,22 +391,37 @@ image.dino-status-online, image.dino-status-chat { background-color: var(--shade-color); opacity: 80%; padding: 12px; - border-radius: 6px 6px 0 0; + border-radius: 0; } /* Chat Input*/ -/* These rules are direved from the libadwaita style for activateable entry rows */ -window.dino-main box.dino-chatinput.activatable { - outline: 0 solid transparent; - outline-offset: 5px; - transition: outline-color 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background-color 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), background-image 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), border-radius 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); +window.dino-main box.dino-chatinput { + margin: 0; + padding: 2px; + background-color: shade(@view_bg_color, 0.96); + background-image: none; + border: none; + box-shadow: 0 -3px 12px alpha(black, 0.18); + outline: none; +} + +window.dino-main box.dino-chatinput button.dino-attach-button { + background-image: none; + border: none; + box-shadow: none; + outline: none; +} + +window.dino-main box.dino-chatinput > separator { + min-width: 0; + background: none; + border: none; } -window.dino-main box.dino-chatinput.activatable:focus-within { - outline-offset: -1px; - outline-width: 2px; - outline-color: color-mix(in srgb, var(--accent-color) 50%, transparent); +.dino-chatinput textview, +.dino-chatinput textview text { + background: none; } .dino-unread-line label { @@ -290,7 +433,7 @@ window.dino-main box.dino-chatinput.activatable:focus-within { } window.dino-main .image-round-corners picture { - border-radius: 8px; + border-radius: 0; } window.dino-main .file-remove-button { @@ -422,7 +565,7 @@ box.dino-input-error .chat-input-status.input-status-highlight-once { .dino-call-window .text-no-controls { color: black; background: white; - border-radius: 5px; + border-radius: 0; padding: 5px 10px; } |
