Wire remaining UI elements: presets, drag-drop, import/save, output summary

This commit is contained in:
2026-03-06 12:01:50 +02:00
parent 86480545b7
commit 662270d7b9
5 changed files with 602 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
use adw::prelude::*;
use crate::app::AppState;
pub fn build_output_page() -> adw::NavigationPage {
pub fn build_output_page(state: &AppState) -> adw::NavigationPage {
let scrolled = gtk::ScrolledWindow::builder()
.hscrollbar_policy(gtk::PolicyType::Never)
.vexpand(true)
@@ -39,6 +40,7 @@ pub fn build_output_page() -> adw::NavigationPage {
.title("Output Location")
.subtitle("processed/ (subfolder next to originals)")
.activatable(true)
.action_name("win.choose-output")
.build();
output_row.add_prefix(&gtk::Image::from_icon_name("folder-symbolic"));
@@ -96,6 +98,22 @@ pub fn build_output_page() -> adw::NavigationPage {
stats_group.add(&count_row);
content.append(&stats_group);
// Wire preserve directory structure
{
let jc = state.job_config.clone();
structure_row.connect_active_notify(move |row| {
jc.borrow_mut().preserve_dir_structure = row.is_active();
});
}
// Wire overwrite behavior
{
let jc = state.job_config.clone();
overwrite_row.connect_selected_notify(move |row| {
jc.borrow_mut().overwrite_behavior = row.selected() as u8;
});
}
scrolled.set_child(Some(&content));
let clamp = adw::Clamp::builder()