draft image controller

This commit is contained in:
yggverse 2024-10-18 05:14:38 +03:00
parent 52e7e0359f
commit deafe0845d
4 changed files with 63 additions and 1 deletions

View File

@ -350,6 +350,36 @@ impl Page {
action_update.activate(Some(&id));
todo!()
},
"image/png" | "image/gif" | "image/jpeg" | "image/webp" => {
// Update meta
meta.borrow_mut().status = Some(Status::Success);
meta.borrow_mut().title = Some(gformat!("Picture")); // @TODO
meta.borrow_mut().mime = match mime.as_str() {
"image/png" => Some(Mime::ImagePng),
"image/gif" => Some(Mime::ImageGif),
"image/jpeg" => Some(Mime::ImageJpeg),
"image/webp" => Some(Mime::ImageWebp),
_ => panic!()
};
// Update content
content.set_image(); // @TODO
// Add new history record
let request = uri.to_str();
match navigation.history_current() {
Some(current) => {
if current != request {
navigation.history_add(request);
}
}
None => navigation.history_add(request),
}
// Update window components
action_update.activate(Some(&id));
},
_ => {
// Define common data
let status = Status::Failure;

View File

@ -1,7 +1,8 @@
// @TODO mod image;
mod image;
mod status;
mod text;
use image::Image;
use status::Status;
use text::Text;
@ -33,6 +34,14 @@ impl Content {
}
// Actions
pub fn set_image(&self) {
self.clean();
let image = Image::new();
self.gobject.append(image.gobject());
}
pub fn set_status_failure(&self, title: &str, description: &str) {
self.clean();

View File

@ -0,0 +1,19 @@
use gtk::Picture;
pub struct Image {
gobject: Picture,
}
impl Image {
// Construct
pub fn new() -> Self {
Self {
gobject: Picture::new(),
}
}
// Getters
pub fn gobject(&self) -> &Picture {
&self.gobject
}
}

View File

@ -5,6 +5,10 @@ use gtk::glib::GString;
pub enum Mime {
TextGemini,
TextPlain,
ImagePng,
ImageGif,
ImageJpeg,
ImageWebp,
}
// Internal page status (not related with gemini status code)