draft header update on page reload

This commit is contained in:
yggverse 2024-09-25 22:19:48 +03:00
parent 8977adab77
commit ca74a29ffa
6 changed files with 72 additions and 10 deletions

View file

@ -4,11 +4,12 @@ mod tray;
use subject::Subject;
use tray::Tray;
use gtk::HeaderBar;
use gtk::{glib::GString, HeaderBar};
use std::sync::Arc;
pub struct Header {
widget: HeaderBar,
subject: Subject,
}
impl Header {
@ -21,7 +22,12 @@ impl Header {
widget.pack_start(tray.widget());
widget.set_title_widget(Some(subject.widget()));
Arc::new(Self { widget })
Arc::new(Self { widget, subject })
}
// Actions
pub fn update(&self, title: GString, description: GString) {
self.subject.update(title, description);
}
// Getters

View file

@ -19,8 +19,9 @@ impl Description {
}
// Actions
pub fn update(&self) {
self.widget.set_visible(self.widget.text().is_empty());
pub fn update(&self, text: &str) {
self.widget.set_text(text);
self.widget.set_visible(!text.is_empty());
}
// Getters

View file

@ -2,12 +2,14 @@ mod description;
mod title;
use description::Description;
use gtk::prelude::BoxExt;
use gtk::{Align, Box, Orientation};
use title::Title;
use gtk::{glib::GString, prelude::BoxExt, Align, Box, Orientation};
pub struct Subject {
widget: Box,
title: Title,
description: Description,
}
impl Subject {
@ -24,7 +26,17 @@ impl Subject {
widget.append(title.widget());
widget.append(description.widget());
Self { widget }
Self {
widget,
title,
description,
}
}
// Actions
pub fn update(&self, title: GString, description: GString) {
self.title.update(&title);
self.description.update(&description);
}
// Getters