mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-04-28 14:31:23 +00:00
feat: make vertical separator in GUI adjustable
This commit is contained in:
+27
-4
@@ -1,7 +1,7 @@
|
|||||||
use crate::gui::{SUPPORTED_EXTENSIONS, SoundpadGui};
|
use crate::gui::{SUPPORTED_EXTENSIONS, SoundpadGui};
|
||||||
use egui::{
|
use egui::{
|
||||||
Align, AtomExt, Button, Color32, ComboBox, FontFamily, Label, Layout, RichText, ScrollArea,
|
Align, AtomExt, Button, Color32, ComboBox, CursorIcon, FontFamily, Label, Layout, RichText,
|
||||||
Slider, TextEdit, Ui, Vec2,
|
ScrollArea, Sense, Slider, TextEdit, Ui, Vec2,
|
||||||
};
|
};
|
||||||
use egui_material_icons::icons;
|
use egui_material_icons::icons;
|
||||||
use pwsp::types::audio_player::TrackInfo;
|
use pwsp::types::audio_player::TrackInfo;
|
||||||
@@ -260,11 +260,34 @@ impl SoundpadGui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn draw_body(&mut self, ui: &mut Ui) {
|
fn draw_body(&mut self, ui: &mut Ui) {
|
||||||
let dirs_size = Vec2::new(ui.available_width() / 4.0, ui.available_height() - 40.0);
|
let left_panel_width = (ui.available_width() / 4.0 + self.config.vertical_separator_width)
|
||||||
|
.max(100.0)
|
||||||
|
.min(ui.available_width() - 100.0);
|
||||||
|
let dirs_size = Vec2::new(left_panel_width, ui.available_height() - 40.0);
|
||||||
|
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
self.draw_dirs(ui, dirs_size);
|
self.draw_dirs(ui, dirs_size);
|
||||||
ui.separator();
|
|
||||||
|
let (rect, response) = ui.allocate_at_least(
|
||||||
|
Vec2::new(ui.spacing().item_spacing.x, ui.available_height()),
|
||||||
|
Sense::click_and_drag(),
|
||||||
|
);
|
||||||
|
|
||||||
|
if ui.is_rect_visible(rect) {
|
||||||
|
let stroke = ui.visuals().widgets.noninteractive.bg_stroke;
|
||||||
|
ui.painter().vline(rect.center().x, rect.y_range(), stroke);
|
||||||
|
}
|
||||||
|
|
||||||
|
let vertical_separator_response =
|
||||||
|
response.on_hover_and_drag_cursor(CursorIcon::ResizeHorizontal);
|
||||||
|
|
||||||
|
if vertical_separator_response.dragged() {
|
||||||
|
self.config.vertical_separator_width += vertical_separator_response.drag_delta().x;
|
||||||
|
}
|
||||||
|
|
||||||
|
if vertical_separator_response.drag_stopped() {
|
||||||
|
self.config.save_to_file().ok();
|
||||||
|
}
|
||||||
|
|
||||||
let files_size = Vec2::new(ui.available_width(), ui.available_height() - 40.0);
|
let files_size = Vec2::new(ui.available_width(), ui.available_height() - 40.0);
|
||||||
self.draw_files(ui, files_size);
|
self.draw_files(ui, files_size);
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ impl DaemonConfig {
|
|||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub struct GuiConfig {
|
pub struct GuiConfig {
|
||||||
pub scale_factor: f32,
|
pub scale_factor: f32,
|
||||||
|
pub vertical_separator_width: f32,
|
||||||
|
|
||||||
pub save_volume: bool,
|
pub save_volume: bool,
|
||||||
pub save_input: bool,
|
pub save_input: bool,
|
||||||
@@ -47,6 +48,7 @@ impl Default for GuiConfig {
|
|||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
GuiConfig {
|
GuiConfig {
|
||||||
scale_factor: 1.0,
|
scale_factor: 1.0,
|
||||||
|
vertical_separator_width: 0.0,
|
||||||
|
|
||||||
save_volume: false,
|
save_volume: false,
|
||||||
save_input: false,
|
save_input: false,
|
||||||
|
|||||||
Reference in New Issue
Block a user