(&mut self, cx: &egui::Context, _frame: &mut eframe::Frame)
| 37 | |
| 38 | impl App for DemoApp { |
| 39 | fn update(&mut self, cx: &egui::Context, _frame: &mut eframe::Frame) { |
| 40 | let now = Instant::now(); |
| 41 | let dt = (now - self.prev_frame_instant).as_secs_f32(); |
| 42 | self.prev_frame_instant = now; |
| 43 | |
| 44 | self.audio_system.update_meters(dt); |
| 45 | |
| 46 | egui::TopBottomPanel::top("top_panel").show(cx, |ui| { |
| 47 | egui::MenuBar::new().ui(ui, |ui| { |
| 48 | #[cfg(not(target_arch = "wasm32"))] |
| 49 | { |
| 50 | ui.menu_button("Menu", |ui| { |
| 51 | if ui.button("Quit").clicked() { |
| 52 | cx.send_viewport_cmd(egui::ViewportCommand::Close) |
| 53 | } |
| 54 | }); |
| 55 | ui.add_space(16.0); |
| 56 | } |
| 57 | |
| 58 | egui::widgets::global_theme_preference_switch(ui); |
| 59 | }); |
| 60 | }); |
| 61 | |
| 62 | egui::CentralPanel::default().show(cx, |ui| { |
| 63 | for (i, sampler_state) in self.sampler_views.iter_mut().enumerate() { |
| 64 | ui.horizontal(|ui| { |
| 65 | ui.label(sampler_state.text); |
| 66 | |
| 67 | if ui.button("Start or Restart").clicked() { |
| 68 | self.audio_system.start_or_restart(i); |
| 69 | } |
| 70 | |
| 71 | if self.audio_system.is_playing(i) { |
| 72 | if ui.button("Pause").clicked() { |
| 73 | self.audio_system.pause(i); |
| 74 | } |
| 75 | } else if self.audio_system.is_paused(i) && ui.button("Resume").clicked() { |
| 76 | self.audio_system.resume(i); |
| 77 | } |
| 78 | |
| 79 | if ui.button("Stop").clicked() { |
| 80 | self.audio_system.stop(i); |
| 81 | } |
| 82 | |
| 83 | if ui.checkbox(&mut sampler_state.repeat, "repeat").changed() { |
| 84 | let repeat_mode = if sampler_state.repeat { |
| 85 | RepeatMode::RepeatEndlessly |
| 86 | } else { |
| 87 | RepeatMode::PlayOnce |
| 88 | }; |
| 89 | |
| 90 | self.audio_system.set_repeat_mode(i, repeat_mode); |
| 91 | } |
| 92 | |
| 93 | if ui |
| 94 | .add( |
| 95 | egui::Slider::new(&mut sampler_state.percent_volume, 0.0..=100.0) |
| 96 | .text("volume"), |
nothing calls this directly
no test coverage detected