show General page on members not empty

This commit is contained in:
yggverse 2025-03-28 04:01:12 +02:00
parent 6443105986
commit 6a100c48ee

View File

@ -29,72 +29,74 @@ impl Dialog for PreferencesDialog {
.search_enabled(true) .search_enabled(true)
.title("Page info") .title("Page info")
.build(); .build();
d.add(&{ if info.mime.is_some() || info.size.is_some() || info.header.is_some() {
let p = PreferencesPage::builder() d.add(&{
.title("General") let p = PreferencesPage::builder()
.icon_name("help-about-symbolic") .title("General")
.build(); .icon_name("help-about-symbolic")
if info.mime.is_some() { .build();
p.add(&{ if info.mime.is_some() {
let g = PreferencesGroup::builder().title("Meta").build(); p.add(&{
if let Some(ref mime) = info.mime { let g = PreferencesGroup::builder().title("Meta").build();
g.add(&row("Content type", mime)) if let Some(ref mime) = info.mime {
} g.add(&row("Content type", mime))
g }
}); g
} // @TODO content language, header size, etc. });
if info.size.is_some() || info.header.is_some() { } // @TODO content language, header size, etc.
p.add(&{ if info.size.is_some() || info.header.is_some() {
use crate::tool::Format; p.add(&{
let g = PreferencesGroup::builder().title("Size").build(); use crate::tool::Format;
let mut i = 0; // count group members let g = PreferencesGroup::builder().title("Size").build();
let mut t = 0; // count total size let mut i = 0; // count group members
if let Some(ref h) = info.header { let mut t = 0; // count total size
let l = h.len(); if let Some(ref h) = info.header {
i += 1; let l = h.len();
t += l; i += 1;
g.add(&{ t += l;
let e = adw::ExpanderRow::builder() g.add(&{
.enable_expansion(true) let e = adw::ExpanderRow::builder()
.expanded(false) .enable_expansion(true)
.subtitle(l.bytes()) .expanded(false)
.title_selectable(true) .subtitle(l.bytes())
.title("Header")
.build();
e.add_row(
&ActionRow::builder()
.css_classes(["property"])
.title_selectable(true) .title_selectable(true)
.title(h.escape_default().to_string()) // escape \r\n .title("Header")
.build(), .build();
); e.add_row(
{ &ActionRow::builder()
use gtk::prelude::{ListBoxRowExt, WidgetExt}; .css_classes(["property"])
e.child().map(|c| { .title_selectable(true)
c.first_child().map(|c| { .title(h.escape_default().to_string()) // escape \r\n
c.first_child().map_or_else( .build(),
|| println!("Deprecated child order!"), );
|c| c.add_css_class("property"), {
) use gtk::prelude::{ListBoxRowExt, WidgetExt};
}) e.child().map(|c| {
}); // @TODO unstable! c.first_child().map(|c| {
} c.first_child().map_or_else(
e || println!("Deprecated child order!"),
}) |c| c.add_css_class("property"),
} )
if let Some(ref c) = info.size { })
i += 1; }); // @TODO unstable!
t += c; }
g.add(&row("Content", c.bytes())) e
} })
if i > 1 && t > 0 { }
g.add(&row("Total", t.bytes())) if let Some(ref c) = info.size {
} i += 1;
g t += c;
}); g.add(&row("Content", c.bytes()))
} // @TODO header size, total size, etc. }
p if i > 1 && t > 0 {
}); g.add(&row("Total", t.bytes()))
}
g
});
} // @TODO header size, total size, etc.
p
});
}
if let Some(ref socket) = info.socket { if let Some(ref socket) = info.socket {
d.add(&{ d.add(&{
let p = PreferencesPage::builder() let p = PreferencesPage::builder()