Skip to main content

ferroui_controls/primitives/
range_base_value_changed_event_args.rs

1use ferroui_base::ferro_routed_event_args;
2use ferroui_base::interactivity::{RoutedEvent, RoutedEventArgs};
3use ferroui_base::{FerroObject, Nullable};
4
5/// Provides data specific to a `RangeBase::value_changed` event.
6#[derive(Clone, Default)]
7pub struct RangeBaseValueChangedEventArgs {
8    base: RoutedEventArgs,
9    old_value: f64,
10    new_value: f64,
11}
12
13ferro_routed_event_args!(RangeBaseValueChangedEventArgs: RoutedEventArgs);
14
15impl RangeBaseValueChangedEventArgs {
16    /// Creates the args from the old and the new value of the range value
17    /// property and the routed event associated with the args.
18    pub fn new<T: ?Sized>(old_value: f64, new_value: f64, routed_event: Option<&RoutedEvent<T>>) -> Self {
19        let base = match routed_event {
20            Some(routed_event) => RoutedEventArgs::with_event(routed_event),
21            None => RoutedEventArgs::new(),
22        };
23        Self { base, old_value, new_value }
24    }
25
26    /// Creates the args from the old and the new value of the range value
27    /// property, the routed event associated with the args and the source
28    /// object that raised the routed event.
29    pub fn with_source<T: ?Sized>(
30        old_value: f64,
31        new_value: f64,
32        routed_event: Option<&RoutedEvent<T>>,
33        source: impl Into<Nullable<FerroObject>>,
34    ) -> Self {
35        let args = Self::new(old_value, new_value, routed_event);
36        args.set_source(source);
37        args
38    }
39
40    /// The old value of the range value property.
41    pub fn old_value(&self) -> f64 {
42        self.old_value
43    }
44
45    /// The new value of the range value property.
46    pub fn new_value(&self) -> f64 {
47        self.new_value
48    }
49}