Added text color and font options for native radio and checkbox (#831)

* text color and font options to radio

* code formatting

* code formatting

* code formatting

* Added text_color for native checkbox

* Removed clone as color has Copy

* Fix code formatting with `cargo fmt`

Co-authored-by: Héctor Ramón <hector@lich.io>
This commit is contained in:
zdevwu 2021-05-17 14:22:55 +01:00 committed by GitHub
parent 0ce6a2db21
commit 40d21d2365
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 8 deletions

View File

@ -8,8 +8,8 @@ use crate::row;
use crate::text; use crate::text;
use crate::touch; use crate::touch;
use crate::{ use crate::{
Align, Clipboard, Element, Hasher, HorizontalAlignment, Layout, Length, Align, Clipboard, Color, Element, Hasher, HorizontalAlignment, Layout,
Point, Rectangle, Row, Text, VerticalAlignment, Widget, Length, Point, Rectangle, Row, Text, VerticalAlignment, Widget,
}; };
/// A box that can be checked. /// A box that can be checked.
@ -39,6 +39,7 @@ pub struct Checkbox<Message, Renderer: self::Renderer + text::Renderer> {
spacing: u16, spacing: u16,
text_size: Option<u16>, text_size: Option<u16>,
font: Renderer::Font, font: Renderer::Font,
text_color: Option<Color>,
style: Renderer::Style, style: Renderer::Style,
} }
@ -66,6 +67,7 @@ impl<Message, Renderer: self::Renderer + text::Renderer>
spacing: Renderer::DEFAULT_SPACING, spacing: Renderer::DEFAULT_SPACING,
text_size: None, text_size: None,
font: Renderer::Font::default(), font: Renderer::Font::default(),
text_color: None,
style: Renderer::Style::default(), style: Renderer::Style::default(),
} }
} }
@ -102,6 +104,12 @@ impl<Message, Renderer: self::Renderer + text::Renderer>
self self
} }
/// Sets the text color of the [`Checkbox`] button.
pub fn text_color(mut self, color: Color) -> Self {
self.text_color = Some(color);
self
}
/// Sets the style of the [`Checkbox`]. /// Sets the style of the [`Checkbox`].
pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self { pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self {
self.style = style.into(); self.style = style.into();
@ -193,7 +201,7 @@ where
&self.label, &self.label,
self.text_size.unwrap_or(renderer.default_size()), self.text_size.unwrap_or(renderer.default_size()),
self.font, self.font,
None, self.text_color,
HorizontalAlignment::Left, HorizontalAlignment::Left,
VerticalAlignment::Center, VerticalAlignment::Center,
); );

View File

@ -1,17 +1,17 @@
//! Create choices using radio buttons. //! Create choices using radio buttons.
use std::hash::Hash;
use crate::event::{self, Event}; use crate::event::{self, Event};
use crate::layout;
use crate::mouse; use crate::mouse;
use crate::row; use crate::row;
use crate::text; use crate::text;
use crate::touch; use crate::touch;
use crate::{layout, Color};
use crate::{ use crate::{
Align, Clipboard, Element, Hasher, HorizontalAlignment, Layout, Length, Align, Clipboard, Element, Hasher, HorizontalAlignment, Layout, Length,
Point, Rectangle, Row, Text, VerticalAlignment, Widget, Point, Rectangle, Row, Text, VerticalAlignment, Widget,
}; };
use std::hash::Hash;
/// A circular button representing a choice. /// A circular button representing a choice.
/// ///
/// # Example /// # Example
@ -47,6 +47,8 @@ pub struct Radio<Message, Renderer: self::Renderer + text::Renderer> {
size: u16, size: u16,
spacing: u16, spacing: u16,
text_size: Option<u16>, text_size: Option<u16>,
text_color: Option<Color>,
font: Renderer::Font,
style: Renderer::Style, style: Renderer::Style,
} }
@ -81,6 +83,8 @@ where
size: <Renderer as self::Renderer>::DEFAULT_SIZE, size: <Renderer as self::Renderer>::DEFAULT_SIZE,
spacing: Renderer::DEFAULT_SPACING, //15 spacing: Renderer::DEFAULT_SPACING, //15
text_size: None, text_size: None,
text_color: None,
font: Default::default(),
style: Renderer::Style::default(), style: Renderer::Style::default(),
} }
} }
@ -109,6 +113,18 @@ where
self self
} }
/// Sets the text color of the [`Radio`] button.
pub fn text_color(mut self, color: Color) -> Self {
self.text_color = Some(color);
self
}
/// Sets the text font of the [`Radio`] button.
pub fn font(mut self, font: Renderer::Font) -> Self {
self.font = font;
self
}
/// Sets the style of the [`Radio`] button. /// Sets the style of the [`Radio`] button.
pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self { pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self {
self.style = style.into(); self.style = style.into();
@ -196,8 +212,8 @@ where
label_layout.bounds(), label_layout.bounds(),
&self.label, &self.label,
self.text_size.unwrap_or(renderer.default_size()), self.text_size.unwrap_or(renderer.default_size()),
Default::default(), self.font,
None, self.text_color,
HorizontalAlignment::Left, HorizontalAlignment::Left,
VerticalAlignment::Center, VerticalAlignment::Center,
); );