(blaster: &BlasterXG6, ui: &mut egui::Ui)
| 201 | } |
| 202 | |
| 203 | fn eq_features(blaster: &BlasterXG6, ui: &mut egui::Ui) { |
| 204 | let eq_bands: Vec<_> = FeatureId::EQ_ALL |
| 205 | .iter() |
| 206 | .map(|&id| blaster.feature(id)) |
| 207 | .collect(); |
| 208 | |
| 209 | ui.vertical_centered_justified(|ui| { |
| 210 | ui.horizontal(|ui| { |
| 211 | if ui.button(RichText::new("Select AutoEq Profile").color(Color32::GRAY)).clicked() { |
| 212 | *AUTOEQ_MODAL.lock().unwrap() = true; |
| 213 | } |
| 214 | }); |
| 215 | |
| 216 | ui.separator(); |
| 217 | |
| 218 | Grid::new("eq_grid").show(ui, |ui| { |
| 219 | for band in &eq_bands { |
| 220 | let mut value = band.value(); |
| 221 | let clean_name = |
| 222 | band.id.display_name().strip_prefix("EQ ").unwrap_or(band.id.display_name()); |
| 223 | let clean_name = |
| 224 | clean_name.split('-').next().unwrap_or(clean_name); |
| 225 | |
| 226 | ui.vertical_centered_justified(|ui| { |
| 227 | ui.add_sized( |
| 228 | [ui.available_width(), 24.0], |
| 229 | egui::Label::new( |
| 230 | RichText::new(clean_name).color(Color32::GRAY), |
| 231 | ), |
| 232 | ); |
| 233 | }); |
| 234 | |
| 235 | let drag_value = ui.add(drag_value!( |
| 236 | &mut value, |
| 237 | suffix = " dB", |
| 238 | decimals = 1, |
| 239 | step = 0.1, |
| 240 | range = -12.0..=12.0 |
| 241 | )); |
| 242 | let slider = ui.add(slider!( |
| 243 | &mut value, |
| 244 | vertical = false, |
| 245 | decimals = 1, |
| 246 | step = 0.1, |
| 247 | range = -12.0..=12.0 |
| 248 | )); |
| 249 | |
| 250 | // do not simplify this. |
| 251 | // only `.changed()` will trigger even when the slider modifies itself |
| 252 | // for example when it rounds the number (which is necessary for the GUI) |
| 253 | if (drag_value.changed() || slider.changed()) |
| 254 | // to get the behavior I want, this is sadly necessary |
| 255 | && (drag_value.dragged() |
| 256 | || drag_value.drag_stopped() |
| 257 | || drag_value.lost_focus() |
| 258 | || slider.dragged() |
| 259 | || slider.drag_stopped()) |
| 260 | { |
no test coverage detected