diff --git a/data/resources/resources.gresource.xml b/data/resources/resources.gresource.xml
index 8150002c..fd9dd2e6 100644
--- a/data/resources/resources.gresource.xml
+++ b/data/resources/resources.gresource.xml
@@ -11,8 +11,11 @@
icons/scalable/status/explore-symbolic.svg
icons/scalable/status/verified-symbolic.svg
style.css
+ ui/account-settings-change-password-subpage.ui
+ ui/account-settings-deactivate-account-subpage.ui
ui/account-settings-device-row.ui
ui/account-settings-devices-page.ui
+ ui/account-settings-user-page.ui
ui/account-settings.ui
ui/add-account-row.ui
ui/avatar-with-selection.ui
diff --git a/data/resources/style.css b/data/resources/style.css
index 335667d6..ba84a43c 100644
--- a/data/resources/style.css
+++ b/data/resources/style.css
@@ -44,6 +44,19 @@ button.opaque.success {
color: @error_bg_color;
}
+preferencesgroup .body {
+ line-height: 140%;
+}
+
+preferencespage.status-page clamp > box {
+ margin: 42px 12px;
+}
+
+button.row {
+ min-height: 50px;
+ border-radius: 12px;
+}
+
/* Components */
@@ -97,9 +110,6 @@ row.entry {
animation-timing-function: ease-in-out;
outline: 0 solid transparent;
outline-offset: 2px;
- border-top: 1px solid transparent;
- border-left: 1px solid transparent;
- border-right: 1px solid transparent;
}
row.entry:focus-within {
@@ -108,26 +118,14 @@ row.entry:focus-within {
outline-offset: -2px;
}
-row.entry.success {
- border: 1px solid @success_color;
-}
-
row.entry.success:focus-within {
outline-color: @success_color;
}
-row.entry.warning {
- border: 1px solid @warning_color;
-}
-
row.entry.warning:focus-within {
outline-color: @warning_color;
}
-row.entry.error {
- border: 1px solid @error_color;
-}
-
row.entry.error:focus-within {
outline-color: @error_color;
}
@@ -150,6 +148,10 @@ row.entry levelbar.discrete block {
min-height: 5px;
}
+row.entry levelbar.discrete block.filled {
+ background-color: alpha(currentColor, 0.5);
+}
+
row.entry.accent levelbar.discrete block.filled {
background-color: @accent_color;
}
diff --git a/data/resources/ui/account-settings-change-password-subpage.ui b/data/resources/ui/account-settings-change-password-subpage.ui
new file mode 100644
index 00000000..7065b8f1
--- /dev/null
+++ b/data/resources/ui/account-settings-change-password-subpage.ui
@@ -0,0 +1,103 @@
+
+
+
+ vertical
+
+
+
+
+
+
+
+
diff --git a/data/resources/ui/account-settings-deactivate-account-subpage.ui b/data/resources/ui/account-settings-deactivate-account-subpage.ui
new file mode 100644
index 00000000..d27f6e0a
--- /dev/null
+++ b/data/resources/ui/account-settings-deactivate-account-subpage.ui
@@ -0,0 +1,101 @@
+
+
+
+ vertical
+
+
+
+
+
+
+ true
+
+
+
+
+
+ dialog-warning-symbolic
+
+
+
+
+
+
+
+
+
+ Deactivating your account means you will lose access to all your messages, contacts, files, and more, forever.
+ True
+ word-char
+ 0.0
+
+
+
+
+
+
+
+
+
+ To confirm that you really want to deactivate this account, type in your Matrix user ID:
+ True
+ word-char
+ 0.0
+
+
+
+
+
+
+
+
+ Matrix User ID
+
+
+
+
+
+
+
+
+
+ Continue
+ false
+
+
+
+
+
+
+
+
diff --git a/data/resources/ui/account-settings-user-page.ui b/data/resources/ui/account-settings-user-page.ui
new file mode 100644
index 00000000..1e04fd52
--- /dev/null
+++ b/data/resources/ui/account-settings-user-page.ui
@@ -0,0 +1,129 @@
+
+
+
+ preferences-system-symbolic
+ General
+ general
+
+
+
+
+
+
+
+ UserPage
+
+
+
+ true
+
+
+
+
+
+ UserPage
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+ UserPage
+
+
+
+
+
+
+
+
+
+
+
+ Change Password
+ true
+
+
+
+
+
+
+
+ Advanced Information
+
+
+ Homeserver
+
+
+
+ end
+ true
+
+
+
+
+
+
+ Matrix User ID
+
+
+
+ end
+ true
+
+
+
+
+
+
+ Session ID
+
+
+
+ end
+ true
+
+
+
+
+
+
+
+
+
+
+
+ Deactivate Account
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/resources/ui/account-settings.ui b/data/resources/ui/account-settings.ui
index c4c54c6c..c9ca479f 100644
--- a/data/resources/ui/account-settings.ui
+++ b/data/resources/ui/account-settings.ui
@@ -2,14 +2,21 @@
Account Settings
- False
+ false
+ 630
+
+
+
+
+
- AccountSettings
+
+ AccountSettings
+
-
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 81faf3cb..5ac240a4 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -5,8 +5,11 @@ data/org.gnome.FractalNext.gschema.xml.in
data/org.gnome.FractalNext.metainfo.xml.in.in
# UI files
+data/resources/ui/account-settings-change-password-subpage.ui
+data/resources/ui/account-settings-deactivate-account-subpage.ui
data/resources/ui/account-settings-device-row.ui
data/resources/ui/account-settings-devices-page.ui
+data/resources/ui/account-settings-user-page.ui
data/resources/ui/account-settings.ui
data/resources/ui/components-auth-dialog.ui
data/resources/ui/components-loading-listbox-row.ui
@@ -42,6 +45,9 @@ src/login.rs
src/secret.rs
src/session/account_settings/devices_page/device_list.rs
src/session/account_settings/devices_page/device_row.rs
+src/session/account_settings/user_page/change_password_subpage.rs
+src/session/account_settings/user_page/deactivate_account_subpage.rs
+src/session/account_settings/user_page/mod.rs
src/session/content/explore/public_room_row.rs
src/session/content/room_details/member_page/mod.rs
src/session/content/room_details/mod.rs
diff --git a/src/components/editable_avatar.rs b/src/components/editable_avatar.rs
index 76ca6848..47caba01 100644
--- a/src/components/editable_avatar.rs
+++ b/src/components/editable_avatar.rs
@@ -362,14 +362,14 @@ impl EditableAvatar {
} else {
error!("The chosen file is not an image");
let _ = self.activate_action(
- "win.message",
+ "win.add-toast",
Some(&gettext("The chosen file is not an image").to_variant()),
);
}
} else {
error!("Could not get the content type of the file");
let _ = self.activate_action(
- "win.message",
+ "win.add-toast",
Some(
&gettext("Could not determine the type of the chosen file")
.to_variant(),
@@ -379,7 +379,7 @@ impl EditableAvatar {
} else {
error!("No file chosen");
let _ = self.activate_action(
- "win.message",
+ "win.add-toast",
Some(&gettext("No file was chosen").to_variant()),
);
}
diff --git a/src/session/account_settings/mod.rs b/src/session/account_settings/mod.rs
index 08b90dd0..8e02562a 100644
--- a/src/session/account_settings/mod.rs
+++ b/src/session/account_settings/mod.rs
@@ -1,22 +1,24 @@
-use adw::subclass::prelude::*;
-use gtk::{glib, prelude::*, subclass::prelude::*, CompositeTemplate};
+use adw::{prelude::*, subclass::prelude::*};
+use gtk::{glib, glib::FromVariant, subclass::prelude::*, CompositeTemplate};
mod devices_page;
+mod user_page;
use devices_page::DevicesPage;
+use user_page::UserPage;
-use crate::session::User;
+use super::Session;
mod imp {
use std::cell::RefCell;
- use glib::subclass::InitializingObject;
+ use glib::{subclass::InitializingObject, WeakRef};
use super::*;
#[derive(Debug, Default, CompositeTemplate)]
#[template(resource = "/org/gnome/FractalNext/account-settings.ui")]
pub struct AccountSettings {
- pub user: RefCell