summaryrefslogtreecommitdiffstats
path: root/examples/scroll.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2019-11-03 05:19:12 +0100
committerLibravatar GitHub <noreply@github.com>2019-11-03 05:19:12 +0100
commit0ea911ae36bbde8c288f7ae1ba8a0049b696d7c4 (patch)
tree929cb493b674512520f1b6a92f86d7a09e5801f6 /examples/scroll.rs
parentde3c87b9a793c0d0799948e16ad1b14e5b4892ba (diff)
parent022dc0139b7437f167a8d3ae483bf8e83f1dab04 (diff)
downloadiced-0ea911ae36bbde8c288f7ae1ba8a0049b696d7c4.tar.gz
iced-0ea911ae36bbde8c288f7ae1ba8a0049b696d7c4.tar.bz2
iced-0ea911ae36bbde8c288f7ae1ba8a0049b696d7c4.zip
Merge pull request #35 from hecrj/feature/scrollables
Scrollable widget
Diffstat (limited to 'examples/scroll.rs')
-rw-r--r--examples/scroll.rs75
1 files changed, 75 insertions, 0 deletions
diff --git a/examples/scroll.rs b/examples/scroll.rs
new file mode 100644
index 00000000..608923fe
--- /dev/null
+++ b/examples/scroll.rs
@@ -0,0 +1,75 @@
+use iced::{
+ button, scrollable, Align, Application, Button, Column, Element, Image,
+ Justify, Length, Scrollable, Text,
+};
+
+pub fn main() {
+ env_logger::init();
+
+ Example::default().run()
+}
+
+#[derive(Default)]
+struct Example {
+ item_count: u16,
+
+ scroll: scrollable::State,
+ add_button: button::State,
+}
+
+#[derive(Debug, Clone, Copy)]
+pub enum Message {
+ AddItem,
+}
+
+impl Application for Example {
+ type Message = Message;
+
+ fn update(&mut self, message: Message) {
+ match message {
+ Message::AddItem => {
+ self.item_count += 1;
+ }
+ }
+ }
+
+ fn view(&mut self) -> Element<Message> {
+ let content = (0..self.item_count)
+ .fold(
+ Scrollable::new(&mut self.scroll)
+ .spacing(20)
+ .padding(20)
+ .align_items(Align::Center),
+ |scrollable, i| {
+ if i % 2 == 0 {
+ scrollable.push(lorem_ipsum().width(Length::Units(600)))
+ } else {
+ scrollable.push(
+ Image::new(format!(
+ "{}/examples/resources/ferris.png",
+ env!("CARGO_MANIFEST_DIR")
+ ))
+ .width(Length::Units(400)),
+ )
+ }
+ },
+ )
+ .push(
+ Button::new(&mut self.add_button, Text::new("Add item"))
+ .on_press(Message::AddItem)
+ .padding(20)
+ .border_radius(5),
+ );
+
+ Column::new()
+ .height(Length::Fill)
+ .justify_content(Justify::Center)
+ .padding(20)
+ .push(content)
+ .into()
+ }
+}
+
+fn lorem_ipsum() -> Text {
+ Text::new("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi in dui vel massa blandit interdum. Quisque placerat, odio ut vulputate sagittis, augue est facilisis ex, eget euismod felis magna in sapien. Nullam luctus consequat massa, ac interdum mauris blandit pellentesque. Nullam in est urna. Aliquam tristique lectus ac luctus feugiat. Aenean libero diam, euismod facilisis consequat quis, pellentesque luctus erat. Praesent vel tincidunt elit.")
+}