mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-06-19 12:13:32 +00:00
77 lines
1.7 KiB
Rust
77 lines
1.7 KiB
Rust
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<Instant>,
|
|
pub ignore_volume_update_until: Option<Instant>,
|
|
}
|
|
|
|
#[derive(Default, Debug)]
|
|
pub struct AppState {
|
|
pub search_query: String,
|
|
|
|
pub track_ui_states: HashMap<u32, TrackUiState>,
|
|
|
|
pub show_settings: bool,
|
|
pub volume_dragged: bool,
|
|
pub force_focus_search: bool,
|
|
|
|
pub volume_slider_value: f32,
|
|
|
|
pub search_field_id: Option<Id>,
|
|
|
|
pub ignore_volume_update_until: Option<Instant>,
|
|
|
|
pub current_dir: Option<PathBuf>,
|
|
pub dirs: Vec<PathBuf>,
|
|
pub dirs_to_remove: HashSet<PathBuf>,
|
|
|
|
pub listed_files: HashSet<PathBuf>,
|
|
pub listed_dirs: HashSet<PathBuf>,
|
|
pub dir_cache: HashMap<PathBuf, Vec<PathBuf>>,
|
|
|
|
pub show_hotkeys: bool,
|
|
pub hotkey_capture_active: bool,
|
|
|
|
pub hotkey_config: HotkeyConfig,
|
|
pub hotkey_search_query: String,
|
|
|
|
pub assigning_hotkey_slot: Option<String>,
|
|
pub assigning_hotkey_for_file: Option<PathBuf>,
|
|
}
|
|
|
|
#[derive(Default, Debug, Clone)]
|
|
pub struct AudioPlayerState {
|
|
pub state: PlayerState,
|
|
pub new_state: Option<PlayerState>,
|
|
|
|
pub tracks: Vec<TrackInfo>,
|
|
|
|
pub volume: f32, // Master volume
|
|
|
|
pub current_input: String,
|
|
pub all_inputs: HashMap<String, String>,
|
|
pub all_inputs_sorted: Vec<(String, String)>,
|
|
|
|
pub is_daemon_running: bool,
|
|
|
|
pub hotkey_config: Option<HotkeyConfig>,
|
|
}
|