Major module refactor (#19)
* refactor: major module restructuring Modules now implement a "controller", which allows for separation of logic from UI code and enforces a tighter structure around how modules should be written. The introduction of this change required major refactoring or even rewriting of all modules. This also better integrates the popup into modules, making it easier for data to be passed around without fetching the same thing twice The refactor also improves some client code, switching from `ksway` to the much more stable `swayipc-async`. Partial multi-monitor for the tray module has been added. BREAKING CHANGE: The `mpd` module config has changed, moving the icons to their own object.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use serde::Serialize;
|
||||
use std::slice::{Iter, IterMut};
|
||||
use std::vec;
|
||||
|
||||
/// An ordered map.
|
||||
/// Internally this is just two vectors -
|
||||
@@ -47,6 +48,11 @@ impl<TKey: PartialEq, TData> Collection<TKey, TData> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Checks if a value for the given key exists inside the collection
|
||||
pub fn contains(&self, key: &TKey) -> bool {
|
||||
self.keys.contains(key)
|
||||
}
|
||||
|
||||
/// Removes the key/value from the collection
|
||||
/// if it exists
|
||||
/// and returns the removed value.
|
||||
@@ -144,3 +150,12 @@ impl<TKey: PartialEq, TData> Default for Collection<TKey, TData> {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl<TKey: PartialEq, TData> IntoIterator for Collection<TKey, TData> {
|
||||
type Item = TData;
|
||||
type IntoIter = vec::IntoIter<TData>;
|
||||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
self.values.into_iter()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user