move history to page open action, fix request activate action

This commit is contained in:
yggverse 2024-11-05 08:09:02 +02:00
parent da46928dfd
commit 78b7dd960b
3 changed files with 25 additions and 28 deletions

View File

@ -70,6 +70,7 @@ impl Page {
action_page_history_back.clone(),
action_page_history_forward.clone(),
action_page_reload.clone(),
action_page_open.clone(),
action_update.clone(),
);
@ -89,15 +90,25 @@ impl Page {
action_page_open.connect_activate({
let navigation = navigation.clone();
let action_page_reload = action_page_reload.clone();
move |_, request| {
// Update request
navigation.set_request_text(
request
.expect("Parameter required for this action")
.get::<String>()
.expect("Parameter does not match `String`")
.as_str(),
);
move |_, parameter| {
// Get request value from action parameter
let request = parameter
.expect("Parameter required for this action")
.get::<String>()
.expect("Parameter does not match `String`");
// Update navigation entry
navigation.set_request_text(&request);
// Add history record
match navigation.history_current() {
Some(current) => {
if current != request {
navigation.history_add(request.into());
}
}
None => navigation.history_add(request.into()),
}
// Reload page
action_page_reload.activate(None);
@ -188,18 +199,6 @@ impl Page {
// Return value from redirection holder
redirect.request()
} else {
// Add history record
let value = self.navigation.request_text();
match self.navigation.history_current() {
Some(current) => {
if current != value {
self.navigation.history_add(value);
}
}
None => self.navigation.history_add(value),
}
// Reset redirect counter as request value taken from user input
self.meta.unset_redirect_count();

View File

@ -34,13 +34,14 @@ impl Navigation {
action_page_history_back: SimpleAction,
action_page_history_forward: SimpleAction,
action_page_reload: SimpleAction,
action_page_open: SimpleAction,
action_update: SimpleAction,
) -> Arc<Self> {
// Init components
let home = Home::new_arc(action_page_home);
let history = History::new_arc(action_page_history_back, action_page_history_forward);
let reload = Reload::new_arc(action_page_reload.clone());
let request = Request::new_arc(action_update.clone(), action_page_reload.clone());
let request = Request::new_arc(action_update.clone(), action_page_open.clone());
let bookmark = Bookmark::new_arc();
// Init widget

View File

@ -29,10 +29,7 @@ pub struct Widget {
impl Widget {
// Construct
pub fn new_arc(
action_update: SimpleAction,
action_page_reload: SimpleAction, // @TODO local `action_page_open`?
) -> Arc<Self> {
pub fn new_arc(action_update: SimpleAction, action_page_open: SimpleAction) -> Arc<Self> {
// Init animated progress bar state
let progress = Arc::new(Progress {
fraction: RefCell::new(0.0),
@ -50,8 +47,8 @@ impl Widget {
action_update.activate(Some(&"".to_variant())); // @TODO
});
gobject.connect_activate(move |_| {
action_page_reload.activate(None);
gobject.connect_activate(move |this| {
action_page_open.activate(Some(&this.text().to_variant()));
});
gobject.connect_state_flags_changed({