first commit

This commit is contained in:
2025-08-25 22:41:07 +02:00
commit 0bef2b69c2
25 changed files with 6007 additions and 0 deletions

98
front/src/main.rs Normal file
View File

@@ -0,0 +1,98 @@
use iced::Length::{self, Fill, FillPortion};
use iced::widget::container;
use iced::{
Background, Color, Element, Task, Theme,
widget::{Image, column, container::Style, row, text},
};
mod channels;
mod servers;
use servers::{User, get_servers_buttons};
fn main() -> Result<(), iced::Error> {
iced::application(Liscord::title, Liscord::update, Liscord::view)
.theme(Liscord::theme)
.run_with(Liscord::new)
}
struct Liscord {
user: Option<User>,
selected_server: Option<i32>,
}
#[derive(Debug, Clone)]
enum Event {
ServerPressed(i32),
}
impl Liscord {
fn new() -> (Self, Task<Event>) {
(
Liscord {
user: Some(User::default()),
selected_server: None,
},
Task::none(),
)
}
fn title(&self) -> String {
"Liscord".to_string()
}
fn update(&mut self, event: Event) -> Task<Event> {
match event {
Event::ServerPressed(server_id) => {
self.selected_server = Some(server_id);
// println!("Server Pressed ! Id: {server_id}")
}
}
Task::none()
}
fn view(&self) -> Element<'_, Event> {
let app_body = {
let server_bar = {
let mut content = column![text("Servers")];
if let Some(user) = &self.user {
content = content.push(get_servers_buttons(user, self))
}
container(content)
.padding(10)
.width(iced::Length::Fixed(300.))
.height(Fill)
.style(|_theme| Style {
background: Some(Background::Color(Color::from_rgb(0.0, 0.0, 1.0))),
..Default::default()
})
};
let message_content = container(text("Messages"))
.width(iced::Length::Fill)
.height(Fill);
row![server_bar, message_content]
}
.height(FillPortion(19));
let app_header = {
let liscord_logo = Image::new("assets/liscord.png");
let liscord_text = text("Liscord");
let centered_text = container(liscord_text)
.width(Fill)
.center_x(Length::Fill)
.center_y(Length::Fill);
row![liscord_logo, centered_text].width(Fill).height(Fill)
}
.height(FillPortion(1));
column![app_header, app_body].into()
}
fn theme(&self) -> Theme {
Theme::Dark
}
}