pub struct ThemeManager { /* private fields */ }Expand description
Runtime theme manager with observer notifications.
Holds one active CooljapanTheme and notifies all registered listeners
whenever set_theme is called.
§Example
use oxiui_core::{Color, FontSpec, Palette};
use oxiui_theme::{CooljapanTheme};
use oxiui_theme::manager::ThemeManager;
use std::sync::{Arc, Mutex};
let initial = CooljapanTheme::new(
Palette {
background: Color(0, 0, 0, 255),
surface: Color(10, 10, 26, 255),
primary: Color(255, 255, 0, 255),
on_primary: Color(0, 0, 0, 255),
text: Color(255, 255, 255, 255),
muted: Color(200, 200, 200, 255),
},
FontSpec::new("Inter", 14.0, 400),
);
let mut manager = ThemeManager::new(initial.clone());
let called = Arc::new(Mutex::new(false));
let c = called.clone();
manager.subscribe(Box::new(move |_| { *c.lock().unwrap() = true; }));
manager.set_theme(initial);
assert!(*called.lock().unwrap());Implementations§
Source§impl ThemeManager
impl ThemeManager
Sourcepub fn new(initial: CooljapanTheme) -> Self
pub fn new(initial: CooljapanTheme) -> Self
Construct a manager starting with initial as the active theme.
Sourcepub fn theme(&self) -> &CooljapanTheme
pub fn theme(&self) -> &CooljapanTheme
Return a reference to the currently active theme.
Sourcepub fn set_theme(&mut self, theme: CooljapanTheme)
pub fn set_theme(&mut self, theme: CooljapanTheme)
Switch the active theme and notify every registered listener.
Sourcepub fn subscribe(&mut self, f: ThemeListener) -> ListenerId
pub fn subscribe(&mut self, f: ThemeListener) -> ListenerId
Register a listener and return its ListenerId.
The listener is called synchronously inside set_theme
with a reference to the new theme.
Sourcepub fn unsubscribe(&mut self, id: ListenerId)
pub fn unsubscribe(&mut self, id: ListenerId)
Remove the listener registered with id.
If id is not found, this is a no-op.
Sourcepub fn listener_count(&self) -> usize
pub fn listener_count(&self) -> usize
Returns the number of currently registered listeners.
Auto Trait Implementations§
impl Freeze for ThemeManager
impl !RefUnwindSafe for ThemeManager
impl Send for ThemeManager
impl Sync for ThemeManager
impl Unpin for ThemeManager
impl UnsafeUnpin for ThemeManager
impl !UnwindSafe for ThemeManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more