Compare commits
2 Commits
sloppy
...
f016c56ba6
| Author | SHA1 | Date | |
|---|---|---|---|
| f016c56ba6 | |||
| 4b5dea576f |
14
Cargo.lock
generated
14
Cargo.lock
generated
@@ -2348,12 +2348,6 @@ version = "1.3.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "funty"
|
|
||||||
version = "2.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futf"
|
name = "futf"
|
||||||
version = "0.1.5"
|
version = "0.1.5"
|
||||||
@@ -4133,6 +4127,14 @@ dependencies = [
|
|||||||
"ui-iced",
|
"ui-iced",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "jello-types"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
"uuid",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jiff"
|
name = "jiff"
|
||||||
version = "0.2.18"
|
version = "0.2.18"
|
||||||
|
|||||||
@@ -6,9 +6,10 @@ members = [
|
|||||||
"ui-gpui",
|
"ui-gpui",
|
||||||
"ui-iced",
|
"ui-iced",
|
||||||
"store",
|
"store",
|
||||||
|
"jello-types",
|
||||||
"gst",
|
"gst",
|
||||||
"crates/iced-video",
|
|
||||||
"examples/hdr-gstreamer-wgpu",
|
"examples/hdr-gstreamer-wgpu",
|
||||||
|
"crates/iced-video",
|
||||||
]
|
]
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
iced = { version = "0.14.0" }
|
iced = { version = "0.14.0" }
|
||||||
|
|||||||
30
flake.lock
generated
30
flake.lock
generated
@@ -3,11 +3,11 @@
|
|||||||
"advisory-db": {
|
"advisory-db": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771560015,
|
"lastModified": 1768679419,
|
||||||
"narHash": "sha256-TuZcPFTXgFyDTcs+olpuVquBphW0zrxoBxgZ4WjEXWE=",
|
"narHash": "sha256-l9rM4lXBeS2mIAJsJjVfl0UABx3S3zg5tul7bv+bn50=",
|
||||||
"owner": "rustsec",
|
"owner": "rustsec",
|
||||||
"repo": "advisory-db",
|
"repo": "advisory-db",
|
||||||
"rev": "81e3cd7b86b1a2e05c116072de9b61b872a43ae4",
|
"rev": "c700e1cd023ca87343cbd9217d50d47023e9adc7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -18,11 +18,11 @@
|
|||||||
},
|
},
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771438068,
|
"lastModified": 1768873933,
|
||||||
"narHash": "sha256-nGBbXvEZVe/egCPVPFcu89RFtd8Rf6J+4RFoVCFec0A=",
|
"narHash": "sha256-CfyzdaeLNGkyAHp3kT5vjvXhA1pVVK7nyDziYxCPsNk=",
|
||||||
"owner": "ipetkov",
|
"owner": "ipetkov",
|
||||||
"repo": "crane",
|
"repo": "crane",
|
||||||
"rev": "b5090e53e9d68c523a4bb9ad42b4737ee6747597",
|
"rev": "0bda7e7d005ccb5522a76d11ccfbf562b71953ca",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -34,10 +34,10 @@
|
|||||||
"crates-io-index": {
|
"crates-io-index": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771603477,
|
"lastModified": 1769614137,
|
||||||
"narHash": "sha256-DAPLeF6FvWTG5hewyrYGeZkhQEqRRx9U17PSF9qXy1M=",
|
"narHash": "sha256-3Td8fiv6iFVxeS0hYq3xdd10ZvUkC9INMAiQx/mECas=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "2641a5c3c37a98f1c5cf819a66fdd9c1901465d9",
|
"rev": "c7e7d6394bc95555d6acd5c6783855f47d64c90d",
|
||||||
"shallow": true,
|
"shallow": true,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/rust-lang/crates.io-index"
|
"url": "https://github.com/rust-lang/crates.io-index"
|
||||||
@@ -108,11 +108,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771369470,
|
"lastModified": 1768564909,
|
||||||
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
|
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0182a361324364ae3f436a63005877674cf45efb",
|
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -141,11 +141,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771556776,
|
"lastModified": 1768877311,
|
||||||
"narHash": "sha256-zKprqMQDl3xVfhSSYvgru1IGXjFdxryWk+KqK0I20Xk=",
|
"narHash": "sha256-abSDl0cNr0B+YCsIDpO1SjXD9JMxE4s8EFnhLEFVovI=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "8b3f46b8a6d17ab46e533a5e3d5b1cc2ff228860",
|
"rev": "59e4ab96304585fde3890025fd59bd2717985cc1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
8
jello-types/Cargo.toml
Normal file
8
jello-types/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "jello-types"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
|
uuid = { version = "1.18.1", features = ["serde"] }
|
||||||
6
jello-types/src/lib.rs
Normal file
6
jello-types/src/lib.rs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||||
|
pub struct User {
|
||||||
|
id: uuid::Uuid,
|
||||||
|
name: Option<String>,
|
||||||
|
primary_image_tag: Option<String>,
|
||||||
|
}
|
||||||
@@ -18,10 +18,10 @@ pub fn update(state: &mut State, message: SettingsMessage) -> Task<Message> {
|
|||||||
SettingsMessage::Select(screen) => {
|
SettingsMessage::Select(screen) => {
|
||||||
tracing::trace!("Switching settings screen to {:?}", screen);
|
tracing::trace!("Switching settings screen to {:?}", screen);
|
||||||
state.settings.screen = screen;
|
state.settings.screen = screen;
|
||||||
} //
|
}
|
||||||
// SettingsMessage::User(user) => state.settings.login_form.update(user),
|
SettingsMessage::User(user) => state.settings.login_form.update(user),
|
||||||
//
|
|
||||||
// SettingsMessage::Server(server) => state.settings.server_page.update(server),
|
SettingsMessage::Server(server) => state.settings.server_form.update(server),
|
||||||
}
|
}
|
||||||
Task::none()
|
Task::none()
|
||||||
}
|
}
|
||||||
@@ -30,13 +30,40 @@ pub fn empty() -> Element<'static, Message> {
|
|||||||
column([]).into()
|
column([]).into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default)]
|
||||||
|
pub struct SettingsState {
|
||||||
|
login_form: LoginForm,
|
||||||
|
server_form: ServerForm,
|
||||||
|
screen: SettingsScreen,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub enum SettingsMessage {
|
pub enum SettingsMessage {
|
||||||
Open,
|
Open,
|
||||||
Close,
|
Close,
|
||||||
Select(SettingsScreen),
|
Select(SettingsScreen),
|
||||||
// User(UserMessage),
|
User(UserMessage),
|
||||||
// Server(ServerMessage),
|
Server(ServerMessage),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum UserMessage {
|
||||||
|
Add,
|
||||||
|
UsernameChanged(String),
|
||||||
|
PasswordChanged(String),
|
||||||
|
// Edit(uuid::Uuid),
|
||||||
|
// Delete(uuid::Uuid),
|
||||||
|
Clear,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum ServerMessage {
|
||||||
|
Add,
|
||||||
|
NameChanged(String),
|
||||||
|
UrlChanged(String),
|
||||||
|
// Edit(uuid::Uuid),
|
||||||
|
// Delete(uuid::Uuid),
|
||||||
|
Clear,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, PartialEq, Eq)]
|
#[derive(Debug, Clone, Default, PartialEq, Eq)]
|
||||||
@@ -47,9 +74,124 @@ pub enum SettingsScreen {
|
|||||||
Servers,
|
Servers,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, PartialEq, Eq)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct SettingsState {
|
pub struct ServerItem {
|
||||||
pub screen: SettingsScreen,
|
pub id: uuid::Uuid,
|
||||||
|
pub name: SharedString,
|
||||||
|
pub url: SharedString,
|
||||||
|
pub users: Vec<uuid::Uuid>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct UserItem {
|
||||||
|
pub id: uuid::Uuid,
|
||||||
|
pub name: SharedString,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default)]
|
||||||
|
pub struct LoginForm {
|
||||||
|
username: String,
|
||||||
|
password: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl LoginForm {
|
||||||
|
pub fn update(&mut self, message: UserMessage) {
|
||||||
|
match message {
|
||||||
|
UserMessage::UsernameChanged(data) => {
|
||||||
|
self.username = data;
|
||||||
|
}
|
||||||
|
UserMessage::PasswordChanged(data) => {
|
||||||
|
self.password = data;
|
||||||
|
}
|
||||||
|
UserMessage::Add => {
|
||||||
|
// Handle adding user
|
||||||
|
}
|
||||||
|
UserMessage::Clear => {
|
||||||
|
self.username.clear();
|
||||||
|
self.password.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn view(&self) -> Element<'_, Message> {
|
||||||
|
iced::widget::column![
|
||||||
|
text("Login Form"),
|
||||||
|
text_input("Enter Username", &self.username).on_input(|data| {
|
||||||
|
Message::Settings(SettingsMessage::User(UserMessage::UsernameChanged(data)))
|
||||||
|
}),
|
||||||
|
text_input("Enter Password", &self.password)
|
||||||
|
.secure(true)
|
||||||
|
.on_input(|data| {
|
||||||
|
Message::Settings(SettingsMessage::User(UserMessage::PasswordChanged(data)))
|
||||||
|
}),
|
||||||
|
row![
|
||||||
|
button(text("Add User")).on_press_maybe(self.validate()),
|
||||||
|
button(text("Cancel"))
|
||||||
|
.on_press(Message::Settings(SettingsMessage::User(UserMessage::Clear))),
|
||||||
|
]
|
||||||
|
.spacing(10),
|
||||||
|
]
|
||||||
|
.spacing(10)
|
||||||
|
.padding([10, 0])
|
||||||
|
.into()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn validate(&self) -> Option<Message> {
|
||||||
|
(!self.username.is_empty() && !self.password.is_empty())
|
||||||
|
.then(|| Message::Settings(SettingsMessage::User(UserMessage::Add)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default)]
|
||||||
|
pub struct ServerForm {
|
||||||
|
name: String,
|
||||||
|
url: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ServerForm {
|
||||||
|
pub fn update(&mut self, message: ServerMessage) {
|
||||||
|
match message {
|
||||||
|
ServerMessage::NameChanged(data) => {
|
||||||
|
self.name = data;
|
||||||
|
}
|
||||||
|
ServerMessage::UrlChanged(data) => {
|
||||||
|
self.url = data;
|
||||||
|
}
|
||||||
|
ServerMessage::Add => {
|
||||||
|
// Handle adding server
|
||||||
|
}
|
||||||
|
ServerMessage::Clear => {
|
||||||
|
self.name.clear();
|
||||||
|
self.url.clear();
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn view(&self) -> Element<'_, Message> {
|
||||||
|
iced::widget::column![
|
||||||
|
text("Add New Server"),
|
||||||
|
text_input("Enter server name", &self.name).on_input(|data| {
|
||||||
|
Message::Settings(SettingsMessage::Server(ServerMessage::NameChanged(data)))
|
||||||
|
}),
|
||||||
|
text_input("Enter server URL", &self.url).on_input(|data| {
|
||||||
|
Message::Settings(SettingsMessage::Server(ServerMessage::UrlChanged(data)))
|
||||||
|
}),
|
||||||
|
row![
|
||||||
|
button(text("Add Server")).on_press_maybe(self.validate()),
|
||||||
|
button(text("Cancel")).on_press(Message::Settings(SettingsMessage::Server(
|
||||||
|
ServerMessage::Clear
|
||||||
|
))),
|
||||||
|
]
|
||||||
|
.spacing(10),
|
||||||
|
]
|
||||||
|
.spacing(10)
|
||||||
|
.padding([10, 0])
|
||||||
|
.into()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn validate(&self) -> Option<Message> {
|
||||||
|
(!self.name.is_empty() && !self.url.is_empty())
|
||||||
|
.then(|| Message::Settings(SettingsMessage::Server(ServerMessage::Add)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mod screens {
|
mod screens {
|
||||||
@@ -119,7 +261,6 @@ mod screens {
|
|||||||
Column::new()
|
Column::new()
|
||||||
.push(text("Main Settings"))
|
.push(text("Main Settings"))
|
||||||
.push(toggler(true).label("HDR"))
|
.push(toggler(true).label("HDR"))
|
||||||
.push(toggler(true).label("Enable Notifications"))
|
|
||||||
.spacing(20)
|
.spacing(20)
|
||||||
.padding(20)
|
.padding(20)
|
||||||
.pipe(container)
|
.pipe(container)
|
||||||
@@ -129,7 +270,7 @@ mod screens {
|
|||||||
pub fn server(state: &State) -> Element<'_, Message> {
|
pub fn server(state: &State) -> Element<'_, Message> {
|
||||||
Column::new()
|
Column::new()
|
||||||
.push(text("Server Settings"))
|
.push(text("Server Settings"))
|
||||||
// .push(ServerPage::view(state))
|
.push(state.settings.server_form.view())
|
||||||
.spacing(20)
|
.spacing(20)
|
||||||
.padding(20)
|
.padding(20)
|
||||||
.pipe(container)
|
.pipe(container)
|
||||||
@@ -139,7 +280,7 @@ mod screens {
|
|||||||
pub fn user(state: &State) -> Element<'_, Message> {
|
pub fn user(state: &State) -> Element<'_, Message> {
|
||||||
Column::new()
|
Column::new()
|
||||||
.push(text("User Settings"))
|
.push(text("User Settings"))
|
||||||
// .push(LoginForm::view(&state.settings.login_form))
|
.push(state.settings.login_form.view())
|
||||||
.spacing(20)
|
.spacing(20)
|
||||||
.padding(20)
|
.padding(20)
|
||||||
.pipe(container)
|
.pipe(container)
|
||||||
|
|||||||
Reference in New Issue
Block a user