mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-02 17:45:28 +00:00
update totals on loading
This commit is contained in:
parent
1d03e98b89
commit
6447b2279f
3 changed files with 34 additions and 23 deletions
|
|
@ -457,7 +457,7 @@ impl Page {
|
||||||
None => title.clone(),
|
None => title.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Make input form
|
// Toggle input form variant
|
||||||
match header.status() {
|
match header.status() {
|
||||||
ClientStatus::SensitiveInput =>
|
ClientStatus::SensitiveInput =>
|
||||||
input.set_new_sensitive(
|
input.set_new_sensitive(
|
||||||
|
|
@ -546,7 +546,7 @@ impl Page {
|
||||||
ClientMime::ImageJpeg | ClientMime::ImageWebp
|
ClientMime::ImageJpeg | ClientMime::ImageWebp
|
||||||
) => {
|
) => {
|
||||||
// Final image size unknown, show loading widget
|
// Final image size unknown, show loading widget
|
||||||
content.set_status_loading(
|
let status = content.set_status_loading(
|
||||||
Some(&gformat!("Loading..")),
|
Some(&gformat!("Loading..")),
|
||||||
None
|
None
|
||||||
);
|
);
|
||||||
|
|
@ -559,9 +559,11 @@ impl Page {
|
||||||
Priority::DEFAULT,
|
Priority::DEFAULT,
|
||||||
0x400, // 1024 bytes per chunk, optional step for images download tracking
|
0x400, // 1024 bytes per chunk, optional step for images download tracking
|
||||||
0xA00000, // 10M bytes max to prevent memory overflow if server play with promises @TODO optional?
|
0xA00000, // 10M bytes max to prevent memory overflow if server play with promises @TODO optional?
|
||||||
move |(_, _total)| {
|
move |(_, total)| {
|
||||||
// Update loading progress
|
// Update loading progress
|
||||||
// description = gformat!("{total}");
|
status.set_description(
|
||||||
|
Some(&gformat!("Download: {total} bytes"))
|
||||||
|
);
|
||||||
},
|
},
|
||||||
move |result| match result {
|
move |result| match result {
|
||||||
Ok(memory_input_stream) => {
|
Ok(memory_input_stream) => {
|
||||||
|
|
@ -695,10 +697,12 @@ impl Page {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
None => content.set_status_failure(
|
None => {
|
||||||
Some(&"Oops"),
|
content.set_status_failure(
|
||||||
Some(&"Could not parse redirect meta")
|
Some(&"Oops"),
|
||||||
),
|
Some(&"Could not parse redirect meta")
|
||||||
|
);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
action_update.activate(Some(&id));
|
action_update.activate(Some(&id));
|
||||||
|
|
|
||||||
|
|
@ -34,27 +34,23 @@ impl Content {
|
||||||
// Actions
|
// Actions
|
||||||
pub fn set_image(&self, buffer: &Pixbuf) {
|
pub fn set_image(&self, buffer: &Pixbuf) {
|
||||||
self.clean();
|
self.clean();
|
||||||
|
|
||||||
let image = Image::new_from_pixbuf(buffer);
|
let image = Image::new_from_pixbuf(buffer);
|
||||||
|
|
||||||
self.gobject.append(image.gobject());
|
self.gobject.append(image.gobject());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_status_failure(&self, title: Option<&str>, description: Option<&str>) {
|
pub fn set_status_failure(&self, title: Option<&str>, description: Option<&str>) -> Status {
|
||||||
self.clean();
|
self.clean();
|
||||||
|
let status = Status::new_failure(title, description);
|
||||||
let status_default = Status::new_failure(title, description);
|
self.gobject.append(status.gobject());
|
||||||
|
status
|
||||||
self.gobject.append(status_default.gobject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Loading placeholder
|
/// Loading placeholder
|
||||||
pub fn set_status_loading(&self, title: Option<&str>, description: Option<&str>) {
|
pub fn set_status_loading(&self, title: Option<&str>, description: Option<&str>) -> Status {
|
||||||
self.clean();
|
self.clean();
|
||||||
|
let status = Status::new_loading(title, description);
|
||||||
let status_default = Status::new_loading(title, description);
|
self.gobject.append(status.gobject());
|
||||||
|
status
|
||||||
self.gobject.append(status_default.gobject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Default reading widget for [Gemtext](https://geminiprotocol.net/docs/gemtext.gmi),
|
/// Default reading widget for [Gemtext](https://geminiprotocol.net/docs/gemtext.gmi),
|
||||||
|
|
|
||||||
|
|
@ -13,22 +13,33 @@ pub struct Status {
|
||||||
impl Status {
|
impl Status {
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
/// Create new default failure component
|
/// Create new failure preset
|
||||||
|
///
|
||||||
|
/// Useful as placeholder widget for error handlers
|
||||||
pub fn new_failure(title: Option<&str>, description: Option<&str>) -> Self {
|
pub fn new_failure(title: Option<&str>, description: Option<&str>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
gobject: Failure::new(title, description).gobject().clone(),
|
gobject: Failure::new(title, description).gobject().clone(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create new default loading component
|
/// Create new loading preset
|
||||||
///
|
///
|
||||||
/// Useful as the placeholder widget for async operations
|
/// Useful as placeholder widget for async operations
|
||||||
pub fn new_loading(title: Option<&str>, description: Option<&str>) -> Self {
|
pub fn new_loading(title: Option<&str>, description: Option<&str>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
gobject: Loading::new(title, description).gobject().clone(),
|
gobject: Loading::new(title, description).gobject().clone(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setters
|
||||||
|
|
||||||
|
/// Set new description for status component
|
||||||
|
///
|
||||||
|
/// Useful for loading widgets to update byte totals and other dynamically changed information
|
||||||
|
pub fn set_description(&self, description: Option<&str>) {
|
||||||
|
self.gobject.set_description(description);
|
||||||
|
}
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
|
|
||||||
pub fn gobject(&self) -> &StatusPage {
|
pub fn gobject(&self) -> &StatusPage {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue