#[non_exhaustive]pub struct SettingsItem {
pub code: String,
pub label: Text,
pub description: Text,
pub category: Text,
pub hint: Option<Text>,
pub confirm_leave: bool,
pub order: i32,
pub icon: Option<String>,
pub permission: Option<String>,
pub link: Option<String>,
pub fields: Vec<FormField>,
pub per_operator: bool,
/* private fields */
}Expand description
A settings model surfaced in the admin: a storage code, a category and
order that place it in the index, and the fields to edit.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.code: StringStorage key. Matches the model’s SettingsModel::CODE.
This is a storage key and never a URL. It is dotted, like the module
identity it derives from, and a dotted identifier in a path is how these
screens spent months at /settings/rainmill.discovery.robots. Where the
screen mounts is SettingsItem::route, resolved at boot through the
module’s namespace like every other contributed screen.
label: TextThe item’s label, description, and category heading, localized at render.
description: Text§category: TextGroup heading in the index.
hint: Option<Text>A fuller explanation, shown as a note at the top of this screen and
nowhere else. Where SettingsItem::description must stay short enough
to read in a sidebar, this has room to say why the screen exists.
confirm_leave: boolAsk before leaving this screen with changes unsaved. Default true.
order: i32Weight within the category (lower sorts first).
icon: Option<String>Icon name shown beside the item in the context sidebar (a Lucide name
such as users or shield). None falls back to a generic glyph.
permission: Option<String>Permission required to edit, enforced by middleware. None means any
authenticated operator.
link: Option<String>When set, the item links to this route (e.g. a resource list) instead of its settings form. Used to place list/form screens (like Administrators) in the settings menu rather than the main menu.
fields: Vec<FormField>§per_operator: boolStored once per operator, among their preferences, and edited from
the Preferences page rather than Settings. See store::PreferencesModel.
Implementations§
Source§impl SettingsItem
impl SettingsItem
Sourcepub fn new(
code: impl Into<String>,
label: impl Into<Text>,
fields: Vec<FormField>,
) -> Self
pub fn new( code: impl Into<String>, label: impl Into<Text>, fields: Vec<FormField>, ) -> Self
A settings screen for code (the model’s SettingsModel::CODE), titled
label, editing fields.
Everything else takes a default and is opted into through a builder method, so a field added later costs existing callers nothing.
Sourcepub fn per_operator(self) -> Self
pub fn per_operator(self) -> Self
Keeps a value per operator, edited from their Preferences page. The permission still applies; the category is not used.
Sourcepub fn description(self, text: impl Into<Text>) -> Self
pub fn description(self, text: impl Into<Text>) -> Self
The sentence under the item’s name in the index and sidebar.
Keep it to two lines in the sidebar, which is 72 characters at the
panel’s width. A description longer than that stops being a label and
starts being a lecture in a column 211 pixels wide; put the explanation
in SettingsItem::hint, where the reader has already chosen to look.
Sourcepub fn hint(self, text: impl Into<Text>) -> Self
pub fn hint(self, text: impl Into<Text>) -> Self
A fuller explanation for the top of this screen. Unlike the description, it has no length limit: the reader has opened the screen.
Sourcepub fn confirm_leave(self, ask: bool) -> Self
pub fn confirm_leave(self, ask: bool) -> Self
Whether leaving this screen with changes unsaved asks first. Default
true.
Sourcepub fn permission(self, permission: impl Into<String>) -> Self
pub fn permission(self, permission: impl Into<String>) -> Self
The permission required to edit, enforced by middleware.
Trait Implementations§
Source§impl Clone for SettingsItem
impl Clone for SettingsItem
Source§impl Debug for SettingsItem
impl Debug for SettingsItem
Auto Trait Implementations§
impl Freeze for SettingsItem
impl RefUnwindSafe for SettingsItem
impl Send for SettingsItem
impl Sync for SettingsItem
impl Unpin for SettingsItem
impl UnsafeUnpin for SettingsItem
impl UnwindSafe for SettingsItem
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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