Commit aa06f0f6 authored by Bilal Elmoussaoui's avatar Bilal Elmoussaoui

subclass PaginatorWidget

parent 8f181ddc
...@@ -68,7 +68,7 @@ mod imp { ...@@ -68,7 +68,7 @@ mod imp {
"next-page", "next-page",
clone!(@weak application => move |_, _| { clone!(@weak application => move |_, _| {
let window = application.window(); let window = application.window();
if window.paginator.borrow_mut().try_next().is_none() { if window.paginator.try_next().is_none() {
window.widget.close(); window.widget.close();
} }
}), }),
...@@ -79,7 +79,7 @@ mod imp { ...@@ -79,7 +79,7 @@ mod imp {
"previous-page", "previous-page",
clone!(@weak application => move |_, _| { clone!(@weak application => move |_, _| {
let window = application.window(); let window = application.window();
if window.paginator.borrow_mut().try_previous().is_none() { if window.paginator.try_previous().is_none() {
window.reset_tour(); window.reset_tour();
} }
}), }),
......
use adw::prelude::*; use adw::prelude::*;
use gettextrs::gettext; use gettextrs::gettext;
use std::cell::RefCell;
use std::rc::Rc;
use super::pages::{ImagePageWidget, WelcomePageWidget}; use super::pages::{ImagePageWidget, WelcomePageWidget};
use super::paginator::PaginatorWidget; use super::paginator::PaginatorWidget;
...@@ -11,14 +9,14 @@ use crate::Application; ...@@ -11,14 +9,14 @@ use crate::Application;
#[derive(Debug)] #[derive(Debug)]
pub struct Window { pub struct Window {
pub widget: adw::ApplicationWindow, pub widget: adw::ApplicationWindow,
pub paginator: RefCell<Rc<PaginatorWidget>>, pub paginator: PaginatorWidget,
} }
impl Window { impl Window {
pub fn new(app: &Application) -> Self { pub fn new(app: &Application) -> Self {
let widget = adw::ApplicationWindow::new(app); let widget = adw::ApplicationWindow::new(app);
let paginator = RefCell::new(PaginatorWidget::new()); let paginator = PaginatorWidget::new();
let mut window_widget = Window { widget, paginator }; let mut window_widget = Window { widget, paginator };
...@@ -27,11 +25,11 @@ impl Window { ...@@ -27,11 +25,11 @@ impl Window {
} }
pub fn start_tour(&self) { pub fn start_tour(&self) {
self.paginator.borrow_mut().set_page(1); self.paginator.set_page(1);
} }
pub fn reset_tour(&self) { pub fn reset_tour(&self) {
self.paginator.borrow_mut().set_page(0); self.paginator.set_page(0);
} }
fn init(&mut self) { fn init(&mut self) {
...@@ -43,9 +41,8 @@ impl Window { ...@@ -43,9 +41,8 @@ impl Window {
self.widget.add_css_class("devel"); self.widget.add_css_class("devel");
} }
self.paginator self.paginator
.borrow_mut()
.add_page(WelcomePageWidget::new().widget.upcast::<gtk::Widget>()); .add_page(WelcomePageWidget::new().widget.upcast::<gtk::Widget>());
self.paginator.borrow_mut().add_page( self.paginator.add_page(
ImagePageWidget::new( ImagePageWidget::new(
"/org/gnome/Tour/overview.svg", "/org/gnome/Tour/overview.svg",
gettext("Get an Overview"), gettext("Get an Overview"),
...@@ -55,7 +52,7 @@ impl Window { ...@@ -55,7 +52,7 @@ impl Window {
.upcast::<gtk::Widget>(), .upcast::<gtk::Widget>(),
); );
self.paginator.borrow_mut().add_page( self.paginator.add_page(
ImagePageWidget::new( ImagePageWidget::new(
"/org/gnome/Tour/search.svg", "/org/gnome/Tour/search.svg",
gettext("Just Type to Search"), gettext("Just Type to Search"),
...@@ -65,7 +62,7 @@ impl Window { ...@@ -65,7 +62,7 @@ impl Window {
.upcast::<gtk::Widget>(), .upcast::<gtk::Widget>(),
); );
self.paginator.borrow_mut().add_page( self.paginator.add_page(
ImagePageWidget::new( ImagePageWidget::new(
"/org/gnome/Tour/workspaces.svg", "/org/gnome/Tour/workspaces.svg",
gettext("Keep on Top with Workspaces"), gettext("Keep on Top with Workspaces"),
...@@ -75,7 +72,7 @@ impl Window { ...@@ -75,7 +72,7 @@ impl Window {
.upcast::<gtk::Widget>(), .upcast::<gtk::Widget>(),
); );
self.paginator.borrow_mut().add_page( self.paginator.add_page(
ImagePageWidget::new( ImagePageWidget::new(
"/org/gnome/Tour/blank.svg", "/org/gnome/Tour/blank.svg",
gettext("Up/Down for the Overview"), gettext("Up/Down for the Overview"),
...@@ -85,7 +82,7 @@ impl Window { ...@@ -85,7 +82,7 @@ impl Window {
.upcast::<gtk::Widget>(), .upcast::<gtk::Widget>(),
); );
self.paginator.borrow_mut().add_page( self.paginator.add_page(
ImagePageWidget::new( ImagePageWidget::new(
"/org/gnome/Tour/blank.svg", "/org/gnome/Tour/blank.svg",
gettext("Left/Right for Workspaces"), gettext("Left/Right for Workspaces"),
...@@ -102,10 +99,8 @@ impl Window { ...@@ -102,10 +99,8 @@ impl Window {
); );
last_page.widget.add_css_class("last-page"); last_page.widget.add_css_class("last-page");
self.paginator self.paginator
.borrow_mut()
.add_page(last_page.widget.upcast::<gtk::Widget>()); .add_page(last_page.widget.upcast::<gtk::Widget>());
self.widget self.widget.set_content(Some(&self.paginator));
.set_content(Some(&self.paginator.borrow().widget));
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment