diff --git a/src/main.rs b/src/main.rs index a8841cd..a2214a4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,12 +14,12 @@ use iced_layershell::settings::{LayerShellSettings, Settings, StartMode}; use iced_layershell::to_layer_message; use crate::module::{BarModule, ModuleMsg}; -use crate::subscriptions::Subscription as ModuleSub; -use crate::subscriptions::SubscriptionPayloadKind; +use crate::services::Service as ModuleService; +use crate::services::ServicePayloadKind; mod module; mod popup; -mod subscriptions; +mod services; /// Height of the bar in logical pixels. const BAR_HEIGHT: u32 = 36; @@ -36,8 +36,8 @@ struct Bar { modules: BTreeMap<&'static str, Box>, /// Surface id of the open popup. popup_id: Option, - /// Fan-out routing table: module id -> subscription kinds it wants. - routes: BTreeMap<&'static str, Vec>, + /// Fan-out routing table: module id -> services it wants. + routes: BTreeMap<&'static str, Vec>, } impl Bar { @@ -46,7 +46,7 @@ impl Bar { modules.insert("clock", Box::new(crate::module::clock::Clock::new())); let routes = modules .iter() - .map(|(id, module)| (*id, module.subscriptions())) + .map(|(id, module)| (*id, module.services())) .collect(); Self { active_popup: None, @@ -66,8 +66,8 @@ impl Bar { pub(crate) enum Msg { /// Routed module message; dispatch by `id`, module downcasts. Module(ModuleMsg), - /// Subscription event; fan out by route key. - Subscription(SubscriptionPayloadKind), + /// Service event; fan out by route key. + Subscription(ServicePayloadKind), /// The compositor confirmed a window closed. The popup is really gone. WindowClosed(window::Id), } @@ -127,7 +127,7 @@ fn gather_subscriptions(bar: &Bar) -> Subscription { let route_sub = Subscription::batch( bar.routes .values() - .flat_map(|x| x.iter().map(ModuleSub::subscription)) + .flat_map(|x| x.iter().map(ModuleService::subscription)) .collect::>(), ); let close_events = window::close_events().map(|id| Message::Event(Msg::WindowClosed(id))); diff --git a/src/module/clock.rs b/src/module/clock.rs index 5f1cbcb..8cf2c58 100644 --- a/src/module/clock.rs +++ b/src/module/clock.rs @@ -2,8 +2,8 @@ use iced::widget::{container, mouse_area, text}; use iced::{Element, Task}; use crate::module::{BarModule, ModuleMsg}; -use crate::subscriptions::clock::{ClockKind, ClockPayload}; -use crate::subscriptions::Subscription; +use crate::services::clock::{ClockKind, ClockPayload}; +use crate::services::Service; use crate::{Cmd, Message}; /// Clock module: subscribes to second ticks, renders the time in the bar. @@ -88,8 +88,8 @@ impl BarModule for Clock { } } - fn subscriptions(&self) -> Vec { - vec![Subscription::Clock(ClockKind::Seconds)] + fn services(&self) -> Vec { + vec![Service::Clock(ClockKind::Seconds)] } fn popup_size(&self) -> Option<(u32, u32)> { diff --git a/src/module/mod.rs b/src/module/mod.rs index 6b5b252..3550b43 100644 --- a/src/module/mod.rs +++ b/src/module/mod.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use iced::{Element, Task}; -use crate::subscriptions::Subscription; +use crate::services::Service; use crate::Message; pub mod clock; @@ -53,8 +53,8 @@ pub trait BarModule: Send { /// Handles a routed message; may return app-level tasks (e.g. popups). fn update(&mut self, msg: ModuleMsg) -> Task; - /// What subscription kinds this module wants. - fn subscriptions(&self) -> Vec; + /// What services this module wants. + fn services(&self) -> Vec; /// Requested popup size when it's not the generic small menu. fn popup_size(&self) -> Option<(u32, u32)> { diff --git a/src/subscriptions/clock.rs b/src/services/clock.rs similarity index 94% rename from src/subscriptions/clock.rs rename to src/services/clock.rs index 0b453fe..f07e983 100644 --- a/src/subscriptions/clock.rs +++ b/src/services/clock.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use iced::{futures::SinkExt, Subscription}; -use crate::{subscriptions::SubscriptionPayloadKind, Message, Msg}; +use crate::{services::ServicePayloadKind, Message, Msg}; /// What a clock subscription wants: the tick interval and payload selector. #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)] @@ -42,7 +42,7 @@ impl ClockTicker { for payload in clock.tick() { if sender .send(Message::Event(Msg::Subscription( - SubscriptionPayloadKind::Clock(payload), + ServicePayloadKind::Clock(payload), ))) .await .is_err() diff --git a/src/subscriptions/mod.rs b/src/services/mod.rs similarity index 70% rename from src/subscriptions/mod.rs rename to src/services/mod.rs index b3db263..7921b6e 100644 --- a/src/subscriptions/mod.rs +++ b/src/services/mod.rs @@ -2,7 +2,7 @@ use std::any::Any; use std::sync::Arc; use crate::{ - subscriptions::clock::{ClockKind, ClockPayload, ClockTicker}, + services::clock::{ClockKind, ClockPayload, ClockTicker}, Message, }; @@ -10,11 +10,11 @@ pub mod clock; /// Route key a module subscribes with; `Clock(kind)` selects the ticker. #[derive(Clone, Copy, PartialEq, Eq)] -pub enum Subscription { +pub enum Service { Clock(ClockKind), } -impl Subscription { +impl Service { pub fn subscription(&self) -> iced::Subscription { match self { Self::Clock(_) => ClockTicker::run(), @@ -22,19 +22,19 @@ impl Subscription { } } -/// A subscription event with a typed payload. The app only reads +/// A service event with a typed payload. The app only reads /// `key()` for fan-out; the consuming module downcasts the payload. #[derive(Clone, Debug)] -pub enum SubscriptionPayloadKind { +pub enum ServicePayloadKind { Clock(ClockPayload), } -impl SubscriptionPayloadKind { - /// Route key for this event. One arm per kind — adding a subscription +impl ServicePayloadKind { + /// Route key for this event. One arm per kind — adding a service /// touches only this match, never the routing code. - pub fn key(&self) -> Subscription { + pub fn key(&self) -> Service { match self { - Self::Clock(payload) => Subscription::Clock(payload.kind), + Self::Clock(payload) => Service::Clock(payload.kind), } }