mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-07-01 10:41:03 +02:00
refactor: prop changes are handled using generic signal
This commit is contained in:
parent
ef7397293a
commit
14e1f49ee9
1 changed files with 33 additions and 1 deletions
|
@ -24,6 +24,7 @@ pub struct Client {
|
||||||
client_state: Mutable<ClientState>,
|
client_state: Mutable<ClientState>,
|
||||||
interface_name: InterfaceName<'static>,
|
interface_name: InterfaceName<'static>,
|
||||||
dbus_connection: Connection,
|
dbus_connection: Connection,
|
||||||
|
props_proxy: PropertiesProxy<'static>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
@ -67,11 +68,16 @@ impl Client {
|
||||||
let client_state = Mutable::new(ClientState::Unknown);
|
let client_state = Mutable::new(ClientState::Unknown);
|
||||||
let dbus_connection = Connection::system()?;
|
let dbus_connection = Connection::system()?;
|
||||||
let interface_name = InterfaceName::from_static_str(DBUS_INTERFACE)?;
|
let interface_name = InterfaceName::from_static_str(DBUS_INTERFACE)?;
|
||||||
|
let props_proxy = PropertiesProxy::builder(&dbus_connection)
|
||||||
|
.destination(DBUS_BUS)?
|
||||||
|
.path(DBUS_PATH)?
|
||||||
|
.build()?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
client_state,
|
client_state,
|
||||||
interface_name,
|
interface_name,
|
||||||
dbus_connection,
|
dbus_connection,
|
||||||
|
props_proxy,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +88,33 @@ impl Client {
|
||||||
let mut primary_connection_type = proxy.primary_connection_type()?;
|
let mut primary_connection_type = proxy.primary_connection_type()?;
|
||||||
let mut wireless_enabled = proxy.wireless_enabled()?;
|
let mut wireless_enabled = proxy.wireless_enabled()?;
|
||||||
|
|
||||||
todo!()
|
for change in self.props_proxy.receive_properties_changed()? {
|
||||||
|
let changed_props = change.args()?.changed_properties;
|
||||||
|
let mut relevant_prop_changed = false;
|
||||||
|
|
||||||
|
if changed_props.contains_key("PrimaryConnection") {
|
||||||
|
primary_connection = proxy.primary_connection()?;
|
||||||
|
relevant_prop_changed = true;
|
||||||
|
}
|
||||||
|
if changed_props.contains_key("PrimaryConnectionType") {
|
||||||
|
primary_connection_type = proxy.primary_connection_type()?;
|
||||||
|
relevant_prop_changed = true;
|
||||||
|
}
|
||||||
|
if changed_props.contains_key("WirelessEnabled") {
|
||||||
|
wireless_enabled = proxy.wireless_enabled()?;
|
||||||
|
relevant_prop_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if relevant_prop_changed {
|
||||||
|
self.client_state.set(determine_state(
|
||||||
|
&primary_connection,
|
||||||
|
&primary_connection_type,
|
||||||
|
wireless_enabled,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn subscribe(&self) -> MutableSignalCloned<ClientState> {
|
pub fn subscribe(&self) -> MutableSignalCloned<ClientState> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue