chore: Use AdwToolbarView wherever possible

This commit is contained in:
Kévin Commaille 2023-09-18 10:21:09 +02:00 committed by Kévin Commaille
parent 4b98c9caef
commit d560572193
10 changed files with 436 additions and 466 deletions

View File

@ -2,9 +2,8 @@
<interface>
<template class="ErrorPage" parent="AdwBin">
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="GtkHeaderBar">
<property name="title-widget">
<object class="AdwWindowTitle">
@ -13,7 +12,7 @@
</property>
</object>
</child>
<child>
<property name="content">
<object class="AdwStatusPage" id="page">
<property name="title" translatable="yes">Secret Service Error</property>
<property name="icon-name">dialog-password-symbolic</property>
@ -196,7 +195,7 @@
</object>
</child>
</object>
</child>
</property>
</object>
</child>
</template>

View File

@ -11,8 +11,6 @@ mod imp {
#[derive(Debug, Default, CompositeTemplate)]
#[template(resource = "/org/gnome/Fractal/ui/greeter.ui")]
pub struct Greeter {
#[template_child]
pub back_button: TemplateChild<gtk::Button>,
#[template_child]
pub login_button: TemplateChild<gtk::Button>,
#[template_child]

View File

@ -2,15 +2,9 @@
<interface>
<template class="Greeter" parent="AdwBin">
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkHeaderBar">
<property name="title-widget">
<object class="AdwWindowTitle">
<property name="title">Fractal</property>
</object>
</property>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar">
<child type="start">
<object class="GtkButton" id="back_button">
<property name="action-name">app.show-session</property>
@ -36,7 +30,7 @@
</child>
</object>
</child>
<child>
<property name="content">
<object class="GtkScrolledWindow">
<property name="hscrollbar-policy">never</property>
<property name="propagate-natural-height">True</property>
@ -131,7 +125,7 @@
</object>
</property>
</object>
</child>
</property>
</object>
</child>
</template>

View File

@ -2,15 +2,10 @@
<interface>
<template class="Login" parent="AdwBin">
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkHeaderBar">
<property name="title-widget">
<object class="GtkBox">
<property name="visible">False</property>
</object>
</property>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar">
<property name="show-title">False</property>
<child type="start">
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
@ -22,110 +17,115 @@
</style>
</object>
</child>
<child>
<object class="AdwBanner" id="offline_banner"/>
</child>
<child>
<object class="GtkStack" id="main_stack">
<property name="transition-type">crossfade</property>
<property name="vexpand">True</property>
<property name="content">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkStackPage">
<property name="name">homeserver</property>
<property name="child">
<object class="LoginHomeserverPage" id="homeserver_page">
<property name="login">Login</property>
</object>
</property>
</object>
<object class="AdwBanner" id="offline_banner"/>
</child>
<child>
<object class="GtkStackPage">
<property name="name">method</property>
<property name="child">
<object class="LoginMethodPage" id="method_page">
<property name="login">Login</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">sso</property>
<property name="child">
<object class="LoginSsoPage" id="sso_page"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="Spinner" id="loading_page">
<property name="valign">center</property>
<property name="halign">center</property>
<style>
<class name="session-loading-spinner"/>
</style>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">completed</property>
<property name="child">
<object class="AdwClamp">
<property name="maximum-size">400</property>
<property name="tightening-threshold">300</property>
<object class="GtkStack" id="main_stack">
<property name="transition-type">crossfade</property>
<property name="vexpand">True</property>
<child>
<object class="GtkStackPage">
<property name="name">homeserver</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<property name="valign">center</property>
<child>
<object class="GtkLabel">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="justify">center</property>
<property name="label" translatable="yes">Login Complete</property>
<style>
<class name="title-1"/>
</style>
</object>
</child>
<child>
<object class="GtkPicture">
<property name="file">resource:///org/gnome/Fractal/assets/setup-complete.svg</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="justify">center</property>
<property name="label" translatable="yes">This session is ready to send and receive secure messages.</property>
</object>
</child>
<child>
<object class="GtkButton" id="done_button">
<property name="label" translatable="yes">Start Chatting</property>
<property name="halign">center</property>
<signal name="clicked" handler="finish_login" swapped="yes"/>
<style>
<class name="suggested-action"/>
<class name="pill"/>
</style>
</object>
</child>
<object class="LoginHomeserverPage" id="homeserver_page">
<property name="login">Login</property>
</object>
</property>
</object>
</property>
</child>
<child>
<object class="GtkStackPage">
<property name="name">method</property>
<property name="child">
<object class="LoginMethodPage" id="method_page">
<property name="login">Login</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">sso</property>
<property name="child">
<object class="LoginSsoPage" id="sso_page"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="Spinner" id="loading_page">
<property name="valign">center</property>
<property name="halign">center</property>
<style>
<class name="session-loading-spinner"/>
</style>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">completed</property>
<property name="child">
<object class="AdwClamp">
<property name="maximum-size">400</property>
<property name="tightening-threshold">300</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<property name="valign">center</property>
<child>
<object class="GtkLabel">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="justify">center</property>
<property name="label" translatable="yes">Login Complete</property>
<style>
<class name="title-1"/>
</style>
</object>
</child>
<child>
<object class="GtkPicture">
<property name="file">resource:///org/gnome/Fractal/assets/setup-complete.svg</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="justify">center</property>
<property name="label" translatable="yes">This session is ready to send and receive secure messages.</property>
</object>
</child>
<child>
<object class="GtkButton" id="done_button">
<property name="label" translatable="yes">Start Chatting</property>
<property name="halign">center</property>
<signal name="clicked" handler="finish_login" swapped="yes"/>
<style>
<class name="suggested-action"/>
<class name="pill"/>
</style>
</object>
</child>
</object>
</property>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</child>
</property>
</object>
</child>
</template>

View File

@ -1,6 +1,7 @@
use std::cell::Cell;
use gtk::{gdk, gio, glib, glib::clone, prelude::*, subclass::prelude::*, CompositeTemplate};
use adw::subclass::prelude::*;
use gtk::{gdk, gio, glib, glib::clone, prelude::*, CompositeTemplate};
use once_cell::sync::Lazy;
use crate::components::MediaContentViewer;
@ -24,7 +25,7 @@ mod imp {
impl ObjectSubclass for AttachmentDialog {
const NAME: &'static str = "AttachmentDialog";
type Type = super::AttachmentDialog;
type ParentType = gtk::Window;
type ParentType = adw::Window;
fn class_init(klass: &mut Self::Class) {
Self::bind_template(klass);
@ -48,13 +49,15 @@ mod imp {
SIGNALS.as_ref()
}
}
impl WidgetImpl for AttachmentDialog {}
impl WindowImpl for AttachmentDialog {}
impl AdwWindowImpl for AttachmentDialog {}
}
glib::wrapper! {
pub struct AttachmentDialog(ObjectSubclass<imp::AttachmentDialog>)
@extends gtk::Widget, gtk::Window;
@extends gtk::Widget, gtk::Window, gtk::Root, adw::Window;
}
impl AttachmentDialog {

View File

@ -1,35 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="AttachmentDialog" parent="GtkWindow">
<template class="AttachmentDialog" parent="AdwWindow">
<property name="modal">True</property>
<property name="title"></property>
<property name="default-width">400</property>
<property name="default-height">400</property>
<property name="destroy-with-parent">True</property>
<property name="titlebar">
<object class="GtkHeaderBar">
<property name="show-title-buttons">False</property>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">_Cancel</property>
<property name="use-underline">True</property>
<property name="action-name">window.close</property>
<property name="content">
<object class="AdwToolbarView">
<child type="top">
<object class="GtkHeaderBar">
<property name="show-title-buttons">False</property>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">_Cancel</property>
<property name="use-underline">True</property>
<property name="action-name">window.close</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="send_button">
<property name="label" translatable="yes">_Send</property>
<property name="use-underline">True</property>
<property name="action-name">attachment-dialog.send</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child type="end">
<object class="GtkButton" id="send_button">
<property name="label" translatable="yes">_Send</property>
<property name="use-underline">True</property>
<property name="action-name">attachment-dialog.send</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</property>
<property name="child">
<object class="ComponentsMediaContentViewer" id="media">
<property name="content">
<object class="ComponentsMediaContentViewer" id="media"/>
</property>
</object>
</property>
<child>

View File

@ -6,129 +6,117 @@
<property name="default-width">380</property>
<property name="default-height">620</property>
<property name="content">
<object class="GtkWindowHandle">
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar">
<property name="show-title">False</property>
</object>
</child>
<child type="top">
<object class="AdwClamp">
<property name="hexpand">True</property>
<child>
<object class="GtkHeaderBar">
<style>
<class name="flat"/>
</style>
<property name="title-widget">
<object class="GtkBox">
<property name="visible">False</property>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<child>
<object class="GtkLabel" id="heading">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="max-width-chars">20</property>
<property name="justify">center</property>
<property name="xalign">0.5</property>
<property name="label" translatable="yes">New Direct Chat</property>
<style>
<class name="title-2"/>
</style>
</object>
</child>
<child>
<object class="GtkSearchEntry" id="search_entry">
</object>
</child>
</object>
</child>
</object>
</child>
<property name="content">
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">no-search-page</property>
<property name="child">
<object class="AdwStatusPage">
<property name="vexpand">True</property>
<property name="icon-name">system-search-symbolic</property>
<property name="title" translatable="yes">Search</property>
<property name="description" translatable="yes">Search for people to start a new chat with</property>
</object>
</property>
</object>
</child>
<child>
<object class="AdwClamp">
<property name="hexpand">True</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<child>
<object class="GtkLabel" id="heading">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="max-width-chars">20</property>
<property name="justify">center</property>
<property name="xalign">0.5</property>
<property name="label" translatable="yes">New Direct Chat</property>
<style>
<class name="title-2"/>
</style>
</object>
</child>
<child>
<object class="GtkSearchEntry" id="search_entry">
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">no-search-page</property>
<object class="GtkStackPage">
<property name="name">matching-page</property>
<property name="child">
<object class="GtkScrolledWindow" id="matching_page">
<property name="child">
<object class="AdwStatusPage">
<property name="vexpand">True</property>
<property name="icon-name">system-search-symbolic</property>
<property name="title" translatable="yes">Search</property>
<property name="description" translatable="yes">Search for people to start a new chat with</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">matching-page</property>
<property name="child">
<object class="GtkScrolledWindow" id="matching_page">
<object class="AdwClamp">
<property name="child">
<object class="AdwClamp">
<property name="child">
<object class="GtkListBox" id="list_box">
<property name="activate-on-single-click">True</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<signal name="row-activated" handler="row_activated_cb" swapped="yes"/>
<style>
<class name="navigation-sidebar"/>
</style>
</object>
</property>
<object class="GtkListBox" id="list_box">
<property name="activate-on-single-click">True</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<signal name="row-activated" handler="row_activated_cb" swapped="yes"/>
<style>
<class name="navigation-sidebar"/>
</style>
</object>
</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">no-matching-page</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">system-search-symbolic</property>
<property name="title" translatable="yes">No Users Found</property>
<property name="description" translatable="yes">No users matching the search pattern were found</property>
</object>
</property>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">no-matching-page</property>
<property name="child">
<object class="AdwStatusPage">
<property name="icon-name">system-search-symbolic</property>
<property name="title" translatable="yes">No Users Found</property>
<property name="description" translatable="yes">No users matching the search pattern were found</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">error-page</property>
<property name="child">
<object class="AdwStatusPage" id="error_page">
<property name="icon-name">dialog-error-symbolic</property>
<property name="title" translatable="yes">Error</property>
<property name="description" translatable="yes">An error occurred while searching for matches</property>
</object>
</property>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">error-page</property>
<property name="child">
<object class="AdwStatusPage" id="error_page">
<property name="icon-name">dialog-error-symbolic</property>
<property name="title" translatable="yes">Error</property>
<property name="description" translatable="yes">An error occurred while searching for matches</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading-page</property>
<property name="child">
<object class="Spinner">
<property name="valign">center</property>
<property name="halign">center</property>
<style>
<class name="session-loading-spinner"/>
</style>
</object>
</property>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading-page</property>
<property name="child">
<object class="Spinner">
<property name="valign">center</property>
<property name="halign">center</property>
<style>
<class name="session-loading-spinner"/>
</style>
</object>
</child>
</property>
</object>
</child>
</object>
@ -137,4 +125,3 @@
</property>
</template>
</interface>

View File

@ -7,9 +7,8 @@
<property name="default-width">500</property>
<property name="default-height">300</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="GtkHeaderBar">
<child type="start">
<object class="GtkButton">
@ -20,7 +19,7 @@
</child>
</object>
</child>
<child>
<property name="content">
<object class="GtkScrolledWindow">
<style>
<class name="event-source-dialog"/>
@ -48,7 +47,7 @@
</object>
</property>
</object>
</child>
</property>
</object>
</child>
</template>

View File

@ -7,188 +7,91 @@
<property name="default-height">620</property>
<property name="content">
<object class="AdwToastOverlay" id="toast_overlay">
<child>
<object class="GtkWindowHandle">
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkHeaderBar">
<style>
<class name="flat"/>
</style>
<property name="title-widget">
<object class="GtkBox">
<property name="visible">False</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolled_window">
<property name="hscrollbar-policy">never</property>
<property name="propagate-natural-height">True</property>
<property name="vexpand">True</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar">
<property name="show-title">False</property>
</object>
</child>
<property name="content">
<object class="GtkScrolledWindow" id="scrolled_window">
<property name="hscrollbar-policy">never</property>
<property name="propagate-natural-height">True</property>
<property name="vexpand">True</property>
<property name="child">
<object class="AdwClamp">
<property name="maximum-size">444</property>
<property name="child">
<object class="AdwClamp">
<property name="maximum-size">444</property>
<property name="child">
<object class="GtkBox">
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">24</property>
<property name="margin-bottom">24</property>
<property name="margin-start">24</property>
<property name="margin-end">24</property>
<child type="top">
<object class="GtkLabel" id="heading">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="max-width-chars">20</property>
<property name="justify">center</property>
<property name="xalign">0.5</property>
<property name="label" translatable="yes">New Room</property>
<style>
<class name="title-2"/>
</style>
</object>
</child>
<child>
<object class="GtkBox" id="content">
<property name="orientation">vertical</property>
<property name="spacing">24</property>
<property name="margin-bottom">24</property>
<property name="margin-start">24</property>
<property name="margin-end">24</property>
<property name="spacing">18</property>
<child>
<object class="GtkLabel" id="heading">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="max-width-chars">20</property>
<property name="justify">center</property>
<property name="xalign">0.5</property>
<property name="label" translatable="yes">New Room</property>
<object class="AdwPreferencesGroup">
<style>
<class name="title-2"/>
<class name="boxed-list"/>
</style>
<child>
<object class="AdwEntryRow" id="room_name">
<property name="title" translatable="yes">Name</property>
<signal name="changed" handler="validate_form" swapped="yes"/>
<signal name="entry-activated" handler="create_room" swapped="yes"/>
</object>
</child>
<child>
<object class="AdwEntryRow" id="room_topic">
<property name="title" translatable="yes">Topic (Optional)</property>
<signal name="entry-activated" handler="create_room" swapped="yes"/>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="content">
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<object class="AdwPreferencesGroup">
<property name="title" translatable="yes">Room Visibility</property>
<child>
<object class="AdwPreferencesGroup">
<style>
<class name="boxed-list"/>
</style>
<child>
<object class="AdwEntryRow" id="room_name">
<property name="title" translatable="yes">Name</property>
<signal name="changed" handler="validate_form" swapped="yes"/>
<signal name="entry-activated" handler="create_room" swapped="yes"/>
</object>
</child>
<child>
<object class="AdwEntryRow" id="room_topic">
<property name="title" translatable="yes">Topic (Optional)</property>
<signal name="entry-activated" handler="create_room" swapped="yes"/>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="yes">Room Visibility</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Private</property>
<property name="subtitle" translatable="yes">Only invited people can join this room</property>
<property name="activatable_widget">visibility_private</property>
<child type="prefix">
<object class="GtkCheckButton" id="visibility_private">
<property name="valign">center</property>
<property name="active">True</property>
<signal name="toggled" handler="validate_form" swapped="yes"/>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Public</property>
<property name="subtitle" translatable="yes">Anyone can find and join this room</property>
<property name="activatable_widget">visibility_public</property>
<child type="prefix">
<object class="GtkCheckButton" id="visibility_public">
<property name="valign">center</property>
<property name="group">visibility_private</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="visible" bind-source="visibility_private" bind-property="active" bind-flags="sync-create"/>
<property name="margin-top">12</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">End-to-End Encryption</property>
<property name="subtitle" translatable="yes">Cannot be disabled later</property>
<property name="activatable_widget">encryption</property>
<child>
<object class="GtkSwitch" id="encryption">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRevealer">
<property name="reveal-child" bind-source="encryption" bind-property="active" bind-flags="sync-create"/>
<property name="child">
<object class="GtkLabel">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
<property name="margin-top">6</property>
<property name="label" translatable="yes">Fractal does not support online backup for encryption keys yet, so you will need to back them up manually or your message history will be lost if you lose access to all your sessions.</property>
<style>
<class name="warning"/>
<class name="caption"/>
</style>
</object>
</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="visible" bind-source="visibility_public" bind-property="active" bind-flags="sync-create"/>
<property name="title" translatable="yes">Room Address</property>
<child>
<object class="GtkBox">
<object class="AdwActionRow">
<property name="title" translatable="yes">Private</property>
<property name="subtitle" translatable="yes">Only invited people can join this room</property>
<property name="activatable_widget">visibility_private</property>
<child type="prefix">
<object class="GtkCheckButton" id="visibility_private">
<property name="valign">center</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="label">#</property>
<style>
<class name="dim-label"/>
</style>
</object>
</child>
<child>
<object class="GtkEntry" id="room_address">
<property name="valign">center</property>
<property name="max-width-chars">20</property>
<signal name="changed" handler="validate_form" swapped="yes"/>
</object>
</child>
<child>
<object class="GtkLabel" id="server_name">
<style>
<class name="dim-label"/>
</style>
</object>
</child>
<property name="active">True</property>
<signal name="toggled" handler="validate_form" swapped="yes"/>
</object>
</child>
<child>
<object class="GtkRevealer" id="room_address_error_revealer">
<property name="child">
<object class="GtkLabel" id="room_address_error">
<style>
<class name="error"/>
<class name="caption"/>
</style>
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
</object>
</property>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Public</property>
<property name="subtitle" translatable="yes">Anyone can find and join this room</property>
<property name="activatable_widget">visibility_public</property>
<child type="prefix">
<object class="GtkCheckButton" id="visibility_public">
<property name="valign">center</property>
<property name="group">visibility_private</property>
</object>
</child>
</object>
@ -196,27 +99,112 @@
</object>
</child>
<child>
<object class="SpinnerButton" id="create_button">
<property name="label" translatable="yes">_Create Room</property>
<property name="use_underline">True</property>
<property name="sensitive">False</property>
<property name="halign">center</property>
<property name="valign">end</property>
<property name="vexpand">true</property>
<signal name="clicked" handler="create_room" swapped="yes"/>
<style>
<class name="suggested-action"/>
<class name="standalone-button"/>
<class name="pill"/>
</style>
<object class="AdwPreferencesGroup">
<property name="visible" bind-source="visibility_private" bind-property="active" bind-flags="sync-create"/>
<property name="margin-top">12</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">End-to-End Encryption</property>
<property name="subtitle" translatable="yes">Cannot be disabled later</property>
<property name="activatable_widget">encryption</property>
<child>
<object class="GtkSwitch" id="encryption">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRevealer">
<property name="reveal-child" bind-source="encryption" bind-property="active" bind-flags="sync-create"/>
<property name="child">
<object class="GtkLabel">
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
<property name="margin-top">6</property>
<property name="label" translatable="yes">Fractal does not support online backup for encryption keys yet, so you will need to back them up manually or your message history will be lost if you lose access to all your sessions.</property>
<style>
<class name="warning"/>
<class name="caption"/>
</style>
</object>
</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="visible" bind-source="visibility_public" bind-property="active" bind-flags="sync-create"/>
<property name="title" translatable="yes">Room Address</property>
<child>
<object class="GtkBox">
<property name="valign">center</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="label">#</property>
<style>
<class name="dim-label"/>
</style>
</object>
</child>
<child>
<object class="GtkEntry" id="room_address">
<property name="valign">center</property>
<property name="max-width-chars">20</property>
<signal name="changed" handler="validate_form" swapped="yes"/>
</object>
</child>
<child>
<object class="GtkLabel" id="server_name">
<style>
<class name="dim-label"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRevealer" id="room_address_error_revealer">
<property name="child">
<object class="GtkLabel" id="room_address_error">
<style>
<class name="error"/>
<class name="caption"/>
</style>
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</property>
</child>
<child>
<object class="SpinnerButton" id="create_button">
<property name="label" translatable="yes">_Create Room</property>
<property name="use_underline">True</property>
<property name="sensitive">False</property>
<property name="halign">center</property>
<property name="valign">end</property>
<property name="vexpand">true</property>
<signal name="clicked" handler="create_room" swapped="yes"/>
<style>
<class name="suggested-action"/>
<class name="standalone-button"/>
<class name="pill"/>
</style>
</object>
</child>
</object>
</property>
</object>
</child>
</property>
</object>
</property>
</object>

View File

@ -14,29 +14,28 @@
<child>
<object class="GtkWindowHandle" id="loading">
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<object class="AdwToolbarView">
<child>
<object class="GtkHeaderBar">
<property name="show-title-buttons">True</property>
<style>
<class name="flat"/>
</style>
<object class="GtkHeaderBar"/>
</child>
<property name="content">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwBanner" id="offline_banner"/>
</child>
<child>
<object class="Spinner" id="spinner">
<property name="valign">center</property>
<property name="halign">center</property>
<property name="vexpand">True</property>
<style>
<class name="session-loading-spinner"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwBanner" id="offline_banner"/>
</child>
<child>
<object class="Spinner" id="spinner">
<property name="valign">center</property>
<property name="halign">center</property>
<property name="vexpand">True</property>
<style>
<class name="session-loading-spinner"/>
</style>
</object>
</child>
</property>
</object>
</property>
</object>