mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-06-19 12:13:32 +00:00
Compare commits
2 Commits
5ae82ef28c
...
78960cdc10
| Author | SHA1 | Date | |
|---|---|---|---|
| 78960cdc10 | |||
| 0439cf815e |
+43
-12
@@ -673,10 +673,11 @@ impl SoundpadGui {
|
|||||||
ScrollArea::vertical().id_salt(0).show(ui, |ui| {
|
ScrollArea::vertical().id_salt(0).show(ui, |ui| {
|
||||||
ui.set_min_width(area_size.x);
|
ui.set_min_width(area_size.x);
|
||||||
|
|
||||||
let mut dirs = self.app_state.dirs.clone();
|
let mut dirs = std::mem::take(&mut self.app_state.dirs);
|
||||||
|
let mut dir_to_open = None;
|
||||||
|
|
||||||
dnd(ui, "dnd_directories").show_vec(&mut dirs, |ui, item, handle, _state| {
|
dnd(ui, "dnd_directories").show_vec(&mut dirs, |ui, item, handle, _state| {
|
||||||
let path = item.clone();
|
let path = item;
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
handle.ui(ui, |ui| {
|
handle.ui(ui, |ui| {
|
||||||
ui.label(ICON_DRAG_INDICATOR.codepoint);
|
ui.label(ICON_DRAG_INDICATOR.codepoint);
|
||||||
@@ -688,7 +689,7 @@ impl SoundpadGui {
|
|||||||
|
|
||||||
let mut dir_button_text = RichText::new(name.clone());
|
let mut dir_button_text = RichText::new(name.clone());
|
||||||
if let Some(current_dir) = &self.app_state.current_dir
|
if let Some(current_dir) = &self.app_state.current_dir
|
||||||
&& current_dir.eq(&path)
|
&& current_dir.eq(&*path)
|
||||||
{
|
{
|
||||||
dir_button_text = dir_button_text.color(Color32::WHITE);
|
dir_button_text = dir_button_text.color(Color32::WHITE);
|
||||||
}
|
}
|
||||||
@@ -698,7 +699,7 @@ impl SoundpadGui {
|
|||||||
|
|
||||||
let dir_button_response = ui.add(dir_button);
|
let dir_button_response = ui.add(dir_button);
|
||||||
if dir_button_response.clicked() {
|
if dir_button_response.clicked() {
|
||||||
self.open_dir(&path);
|
dir_to_open = Some(path.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
let delete_dir_button = Button::new(ICON_DELETE).frame(false);
|
let delete_dir_button = Button::new(ICON_DELETE).frame(false);
|
||||||
@@ -718,7 +719,7 @@ impl SoundpadGui {
|
|||||||
))
|
))
|
||||||
.clicked()
|
.clicked()
|
||||||
{
|
{
|
||||||
self.open_dir(&path);
|
dir_to_open = Some(path.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ui
|
if ui
|
||||||
@@ -750,6 +751,10 @@ impl SoundpadGui {
|
|||||||
});
|
});
|
||||||
self.app_state.dirs = dirs;
|
self.app_state.dirs = dirs;
|
||||||
|
|
||||||
|
if let Some(path) = dir_to_open {
|
||||||
|
self.open_dir(&path);
|
||||||
|
}
|
||||||
|
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
let add_dirs_button = Button::new(ICON_ADD).frame(false);
|
let add_dirs_button = Button::new(ICON_ADD).frame(false);
|
||||||
let add_dirs_button_response = ui.add_sized([18.0, 18.0], add_dirs_button);
|
let add_dirs_button_response = ui.add_sized([18.0, 18.0], add_dirs_button);
|
||||||
@@ -769,8 +774,7 @@ impl SoundpadGui {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_files(&mut self, ui: &mut Ui, area_size: Vec2) {
|
fn draw_files_search_field(&mut self, ui: &mut Ui) {
|
||||||
ui.vertical(|ui| {
|
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
let search_field_response = ui.add_sized(
|
let search_field_response = ui.add_sized(
|
||||||
[ui.available_width(), 22.0],
|
[ui.available_width(), 22.0],
|
||||||
@@ -785,9 +789,9 @@ impl SoundpadGui {
|
|||||||
|
|
||||||
self.app_state.search_field_id = Some(search_field_response.id);
|
self.app_state.search_field_id = Some(search_field_response.id);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
ui.separator();
|
fn draw_files_list(&mut self, ui: &mut Ui, area_size: Vec2) {
|
||||||
|
|
||||||
ScrollArea::vertical().id_salt(1).show(ui, |ui| {
|
ScrollArea::vertical().id_salt(1).show(ui, |ui| {
|
||||||
ui.set_min_width(area_size.x);
|
ui.set_min_width(area_size.x);
|
||||||
ui.set_min_height(area_size.y);
|
ui.set_min_height(area_size.y);
|
||||||
@@ -820,17 +824,23 @@ impl SoundpadGui {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
fn draw_files(&mut self, ui: &mut Ui, area_size: Vec2) {
|
||||||
|
ui.vertical(|ui| {
|
||||||
|
self.draw_files_search_field(ui);
|
||||||
|
ui.separator();
|
||||||
|
self.draw_files_list(ui, area_size);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_tree_node(
|
fn draw_tree_node_dir(
|
||||||
ui: &mut Ui,
|
ui: &mut Ui,
|
||||||
path: std::path::PathBuf,
|
path: std::path::PathBuf,
|
||||||
app_state: &mut AppState,
|
app_state: &mut AppState,
|
||||||
audio_player_state: &AudioPlayerState,
|
audio_player_state: &AudioPlayerState,
|
||||||
actions: &mut Vec<FileAction>,
|
actions: &mut Vec<FileAction>,
|
||||||
) {
|
) {
|
||||||
if path.is_dir() {
|
|
||||||
let dir_name = path
|
let dir_name = path
|
||||||
.file_name()
|
.file_name()
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
@@ -891,7 +901,15 @@ impl SoundpadGui {
|
|||||||
Self::draw_tree_node(ui, child, app_state, audio_player_state, actions);
|
Self::draw_tree_node(ui, child, app_state, audio_player_state, actions);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
fn draw_tree_node_file(
|
||||||
|
ui: &mut Ui,
|
||||||
|
path: std::path::PathBuf,
|
||||||
|
app_state: &mut AppState,
|
||||||
|
audio_player_state: &AudioPlayerState,
|
||||||
|
actions: &mut Vec<FileAction>,
|
||||||
|
) {
|
||||||
let file_name = path
|
let file_name = path
|
||||||
.file_name()
|
.file_name()
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
@@ -1012,6 +1030,19 @@ impl SoundpadGui {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn draw_tree_node(
|
||||||
|
ui: &mut Ui,
|
||||||
|
path: std::path::PathBuf,
|
||||||
|
app_state: &mut AppState,
|
||||||
|
audio_player_state: &AudioPlayerState,
|
||||||
|
actions: &mut Vec<FileAction>,
|
||||||
|
) {
|
||||||
|
if path.is_dir() {
|
||||||
|
Self::draw_tree_node_dir(ui, path, app_state, audio_player_state, actions);
|
||||||
|
} else {
|
||||||
|
Self::draw_tree_node_file(ui, path, app_state, audio_player_state, actions);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_footer(&mut self, ui: &mut Ui) {
|
fn draw_footer(&mut self, ui: &mut Ui) {
|
||||||
|
|||||||
Reference in New Issue
Block a user