Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
HolbyFPV committed Oct 24, 2024
1 parent 4a2ab73 commit d0410a9
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 19 deletions.
2 changes: 1 addition & 1 deletion examples/boilerplate-solid-ts/dist/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<title>Zebar</title>
<script type="module" crossorigin src="./assets/index-lccBZ8eH.js"></script>
<script type="module" crossorigin src="./assets/index-BYmyVPc_.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-DhTpoJOY.css">
</head>
<body>
Expand Down
3 changes: 2 additions & 1 deletion examples/boilerplate-solid-ts/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const providers = zebar.createProviderGroup({
battery: { type: 'battery' },
memory: { type: 'memory' },
weather: { type: 'weather' },
// media: { type: 'media' },
media: { type: 'media' },
});

render(() => <App />, document.getElementById('root')!);
Expand All @@ -21,6 +21,7 @@ function App() {

return (
<div class="app">
<div class="chip">Media: {output.media?.artist}</div>
<div class="chip">CPU usage: {output.cpu?.usage}</div>
<div class="chip">
Battery charge: {output.battery?.chargePercent}
Expand Down
53 changes: 39 additions & 14 deletions packages/desktop/src/providers/media/media_provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,34 +83,37 @@ impl MediaProvider {
// with this to go next song/prev song Set PlaybackInfoHandler
// (fires on tick basically) <- interact with this to scrub
// forward/backwards
fn create_session_manager(&mut self) -> anyhow::Result<()> {
fn create_session_manager(&self) -> anyhow::Result<()> {
let session_manager = MediaManager::RequestAsync()?.get()?;
println!("Session manager obtained.");

let mut current_session = session_manager.GetCurrentSession()?;
Self::add_session_listeners(&current_session);

let session_changed_handler = TypedEventHandler::new(
|session_manager: &Option<MediaManager>, _| {
// let current_session = session_manager.GetCurrentSession();
let current_session =
MediaManager::RequestAsync()?.get()?.GetCurrentSession();
MediaManager::RequestAsync()?.get()?.GetCurrentSession()?;

// self.current_session = current_session;
MediaProvider::print_current_media_info(&current_session.unwrap());
Self::add_session_listeners(&current_session);

// self.current_session = Arccurrent_session;
MediaProvider::print_current_media_info(&current_session);

windows::core::Result::Ok(())
},
);

// let media_properties_changed_handler = TypedEventHandler::new(move
// |session: &Option<MediaManager>, _args:
// MediaPropertiesChangedEventArgs| { // self.current_session =
// session_manager.GetCurrentSession(); current_session =
// session_manager.GetCurrentSession();
session_manager.CurrentSessionChanged(&session_changed_handler)?;

loop {
std::thread::sleep(time::Duration::from_secs(1));
}

// windows::core::Result::Ok(())
// });
Ok(())
}

fn add_session_listeners(session: &MediaSession) -> anyhow::Result<()> {
let media_properties_changed_handler =
TypedEventHandler::new(move |session: &Option<MediaSession>, _| {
println!("Media properties changed event triggered.");
Expand All @@ -121,8 +124,30 @@ impl MediaProvider {
windows::core::Result::Ok(())
});

current_session
.MediaPropertiesChanged(&media_properties_changed_handler)?;
let playback_info_changed_handler =
TypedEventHandler::new(move |session: &Option<MediaSession>, _| {
println!("Playback info changed event triggered.");
let session = session
.as_ref()
.expect("No session available on playback info change.");
MediaProvider::print_current_media_info(session);
windows::core::Result::Ok(())
});

let timeline_properties_changed_handler = TypedEventHandler::new(
move |session: &Option<MediaSession>, _| {
println!("Timeline properties changed event triggered.");
let session = session
.as_ref()
.expect("No session available on timeline properties change.");
MediaProvider::print_current_media_info(session);
windows::core::Result::Ok(())
},
);

session.TimelinePropertiesChanged(&timeline_properties_changed_handler)?;
session.PlaybackInfoChanged(&playback_info_changed_handler)?;
session.MediaPropertiesChanged(&media_properties_changed_handler)?;

Ok(())
}
Expand Down
3 changes: 0 additions & 3 deletions packages/desktop/src/providers/provider_ref.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,6 @@ impl ProviderRef {
Box::new(MediaProvider::new(config))
}
ProviderConfig::Memory(config) => {
Box::new(MediaProvider::new(super::media::MediaProviderConfig {
refresh_interval: 0,
}));
Box::new(MemoryProvider::new(config, shared_state.sysinfo.clone()))
}
ProviderConfig::Network(config) => Box::new(NetworkProvider::new(
Expand Down

0 comments on commit d0410a9

Please sign in to comment.