mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-02-04 23:44:13 +00:00
update totals on loading
This commit is contained in:
parent
1d03e98b89
commit
6447b2279f
@ -457,7 +457,7 @@ impl Page {
|
||||
None => title.clone(),
|
||||
};
|
||||
|
||||
// Make input form
|
||||
// Toggle input form variant
|
||||
match header.status() {
|
||||
ClientStatus::SensitiveInput =>
|
||||
input.set_new_sensitive(
|
||||
@ -546,7 +546,7 @@ impl Page {
|
||||
ClientMime::ImageJpeg | ClientMime::ImageWebp
|
||||
) => {
|
||||
// Final image size unknown, show loading widget
|
||||
content.set_status_loading(
|
||||
let status = content.set_status_loading(
|
||||
Some(&gformat!("Loading..")),
|
||||
None
|
||||
);
|
||||
@ -559,9 +559,11 @@ impl Page {
|
||||
Priority::DEFAULT,
|
||||
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?
|
||||
move |(_, _total)| {
|
||||
move |(_, total)| {
|
||||
// Update loading progress
|
||||
// description = gformat!("{total}");
|
||||
status.set_description(
|
||||
Some(&gformat!("Download: {total} bytes"))
|
||||
);
|
||||
},
|
||||
move |result| match result {
|
||||
Ok(memory_input_stream) => {
|
||||
@ -695,10 +697,12 @@ impl Page {
|
||||
}
|
||||
);
|
||||
},
|
||||
None => content.set_status_failure(
|
||||
Some(&"Oops"),
|
||||
Some(&"Could not parse redirect meta")
|
||||
),
|
||||
None => {
|
||||
content.set_status_failure(
|
||||
Some(&"Oops"),
|
||||
Some(&"Could not parse redirect meta")
|
||||
);
|
||||
},
|
||||
}
|
||||
|
||||
action_update.activate(Some(&id));
|
||||
|
@ -34,27 +34,23 @@ impl Content {
|
||||
// Actions
|
||||
pub fn set_image(&self, buffer: &Pixbuf) {
|
||||
self.clean();
|
||||
|
||||
let image = Image::new_from_pixbuf(buffer);
|
||||
|
||||
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();
|
||||
|
||||
let status_default = Status::new_failure(title, description);
|
||||
|
||||
self.gobject.append(status_default.gobject());
|
||||
let status = Status::new_failure(title, description);
|
||||
self.gobject.append(status.gobject());
|
||||
status
|
||||
}
|
||||
|
||||
/// 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();
|
||||
|
||||
let status_default = Status::new_loading(title, description);
|
||||
|
||||
self.gobject.append(status_default.gobject());
|
||||
let status = Status::new_loading(title, description);
|
||||
self.gobject.append(status.gobject());
|
||||
status
|
||||
}
|
||||
|
||||
/// Default reading widget for [Gemtext](https://geminiprotocol.net/docs/gemtext.gmi),
|
||||
|
@ -13,22 +13,33 @@ pub struct Status {
|
||||
impl Status {
|
||||
// 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 {
|
||||
Self {
|
||||
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 {
|
||||
Self {
|
||||
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
|
||||
|
||||
pub fn gobject(&self) -> &StatusPage {
|
||||
|
Loading…
x
Reference in New Issue
Block a user