mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
add header string dump, reorganize size struct
This commit is contained in:
parent
22efd3ef9d
commit
1c29639468
4 changed files with 72 additions and 43 deletions
|
|
@ -183,8 +183,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i
|
i
|
||||||
.add_event(event_name.to_string())
|
.add_event(event_name.to_string())
|
||||||
.unset_mime()
|
.set_header(None)
|
||||||
.unset_size()
|
.set_mime(None)
|
||||||
|
.set_size(None)
|
||||||
.commit();
|
.commit();
|
||||||
|
|
||||||
page.navigation.request.update_secondary_icon(&i)
|
page.navigation.request.update_secondary_icon(&i)
|
||||||
|
|
@ -216,8 +217,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i
|
i
|
||||||
.add_event(EVENT_COMPLETED.to_string())
|
.add_event(EVENT_COMPLETED.to_string())
|
||||||
.set_size(Some(input.as_bytes().len()), None)
|
.set_header(Some(input.as_str().to_string()))
|
||||||
.unset_mime()
|
.set_size(Some(input.as_bytes().len()))
|
||||||
|
.set_mime(None)
|
||||||
.commit();
|
.commit();
|
||||||
page.navigation.request.update_secondary_icon(&i);
|
page.navigation.request.update_secondary_icon(&i);
|
||||||
match input {
|
match input {
|
||||||
|
|
@ -332,8 +334,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i
|
i
|
||||||
.add_event("Parsing".to_string())
|
.add_event("Parsing".to_string())
|
||||||
.set_mime(Some(mime))
|
.set_header(Some(success.as_header_str().to_string()))
|
||||||
.set_size(Some(success.as_header_bytes().len()), Some(data.len()));
|
.set_size(Some(buffer.len()))
|
||||||
|
.set_mime(Some(mime));
|
||||||
let w = if matches!(*feature, Feature::Source) {
|
let w = if matches!(*feature, Feature::Source) {
|
||||||
page.content.to_text_source(data)
|
page.content.to_text_source(data)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -437,8 +440,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i
|
i
|
||||||
.add_event(EVENT_COMPLETED.to_string())
|
.add_event(EVENT_COMPLETED.to_string())
|
||||||
|
.set_header(Some(success.as_header_str().to_string()))
|
||||||
.set_mime(Some(mime))
|
.set_mime(Some(mime))
|
||||||
.set_size(None, Some(buffer.byte_length()))
|
.set_size(Some(buffer.byte_length()))
|
||||||
.commit();
|
.commit();
|
||||||
page.navigation.request.update_secondary_icon(&i)
|
page.navigation.request.update_secondary_icon(&i)
|
||||||
}
|
}
|
||||||
|
|
@ -487,8 +491,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i
|
i
|
||||||
.add_event(EVENT_COMPLETED.to_string())
|
.add_event(EVENT_COMPLETED.to_string())
|
||||||
|
.set_header(Some(success.as_header_str().to_string()))
|
||||||
.set_mime(Some(mime.to_string()))
|
.set_mime(Some(mime.to_string()))
|
||||||
.unset_size()
|
.set_size(None)
|
||||||
.commit();
|
.commit();
|
||||||
page.navigation.request.update_secondary_icon(&i)
|
page.navigation.request.update_secondary_icon(&i)
|
||||||
},
|
},
|
||||||
|
|
@ -556,8 +561,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.take();
|
let mut i = page.navigation.request.info.take();
|
||||||
i
|
i
|
||||||
.add_event(EVENT_COMPLETED.to_string())
|
.add_event(EVENT_COMPLETED.to_string())
|
||||||
.unset_mime()
|
.set_header(Some(redirect.as_str().to_string()))
|
||||||
.unset_size()
|
.set_mime(None)
|
||||||
|
.set_size(None)
|
||||||
.commit();
|
.commit();
|
||||||
|
|
||||||
page.navigation.request.info.replace(i.into_redirect());
|
page.navigation.request.info.replace(i.into_redirect());
|
||||||
|
|
@ -579,8 +585,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i
|
i
|
||||||
.add_event(EVENT_COMPLETED.to_string())
|
.add_event(EVENT_COMPLETED.to_string())
|
||||||
.set_size(Some(certificate.as_bytes().len()), None)
|
.set_header(Some(certificate.as_str().to_string()))
|
||||||
.unset_mime()
|
.set_size(Some(certificate.as_bytes().len()))
|
||||||
|
.set_mime(None)
|
||||||
.commit();
|
.commit();
|
||||||
page.navigation.request.update_secondary_icon(&i);
|
page.navigation.request.update_secondary_icon(&i);
|
||||||
// update page content widget
|
// update page content widget
|
||||||
|
|
@ -623,8 +630,9 @@ fn handle(
|
||||||
let mut i = page.navigation.request.info.borrow_mut();
|
let mut i = page.navigation.request.info.borrow_mut();
|
||||||
i.add_event(EVENT_COMPLETED.to_string())
|
i.add_event(EVENT_COMPLETED.to_string())
|
||||||
.set_request(Some(uri.to_string()))
|
.set_request(Some(uri.to_string()))
|
||||||
.unset_mime()
|
.set_header(None)
|
||||||
.unset_size()
|
.set_size(None)
|
||||||
|
.set_mime(None)
|
||||||
.commit();
|
.commit();
|
||||||
page.navigation.request.update_secondary_icon(&i)
|
page.navigation.request.update_secondary_icon(&i)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
mod dialog;
|
mod dialog;
|
||||||
mod event;
|
mod event;
|
||||||
mod size;
|
|
||||||
mod socket;
|
mod socket;
|
||||||
|
|
||||||
use super::Profile;
|
use super::Profile;
|
||||||
use dialog::Dialog;
|
use dialog::Dialog;
|
||||||
use event::Event;
|
use event::Event;
|
||||||
use gtk::{gio::SocketAddress, prelude::IsA};
|
use gtk::{gio::SocketAddress, prelude::IsA};
|
||||||
use size::Size;
|
|
||||||
use socket::Socket;
|
use socket::Socket;
|
||||||
|
|
||||||
/// Common, shared `Page` information holder
|
/// Common, shared `Page` information holder
|
||||||
|
|
@ -16,6 +14,9 @@ use socket::Socket;
|
||||||
pub struct Info {
|
pub struct Info {
|
||||||
/// Hold page events like connection phase and parsing time
|
/// Hold page events like connection phase and parsing time
|
||||||
event: Vec<Event>,
|
event: Vec<Event>,
|
||||||
|
/// Hold optional header string to dump it in the info dialog
|
||||||
|
/// and calculate total size
|
||||||
|
header: Option<String>,
|
||||||
/// Mark holder as deprecated on handle begin
|
/// Mark holder as deprecated on handle begin
|
||||||
/// * useful on some driver does not update status properly
|
/// * useful on some driver does not update status properly
|
||||||
is_deprecated: bool,
|
is_deprecated: bool,
|
||||||
|
|
@ -27,7 +28,7 @@ pub struct Info {
|
||||||
/// Key to relate data collected with the specific request
|
/// Key to relate data collected with the specific request
|
||||||
request: Option<String>,
|
request: Option<String>,
|
||||||
/// Hold size info
|
/// Hold size info
|
||||||
size: Size,
|
size: Option<usize>,
|
||||||
/// Optional socket details
|
/// Optional socket details
|
||||||
/// * useful also for geo-location feature
|
/// * useful also for geo-location feature
|
||||||
socket: Option<Socket>,
|
socket: Option<Socket>,
|
||||||
|
|
@ -40,11 +41,12 @@ impl Info {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
event: Vec::with_capacity(50), // estimated max events quantity for all drivers
|
event: Vec::with_capacity(50), // estimated max events quantity for all drivers
|
||||||
|
header: None,
|
||||||
is_deprecated: false,
|
is_deprecated: false,
|
||||||
mime: None,
|
mime: None,
|
||||||
redirect: None,
|
redirect: None,
|
||||||
request: None,
|
request: None,
|
||||||
size: Size::default(),
|
size: None,
|
||||||
socket: None,
|
socket: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -89,13 +91,13 @@ impl Info {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_mime(&mut self, mime: Option<String>) -> &mut Self {
|
pub fn set_header(&mut self, header: Option<String>) -> &mut Self {
|
||||||
self.mime = mime;
|
self.header = header;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unset_mime(&mut self) -> &mut Self {
|
pub fn set_mime(&mut self, mime: Option<String>) -> &mut Self {
|
||||||
self.mime = None;
|
self.mime = mime;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -116,13 +118,8 @@ impl Info {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_size(&mut self, header: Option<usize>, content: Option<usize>) -> &mut Self {
|
pub fn set_size(&mut self, size: Option<usize>) -> &mut Self {
|
||||||
self.size = Size { content, header };
|
self.size = size;
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn unset_size(&mut self) -> &mut Self {
|
|
||||||
self.size = Size::default();
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
use super::{Info, Profile};
|
use super::{Info, Profile};
|
||||||
use adw::{
|
use adw::{
|
||||||
ActionRow, PreferencesDialog, PreferencesGroup, PreferencesPage,
|
ActionRow, PreferencesDialog, PreferencesGroup, PreferencesPage,
|
||||||
prelude::{ActionRowExt, PreferencesDialogExt, PreferencesGroupExt, PreferencesPageExt},
|
prelude::{
|
||||||
|
ActionRowExt, ExpanderRowExt, PreferencesDialogExt, PreferencesGroupExt, PreferencesPageExt,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
use gtk::glib::gformat;
|
use gtk::glib::gformat;
|
||||||
|
|
||||||
|
|
@ -37,11 +39,11 @@ impl Dialog for PreferencesDialog {
|
||||||
g
|
g
|
||||||
});
|
});
|
||||||
} // @TODO content language, header size, etc.
|
} // @TODO content language, header size, etc.
|
||||||
if info.size.header.is_some() || info.size.content.is_some() {
|
if info.size.is_some() || info.header.is_some() {
|
||||||
p.add(&{
|
p.add(&{
|
||||||
use crate::tool::Format;
|
use crate::tool::Format;
|
||||||
/// Common `ActionRow` widget pattern
|
/// Common `ActionRow` widget pattern
|
||||||
fn r(title: &str, subtitle: &str) -> ActionRow {
|
fn r(title: &str, subtitle: String) -> ActionRow {
|
||||||
ActionRow::builder()
|
ActionRow::builder()
|
||||||
.css_classes(["property"])
|
.css_classes(["property"])
|
||||||
.subtitle_selectable(true)
|
.subtitle_selectable(true)
|
||||||
|
|
@ -53,18 +55,45 @@ impl Dialog for PreferencesDialog {
|
||||||
let g = PreferencesGroup::builder().title("Size").build();
|
let g = PreferencesGroup::builder().title("Size").build();
|
||||||
let mut i = 0; // count group members
|
let mut i = 0; // count group members
|
||||||
let mut t = 0; // count total size
|
let mut t = 0; // count total size
|
||||||
if let Some(ref h) = info.size.header {
|
if let Some(ref h) = info.header {
|
||||||
|
let l = h.len();
|
||||||
i += 1;
|
i += 1;
|
||||||
t += h;
|
t += l;
|
||||||
g.add(&r("Header", &h.bytes()))
|
g.add(&{
|
||||||
|
let e = adw::ExpanderRow::builder()
|
||||||
|
/* @TODO this class does not work with `ExpanderRow`
|
||||||
|
.css_classes(["property"]) */
|
||||||
|
.enable_expansion(true)
|
||||||
|
.expanded(false)
|
||||||
|
.subtitle(l.bytes())
|
||||||
|
.title_selectable(true)
|
||||||
|
.title("Header")
|
||||||
|
.build();
|
||||||
|
e.add_row(
|
||||||
|
>k::Label::builder()
|
||||||
|
.css_classes(["dim-label", "caption"])
|
||||||
|
.ellipsize(gtk::pango::EllipsizeMode::None)
|
||||||
|
.halign(gtk::Align::Start)
|
||||||
|
.label(h)
|
||||||
|
.margin_bottom(2)
|
||||||
|
.margin_end(12)
|
||||||
|
.margin_start(12)
|
||||||
|
.margin_top(14)
|
||||||
|
.selectable(true)
|
||||||
|
.valign(gtk::Align::Center)
|
||||||
|
.wrap(false)
|
||||||
|
.build(), // @TODO replace with `ActionRow` after fix empty subtitle issue
|
||||||
|
);
|
||||||
|
e
|
||||||
|
})
|
||||||
}
|
}
|
||||||
if let Some(ref c) = info.size.content {
|
if let Some(ref c) = info.size {
|
||||||
i += 1;
|
i += 1;
|
||||||
t += c;
|
t += c;
|
||||||
g.add(&r("Content", &c.bytes()))
|
g.add(&r("Content", c.bytes()))
|
||||||
}
|
}
|
||||||
if i > 1 && t > 0 {
|
if i > 1 && t > 0 {
|
||||||
g.add(&r("Total", &t.bytes()))
|
g.add(&r("Total", t.bytes()))
|
||||||
}
|
}
|
||||||
g
|
g
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#[derive(Default)]
|
|
||||||
pub struct Size {
|
|
||||||
pub content: Option<usize>,
|
|
||||||
pub header: Option<usize>,
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue