use crate::types::{ audio_player::{PlayerState, TrackInfo}, config::HotkeyConfig, }; use egui::Id; use std::{ collections::{HashMap, HashSet}, path::PathBuf, time::Instant, }; #[derive(Default, Debug)] pub struct TrackUiState { pub position_slider_value: f32, pub volume_slider_value: f32, pub position_dragged: bool, pub volume_dragged: bool, pub ignore_position_update_until: Option, pub ignore_volume_update_until: Option, } #[derive(Default, Debug)] pub struct AppState { pub search_query: String, pub track_ui_states: HashMap, pub show_settings: bool, pub volume_dragged: bool, pub force_focus_search: bool, pub volume_slider_value: f32, pub search_field_id: Option, pub ignore_volume_update_until: Option, pub current_dir: Option, pub dirs: Vec, pub dirs_to_remove: HashSet, pub listed_files: HashSet, pub listed_dirs: HashSet, pub dir_cache: HashMap>, pub show_hotkeys: bool, pub hotkey_capture_active: bool, pub hotkey_config: HotkeyConfig, pub hotkey_search_query: String, pub assigning_hotkey_slot: Option, pub assigning_hotkey_for_file: Option, } #[derive(Default, Debug, Clone)] pub struct AudioPlayerState { pub state: PlayerState, pub new_state: Option, pub tracks: Vec, pub volume: f32, // Master volume pub current_input: String, pub all_inputs: HashMap, pub all_inputs_sorted: Vec<(String, String)>, pub is_daemon_running: bool, pub hotkey_config: Option, }