pub struct SettingValue {
id: Id,
rect: Rectangle,
children: Vec<Box<dyn View>>,
kind: Box<dyn SettingKind>,
entries: Vec<EntryKind>,
active_input: Option<ViewId>,
active_file_chooser: bool,
}Expand description
Represents a single setting value display in the settings UI.
This struct manages the display and interaction of a setting value and its
associated UI widget (an ActionLabel, a sub-menu label, or a Toggle).
It acts as a View that handles events via the SettingKind trait, updating the
displayed text and sub-menu checked state when the underlying setting changes.
Fields§
§id: IdUnique identifier for this setting value view
rect: RectangleThe rectangular area occupied by this view
children: Vec<Box<dyn View>>Child views — a single ActionLabel or Toggle widget, plus any active NamedInput overlay
kind: Box<dyn SettingKind>Retained so that SubMenu entries can be rebuilt with updated checked
state each time UpdateValue is received, and to provide identity for
routing SettingsEvent::UpdateValue without a separate field.
entries: Vec<EntryKind>§active_input: Option<ViewId>Tracks the ViewId of an active NamedInput child, if one is open.
active_file_chooser: boolWhether a FileChooser overlay is currently open as a child.
Implementations§
Source§impl SettingValue
impl SettingValue
Sourcepub fn new(
kind: impl SettingKind + 'static,
rect: Rectangle,
settings: &Settings,
fonts: &mut Fonts,
) -> SettingValue
pub fn new( kind: impl SettingKind + 'static, rect: Rectangle, settings: &Settings, fonts: &mut Fonts, ) -> SettingValue
Creates a new SettingValue for the given kind.
kind accepts any owned value that implements SettingKind, including references
(&T), boxes (Box<T>), and concrete types directly. The value is erased into a
Box<dyn SettingKind> internally, so the caller does not need to box it beforehand.
fn build_child_view( &self, value: String, widget: WidgetKind, fonts: &mut Fonts, ) -> Box<dyn View>
pub fn update( &mut self, value: String, settings: &Settings, rq: &mut RenderQueue, )
pub fn value(&self) -> String
Sourcepub fn hold_event(self, event: Option<Event>) -> Self
pub fn hold_event(self, event: Option<Event>) -> Self
Propagates a hold event to the child ActionLabel.
Trait Implementations§
Source§impl Debug for SettingValue
impl Debug for SettingValue
Source§impl View for SettingValue
impl View for SettingValue
Source§fn handle_event(
&mut self,
evt: &Event,
hub: &Hub,
bus: &mut Bus,
rq: &mut RenderQueue,
context: &mut Context,
) -> bool
fn handle_event( &mut self, evt: &Event, hub: &Hub, bus: &mut Bus, rq: &mut RenderQueue, context: &mut Context, ) -> bool
Handles events in three passes.
-
Delegates to
SettingKind::handlefor direct mutation events such as submenu selections and toggle taps. When the kind handles the event it returns the updated display string, which is applied immediately. -
For
InputSettingKindsettings, opens aNamedInputoverlay on the matchingEntryIdtap, applies the submitted text onEvent::Submit, and closes the overlay onEvent::Closeor after submission. -
Falls back to
SettingsEvent::UpdateValuerouting so thatLibraryEditorand other callers can push targeted display updates without going through the event bus.
fn render( &self, _fb: &mut dyn Framebuffer, _rect: Rectangle, _fonts: &mut Fonts, )
fn rect(&self) -> &Rectangle
fn rect_mut(&mut self) -> &mut Rectangle
fn children(&self) -> &Vec<Box<dyn View>>
fn children_mut(&mut self) -> &mut Vec<Box<dyn View>>
fn id(&self) -> Id
fn render_rect(&self, _rect: &Rectangle) -> Rectangle
fn resize( &mut self, rect: Rectangle, _hub: &Hub, _rq: &mut RenderQueue, _context: &mut Context, )
fn child(&self, index: usize) -> &dyn View
fn child_mut(&mut self, index: usize) -> &mut dyn View
fn len(&self) -> usize
fn might_skip(&self, _evt: &Event) -> bool
fn might_rotate(&self) -> bool
fn is_background(&self) -> bool
fn view_id(&self) -> Option<ViewId>
Auto Trait Implementations§
impl Freeze for SettingValue
impl !RefUnwindSafe for SettingValue
impl !Send for SettingValue
impl !Sync for SettingValue
impl Unpin for SettingValue
impl UnsafeUnpin for SettingValue
impl !UnwindSafe for SettingValue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more