improv(context-drawer): import definitions and add map method
This commit is contained in:
parent
1abd6d7578
commit
7aadfe6ba6
3 changed files with 35 additions and 2 deletions
|
|
@ -62,4 +62,22 @@ impl<'a, Message: Clone + 'static> ContextDrawer<'a, Message> {
|
|||
self.footer = Some(footer.into());
|
||||
self
|
||||
}
|
||||
|
||||
pub fn map<Out: Clone + 'static>(
|
||||
mut self,
|
||||
on_message: fn(Message) -> Out,
|
||||
) -> ContextDrawer<'a, Out> {
|
||||
ContextDrawer {
|
||||
title: self.title,
|
||||
content: self.content.map(on_message),
|
||||
header: self.header.map(|el| el.map(on_message)),
|
||||
footer: self.footer.map(|el| el.map(on_message)),
|
||||
on_close: on_message(self.on_close),
|
||||
header_actions: self
|
||||
.header_actions
|
||||
.into_iter()
|
||||
.map(|el| el.map(on_message))
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ mod action;
|
|||
pub use action::Action;
|
||||
use cosmic_config::CosmicConfigEntry;
|
||||
pub mod context_drawer;
|
||||
pub use context_drawer::{ContextDrawer, context_drawer};
|
||||
pub mod cosmic;
|
||||
#[cfg(all(feature = "winit", feature = "multi-window"))]
|
||||
pub(crate) mod multi_window;
|
||||
|
|
@ -22,7 +23,6 @@ use crate::prelude::*;
|
|||
use crate::theme::THEME;
|
||||
use crate::widget::{container, horizontal_space, id_container, menu, nav_bar, popover};
|
||||
use apply::Apply;
|
||||
use context_drawer::ContextDrawer;
|
||||
use iced::window;
|
||||
use iced::{Length, Subscription};
|
||||
pub use settings::Settings;
|
||||
|
|
|
|||
|
|
@ -164,12 +164,27 @@ impl<'a, Message: Clone + 'static> ContextDrawer<'a, Message> {
|
|||
}
|
||||
|
||||
/// Sets the [`Id`] of the [`ContextDrawer`].
|
||||
#[inline]
|
||||
pub fn id(mut self, id: iced_core::widget::Id) -> Self {
|
||||
self.id = Some(id);
|
||||
self
|
||||
}
|
||||
|
||||
// Optionally assigns message to `on_close` event.
|
||||
/// Map the message type of the context drawer to another
|
||||
#[inline]
|
||||
pub fn map<Out: Clone + 'static>(
|
||||
mut self,
|
||||
on_message: fn(Message) -> Out,
|
||||
) -> ContextDrawer<'a, Out> {
|
||||
ContextDrawer {
|
||||
id: self.id,
|
||||
content: self.content.map(on_message),
|
||||
drawer: self.drawer.map(on_message),
|
||||
on_close: self.on_close.map(on_message),
|
||||
}
|
||||
}
|
||||
|
||||
/// Optionally assigns message to `on_close` event.
|
||||
#[inline]
|
||||
pub fn on_close_maybe(mut self, message: Option<Message>) -> Self {
|
||||
self.on_close = message;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue