ferroui_base/input/text_input/
text_input_options.rs1use super::{TextInputContentType, TextInputReturnKeyType};
2use crate::{ferro_property, AttachedProperty, FerroProperty, StyledElement, StyledPropertyOptions};
3use std::rc::Rc;
4
5#[derive(Clone, Debug, Default, PartialEq)]
10pub struct TextInputOptions {
11 pub content_type: TextInputContentType,
13
14 pub return_key_type: TextInputReturnKeyType,
16
17 pub multiline: bool,
19
20 pub lowercase: bool,
22
23 pub uppercase: bool,
25
26 pub auto_capitalization: bool,
28
29 pub is_sensitive: bool,
31
32 pub show_suggestions: Option<bool>,
34
35 pub locale_hints: Option<Rc<[String]>>,
37}
38
39crate::ferro_static_type!(TextInputOptions);
40
41crate::ferro_properties! {
42 impl TextInputOptions, also [
43 TextInputOptions::content_type_property,
44 TextInputOptions::return_key_type_property,
45 TextInputOptions::multiline_property,
46 TextInputOptions::lowercase_property,
47 TextInputOptions::uppercase_property,
48 TextInputOptions::auto_capitalization_property,
49 TextInputOptions::is_sensitive_property,
50 TextInputOptions::show_suggestions_property,
51 TextInputOptions::locale_hints_property,
52 ] {}
53}
54
55impl TextInputOptions {
56 pub fn from_styled_element(ferro_object: &StyledElement) -> TextInputOptions {
59 TextInputOptions {
60 content_type: Self::get_content_type(ferro_object),
61 return_key_type: Self::get_return_key_type(ferro_object),
62 multiline: Self::get_multiline(ferro_object),
63 auto_capitalization: Self::get_auto_capitalization(ferro_object),
64 is_sensitive: Self::get_is_sensitive(ferro_object),
65 lowercase: Self::get_lowercase(ferro_object),
66 uppercase: Self::get_uppercase(ferro_object),
67 show_suggestions: Self::get_show_suggestions(ferro_object),
68 locale_hints: Self::get_locale_hints(ferro_object),
69 }
70 }
71
72 pub fn default_options() -> TextInputOptions {
74 TextInputOptions::default()
75 }
76
77 ferro_property!(for TextInputOptions;
78 pub fn content_type_property() -> AttachedProperty<TextInputContentType> {
80 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
81 "ContentType",
82 StyledPropertyOptions::new(TextInputContentType::Normal).inherits(true),
83 )
84 }
85 );
86
87 pub fn set_content_type(ferro_object: &StyledElement, value: TextInputContentType) {
89 ferro_object.set_value(Self::content_type_property(), value)
90 }
91
92 pub fn get_content_type(ferro_object: &StyledElement) -> TextInputContentType {
94 ferro_object.get_value(Self::content_type_property())
95 }
96
97 ferro_property!(for TextInputOptions;
98 pub fn return_key_type_property() -> AttachedProperty<TextInputReturnKeyType> {
100 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
101 "ReturnKeyType",
102 StyledPropertyOptions::new(TextInputReturnKeyType::Default).inherits(true),
103 )
104 }
105 );
106
107 pub fn set_return_key_type(ferro_object: &StyledElement, value: TextInputReturnKeyType) {
109 ferro_object.set_value(Self::return_key_type_property(), value)
110 }
111
112 pub fn get_return_key_type(ferro_object: &StyledElement) -> TextInputReturnKeyType {
114 ferro_object.get_value(Self::return_key_type_property())
115 }
116
117 ferro_property!(for TextInputOptions;
118 pub fn multiline_property() -> AttachedProperty<bool> {
120 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
121 "Multiline",
122 StyledPropertyOptions::new(false).inherits(true),
123 )
124 }
125 );
126
127 pub fn set_multiline(ferro_object: &StyledElement, value: bool) {
129 ferro_object.set_value(Self::multiline_property(), value)
130 }
131
132 pub fn get_multiline(ferro_object: &StyledElement) -> bool {
134 ferro_object.get_value(Self::multiline_property())
135 }
136
137 ferro_property!(for TextInputOptions;
138 pub fn lowercase_property() -> AttachedProperty<bool> {
140 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
141 "Lowercase",
142 StyledPropertyOptions::new(false).inherits(true),
143 )
144 }
145 );
146
147 pub fn set_lowercase(ferro_object: &StyledElement, value: bool) {
149 ferro_object.set_value(Self::lowercase_property(), value)
150 }
151
152 pub fn get_lowercase(ferro_object: &StyledElement) -> bool {
154 ferro_object.get_value(Self::lowercase_property())
155 }
156
157 ferro_property!(for TextInputOptions;
158 pub fn uppercase_property() -> AttachedProperty<bool> {
160 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
161 "Uppercase",
162 StyledPropertyOptions::new(false).inherits(true),
163 )
164 }
165 );
166
167 pub fn set_uppercase(ferro_object: &StyledElement, value: bool) {
169 ferro_object.set_value(Self::uppercase_property(), value)
170 }
171
172 pub fn get_uppercase(ferro_object: &StyledElement) -> bool {
174 ferro_object.get_value(Self::uppercase_property())
175 }
176
177 ferro_property!(for TextInputOptions;
178 pub fn auto_capitalization_property() -> AttachedProperty<bool> {
180 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
181 "AutoCapitalization",
182 StyledPropertyOptions::new(false).inherits(true),
183 )
184 }
185 );
186
187 pub fn set_auto_capitalization(ferro_object: &StyledElement, value: bool) {
189 ferro_object.set_value(Self::auto_capitalization_property(), value)
190 }
191
192 pub fn get_auto_capitalization(ferro_object: &StyledElement) -> bool {
194 ferro_object.get_value(Self::auto_capitalization_property())
195 }
196
197 ferro_property!(for TextInputOptions;
198 pub fn is_sensitive_property() -> AttachedProperty<bool> {
200 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
201 "IsSensitive",
202 StyledPropertyOptions::new(false).inherits(true),
203 )
204 }
205 );
206
207 pub fn set_is_sensitive(ferro_object: &StyledElement, value: bool) {
209 ferro_object.set_value(Self::is_sensitive_property(), value)
210 }
211
212 pub fn get_is_sensitive(ferro_object: &StyledElement) -> bool {
214 ferro_object.get_value(Self::is_sensitive_property())
215 }
216
217 ferro_property!(for TextInputOptions;
218 pub fn show_suggestions_property() -> AttachedProperty<Option<bool>> {
220 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
221 "ShowSuggestions",
222 StyledPropertyOptions::new(None).inherits(true),
223 )
224 }
225 );
226
227 pub fn set_show_suggestions(ferro_object: &StyledElement, value: Option<bool>) {
229 ferro_object.set_value(Self::show_suggestions_property(), value)
230 }
231
232 pub fn get_show_suggestions(ferro_object: &StyledElement) -> Option<bool> {
234 ferro_object.get_value(Self::show_suggestions_property())
235 }
236
237 ferro_property!(for TextInputOptions;
238 pub fn locale_hints_property() -> AttachedProperty<Option<Rc<[String]>>> {
240 FerroProperty::register_attached_with::<TextInputOptions, StyledElement, _>(
241 "LocaleHints",
242 StyledPropertyOptions::new(None).inherits(true),
243 )
244 }
245 );
246
247 pub fn set_locale_hints(ferro_object: &StyledElement, value: Option<Rc<[String]>>) {
249 ferro_object.set_value(Self::locale_hints_property(), value)
250 }
251
252 pub fn get_locale_hints(ferro_object: &StyledElement) -> Option<Rc<[String]>> {
254 ferro_object.get_value(Self::locale_hints_property())
255 }
256}