mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-01-15 17:20:08 +00:00
draft auth action
This commit is contained in:
parent
f1b7fc9ac0
commit
fc2baf7845
@ -79,6 +79,10 @@ impl Item {
|
||||
}
|
||||
}
|
||||
|
||||
action.auth().connect_activate(|request| {
|
||||
// @TODO
|
||||
});
|
||||
|
||||
action.load().connect_activate({
|
||||
let page = page.clone();
|
||||
move |request, is_history| {
|
||||
|
@ -1,11 +1,14 @@
|
||||
mod auth;
|
||||
mod load;
|
||||
|
||||
use auth::Auth;
|
||||
use load::Load;
|
||||
|
||||
use std::rc::Rc;
|
||||
|
||||
/// [SimpleActionGroup](https://docs.gtk.org/gio/class.SimpleActionGroup.html) wrapper for `Browser` actions
|
||||
pub struct Action {
|
||||
// Actions
|
||||
auth: Rc<Auth>,
|
||||
load: Rc<Load>,
|
||||
}
|
||||
|
||||
@ -15,12 +18,18 @@ impl Action {
|
||||
/// Create new `Self`
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
auth: Rc::new(Auth::new()),
|
||||
load: Rc::new(Load::new()),
|
||||
}
|
||||
}
|
||||
|
||||
// Getters
|
||||
|
||||
/// Get reference to `Auth` action
|
||||
pub fn auth(&self) -> &Rc<Auth> {
|
||||
&self.auth
|
||||
}
|
||||
|
||||
/// Get reference to `Load` action
|
||||
pub fn load(&self) -> &Rc<Load> {
|
||||
&self.load
|
||||
|
43
src/app/browser/window/tab/item/action/auth.rs
Normal file
43
src/app/browser/window/tab/item/action/auth.rs
Normal file
@ -0,0 +1,43 @@
|
||||
use gtk::{
|
||||
gio::SimpleAction,
|
||||
glib::uuid_string_random,
|
||||
prelude::{ActionExt, StaticVariantType, ToVariant},
|
||||
};
|
||||
|
||||
/// [SimpleAction](https://docs.gtk.org/gio/class.SimpleAction.html) wrapper for `Load` action of `Item` group
|
||||
pub struct Auth {
|
||||
gobject: SimpleAction,
|
||||
}
|
||||
|
||||
impl Auth {
|
||||
// Constructors
|
||||
|
||||
/// Create new `Self`
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
gobject: SimpleAction::new(&uuid_string_random(), Some(&String::static_variant_type())),
|
||||
}
|
||||
}
|
||||
|
||||
// Actions
|
||||
|
||||
/// Emit [activate](https://docs.gtk.org/gio/signal.SimpleAction.activate.html) signal
|
||||
/// with formatted for this action [Variant](https://docs.gtk.org/glib/struct.Variant.html) value
|
||||
pub fn activate(&self, request: &str) {
|
||||
self.gobject.activate(Some(&request.to_variant()));
|
||||
}
|
||||
|
||||
// Events
|
||||
|
||||
/// Define callback function for
|
||||
/// [SimpleAction::activate](https://docs.gtk.org/gio/signal.SimpleAction.activate.html) signal
|
||||
pub fn connect_activate(&self, callback: impl Fn(String) + 'static) {
|
||||
self.gobject.connect_activate(move |_, this| {
|
||||
callback(
|
||||
this.expect("Expected variant value")
|
||||
.get::<String>()
|
||||
.expect("Parameter type does not match `String` type"),
|
||||
)
|
||||
});
|
||||
}
|
||||
}
|
@ -40,7 +40,7 @@ impl Navigation {
|
||||
action: (Rc<BrowserAction>, Rc<WindowAction>, Rc<TabAction>),
|
||||
) -> Self {
|
||||
// Init components
|
||||
let auth = Rc::new(Auth::new(action.1.clone()));
|
||||
let auth = Rc::new(Auth::new(action.2.clone()));
|
||||
let home = Rc::new(Home::new(action.1.clone()));
|
||||
let history = Rc::new(History::new(action.1.clone()));
|
||||
let reload = Rc::new(Reload::new(action.1.clone()));
|
||||
|
@ -1,8 +1,7 @@
|
||||
mod widget;
|
||||
|
||||
use widget::Widget;
|
||||
|
||||
use crate::app::browser::window::Action;
|
||||
use crate::app::browser::window::tab::item::Action;
|
||||
use std::rc::Rc;
|
||||
|
||||
pub struct Auth {
|
||||
|
@ -1,4 +1,4 @@
|
||||
use crate::app::browser::window::Action;
|
||||
use crate::app::browser::window::tab::item::Action;
|
||||
use gtk::{
|
||||
prelude::{ButtonExt, WidgetExt},
|
||||
Button,
|
||||
@ -19,7 +19,7 @@ impl Widget {
|
||||
.sensitive(false)
|
||||
.build();
|
||||
|
||||
// Init events @TODO
|
||||
// Init events @TODO dialog window required
|
||||
// gobject.connect_clicked(move |_| action.auth().activate());
|
||||
|
||||
// Return activated `Self`
|
||||
|
Loading…
x
Reference in New Issue
Block a user