import { TabWidget, AboutSlint, Button, VerticalBox, ListView, CheckBox, ScrollView, HorizontalBox, TextEdit, GridBox, } from "std-widgets.slint"; export struct SItem { name: string, checked: bool, } component GoodListItem inherits Rectangle { in-out property item; background: #ffffff10; border-radius: 8pt; border-width: 10pt; HorizontalBox { check := CheckBox { checked: root.item.checked; toggled => { // TODO } } Text { opacity: (root.item.checked ? 0.5 : 1.0); font-size: 12pt; text: root.item.name; } } input := TouchArea { clicked => { root.item.checked = !root.item.checked; } } } component GoodsList { in property <[SItem]> items; ListView { for item in items: VerticalLayout { GoodListItem { item: item; } Rectangle { height: 4pt; } } } } component GoodButtons inherits ScrollView { in property <[string]> favorites: ["Mjölk", "Ost", "Ägg", "Bullens", "Oboy", "Mjöl", "Havregryn", "KrosTom"]; in property button-width: 100; in property button-height: 60; in property button-spacing: 10; property count-x: floor(root.width / 1pt / (button-width + button-spacing)); property count-y: ceil(favorites.length / count-x); viewport-height: (count-y * (button-height + button-spacing)) * 1pt; for item[idx] in favorites: Button { x: floor(mod(idx, count-x)) * (root.button-width + root.button-spacing) * 1pt; y: floor(idx / count-x) * (root.button-height + root.button-spacing) * 1pt; width: root.button-width * 1pt; height: root.button-height * 1pt; text: item; } } component AddView inherits VerticalBox { in property <[SItem]> list; goods := GoodsList { items <=> list; } HorizontalLayout { height: 50pt; input := TextEdit { } Rectangle { width: 4pt; // spacing } Button { width: self.height; text: "+"; // clicked => { // goods.items[goods.items.length] = input.text; // } } } GoodButtons { } } component ShopView inherits VerticalBox { in property <[SItem]> list; goods := GoodsList { items <=> list; } Button { text: "I am done hehe"; } } export component App inherits Window { in property <[SItem]> list: [ { name: "Test 1", checked: true }, { name: "Test 2", checked: false }, { name: "Test 3", checked: false }, ]; TabWidget { Tab { title: "Add"; AddView { list <=> list; } } Tab { title: "Shop"; ShopView { list <=> list; } } } }