Improve Images, Compress, Output, Workflow steps

This commit is contained in:
2026-03-06 12:22:15 +02:00
parent 457f132f51
commit 283206c411
4 changed files with 173 additions and 50 deletions

View File

@@ -33,7 +33,7 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage {
// Quality slider
let quality_group = adw::PreferencesGroup::builder()
.title("Quality Level")
.description("Higher quality means larger files")
.description("Higher quality means larger files. This sets the overall quality target.")
.build();
let initial_val = match cfg.quality_preset {
@@ -78,10 +78,14 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage {
quality_group.add(&quality_box);
content.append(&quality_group);
// Advanced options
// Advanced options in expander
let advanced_group = adw::PreferencesGroup::builder()
.title("Advanced Options")
.build();
let advanced_expander = adw::ExpanderRow::builder()
.title("Per-Format Quality")
.description("Fine-tune quality for each format individually")
.subtitle("Fine-tune quality for each format individually")
.build();
let jpeg_row = adw::SpinRow::builder()
@@ -102,9 +106,11 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage {
.adjustment(&gtk::Adjustment::new(cfg.webp_quality as f64, 1.0, 100.0, 1.0, 10.0, 0.0))
.build();
advanced_group.add(&jpeg_row);
advanced_group.add(&png_row);
advanced_group.add(&webp_row);
advanced_expander.add_row(&jpeg_row);
advanced_expander.add_row(&png_row);
advanced_expander.add_row(&webp_row);
advanced_group.add(&advanced_expander);
content.append(&advanced_group);
drop(cfg);
@@ -118,7 +124,7 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage {
}
{
let jc = state.job_config.clone();
let label = quality_label.clone();
let label = quality_label;
quality_scale.connect_value_changed(move |scale| {
let val = scale.value().round() as u32;
let mut c = jc.borrow_mut();
@@ -167,10 +173,10 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage {
fn quality_description(val: u32) -> String {
match val {
1 => "Web Optimized - smallest files, noticeable quality loss".into(),
2 => "Low - small files, some quality loss".into(),
3 => "Medium - good balance of quality and size".into(),
4 => "High - large files, minimal quality loss".into(),
_ => "Maximum - largest files, best possible quality".into(),
1 => "Web Optimized - smallest files, noticeable quality loss. Best for thumbnails.".into(),
2 => "Low - small files, some quality loss. Good for email attachments.".into(),
3 => "Medium - good balance of quality and size. Recommended for most uses.".into(),
4 => "High - large files, minimal quality loss. Good for printing.".into(),
_ => "Maximum - largest files, best possible quality. Archival use.".into(),
}
}