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({
|
action.load().connect_activate({
|
||||||
let page = page.clone();
|
let page = page.clone();
|
||||||
move |request, is_history| {
|
move |request, is_history| {
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
|
mod auth;
|
||||||
mod load;
|
mod load;
|
||||||
|
|
||||||
|
use auth::Auth;
|
||||||
use load::Load;
|
use load::Load;
|
||||||
|
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
/// [SimpleActionGroup](https://docs.gtk.org/gio/class.SimpleActionGroup.html) wrapper for `Browser` actions
|
/// [SimpleActionGroup](https://docs.gtk.org/gio/class.SimpleActionGroup.html) wrapper for `Browser` actions
|
||||||
pub struct Action {
|
pub struct Action {
|
||||||
// Actions
|
auth: Rc<Auth>,
|
||||||
load: Rc<Load>,
|
load: Rc<Load>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,12 +18,18 @@ impl Action {
|
|||||||
/// Create new `Self`
|
/// Create new `Self`
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
auth: Rc::new(Auth::new()),
|
||||||
load: Rc::new(Load::new()),
|
load: Rc::new(Load::new()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
|
|
||||||
|
/// Get reference to `Auth` action
|
||||||
|
pub fn auth(&self) -> &Rc<Auth> {
|
||||||
|
&self.auth
|
||||||
|
}
|
||||||
|
|
||||||
/// Get reference to `Load` action
|
/// Get reference to `Load` action
|
||||||
pub fn load(&self) -> &Rc<Load> {
|
pub fn load(&self) -> &Rc<Load> {
|
||||||
&self.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>),
|
action: (Rc<BrowserAction>, Rc<WindowAction>, Rc<TabAction>),
|
||||||
) -> Self {
|
) -> Self {
|
||||||
// Init components
|
// 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 home = Rc::new(Home::new(action.1.clone()));
|
||||||
let history = Rc::new(History::new(action.1.clone()));
|
let history = Rc::new(History::new(action.1.clone()));
|
||||||
let reload = Rc::new(Reload::new(action.1.clone()));
|
let reload = Rc::new(Reload::new(action.1.clone()));
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use widget::Widget;
|
use widget::Widget;
|
||||||
|
|
||||||
use crate::app::browser::window::Action;
|
use crate::app::browser::window::tab::item::Action;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
pub struct Auth {
|
pub struct Auth {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use crate::app::browser::window::Action;
|
use crate::app::browser::window::tab::item::Action;
|
||||||
use gtk::{
|
use gtk::{
|
||||||
prelude::{ButtonExt, WidgetExt},
|
prelude::{ButtonExt, WidgetExt},
|
||||||
Button,
|
Button,
|
||||||
@ -19,7 +19,7 @@ impl Widget {
|
|||||||
.sensitive(false)
|
.sensitive(false)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Init events @TODO
|
// Init events @TODO dialog window required
|
||||||
// gobject.connect_clicked(move |_| action.auth().activate());
|
// gobject.connect_clicked(move |_| action.auth().activate());
|
||||||
|
|
||||||
// Return activated `Self`
|
// Return activated `Self`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user