feat: make ContextDrawer model accessible to pages
This commit is contained in:
parent
bb41b4985e
commit
45f1183d92
24 changed files with 210 additions and 223 deletions
|
|
@ -5,6 +5,7 @@ use crate::section::{self, Section};
|
|||
use crate::{Content, Info, Page};
|
||||
use cosmic::Element;
|
||||
use cosmic::Task;
|
||||
use cosmic::app::ContextDrawer;
|
||||
use regex::Regex;
|
||||
use slotmap::{SecondaryMap, SlotMap, SparseSecondaryMap};
|
||||
use std::{
|
||||
|
|
@ -40,7 +41,7 @@ impl<Message> Default for Binder<Message> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<Message: 'static> Binder<Message> {
|
||||
impl<Message: Clone + 'static> Binder<Message> {
|
||||
/// Check if a page exists in the model.
|
||||
#[must_use]
|
||||
#[inline]
|
||||
|
|
@ -149,7 +150,7 @@ impl<Message: 'static> Binder<Message> {
|
|||
/// Create a context drawer for the given page.
|
||||
#[must_use]
|
||||
#[inline]
|
||||
pub fn context_drawer(&self, id: crate::Entity) -> Option<Element<'_, Message>> {
|
||||
pub fn context_drawer(&self, id: crate::Entity) -> Option<ContextDrawer<'_, Message>> {
|
||||
let page = self.page.get(id)?;
|
||||
page.context_drawer()
|
||||
}
|
||||
|
|
@ -239,7 +240,7 @@ impl<Message: 'static> Binder<Message> {
|
|||
}
|
||||
}
|
||||
|
||||
pub trait AutoBind<Message: 'static>: Page<Message> + Default + 'static {
|
||||
pub trait AutoBind<Message: Clone + 'static>: Page<Message> + Default + 'static {
|
||||
/// Attaches sub-pages to the page.
|
||||
#[allow(clippy::must_use_candidate)]
|
||||
#[inline]
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ pub struct Insert<'a, Message> {
|
|||
pub id: Entity,
|
||||
}
|
||||
|
||||
impl<Message: 'static> Insert<'_, Message> {
|
||||
impl<Message: Clone + 'static> Insert<'_, Message> {
|
||||
#[must_use]
|
||||
#[inline]
|
||||
pub fn id(self) -> Entity {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ mod binder;
|
|||
pub use binder::{AutoBind, Binder};
|
||||
|
||||
mod insert;
|
||||
use cosmic::{Element, Task};
|
||||
use cosmic::{Element, Task, app::ContextDrawer};
|
||||
use downcast_rs::{Downcast, impl_downcast};
|
||||
pub use insert::Insert;
|
||||
|
||||
|
|
@ -24,7 +24,7 @@ slotmap::new_key_type! {
|
|||
/// A collection of sections which a page may be comprised of.
|
||||
pub type Content = Vec<section::Entity>;
|
||||
|
||||
pub trait Page<Message: 'static>: Downcast {
|
||||
pub trait Page<Message: Clone + 'static>: Downcast {
|
||||
/// Information about the page
|
||||
fn info(&self) -> Info;
|
||||
|
||||
|
|
@ -41,7 +41,7 @@ pub trait Page<Message: 'static>: Downcast {
|
|||
/// Display a context drawer for the page.
|
||||
#[must_use]
|
||||
#[inline]
|
||||
fn context_drawer(&self) -> Option<Element<'_, Message>> {
|
||||
fn context_drawer(&self) -> Option<ContextDrawer<'_, Message>> {
|
||||
None
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ pub trait Page<Message: 'static>: Downcast {
|
|||
}
|
||||
}
|
||||
|
||||
impl_downcast!(Page<Message>);
|
||||
impl_downcast!(Page<Message> where Message: Clone);
|
||||
|
||||
/// Information about a page; including its title, icon, and description.
|
||||
#[derive(Setters)]
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ impl<Message: 'static> Default for Section<Message> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<Message: 'static> Section<Message> {
|
||||
impl<Message: Clone + 'static> Section<Message> {
|
||||
#[must_use]
|
||||
#[inline]
|
||||
pub fn search_matches(&self, rule: &Regex) -> bool {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue