From feab96f323189ebae070a5d025531f86e436e21f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 15 Feb 2024 02:38:07 +0100 Subject: Add `push_maybe` to `Column` and `Row` --- widget/src/column.rs | 12 ++++++++++++ widget/src/helpers.rs | 12 ++++++++++++ widget/src/keyed/column.rs | 13 +++++++++++++ widget/src/row.rs | 12 ++++++++++++ 4 files changed, 49 insertions(+) (limited to 'widget') diff --git a/widget/src/column.rs b/widget/src/column.rs index 8154ad85..b9eb5d93 100644 --- a/widget/src/column.rs +++ b/widget/src/column.rs @@ -115,6 +115,18 @@ where self.children.push(child); self } + + /// Adds an element to the [`Column`], if `Some`. + pub fn push_maybe( + self, + child: Option>>, + ) -> Self { + if let Some(child) = child { + self.push(child) + } else { + self + } + } } impl<'a, Message, Renderer> Default for Column<'a, Message, Renderer> diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 400fced5..6ae35aee 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -387,6 +387,18 @@ where crate::Canvas::new(program) } +/// Creates a new [`QRCode`] widget from the given [`Data`]. +/// +/// [`Svg`]: crate::QRCode +/// [`Data`]: crate::qr_code::Data +#[cfg(feature = "qr_code")] +pub fn qr_code(data: &crate::qr_code::Data) -> crate::QRCode<'_, Theme> +where + Theme: crate::qr_code::StyleSheet, +{ + crate::QRCode::new(data) +} + /// Creates a new [`Shader`]. /// /// [`Shader`]: crate::Shader diff --git a/widget/src/keyed/column.rs b/widget/src/keyed/column.rs index 88a6e503..ce74e701 100644 --- a/widget/src/keyed/column.rs +++ b/widget/src/keyed/column.rs @@ -124,6 +124,19 @@ where self.children.push(child); self } + + /// Adds an element to the [`Column`], if `Some`. + pub fn push_maybe( + self, + key: Key, + child: Option>>, + ) -> Self { + if let Some(child) = child { + self.push(key, child) + } else { + self + } + } } impl<'a, Key, Message, Renderer> Default for Column<'a, Key, Message, Renderer> diff --git a/widget/src/row.rs b/widget/src/row.rs index 735fbbc0..20b47a41 100644 --- a/widget/src/row.rs +++ b/widget/src/row.rs @@ -106,6 +106,18 @@ where self.children.push(child); self } + + /// Adds an element to the [`Row`], if `Some`. + pub fn push_maybe( + self, + child: Option>>, + ) -> Self { + if let Some(child) = child { + self.push(child) + } else { + self + } + } } impl<'a, Message, Renderer> Default for Row<'a, Message, Renderer> -- cgit