use super::{TextInputContentType, TextInputReturnKeyType};
use crate::{ferro_property, AttachedProperty, FerroProperty, StyledElement, StyledPropertyOptions};
use std::rc::Rc;
#[derive(Clone, Debug, Default, PartialEq)]
pub struct TextInputOptions {
pub content_type: TextInputContentType,
pub return_key_type: TextInputReturnKeyType,
pub multiline: bool,
pub lowercase: bool,
pub uppercase: bool,
pub auto_capitalization: bool,
pub is_sensitive: bool,
pub show_suggestions: Option<bool>,
pub locale_hints: Option<Rc<[String]>>,
}
crate::ferro_static_type!(TextInputOptions);
crate::ferro_properties! {
impl TextInputOptions, also [
TextInputOptions::content_type_property,
TextInputOptions::return_key_type_property,
TextInputOptions::multiline_property,
TextInputOptions::lowercase_property,
TextInputOptions::uppercase_property,
TextInputOptions::auto_capitalization_property,
TextInputOptions::is_sensitive_property,
TextInputOptions::show_suggestions_property,
TextInputOptions::locale_hints_property,
] {}
}
impl TextInputOptions {
pub fn from_styled_element(ferro_object: &StyledElement) -> TextInputOptions {
TextInputOptions {
content_type: Self::get_content_type(ferro_object),
return_key_type: Self::get_return_key_type(ferro_object),
multiline: Self::get_multiline(ferro_object),
auto_capitalization: Self::get_auto_capitalization(ferro_object),
is_sensitive: Self::get_is_sensitive(ferro_object),
lowercase: Self::get_lowercase(ferro_object),
uppercase: Self::get_uppercase(ferro_object),
show_suggestions: Self::get_show_suggestions(ferro_object),
locale_hints: Self::get_locale_hints(ferro_object),
}
}
pub fn default_options() -> TextInputOptions {
TextInputOptions::default()
}
ferro_property!(for TextInputOptions;
pub fn content_type_property() -> AttachedProperty<TextInputContentType> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"ContentType",
StyledPropertyOptions::new(TextInputContentType::Normal).inherits(true),
)
}
);
pub fn set_content_type(ferro_object: &StyledElement, value: TextInputContentType) {
ferro_object.set_value(Self::content_type_property(), value)
}
pub fn get_content_type(ferro_object: &StyledElement) -> TextInputContentType {
ferro_object.get_value(Self::content_type_property())
}
ferro_property!(for TextInputOptions;
pub fn return_key_type_property() -> AttachedProperty<TextInputReturnKeyType> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"ReturnKeyType",
StyledPropertyOptions::new(TextInputReturnKeyType::Default).inherits(true),
)
}
);
pub fn set_return_key_type(ferro_object: &StyledElement, value: TextInputReturnKeyType) {
ferro_object.set_value(Self::return_key_type_property(), value)
}
pub fn get_return_key_type(ferro_object: &StyledElement) -> TextInputReturnKeyType {
ferro_object.get_value(Self::return_key_type_property())
}
ferro_property!(for TextInputOptions;
pub fn multiline_property() -> AttachedProperty<bool> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"Multiline",
StyledPropertyOptions::new(false).inherits(true),
)
}
);
pub fn set_multiline(ferro_object: &StyledElement, value: bool) {
ferro_object.set_value(Self::multiline_property(), value)
}
pub fn get_multiline(ferro_object: &StyledElement) -> bool {
ferro_object.get_value(Self::multiline_property())
}
ferro_property!(for TextInputOptions;
pub fn lowercase_property() -> AttachedProperty<bool> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"Lowercase",
StyledPropertyOptions::new(false).inherits(true),
)
}
);
pub fn set_lowercase(ferro_object: &StyledElement, value: bool) {
ferro_object.set_value(Self::lowercase_property(), value)
}
pub fn get_lowercase(ferro_object: &StyledElement) -> bool {
ferro_object.get_value(Self::lowercase_property())
}
ferro_property!(for TextInputOptions;
pub fn uppercase_property() -> AttachedProperty<bool> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"Uppercase",
StyledPropertyOptions::new(false).inherits(true),
)
}
);
pub fn set_uppercase(ferro_object: &StyledElement, value: bool) {
ferro_object.set_value(Self::uppercase_property(), value)
}
pub fn get_uppercase(ferro_object: &StyledElement) -> bool {
ferro_object.get_value(Self::uppercase_property())
}
ferro_property!(for TextInputOptions;
pub fn auto_capitalization_property() -> AttachedProperty<bool> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"AutoCapitalization",
StyledPropertyOptions::new(false).inherits(true),
)
}
);
pub fn set_auto_capitalization(ferro_object: &StyledElement, value: bool) {
ferro_object.set_value(Self::auto_capitalization_property(), value)
}
pub fn get_auto_capitalization(ferro_object: &StyledElement) -> bool {
ferro_object.get_value(Self::auto_capitalization_property())
}
ferro_property!(for TextInputOptions;
pub fn is_sensitive_property() -> AttachedProperty<bool> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"IsSensitive",
StyledPropertyOptions::new(false).inherits(true),
)
}
);
pub fn set_is_sensitive(ferro_object: &StyledElement, value: bool) {
ferro_object.set_value(Self::is_sensitive_property(), value)
}
pub fn get_is_sensitive(ferro_object: &StyledElement) -> bool {
ferro_object.get_value(Self::is_sensitive_property())
}
ferro_property!(for TextInputOptions;
pub fn show_suggestions_property() -> AttachedProperty<Option<bool>> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"ShowSuggestions",
StyledPropertyOptions::new(None).inherits(true),
)
}
);
pub fn set_show_suggestions(ferro_object: &StyledElement, value: Option<bool>) {
ferro_object.set_value(Self::show_suggestions_property(), value)
}
pub fn get_show_suggestions(ferro_object: &StyledElement) -> Option<bool> {
ferro_object.get_value(Self::show_suggestions_property())
}
ferro_property!(for TextInputOptions;
pub fn locale_hints_property() -> AttachedProperty<Option<Rc<[String]>>> {
FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
"LocaleHints",
StyledPropertyOptions::new(None).inherits(true),
)
}
);
pub fn set_locale_hints(ferro_object: &StyledElement, value: Option<Rc<[String]>>) {
ferro_object.set_value(Self::locale_hints_property(), value)
}
pub fn get_locale_hints(ferro_object: &StyledElement) -> Option<Rc<[String]>> {
ferro_object.get_value(Self::locale_hints_property())
}
}