78 lines
2.5 KiB
Rust
78 lines
2.5 KiB
Rust
// UI view components
|
|
|
|
use iced::{
|
|
widget::{button, text, Column, Row, container, image as iced_image},
|
|
Element, Length,
|
|
};
|
|
|
|
use crate::app::{CursorRush, Message};
|
|
|
|
// View function to render the UI
|
|
pub fn view_app(state: &CursorRush) -> Element<Message> {
|
|
let mut content = Column::new()
|
|
.spacing(16)
|
|
.push(text("Cursor Rush").size(24));
|
|
|
|
// Add a button for each cursor
|
|
if !state.cursors.is_empty() {
|
|
let current_cursor = &state.cursors[state.current_index];
|
|
content = content.push(text(format!("Current cursor: {}", current_cursor.name)));
|
|
|
|
// Display the current cursor image as a preview
|
|
let img_handle = iced_image::Handle::from_path(¤t_cursor.path);
|
|
let cursor_image = iced_image::Image::new(img_handle)
|
|
.width(Length::Fixed(64.0))
|
|
.height(Length::Fixed(64.0));
|
|
|
|
content = content.push(cursor_image);
|
|
|
|
// Create a row of cursor buttons
|
|
let mut cursor_row = Row::new().spacing(10);
|
|
|
|
for (i, cursor) in state.cursors.iter().enumerate() {
|
|
// Create a small preview image for each cursor
|
|
let preview_handle = iced_image::Handle::from_path(&cursor.path);
|
|
let preview_image = iced_image::Image::new(preview_handle)
|
|
.width(Length::Fixed(32.0))
|
|
.height(Length::Fixed(32.0));
|
|
|
|
let btn = button(
|
|
Row::new()
|
|
.spacing(5)
|
|
.push(preview_image)
|
|
.push(text(&cursor.name).size(16))
|
|
)
|
|
.on_press(Message::SelectCursor(i));
|
|
|
|
cursor_row = cursor_row.push(btn);
|
|
}
|
|
|
|
content = content
|
|
.push(cursor_row)
|
|
.push(button("Next cursor").on_press(Message::NextCursor))
|
|
.push(button("Quit").on_press(Message::Quit));
|
|
|
|
// Add instructions for the hotkey and close button behavior
|
|
content = content.push(
|
|
container(
|
|
Column::new()
|
|
.spacing(5)
|
|
.push(text("Press Ctrl+Shift+F12 to exit the application").size(16))
|
|
.push(text("Close button (X) minimizes to system tray").size(16))
|
|
)
|
|
.padding(10)
|
|
);
|
|
} else {
|
|
content = content.push(text("No cursors found in assets directory"));
|
|
}
|
|
|
|
// Create the main container
|
|
container(content)
|
|
.width(Length::Fill)
|
|
.height(Length::Fill)
|
|
.center_x(Length::Fill)
|
|
.center_y(Length::Fill)
|
|
.padding(20)
|
|
.into()
|
|
}
|