MCPcopy Create free account
hub / github.com/Moosync/Moosync / ExtraControls

Function ExtraControls

src/components/musicbar_components.rs:295–408  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

293#[tracing::instrument(level = "debug", skip())]
294#[component]
295pub fn ExtraControls() -> impl IntoView {
296 let player_store = use_context::<RwSignal<PlayerStore>>().unwrap();
297 let (current_volume, set_current_volume) = create_slice(
298 player_store,
299 |player_store| player_store.get_raw_volume(),
300 |player_store, volume| player_store.set_volume(volume),
301 );
302
303 let is_cut = Memo::new(move |_| current_volume.get() == 0f64);
304 let ui_store = expect_context::<RwSignal<UiStore>>();
305
306 let toggle_mute_sig = create_write_slice(player_store, |p, _| {
307 p.toggle_mute();
308 });
309
310 let toggle_mute = move |_| {
311 toggle_mute_sig.set(());
312 };
313
314 let show_popup_volume = RwSignal::new(false);
315 let interval = RwSignal::<Option<TimeoutHandle>>::new(None);
316
317 view! {
318 <div class="row no-gutters align-items-center justify-content-end">
319 <div
320 class="col-auto volume-slider-container d-flex"
321 class:volume-slider-show=move || show_popup_volume.get()
322 on:mouseover=move |_| {
323 if show_popup_volume.get_untracked() {
324 interval
325 .update(|i| {
326 if let Some(i) = i.take() {
327 i.clear();
328 }
329 });
330 }
331 }
332 on:mouseout=move |_| {
333 interval
334 .update(|i| {
335 if let Some(i) = i.take() {
336 i.clear();
337 }
338 *i = Some(
339 set_timeout_with_handle(
340 move || {
341 show_popup_volume.set(false);
342 },
343 Duration::from_millis(800),
344 )
345 .unwrap(),
346 );
347 });
348 }
349 >
350 <input
351 type="range"
352 min="0"

Callers

nothing calls this directly

Calls 5

get_raw_volumeMethod · 0.80
getMethod · 0.80
toggle_muteMethod · 0.80
setMethod · 0.80
set_volumeMethod · 0.45

Tested by

no test coverage detected