mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-01 09:05:27 +00:00
draft welcome dialog with profile selection
This commit is contained in:
parent
57594a3fc8
commit
b0ee52c3f4
3 changed files with 86 additions and 0 deletions
30
src/app/browser/welcome.rs
Normal file
30
src/app/browser/welcome.rs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
mod widget;
|
||||
use widget::Widget;
|
||||
|
||||
use crate::profile::Profile;
|
||||
use gtk::prelude::IsA;
|
||||
use std::rc::Rc;
|
||||
|
||||
pub struct Welcome {
|
||||
profile: Rc<Profile>,
|
||||
widget: Rc<Widget>,
|
||||
}
|
||||
|
||||
impl Welcome {
|
||||
// Construct
|
||||
|
||||
/// Create new `Self` for given Profile
|
||||
pub fn new(profile: Rc<Profile>) -> Self {
|
||||
Self {
|
||||
profile,
|
||||
widget: Rc::new(Widget::new()),
|
||||
}
|
||||
}
|
||||
|
||||
// Actions
|
||||
|
||||
/// Show dialog for parent [Window](https://docs.gtk.org/gtk4/class.Window.html)
|
||||
pub fn present(&self, parent: Option<&impl IsA<gtk::Widget>>) {
|
||||
self.widget.present(parent);
|
||||
}
|
||||
}
|
||||
47
src/app/browser/welcome/widget.rs
Normal file
47
src/app/browser/welcome/widget.rs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
use adw::{
|
||||
prelude::{AdwDialogExt, AlertDialogExtManual},
|
||||
AlertDialog,
|
||||
};
|
||||
use gtk::prelude::IsA;
|
||||
|
||||
const HEADING: &str = "Welcome!";
|
||||
const BODY: &str = "Select profile for browser data";
|
||||
const RESPONSE_QUIT: (&str, &str) = ("quit", "Quit");
|
||||
const RESPONSE_CREATE: (&str, &str) = ("create", "Create new profile");
|
||||
|
||||
pub struct Widget {
|
||||
gobject: AlertDialog,
|
||||
}
|
||||
|
||||
impl Widget {
|
||||
// Constructors
|
||||
|
||||
/// Create new `Self`
|
||||
pub fn new() -> Self {
|
||||
// Init gobject
|
||||
let gobject = AlertDialog::builder()
|
||||
.heading(HEADING)
|
||||
.body(BODY)
|
||||
.default_response(RESPONSE_QUIT.1)
|
||||
.build();
|
||||
|
||||
gobject.add_responses(&[RESPONSE_QUIT, RESPONSE_CREATE]);
|
||||
|
||||
// Return new `Self`
|
||||
Self { gobject }
|
||||
}
|
||||
|
||||
// Actions
|
||||
|
||||
/// Show dialog for parent [Window](https://docs.gtk.org/gtk4/class.Window.html)
|
||||
pub fn present(&self, parent: Option<&impl IsA<gtk::Widget>>) {
|
||||
self.gobject.present(parent);
|
||||
}
|
||||
|
||||
/* @TODO not in use
|
||||
/// Get reference to GObject
|
||||
///
|
||||
pub fn gobject(&self) -> &AlertDialog {
|
||||
&self.gobject
|
||||
} */
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue