From 33c84b67b46667474058c7d07898be2cd470929b Mon Sep 17 00:00:00 2001 From: Justyna Hudziak Date: Thu, 11 Jul 2024 12:32:25 +0200 Subject: [PATCH] weather-demo: initial commit --- .github/workflows/wasm_demos.yaml | 6 + .reuse/dep5 | 24 + Cargo.toml | 1 + examples/README.md | 12 + examples/weather-demo/Cargo.toml | 67 ++ examples/weather-demo/README.md | 77 +++ .../android-res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3925 bytes .../android-res/mipmap-ldpi/ic_launcher.png | Bin 0 -> 1339 bytes .../android-res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2300 bytes .../android-res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6111 bytes .../android-res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12162 bytes .../mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 19507 bytes examples/weather-demo/build.rs | 10 + .../weather-demo/docs/img/android-preview.png | Bin 0 -> 189186 bytes .../weather-demo/docs/img/desktop-preview.png | Bin 0 -> 89291 bytes examples/weather-demo/src/app_main.rs | 83 +++ examples/weather-demo/src/lib.rs | 90 +++ examples/weather-demo/src/main.rs | 30 + .../src/weather/dummyweather.json | 620 ++++++++++++++++++ .../src/weather/dummyweathercontroller.rs | 93 +++ examples/weather-demo/src/weather/mod.rs | 21 + .../src/weather/openweathercontroller.rs | 417 ++++++++++++ examples/weather-demo/src/weather/utils.rs | 12 + .../src/weather/weathercontroller.rs | 115 ++++ .../src/weather/weatherdisplaycontroller.rs | 472 +++++++++++++ examples/weather-demo/ui/about-box.slint | 90 +++ .../weather-demo/ui/assets/felgo-logo.svg | 24 + .../ui/assets/icons/arrow-down.svg | 1 + .../weather-demo/ui/assets/icons/arrow-up.svg | 1 + .../weather-demo/ui/assets/icons/plus.svg | 1 + .../weather-demo/ui/assets/icons/refresh.svg | 1 + .../weather-demo/ui/assets/icons/search.svg | 1 + .../weather-demo/ui/assets/icons/trash.svg | 1 + .../weather-demo/ui/assets/icons/xmark.svg | 1 + .../ui/assets/weathericons-font.ttf | Bin 0 -> 99564 bytes examples/weather-demo/ui/city_weather.slint | 218 ++++++ .../weather-demo/ui/city_weather_tile.slint | 108 +++ .../weather-demo/ui/controls/busy-layer.slint | 50 ++ .../weather-demo/ui/controls/generic.slint | 123 ++++ .../weather-demo/ui/controls/stackview.slint | 136 ++++ .../weather-demo/ui/controls/weather.slint | 158 +++++ .../ui/expanded_city_weather_tile.slint | 285 ++++++++ .../weather-demo/ui/forecast_with_graph.slint | 128 ++++ .../weather-demo/ui/location_datatypes.slint | 17 + .../weather-demo/ui/location_search.slint | 68 ++ examples/weather-demo/ui/main.slint | 195 ++++++ examples/weather-demo/ui/page-base.slint | 8 + examples/weather-demo/ui/style/styles.slint | 34 + examples/weather-demo/ui/ui_utils.slint | 30 + .../weather-demo/ui/weather_datatypes.slint | 57 ++ examples/weather-demo/wasm/index.html | 38 ++ 51 files changed, 3924 insertions(+) create mode 100644 examples/weather-demo/Cargo.toml create mode 100644 examples/weather-demo/README.md create mode 100644 examples/weather-demo/android-res/mipmap-hdpi/ic_launcher.png create mode 100644 examples/weather-demo/android-res/mipmap-ldpi/ic_launcher.png create mode 100644 examples/weather-demo/android-res/mipmap-mdpi/ic_launcher.png create mode 100644 examples/weather-demo/android-res/mipmap-xhdpi/ic_launcher.png create mode 100644 examples/weather-demo/android-res/mipmap-xxhdpi/ic_launcher.png create mode 100644 examples/weather-demo/android-res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 examples/weather-demo/build.rs create mode 100644 examples/weather-demo/docs/img/android-preview.png create mode 100644 examples/weather-demo/docs/img/desktop-preview.png create mode 100644 examples/weather-demo/src/app_main.rs create mode 100644 examples/weather-demo/src/lib.rs create mode 100644 examples/weather-demo/src/main.rs create mode 100644 examples/weather-demo/src/weather/dummyweather.json create mode 100644 examples/weather-demo/src/weather/dummyweathercontroller.rs create mode 100644 examples/weather-demo/src/weather/mod.rs create mode 100644 examples/weather-demo/src/weather/openweathercontroller.rs create mode 100644 examples/weather-demo/src/weather/utils.rs create mode 100644 examples/weather-demo/src/weather/weathercontroller.rs create mode 100644 examples/weather-demo/src/weather/weatherdisplaycontroller.rs create mode 100644 examples/weather-demo/ui/about-box.slint create mode 100644 examples/weather-demo/ui/assets/felgo-logo.svg create mode 100644 examples/weather-demo/ui/assets/icons/arrow-down.svg create mode 100644 examples/weather-demo/ui/assets/icons/arrow-up.svg create mode 100644 examples/weather-demo/ui/assets/icons/plus.svg create mode 100644 examples/weather-demo/ui/assets/icons/refresh.svg create mode 100644 examples/weather-demo/ui/assets/icons/search.svg create mode 100644 examples/weather-demo/ui/assets/icons/trash.svg create mode 100644 examples/weather-demo/ui/assets/icons/xmark.svg create mode 100644 examples/weather-demo/ui/assets/weathericons-font.ttf create mode 100644 examples/weather-demo/ui/city_weather.slint create mode 100644 examples/weather-demo/ui/city_weather_tile.slint create mode 100644 examples/weather-demo/ui/controls/busy-layer.slint create mode 100644 examples/weather-demo/ui/controls/generic.slint create mode 100644 examples/weather-demo/ui/controls/stackview.slint create mode 100644 examples/weather-demo/ui/controls/weather.slint create mode 100644 examples/weather-demo/ui/expanded_city_weather_tile.slint create mode 100644 examples/weather-demo/ui/forecast_with_graph.slint create mode 100644 examples/weather-demo/ui/location_datatypes.slint create mode 100644 examples/weather-demo/ui/location_search.slint create mode 100644 examples/weather-demo/ui/main.slint create mode 100644 examples/weather-demo/ui/page-base.slint create mode 100644 examples/weather-demo/ui/style/styles.slint create mode 100644 examples/weather-demo/ui/ui_utils.slint create mode 100644 examples/weather-demo/ui/weather_datatypes.slint create mode 100644 examples/weather-demo/wasm/index.html diff --git a/.github/workflows/wasm_demos.yaml b/.github/workflows/wasm_demos.yaml index 3ba803198..0bc426f68 100644 --- a/.github/workflows/wasm_demos.yaml +++ b/.github/workflows/wasm_demos.yaml @@ -58,6 +58,11 @@ jobs: sed -i "s/#wasm# //" Cargo.toml wasm-pack build --release --target web --no-default-features --features slint/default,chrono working-directory: examples/energy-monitor + - name: Weather Demo example WASM build + run: | + sed -i "s/#wasm# //" Cargo.toml + wasm-pack build --release --target web --no-default-features --features slint/default,chrono + working-directory: examples/weather-demo - name: "Upload Demo Artifacts" if: ${{ inputs.build_artifacts }} uses: actions/upload-artifact@v4 @@ -75,6 +80,7 @@ jobs: examples/plotter/ examples/opengl_underlay/ examples/energy-monitor/ + examples/weather-demo/ !/**/.gitignore - name: Clean cache # Otherwise the cache is much too big run: | diff --git a/.reuse/dep5 b/.reuse/dep5 index 3cf7d437f..845265458 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -127,3 +127,27 @@ License: CC-BY-4.0 Files: examples/printerdemo_mcu/zephyr/VERSION Copyright: Copyright © SixtyFPS GmbH License: MIT + +Files: examples/weather-demo/wasm/index.html +Copyright: Copyright © SixtyFPS GmbH +License: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0 + +Files: examples/weather-demo/docs/*.png +Copyright: Copyright © SixtyFPS GmbH +License: MIT + +Files: examples/weather-demo/ui/assets/icons/*.svg +Copyright: Fontawesome project +License: CC-BY-4.0 + +Files: examples/weather-demo/ui/assets/weathericons-font.ttf +Copyright: Weather Icons +License: OFL-1.1 + +Files: examples/weather-demo/android-res/*/ic_launcher.png +Copyright: Copyright © Felgo GmbH +License: CC-BY-ND-4.0 + +Files: examples/weather-demo/ui/assets/felgo-logo.svg +Copyright: Copyright © Felgo GmbH +License: CC-BY-ND-4.0 diff --git a/Cargo.toml b/Cargo.toml index cae9e799d..6cea0e3f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,6 +32,7 @@ members = [ 'examples/energy-monitor', 'examples/mcu-board-support', 'examples/uefi-demo', + 'examples/weather-demo', 'helper_crates/const-field-offset', 'helper_crates/vtable', 'helper_crates/vtable/macro', diff --git a/examples/README.md b/examples/README.md index 3a7457389..2fa739405 100644 --- a/examples/README.md +++ b/examples/README.md @@ -176,6 +176,18 @@ Our implementations of the ["7GUIs"](https://7guis.github.io/7guis/) Tasks. ![Composition of 7GUIs Screenshots](https://user-images.githubusercontent.com/22800467/169002497-5b90e63b-5717-4290-8ac7-c618d9e2a4f1.png "7GUIs") +### [`weather-demo`](./weather-demo) + +A simple, cross-platform (Desktop, Android, Wasm) weather application using real weather data from the [OpenWeather](https://openweathermap.org/) API. + +| `.slint` Design | Rust Source (Desktop) | Rust Source (Android / Wasm) | Online wasm Preview | Open in SlintPad | +| --- | --- | --- | --- | --- | +| [`main.slint`](./weather-demo/ui/main.slint) | [`main.rs`](./weather-demo/src/main.rs) | [`lib.rs`](./weather-demo/src/lib.rs) | [Online simulation](https://slint.dev/snapshots/master/demos/weather-demo/) | [Preview in Online Code Editor](https://slint.dev/snapshots/master/editor?load_url=https://raw.githubusercontent.com/slint-ui/slint/master/examples/weather-demo/ui/main.slint) | + +![Screenshot of the Weather Demo Desktop](./weather-demo/docs/img/desktop-preview.png "Weather Demo Desktop") + +![Screenshot of the Weather Demo Desktop](./weather-demo/docs/img/android-preview.png "Weather Demo Android") + ### External examples * [Cargo UI](https://github.com/slint-ui/cargo-ui): A rust application that makes use of threads in the background. diff --git a/examples/weather-demo/Cargo.toml b/examples/weather-demo/Cargo.toml new file mode 100644 index 000000000..456b3cda0 --- /dev/null +++ b/examples/weather-demo/Cargo.toml @@ -0,0 +1,67 @@ +# Copyright © SixtyFPS GmbH +# SPDX-License-Identifier: MIT + +[package] +name = "rusty-weather" +version = "1.7.0" +authors = ["FELGO GmbH "] +edition = "2021" +build = "build.rs" +publish = false +license = "MIT" + +[dependencies] +async-std = "1.12.0" +chrono = { version = "0.4.38", optional = true, default-features = false, features = ["clock"] } +directories = "5.0.1" +log = "0.4.21" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0.115" +slint = { path = "../../api/rs/slint", features = [ "backend-android-activity-06" ] } + +[target.'cfg(all(not(target_arch = "wasm32"), not(target_os = "android")))'.dependencies] +env_logger = "0.11.3" + +[target.'cfg(target_os = "android")'.dependencies] +android_logger = "0.14.1" +openssl = { version = "0.10", features = ["vendored"] } + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +openweather_sdk = "0.1.8" +tokio = "1.37.0" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +console_log = "1.0" +console_error_panic_hook = "0.1.7" +wasm-bindgen = "0.2" +wasm-bindgen-futures = "0.4" + +[build-dependencies] +slint-build = { path = "../../api/rs/build" } + +[features] +default = ["chrono"] + +# Android-activity / wasm support +[lib] +name="rusty_weather_lib" +crate-type = ["cdylib"] +path = "src/lib.rs" + +# Andoroid settings +# See more: https://github.com/rust-mobile/cargo-apk?tab=readme-ov-file#manifest +[package.metadata.android] +package = "dev.slint.examples.weatherdemo" +resources = "android-res" +build_targets = [ "aarch64-linux-android" ] + +[package.metadata.android.sdk] +min_sdk_version = 29 +target_sdk_version = 32 + +[package.metadata.android.application] +label = "Rusty Weather" +icon = "@mipmap/ic_launcher" + +[[package.metadata.android.uses_permission]] +name = "android.permission.INTERNET" diff --git a/examples/weather-demo/README.md b/examples/weather-demo/README.md new file mode 100644 index 000000000..cf4c5b3bb --- /dev/null +++ b/examples/weather-demo/README.md @@ -0,0 +1,77 @@ + + +# Rusty Weather + +Rusty Weather is a weather application made by [Felgo](https://felgo.com/). + +The application retrieves weather data from the [OpenWeather](https://openweathermap.org/) API to provide: +* Real-time weather data, +* 8-day forecasts data, +* Temperatures at particular times of the day, +* Daily rain amount and rain probability, +* UV index level, +* support for various locations around the globe. + + The project demonstrates how to write a cross-platform Rust GUI application using the [Slint](https://slint.dev/) toolkit. + It includes subjects like: + * responsive layouts and adaptions for different screen sizes and orientations, + * providing fully customized look and feel with custom widgets, + * integrating Slint code with the Rust backend code, + * using `async` features with a Slint-based application and combining it with the Tokio runtime. + +
+

+ + +

+ +## Weather data +To enable real weather data from the [OpenWeather](https://openweathermap.org/) API, you must provide the `RUSTY_WEATHER_API_KEY` environment variable with your API key at build time. The [OpenCall API](https://openweathermap.org/price#onecall) subscription is required. + +If you do not provide the key, the application loads the dummy data instead. + +**Note:** You cannot use real weather data for the WebAssembly target. + +# Supported platforms + +## Desktop +The application runs on all desktop platforms (Windows, Linux and macOS). + +To start the application, execute: + +``` +cargo run +``` + +## Android +To be able to compile the application for Android, you must follow an initial setup. The instruction is available in [Slint's documentation](https://snapshots.slint.dev/master/docs/rust/slint/android/#building-and-deploying). + +***Note:*** To build `openssl` for Android, you must ensure that the proper development libraries are available in the system and provided in the `PATH` variable. + +To start the application, execute: + +``` +cargo apk run --lib +``` + +## WebAssembly +It is also possible to embed the application in a web page. You need to install the `wasm-pack` crate for this. + +``` +cargo install wasm-pack +``` + +To build the application, execute: + +``` +wasm-pack build --target web --out-dir /pkg +``` + +To run locally: + +``` +cp /wasm/index.html / # you can also provide your HTML file +cd & python3 -m http.server +``` + +Now, you can access the application at http://localhost:8000/. diff --git a/examples/weather-demo/android-res/mipmap-hdpi/ic_launcher.png b/examples/weather-demo/android-res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..61901196006fe0fd238c4880b056f309ec27803a GIT binary patch literal 3925 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 literal 0 HcmV?d00001 diff --git a/examples/weather-demo/android-res/mipmap-ldpi/ic_launcher.png b/examples/weather-demo/android-res/mipmap-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..054e396361be7cb0dac690d8961d52d6672de390 GIT binary patch literal 1339 zcmV-B1;qM^P)8v@{+V=joZQHhO+qP}nHrE=hy`!YxKgs0OslQH7)^{dJ>AZXI>rx8< zNB_yt z-1lR=bk@8VHB9bI2&xJSZW#qtPYjv501h`ISq0d75PQ8MFK16vHoMWeHj=wRz&i0^ z0}(|Y{c&OI$>h#u^X4C8RCFKkh;30Kg1HW@VfPD(;EU?eQ1=N`w9GnEGEo)O6E4^$ zwM6Qrz<2K%@PwqejoT~Y^m{?92!U(YdxBGjy`FCH`$d{HY{$B-#(&QIdhWCSDdVfkpjsUD6Wc-?~WOg`XH4(RjA|HZkny=(`#4T^o1zt8W=Ox~PO4Hy9;wq$=< z2$=L(f6_P;B_yDC$10xM>`Dq+&F98H_GA0^ZeZv4ujS!!yD_vRkLP#!osD{QqGdb| z;!Vyh@eN=wCVG$o5kW<`WW%yWmX z$M0us&IMcarB&S6RUvL%ycJ;##wyA@;}HdaF{1Df2IfovQ98C<#)gHz@=?{gd^4wi zI%PNQIG8K88%S=umbhrsGT^ukdhyi$qZw5+g<<*sf@szi5xA%59$mlTx)HYlf}(8j z?%gOMEldMHFDyyBIcRtp`-~`~If%fz-Ew$!j{s($!~S1f!B?~UN1r49GJKDG2 zqy?*ke);XWW4pmNE)I>qMy-(HohS47c8iI}3~K`GcFkdMVSC3c7nJD6K0?!|>0C)j)N z8X{Naw^@sDFR?}tB;r<^(168>_B{B@bm|gG)&#zoK9|4dEOEAG!Qf9oa0bAH`AazC z{l8XQ#JD+&IrGE6z0C*$yzKi`MR;q{OvXL4goB55VPs)P+60CbfdaE@>Un?49G>~B zoZ3W)&l9-mK(!em!lZ@ExcIYiHgI-$H+At`ImdlUKsiWvG9wj0HEUL61qJvJ|IRLy z2deU%2pigV1$76i`axG5B3a*#Qru>WX@8%HdEL8eJKMFSKiCgm*}r~c#|zEBYo<8U x+}!sgK)gq|_!tpQzn-%eAwqe|d5Rop_zz1bnEw@%08an_002ovPDHLkV1jh2gZ=;j literal 0 HcmV?d00001 diff --git a/examples/weather-demo/android-res/mipmap-mdpi/ic_launcher.png b/examples/weather-demo/android-res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5032804635f7d90c849583d9b6d2f0a1c385530d GIT binary patch literal 2300 zcmVwQX~Z-0$A5t~&MI)2G(xbDl+Q z()~PzWM8=S>%NSph$yfB?Wok|hKQ7wKv*)8gnTLp{e)-^gno>C)Eo#QK0w}=GzCK5 zYYN;)ysII`@XsamKAVr|UiLld-r`x}xyb@@At!RX@8hNj#3i90$o>DKGFtDCN^3eA znbHW6$w*QIM0|#PYV%10gnv8(!aqVj6oh?X^FH$4bc@h;ZQfysae9s5eMG*W?)Q<+ z$Mh`wnV$*Bg`CKZ9HTO3-A~SH=3{XnD!r*YDzy<<0KozXQ-Fc@^Z-rX6p+LM(2-op z84=qi+S`0IDy5GN+CiR>@-jfm^8oVF1IU@&UD25>4SIlx-~r}s9=8w%kh>KS?QH^wZDjZ~LL4GO zQS7_vW8q85^(4#0nLOM3h~d-6A;4=0Ft38Pl~}~Dax0;C^IdR!Z4@MaR;z?1;auG5 z;GTc>$yEeoQ9za*K=5s3`c80&cy3S<1h?D)!L7H#*Sv$&O!FD%^5Jajm=7=F)dHd@ zAcF?fDmb47z7jlw1$^B*Sc!6RzHOWjuHo>aD>+B80JaK#L*jJ>MvlkGJmCzvVXgU114rPqRFq zeHGx>0`v$h)g$7)Q()%oU#W*%_9^Sp_KKN=@t$45&@#E|f@VC+o_)AG9eA`zG zp>l8AKmW0)5Z`~RC0{Y&2`+D#c_wcKGy}P-01FxehkYjGoy7Sk4#KvMaLtkd zxfqZo2F)u$(9#O%f#1&?4qKOf1!ZY#-9f8E@&YkNvyI#D=aA@~fU`}XXaXT_k|&(y zRY0x`$Zn>A^G4`f>TB6`uzOX4kVIJuNgDS$JX}=>k5}hH&iLnXRpRWhdtt%+-+?C` z53=>;gh+WuaoRR!d2|*5(RuzrECnE9C7K;02zm2Je9-ine^4_%aLN-nHeE?Ypx`(1 zWhBMN z&%YVM@cp4)d=5>JgFM0HML>ZJ$h8OUh$lznz*gMf+gE!80S|mo^R{(!3YjwNSJv!r zS@9JJNo!V1KX%0)aK6kDJ9i}EbKI~IzaxHLI)d+aM|pBacMK@RfIJ$otB{GU_miLw z9>O0(INmr61N`%TYK^rl_%1})%l^=)WzcV!dD9i_Jq5vSiPk-n>)(NBeamq9Tmd55fRTl3$4wrLn z+BpVFrab}iInz;EKdc0oZxL7lMY96#{1)I5F|-;)wt#LZ`K>-SR8_(+tL8y> zZ{KAF>^y!B{ylOD{Iq&LB;>V1G(`w;M|pB4cNJhE%jAo51pHI#8%1?+ZbJwJcYYg= z9GL~@I(y(sUGxEP>|7@dUA_yxSvDJDxV&^N&;tr+K#O3j!9yZ(cE&Fn4#EDja5b-^ z=epqUW0qJh*|G{4_yFUo}5*H zhXR};=x4SX0}A}G=VTjP%WK8HlgdxZdsILv1{8?_w{wVEk?)q)!SeNm);_(K7kxbc zbKFwpN3P@?TRK|?w9){jr$UJ2NpIPI^Sl|l&TYOf z0TVZf0OeUC1IlLy22g;AU?GC_3Bd${R3Y{r>9`kiTe~5+}%++(kgC7~moL z)}neh^6K<8*X0oZy=I9Jmz2tY3OhiLFoYzO`eFO=bJsLr!Jgyb*2E>`E&|H*KVT6K zA^)mb3hmv!*F^qwXE*$EM*u<4^s-yd=${%a%gumA= z1y3oL7m&LMC>H}f#2AAS-yb{|#;)CW#aH8OXAcYw?1pa*nxjcG%C&&Fa=$g;9Ab`f zm$X0}j{SbjB6w{4@=Ire0Plm(^@E#BD{;aPXdba%Q(Ng5wnAI3{HUaRNTOMsW_g zk~88WdFy}npaJ7bn4>smIisu@awJ!BcJYgrB!SLE_3Q>Z;hyRn19BlJawA8?CHXIX W5-B#7%*-SJ0000dtf0tf9P<19!5+H4Cq2je zn17#q{o^x#xV`eb^Ko{ty?)W%OpiLSp1x>1EvMl$$uri7)FZV>HBwp8eR*|KSx=u< zR;0W^6oZ#$==%dIgo;qg!dN2=clVeO{mZ4cQk}1qu>6%4jpiH=@Qf|KiV8Jz4a@{ zv(SN39Pe_4@%k6PcNhBIAoTI(@V@9X(sW;tHH7++D*P>}kW?g%fp+leahF zOZG;18<&E2N{P|urKO5cjnoK*5NSl3jOsu^%svRihpyAV3k&1TFU83&=Xe?&NMG(A z=7!7P@nWz8fWQnO4K>C;Y$ks!7eWP~iqFSfT%+LnIQAYTp)8#%{tOZW$U-aL2~5^7 zH(dQ*aJ6+jNt{se{n6@gzZZnSFXlJYA!MK#SRJ4Opf1n>uy_bM0LH~Of{?3Tb`p12 zy!hto&(vn10sy)CxdT)PqWDzLd6;vxEq=9s=y;3|T=BO#_k`d5K0Vp)0EkvUGe26*%^U3^v*3q=;+8bMrq-0Kl^CIG)b5A&|ZsI}t(ZpdW) zYpzdEvN}Ko!25vR0igE)9z(hl%)Nlgb6)Mb_$o9GQWZaK2B0@$5kezj4-mz-10co8 z=2ypq<4tz7y2=d~;VA$J?(G5qe$O_KG#H$*8D%a`sw?UgblbEoZEnj zC_Y1NbKq*79dE82&%;e&viT7Y5cMLX3pfC{@Ji@{y?_g-XL@XtWhwxroIHNwm!WnC zSo0swt^OPvpbOSNI-d8%_dh<%jaUED>W4sgfE~a^U68aFB!mzzFjMp1Aom)h_=GlJ z4!|t_ed9+3090EPpP=Tby_f%L=f=++{m~A=yb=QQN{D@A7o@=sK?Qz0y6-{D@=ESy(cKD zz;?kCH(cey)z8%GHv)ij9e~<sQJ%(KpFvLIDp|i-UU79fAY-%KCbM29x<-{gEgPi`|4%zeJE&Y9G- zAK+dfN77eaisI?i@;$jrkUu{k|C(Nf$U9u3rptdT-N#ocGTR*a=EFB_^UZKXzg>Dn z`MCrj)dG+v0hqHu0ucScurJU+U}HD~K2|&r$2SiJIznwd|H!uxcXurtEE}t=^Tx6x zcfDHk^^=cz{L}(SD%cG0f=TS%MeNK33L$BxfBI0M`0BG9``rkZ;K(tUQ&Aq z;{Ll*nkyn+13?${s_7awU7E>9jORhd&n!8D76<_JfdME8nLLteOHqdDXhH*mYpjew z&IA$xaACuSFS7YIfGEV@_aK{UlBwBVW9i8-Y`m0=(Juj{ms%M>0J0fC;5e%2X#kje zfguyvd^SUsB0Yfn7xc<>KHap%rN$KfBZaQL^spS}vnO=T zTSiiE-D&!P>P50~;_0E$!wSRd#UN(p|F z0f>#60RTf#8tF1MWoI@hlfv#J01xQ^I5$z!cv)`bq@y>VjpwPy9Q|4V`7Dn9O90Y> z1JFRoH5}53e!vh+bCgk`utN1p(2_Mzhk@RXgG6ce*UI`C{Yc7CT?3`3yjp z0Wu2&ge=1$T{^wE=zHrCIdUCc>yX4VvxHy*VE|Ao#AZv$QWHJQg{ZsSh`gI#>-}zn z`F!3ljo0jY*{6JM^eX_~Kmgfnz77JLPm<**jr5t)rP%Yr+kq{iIQ;Su{A~O*B&jk) z>J@}=GRj-`H8$T?DB|y0E{qo-c+7P`O}O8M2bcZ{7rLT>?og~*|0kqr%vWOb4Mz@! z=x1F9P~0;EiWL9_!PJl$04teZ)Pa}Y6JVIH;}(3aY9>L@lq17l;rrue;$%x2{2h^` zaCAKV0mP7r!dM{%Kq#5MZ|U;CQ5M~H<@KQ>40p{Q4K-$}fkEzch55Zc^9dIHq+)MR z0A6}fJ*fjA59tJi_}ultwwoD%()reSe6eIcQq)cHUs9OMQXFN$yYp6|W?>PA&76Rc zd)-F!gVp#X`uFUGcLVLWiq{u~s+HeW!-6b3y=}U@=@RA(03N&k%M4HeI7O~43-~W6 ztP-^U#lgIDW#LRqGCnefcCe!~M;3;x$WThxi49j*Ry;whnL7sPkmi%@49Ft@`jVqe z*OVUifj3+(XWhSIK4$;}D7%~iicI0v`vH%o41%uqHhjR?^*GlR5fsAdmPCAFG}UOX zuksx=0pZmvdYBt!^T(3Ws_d`;I@VZS`zyqba0NYLFmJZ_-gP@(78_4e8Q=wZuK<*& z5~O762MoXoAt!eojx?vzO-75Gj=_nxBr?ULqO8ZRS$~YdFic=%BPIQM;$&Rthz@H0 z!c~9e-b6;5ju^6JBLM_NzK2!f0N`OdhN(y%*vXypI}2B1=d(ks8Y{-g5WK5s zG1A2G1?w^h7m0zSQIw{M$Mj+Vl}mp>zccm`-)a$>r-zFFyLZGC}KvflQ+!9lcI-v@U}7Q@q?Oq7%~5Us9N@Y zRIUDwt`AJl^d4Rcov&) zEIU~w_SH6@0hCJsB$)-~OwjL^-&3#_ZBKjzzV-y1YfZtlRsTl9Xt(3&BApaJ(v5Fd z&xP0X6C8PI2+$b{w1-~GA|((^5JZ1R2(~@-S&V(~KD>GC8XJU~-|5Ogv&XE%j#m8GS4vFUqcdI-Q}%P7#s>{MGC$`=f$W~vUWVzZY*Wpx;l&-_fJ==4a|l z4ojLZjW?H`-~e(;y~uF_;Hk*elr72k4+IDn@1EnxsQc%X1Kqcfp>cY%4MKYa4mPJ@ zX#NVM$}!SVAaOB&D87|-I!cL2z-&8KVWWdM~5K#7MWAP5jyBm)HbPMUV-98IO@ zfpx#ION!py7^n1KYxkIU6)Z!N!*mhlQe$=I^L@ypWqrdH8!j3B%4Zuuq{R$OHi)+jMZpwK8Bz z${-D&H-Q>sFax9Qa#TIP1UY$YkVG{*Wt0ag1kBb*4`og*-cq~-^`5@~UDob4f<)I= zQVVJGtvJz~h@qoaAcPuoG)KRh=MAGJ?`#=BzQKIC%T<2q%+D^RYnjRb>jQm4L_8!t z1pdJ?6C?yyrpSs6(#>S*sh0R4Q6G-R`rjjgcGCl>S+haT(qWaDo98YGlqPgUztxULx;dyc~A_v2dEne!Ln zA{alN@d!;r>!tZ-)gxsrZ>W@n@y3!P%Z@(!ONGiW1E|wXl|If2w2J zDO{9`)I2e9u=#jPQ5`yWAI0mn3f4DcK(5hvS?@*7H%C6p3U-nOpoRcg9|qb0)DsQ} z3?j=q!=_)9(o=;>1se21nyN>1Q4|eg?1i zny|402?QZIpOr#N&zBLeGQLQt_!`YGQzD-S+5k2x02OuC0}6r%T#gt-MzI%Ps$PWy zn-g)QGb*SKlX4%JL@)wNQU>Ys)zg81**y*~J^E$DjINgxll^(buyyF(e;jYb@>63t zvcCdHx&rTK!-gLsD%UHgoL6B!mmkaXjB3gN`oI7b9R|P}RK6DH+T*!~YlQZj@u8Yo z$mGaD8b$K=rk9K3hB%b0`7IKuzRUEFq`KVDybEvW@|~sEloD`%paG$w;YWxmupsD- z&$)axM?RVFA<>mQ&$I!k46q+m5C)1&NGJVc#w^=hz4>hHtd;j8sgU;!Nd(}3^9vjR z{hTVZccWO`2Cz>Cx8`yLaG38>zG<>KX?MyXZhjZ z@|}QVj_#*FhKK^Mw%oA!`lwfBM@a!7&ocu6R0IRSKP08Ziw9iy!f(y-o#9$FKk;c~ zl-34JOBtlEPn_fc;BEXNV)E(&`o)i?Hjxe2ah*Rz_YqAB$D!sy_`;+GG<@{Zd=i__ zrgQY`0B{!Yl_?^MAiSs4jStqWu=Rmzp~}^WD)c&Da25f0d({F*1|59yeMrou^i}{8 z^Ih0+=mf6!`tp=oysvU4l}9f!#J!N&dh^+I5&3L9i2;lw0Q7+Yuo!|}x417bWmdKv zS&M_HY%P49w*;PCwuRv5Q|BW~m8v9az!xt1aJ|>W##SWIz9h{WAc_oUI;;TWgOwdN zpH$ToK$Qd_Gr>a=zo1kj2|`_y$mDI${xERLpjuno@O6Yy9|))N^V^z6_;LN$i8JT1 z=#dUAezXJkE`J8`V_b+HTZ-fSI~nGe^l z@k)cPWWaad-x=I!>)?qq7_sVEBo?{Y zc=m?PHvq^W?+L)BS%azxK$UvZ0Ky4Dzk`-AGD*LfJ{P|3F9GMeaU(A)TkBf)VknRB zrpRaWNtWlCyVm!$)wb^#LJD2V8xsKXS^*&Mdjhzm zfd&xzZ18|#IA`Jvdi?0=bLgvUL;GGNmU&Fk&#I{h1E{GZB3?@h0)sG?B+;Z<3?PY0 z&&;NF^!4@gnN7$EG+i}Zp=t+!dMhPZT&qmYS%MJqAe*iqnz9M~VObd-Ugl==S!}%W zn1Wsbn0Pq@Y;h*2#%wN2dJu7Cb@=Vf+1Rsf5&FaOlYTjKBeHD2xU7@;4sQpItB2*i z0#FYLfwO_c6t5XXY*{@jm*?VQ`>lZQ6#C2BOmClNmb=+_XXKLv0Q!WVsFvc|rLw_T znqo`qF>CGJ@L7M|y!G4YPs>kA6Vc8R047-gCJ6vK5Hh7S5aKBE7rTB9pZ(`2q}}(R zzpXb<+~BMx!r#F?0Sq2rkHHdvgrLNk;2c|%XwF~e{u3D=uFiTW0}jkbe_NlK_b3L6 zh&KVClu%D-L3l+;3RDKcn7u0B`fo^l*w#t_4zEIgTmM=56tb>rK54uFKo2SiEMqpP zeS@XUY7ekQyk$uMaA+m^+xpkiCnW$5>~RbrO8`(1SY{Bc%o-2;TW)py50;aA7ofkb zx6OTo{bJLVWCl#>0f5CN$pOL}bX>Jc(1hhR>TSn3x`tq}=kNIanwQYu)|)0YQpB@= zPV-d;OeO$X7Jv!$>Oqnd1Vb=nL^|p1lb7I!^DFUzDGQKBz2R%rkow2sW9n4fH};Op z4x4XzPTo5J7(kd|3?yY+R|O@t%#Gt`E}*}xC%g9}v&yR}J1jE*JqT8fIWtmdJe|I& zt=~ldm+2@XM{j%(08Z50AdUH4`;{g(Ae#X+s3+=7APiZ- zk{h}d()L3q&{x;GmvKVWg0x*ODsH+ZwW@6HgvHb7oVi!)G>w67( z%YowvFR9f>yzq4hi9F{LG-OgeR2fnr#5XDl2)&z}l%gvoiQ|8B4dUVFKhst={ zvUKAHj{j8d`QCn`^%Eh=W#Yh%E+?-4g&AuOP7b zQj)3!U~b%e%^{eh+%Mte*&8n#tpBO`JL|yBVY;{~DPK9r8Gy(DA*LpOu)a^2L9o)R zy?FoB4Y;$e+5W5O^B4dBj;iM__|Uok82(!OBHn75H(q!lf>cF20}x^W(!vr zX>)Hdf{;)$NpWQ^e0fe2{=DW{R5rC??vvf5F3f%6RqDxCt~sQ#rdInkeQMSw#Fe}7 zf9;nAjvO%*M16sKOU5GM*X%6k( zV77Xn9N$tbW&)~jQBvA7DY(R6vISlvao74WY)iZyHZrmv>89wcoxRg;@h&ZPR zpOL_PQt`DsnFOs&YiMpbhXIVM&HV%iWX+NukQYKBV)W{tD0ay+QKm66tqlj9UySRm zTZ8%f+ib$~9PVYJr|0yjR_jEdF|;-u!0?@R_u^n-<756zP}z~+G12(*R9hVyg_ zrr9S4^g(*mm~&BMxZIQH5@|*ffT7W_qZ|tI)s>_Mhj7Y8PITCZS8T{VK7K~ z^R4Nq-rDTX*FWR3_RA?T{|T&qg=Wz1u4!mE1sjsd%Y$o!dfSewD-Qa7y^~kYeI^v5z zJEAP}e~p9wESmjl+rjWgE1TasohZq!{1$fB%{MRiphN5uG!EjwE}$(Vw=@cnX(sNK3N0A+Z!D zX-dW}bZ(VW8~(YVtrG4YUn{g7DbHsAja``B4*Rkd&WNM);ylJD9ZVFAsy;#ndy4@i zc8Q&q-9pFMHE7ha?*%JQ=7+C5oZ0*0(r!qL4#qBmguy!G94bYe}kg%VTGDM_{ zVvxWvrPCih==#dTxxMn2H1h^;tO}y=Ey)?jCvWVwr`+xPk9PZtoHIDvgpQWJ*D5)Z zLq&#~(2{8g7Bg$c-_h~Bqo+^Bud5t?ote3B``sIjqL4SX)(>Wv)(<|eR(FnH05~mA z2Ly6N`s4yZ0)aR+=`(vQQ2Y=z0zu-CNGJeEF@-!NE6W4mdydbN%M*X5kmy<@H4B79 z0>z&=1oD;SL4kl*y2EO9cj&);YvW+nD0QS)UVQbPo6c??Ua8jhKC4y+_Js5T{(>rj z!20>d2}E#=Kb1=)OW5N~8&)AuQ$j=#QLhy;o>^54E% z-~a54x!_J1g(=yUE>CM?|J%jo!I8`3Wa+~Ku|)HZM`;s*97rHYAt?}(_dxAhfo5Wz zKqkC@E>2qu#PZ1U6?7>h_5IKN zf$=0P5%)lgBl0+4ef$%oK){JWs)PY!C2FS<%@}p%Y&MXk3q)*G!ay2aPkkon{Q?k3 z^*;-kKvBYU|05FU1W%$PccNu(7zG)*aOt((8_l*)s#Pmn%V;9MfJ&f9pRS`)h!QB| z@s-j?Okr9e_z^jQ@O&!B_{*3&i0XY%9GyNeNWk|p-?W5b^QClfXg%3SQ}ax6i1HlTAuNf z7bcGb60ta{2cqAiZUSS0pz4G`PHTO4cwuw@8KVRzXRKMeZ1Vhg-8REku#n{Ob!-n5 zlK_wMQXnyj<^7NpNR0I)6avC%X7KTtI3j&Gfo7#Z0i=+YhXrbqJ|s|YB!Mars9L!$ z(T~;U{$-;$*H7+vWpHn6eeW%cslO{JPypt#L@!VZjok}Et|cj?_Jd-S&&Ynv__0Zx z@#i&}s5*gaw&(i zR{CaH+!>z;o*YV8qZHyYrc(&ziM2L`W~r3r0x@Fj7UJkF0TgEX$qV;?u=knE#L*L& z7D$yaCz2;vae?~7rOo}X+!>=3KRL5~c)vx{pCQj;2;`)b7|D~R5GK$I5vgNR=$X6^ z(i7R_V?8$3N{ksP4LpZR9~4LRJ_t0=$oSE{>%it=AohU7^o9LTlrYC#ac7KDF23>J z&1bd_-ZZn0;tt0Wb!`Q4CT*l+BQe&A8fk>4616YXbgYjxmm?{4d>JHBJUL|o;qE+_ zF4;UQd6Mc;C(v>L31qk{?u@%rmbMP&S{r*`do+y-%Jze0_dTS{^7}4s2~`f%5)G2!ze^LNb9>wnimFd7_N9Hut_> z+CG@GCi>u<^*`UUKqyh3LOtw-_)Y5LViWa3st*dNA8KC8gb;19ibgq`xa7VM!BZEe z&%_DTbx0y;nq>)#D)he#DA1Y-v}Mk09h@uktKF+s(|(Qyn){$!9-Tr|#+*qHuHpm| zD<_bc$|#YfNLm{1adgQNJQc{&P-G z{s$&7z+7=>+?{gI=6erUxj<0HMmLulClL2R5V4H}GNO@$UI^&Kn#$9hDWr*&c?xK_ z>m1CZL`@Hzj+QQ1CprEFU=>OPa%bF~awiKEEC*fD2Q}Ce!Z>v>f#k8VC}j?oGAB(T zF`Z?72{N59bG+)*5o5c{!(;oT4PcMP@aWU9yNUdGJQr92)#go?#=`Pk=Vle z6q0=q(;2@rjRJ|OEN!fx(%kiAXL!qFo#B}$+ryim_>aA_fU7E7`~Q0fWuyfTojUz? z_uSXp-QC?eT{>VA(um!2?HB{$1hyDsU6WF9W{j~rk@NdM>#+R0<~cmG+*i4I*5~tc z?F~nSy}$mRSZg0@5&3jI2f?}I65XCK^M;{4blv^tF-!O|avu@{M=RqNKjM4Rx~ z%X#ZAMWG^-%KE!bsOzi{g+E&l*NaOqbKy{|TloVluYUqh*GxvgC+m^K_b9XejisY( z7YAL7C(U=~J|uhfW%hoA@MSKbG8q8H2LLi0h(nY?GC~-u#+>d_WPKr9SWZEqA>?OUWB6IFS+JShN+Ui6uQaYV)TJsr#rZ4<0 zvCslqqwvTdaJLpbxfbt9n zqH~@I+N-i2av@>e%mnEDMYC|aDN#eibl`q`d(tnF_^iXc##UXKGY3alD3zT@&-{9E z_hImG$vY2?1#}xcquj_UGyqaGWd*?_mi63)kcz>Y{ zpkGmG?;IKu2S!+)P!gW95OW@T=#rCWYxrXDXeo%C02HqPqLZvqJvtCyoo8KXhub{t zYh(-{M+>eRCI*xS$m&3o89*Emdyc~a(*HjH9_^t^28g+jb-#~2ab^J7lV_4*MKKev z07}pRWy%0)hzzl&qOGL2Z}re}v|h$Q(lY~y>K+H`ni80G>#N^)0-K^kPp0Z&1PoCqRkI+2i@EGFZ zONl#B7K2A{A#sJ?zR+sVhtk;2MTa0UF$XH1Z2{<))GrbtVG!}$hOeTVFbm(GQ|IB! z6^4`B^Bx9}p-hs!Y&Vi;CFMXOK=xdSLBuOECQC(@!dyt}oZm_mtfZ#pvdfAJ0gnxX;X`;TN190n}xm@A6Dhp=C*M%a@y zKeHTRzivR^7u^gRvCqRRS4+iZb04E*H!ML$t42xt%*+{Nrxp3kd{#0 znZU5OUEvV9=yhKynU4LN->ZJ!fI4>kH-1?;8Ikn8r4A9p76(VHx-u-Gix)k7!8AjL zCpdf+&|GAOFrta5Vh&^h$!I!B&yVp2V+!ek;mfdo<>%4WdcR&)h=ad13fG!bFm=gy z5l^n;GLl7t$i4-{0#YLB;g@T%bK~PcTR#R+1kUVn;ge;fkxZe^d^U~G8ZH(hIj|g_ zdVI5L3=V901pcgOfJ(s2aN?tK*Bt(b-waw20}Dg%f~dPLbCx;Q+JbDvD+K&~Kw z3iJy!K#uaEVfF@NRK6Qur3-eoML9tUl3A^7#Nj3>q06 zEnCUX(+VSE*Z|^rk6|n%5g=2VJPwe3nZuG)yYlPs^C@L`Yxjc$QKWo8e9>=AYYWrWS>m+JA~LziRU<_{4Zk&xkuq0heyvzC5?)~uExB~UCd zS>R!=Blmjv6BZ6ib`ndTNhUzWJpyEA+9W$b+=Wablfh$zGXlbkCnitBr6z)itX{m} ztRhd5(kKv_FOiI=5y8wa_C<%A?9`LKTh>M3h(y z0A=F4(?%mP_#(?7>3&Kq-KfZyNYD8Y`Q$3P(OyKTr!-!u?bb7H`gj9XLJf3I$Ajs6 zvctt;41C?T?FyiNLe6s^W-j=p%6T+Acb4l2Pm(gR|De27zcYYX(%b_Jg$$rl1yHF0 z5QB(hKx8lNWD`XVpihDj}l zM7-!l7*#|c9k~?GjGuy8%bv!j4gZLCy2%~8lF_ldTkShjuxs;!sP%js`O_=$)uLB1 zaL5W;oAU%fN;hQWQ#6}zWS{_Tz>@l(0tdsOyUkkBxK7S9dET$-`>I8X9IoWf@-5k2 zM^{^xic54J1EK;$9G)T@KrA2P5M|n(2pOzT#8>ZGSfg;}#rG@c;@tj3bhW6QNU0w# zwIpIBb*Cc;o>X~T2+~N&bW;+BsN*I0<)jL1UHv1R-urMMFTp`lYZwstx{-z=R3hK~ ztXRi=xK1By-uQWppF0AN=Fdai;5q_{pfmsqxEt$~N7MQLj97w>?eE6TR^$6`c479b zKgR?4E0E$eTrqGg>szc@Xo|rzLhLq^n0ee{pwQ+(MeGH^Rhd1M$>B^Y@fk!Oe4%m{ zCN29BysJKq>E18knHj|xFpO+J&n@n7Os3BTZeYng0BGqQhR?Fp@{%CiXM z803NkK^(1BJxE>gpWri9laQ5HOK|e!okQft{}#=|*d;%KM}7b9FXNeMCCJTFZ3xHU z*mo0haI`oyTyoXrk*hB5K%-57MvDM3CsHzFr34TY2gr0HruckMAX&~Cu?%rTS0J98 zDaour*qlf=CYwUnFQ=8FY4iW0Q?0QD93aXDi$&3-2z0eY;pomsFlFgaF>vS-D%Z&g zrDX;>?@tgVP#%>tY#CxH--&;TzJIIhuqw;yIEMJs6dWG=A}Mnp8K7(pj|dRGK!%7p zQKoZqw7TzJ`E^`wR(VH^R_r}iQ~=DQdy??Oni+_A z$%9m#Z<+9z;WS0h!t#R%kG;xb$?`CEUA61W;7CbxkWq;6WWNod@@{~#^(WrZi45s~ z*xB}v5hM;114&xR=OD%8sXackaB%B~fdec|^^zzY5~wj4^_yYjGIdDifH-g(OKHyF z5o9{LZFOBLj~ZeL_owh=($dvwWz>kj5)C%UcVR zl1X2x8Bf(&F3`r73@jlj5Z>Bui_VRZXa72&B>VFIbW|*S3ekDBEIcvUoW`Cc^9G@o zdHwjKI5vPhEOZ&*Sn?hXj{#7lcAydkkP+V`fC^c8$15`jB|cBAwe*v(OvXixpoIDT z)ityr`wxNjGP`TsPwGp#Oe`+ajc?!j-`KY9)7Y^33)r~kb7g-_LtLH3YE z)Ja}JH=L@v{BEUEqMJE*8UDI(2FB0N!-1`zK_`7}`Rm7N#SnDSsGMJbNU9#wI4JgV z+}_vW$JUT#30s2m2=FlXVE_>`t_lSZ{b2%RI1x*#g>c3JvW7DuH4O6gPh)kkWwGG@RM@D84o3H%Q3ypg%cCY(9n9KoVVN<~DL=#Y2|8MAy0-=dtv8 zByiMuu?bLP4-QmpIuOr?+%iN;`l&@Zoax!twPw$rrO}1#M>lBP!k6`8WsF=ckt?iP z^C`TqY8oxr`VgJZ-ouDJCBj^TK&Z!Gz2K%j)JrkHJ|F%!J_-NP=iomv3;r{;z=d_d z<-Newc2Wna1xJoI!M*cMEZ)$Ds=B@S#>_2vymF0dF;E#_3zt-y595+|51NwUapFAY z?7(^62GB+ZkQRqXa3MW2n0SeAbt8MppD@&ekJY@Q_7Ld~ue8S|jFuCAh`%jbj5yVJ zv{Z5?SgE9F3U7}RtY4k75tVBWV#~pk@ZUHI+`I_-1GeEOUAu7;r!QQ^fn(<|{k1pn z+@f9h$3h?aQ{RaG4GszmQO4}JzavOqS!dOj42}gL9l}Pl7qGHT28f3$utF$K4LU zAGk_DwH`Z<@eNIZ?X=;v&Xyh=s(5ZA=Qvzea4bs{+f zO(Itz4{1Vm#+2yBE&0<4s-)DBd( z=?OaN28hT~GMy+(PO1fvm^eUMcj8Ftq_l!1IPlv0;TJZjUv7@YQ_~9qc~ZJ=?aKhs z*P}U#Le@toY`})5V}YFI_dS%;?K^S~PtM(rD7CUL{Z<@@;0Rk$S*dOX#}3aefXX-7 z05ZfOvUjT`h~%CTQ}{41o}N4bmz&ZEmf*e&+QP7{@l$wo1SP0u!f8}+nIyBX)Q`f} zmnJr%<>)yTR{o&l^0iKkTh)xn=av&h92lqTSxO$Z8H|gAqh~qiF{Jn~R7L<*DS)a8 zpfVF6JqH7%Lz>)d%rsS?+2>c!%vdHk(;wW6u&>W9MLOh9D5m&3yo zQlyb0Dc|{A%{rW}6b+lyH@i2fW2dXv! zD(U`2j`_l#AYuSzl9DKwh#%=gTtPizxklYm9b!k4XzoA4gM<-Yq%$WnLCOdK)PUU^ zKMS-41EiKGPVIRdkBz8B;&6|+Orqv=f-923)=y?^;rY%V#kh3!28Pz}L&C6H#15xx zG$L62DHn_%?nMTFX3unWORi%r*G1>?XlX`Dv;$Q)ngFR!7=+o}h?GO>U+Be0#?C>- z^6z5Wn)i|3D{FQ4Jf-0S_{A$D;3BXxgs_%IiqBt#^Gzo|Am8s=_Yj%lm(bz++A`5>N{S&67&1d-@CZZ_NV9ocJRv)em%-z?4NwIEq$tYa4irpYkL7*D$Odd#_ahx*obRo< z*7jFOBT!OU^HC{*!rWse3xPulpt#__-w}>~8#7LY!*}d%$CCps-Q12YqUTRyTt5hZ zTaI3T<6B8$aB*J(zB6ei5=MD>vTS#rLMJ&7cODOJn~VlXM|i`Fbb*WQP9+aB3nsj;qHtKlQlxsD;DfGMj^zTqj$p$kHTa`3}4HnhUK`Qn|{3 zG(hS^eUL+xqsikCX@Kx<0_fPT5B}}|QF!{rlqm#@&$t-30s4Rqpt5O58p#0CN+9R? z2l^iOzj+3Ka^uEP_z!(Zciw{mDqJ*_0P9MC2HM9<+ zSM1@T>rcgo;6F7T{^sESbeEbF@Z)Jy)%CG728AlC$mTjmHEys#((s4?880wHnUNRq ze<;0}RI&tzb`ElwL`UFCb2O?J79gD5r>EtR)KOmKj?_uC;6Nj16{62@AMbD@g~Hb( zbb;SEdj)^8qw_5M?SBKma(8{ruC~Tv?9w7cQQ?tU=$4(wT4^zvZWEXpG#nlYAnrm+ zyu9a?SzNIXADb`>GwQzu&xS#y|FdWiR#3S=cy2z@il~e)^!B*IpGHa;x)PU~m0Lyi zSjMke`6Kjsc{N`qK|Hz7ldt|3S19-S(;Zznd3Z5u*S;H`^@Ff{64q{&G# z2ge?=XqFOY4v!rmE)9?t(Me+EeHJN^oG6pNkpZQ($nDnce@X=c=-C08^_LHLelUh$Q(`At*9P}9dm?5vlSzqoOh##{kCRVkj@w zOT0`1JY`Bw0OB-CWxi>J#e#}he71lTKFWu|Giq?PiK>wv!&n%6YrY>yDANnvBo9*Q zVn4NT2QJX^z@NidvGWbMUR(|r{ai}@>1T{1DW}a)KePT1$s9*k5Ih_j86GVT(8fD) zAf8xj@%U-3=vyQ#%9=1KAhJsrdw3q)Q4Bq3%SKqU}F<7&SzY$&@QT}`wmw&e$? zTDdoHkzYS`5!X7q@aH}{DZe{SaP2&F3bVI%;D-yg!A1FC%&2+|62B)LA{MG_j>Dt@ zVj+yH^p0WDIg!UG1zDDVhfc&@DV>t-&rTeVvwH^^jkQSlo2k5S{U6};9NfHq6gN6= z!jHeq(MfiDkwW(Fqv!DRIa`oeP!CrT2Z&_cA0Ab#uA`NE>$p;{#w!O>CpqOdfaEe? zi@OnnNK1l9fGM5yP{|7TR(+Jf(NB%G5TFje+Hei?xHgW?1-KxTBHa(F`C+dSH zJh>KtED#ypOi#C%8yT~;VslZ2@wsUmapcT-z)_|X8aF7Uy}Ij7JW$?1;mqPXGCTy0 zp0yM+$u$}v?m!$OrwMkp>_j?=lk+4FPg*vc}d1!(y~`+vbZBSTG=}Bvl6i#7JWx<&eyn=nNveVv8H_cv&5qcK!{nzWxRH zJ5QqbM#zOcwA|q;)5gHeLFd3cB5{Cp8E*ij#Q`$Dpg}03_ijK+F7e@mHFL3ltJ-}? zi=@YX44^lY=g>HF`8u+SyYFp|4pS^-F=&{S1C3RU#IX#Z3JwvMnG?xwB#XgAVe9h~ zU%|dD|EPbvu?slA0lhy$F7%1{TM=L4F)A$KehUC4k5>SV4|X7n8!=a66`KQ?Vn;XN zs}pAtJpYZGEz#W%(zT@lSK870BQ%z6??9h|IujIQW`-gGl*|CKLBuLFJ!@GUiNo`? z@r!YCPon;9g)yWs_}f1V-1vRuKcTVb^^+PPuk1KX1Jqna8e;-PC+dR(NDd$p`bPR# zs@QZB>+6$e;`pwIfmZYPs#E^+`ZGY+CG`FXjkdSWA(HN0b~$q$yMh54pa3!{vqRJ~ zxvVVY4agLN=xfs^p?&*f!H+~Y6F_ec18^O^KSJZ^*-Nxgy&CD|UVF$g`KS^A;xCjX zx{;Y^-=4KH38=rTUXERxKdjzeOouH7(BVP=o#_1$8YeGY!6zoJMRH(!h6Ijg!jJ%v z@kx><%>t1HCf1xvpz!tGsnc-tKoo=L4*^hUoFITcK5-3FD!g*OV;YO89vz6pK{CIH zEC!BH_D7dB;ODcdfP>)%I6Q>q!SBC@-XEcH_{>H8%h*-O&;T)T^!+C}av(#dec1uB z%SBG~ZE~O+Z81H(bx9P^_Acz)SxIYPzYl;yqxINX^ig@L9Jch#R86Y61<(Wnh)x0@ z4^aXK!PLPRid3v8Z>bM*01|IIuAw!-v8%ZQ!b_~9g6hIdZbk} zp#Atc^!^BqMOzP|Pf@*m&pA9CpottHQ&K3C0TLnNKqZlF_9z|qi41*z z9Ku7Qd8`g$sYH=Fp-<=+=$RzKQ!Q6&_KM98QW9C~4`1EhOYiX$+QzZv&`JCwH4w8Z zIXJQi8j^8*%Yjk?0FeXH2fJl=A-fZq5Rv$LibX0ndWc@Tru7)^?FbF^p4q>0??z&| zSIBi51b~d0I8n@`aDYsR9D~Fm5|V9wZiPrC)Bi#1G-ob{nu_;wG#)&GY`SlmHpkI0 zaV|`NQWZd{93b;WB$-Mf#8nH6Z&ELb0cAQ=pHdG>ynAr1^Cm*$?#G!+*YJrM>ycRD z749c<8&Z!<^aRjA{lXqWs#aphTvdFQWUtyxm=a4oSg@_*9{fJj(DPuwShN-WO5GS} zbsl!_IS(43IGqD2fYeFggG#qvNMaBPj>N&SI+VQDCV-V*;ial! zZ78Y!9e>I1ge?c~K+Q_zRP~e?v-`~8Ar43eK*Wd$(EpcyAqR=e0*zhPFsG#}vy`fp zSh?@bJA4E2&`^#&ZDT7^tI5eVJVsd3;t+8Y2>@g;;p=9Em`UXTb-R#H&qDTXiua5h zHzO_Zu=5;J!e}=pZ)gcT*A&7?UgtV|?lJ~1-+_Kbb;u1$jLig@%g2p_j`jI1MwDy- zF^GiN$jg2XlwD52$|g6;B>jjQjhj18vfl+38fU5Pv2^cYd}h{0#8-Gsa7a8%akudq zu4A&mB>n)nAwt_QpKVAmTbas4lR@%0k@M`~<6 ziXSfBfrrPgM4DP-)YqQ@!;X7)8Z8kZIfRke@ooDuNj0s`29mwQZ3l=;yHR?j7b(>% z@!shhu)5_KPF=kE7qgPD-cbGc`OEmt_742(6bAr`I-b6_UI&V>**a6ADtmcNKg zur(7TQDVMi9NT3BYal6$&ZEmch%O@$RDb*b+Bt9S#*HWpPr0FUWaB`9bk3>NK84$T z1c!ECW0?uc=`9RpaC75q*ABHSH_rFpv*4NYpQ~Rx6qHqb00z_uN4y{IT+HCeuJLy7 z0oM%#*HXL4t*t5qErwl7OC$Rd+sooIjJ zTKn-bh9?2w{*EZISS$i(9DgE@&I|h77E>%5E|3#2fhJo&bc&r;c=3ySm%Fq1ARBJ{ ziw~D4K^_6V&^j~K$11z9ESb(mfQ!!vIg|(?BE)(B8cq!ZIIHwPDZbwXywM~9xYC_f zgBQQJb2->1bXRY@pO3fx&>fRSO3zecdZ31jaSlf24u7SRL>KL%e`a`cWI_~@+{rGb z5TpSH`v(dst( zC~25C-E8cbBK}nx+BZ2wZ_PMhMt|yr@<>lda!m=ced4N86DL zM1hRjPEZzN&`f$QfVbEf;mZs3Inc;(q-&bSfg_fIR*V3!S@2>}U9%^$gBQrpNR7$V z1{^@q_5)h_8DiN*$df1x0XJSSM~qMt;>Me^or~RRb=PJY4_6|ViO)45R|9?2FnjW4 z(ZC6~@tQeegqna&Og@`GnNN4V$wvHGe~9$Ou?(E9Ei_t;w#qW%^91zGbcDbK8==1G zm>Wij3D_{tt=_!SEvlc6g+%>?HM*0E$}s(-mj^Du2_rDUJNbNZ>(XQOyYzFb@>+{D2#2ya71vp^@2Af^!tj?b_`|jowDy&Zcs*cdZgpw)YbN5;& z2gDq)hXY2~4QwQDetzrXi>vc%o$=Ohm;=B>(uoj9qvhIDro{e(lL2Cj7$eq*Ibv@F zMbyyb#e5~7?0nKG=HFo|8|xvsV9m+OQ0K(4Lo5+f#5S`SBi2TE80drsvyabBciw$& zX6qnDHLx`I1D5siZb*)|8qYZqmvay!#0oJ(><~l5(g@4&KR3uvr}v?6$^ZZW07*qoM6N<$ Ef^Sn8BLDyZ literal 0 HcmV?d00001 diff --git a/examples/weather-demo/android-res/mipmap-xxxhdpi/ic_launcher.png b/examples/weather-demo/android-res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2d351e2ba0911ee3e68b64f06d22fa9b22aa70 GIT binary patch literal 19507 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 W^>uEj%o_0k0000 +// SPDX-License-Identifier: MIT + +use std::env; + +fn main() { + env::set_var("SLINT_ENABLE_EXPERIMENTAL_FEATURES", "true"); + + slint_build::compile("ui/main.slint").unwrap(); +} diff --git a/examples/weather-demo/docs/img/android-preview.png b/examples/weather-demo/docs/img/android-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f70c5f39cc6414c31b49582e1756c8c28b0424 GIT binary patch literal 189186 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%0Dajnnq(>Z@q`|PpR7do>I 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

^! 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%0D7zQ5dvv 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 +// SPDX-License-Identifier: MIT + +use std::sync::{Arc, Mutex}; + +use crate::ui::*; + +use crate::weather; +use weather::DummyWeatherController; +use weather::{WeatherControllerPointer, WeatherControllerSharedPointer, WeatherDisplayController}; + +#[cfg(not(target_arch = "wasm32"))] +use weather::OpenWeatherController; + +pub struct AppHandler { + weather_controller: WeatherControllerSharedPointer, + weather_display_controller: WeatherDisplayController, + window: Option, + support_add_city: bool, +} + +impl AppHandler { + pub fn new() -> Self { + #[cfg_attr(target_arch = "wasm32", allow(unused_mut))] + let mut support_add_city = false; + #[cfg_attr(target_arch = "wasm32", allow(unused_mut))] + let mut data_controller_opt: Option = None; + + #[cfg(not(target_arch = "wasm32"))] + { + if let Some(api_key) = std::option_env!("RUSTY_WEATHER_API_KEY") { + data_controller_opt = Some(Box::new(OpenWeatherController::new(api_key.into()))); + support_add_city = true; + } + } + + let data_controller = match data_controller_opt { + Some(data_contoller_some) => data_contoller_some, + None => { + log::info!("Weather API key not provided. Using dummy data."); + Box::new(DummyWeatherController::new()) + } + }; + let data_controller: WeatherControllerSharedPointer = Arc::new(Mutex::new(data_controller)); + + Self { + weather_controller: data_controller.clone(), + weather_display_controller: WeatherDisplayController::new(&data_controller), + window: None, + support_add_city, + } + } + + pub fn save(&self) { + log::debug!("Saving state"); + if let Err(e) = self.weather_controller.lock().unwrap().save() { + log::warn!("Error while saving state: {}", e) + } + } + + #[cfg_attr(not(target_os = "android"), allow(dead_code))] + pub fn reload(&self) { + log::debug!("Reloading state"); + if let Some(window) = &self.window { + self.weather_display_controller.refresh(window); // load new weather data + } else { + log::warn!("Cannot reload state, window not available."); + } + } + + pub fn initialize_ui(&mut self) { + let window = AppWindow::new().expect("Cannot create main window!"); + self.weather_display_controller.initialize_ui(&window, self.support_add_city); + + self.window = Some(window); + } + + pub fn run(&self) -> Result<(), slint::PlatformError> { + let window = self.window.as_ref().expect("Cannot access main window!"); + self.weather_display_controller.load(window); + window.run() + } +} diff --git a/examples/weather-demo/src/lib.rs b/examples/weather-demo/src/lib.rs new file mode 100644 index 000000000..cfa4f842d --- /dev/null +++ b/examples/weather-demo/src/lib.rs @@ -0,0 +1,90 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +#![cfg(any(target_os = "android", target_arch = "wasm32"))] + +pub mod ui { + slint::include_modules!(); +} + +mod app_main; +mod weather; + +use crate::app_main::AppHandler; + +// Android +#[cfg(target_os = "android")] +use { + crate::android_activity::{MainEvent, PollEvent}, + core::cell::RefCell, + slint::android::android_activity, + std::rc::Rc, +}; + +#[cfg(target_os = "android")] +#[no_mangle] +fn android_main(android_app: slint::android::AndroidApp) -> Result<(), slint::PlatformError> { + android_logger::init_once(android_logger::Config::default().with_max_level( + if cfg!(debug_assertions) { log::LevelFilter::Debug } else { log::LevelFilter::Info }, + )); + + let app_handler = Rc::new(RefCell::new(AppHandler::new())); + + // initialize android before creating main window + slint::android::init_with_event_listener(android_app, { + let app_handler = app_handler.clone(); + move |event| match event { + PollEvent::Main(main_event) => match main_event { + MainEvent::Start => { + app_handler.borrow().reload(); + } + MainEvent::Resume { .. } => { + app_handler.borrow().reload(); + } + MainEvent::SaveState { .. } => { + app_handler.borrow().save(); + } + _ => {} + }, + _ => {} + } + }) + .unwrap(); + + { + // create main window here + let mut app_handler = app_handler.borrow_mut(); + app_handler.initialize_ui(); + } + + let app_handler = app_handler.borrow(); + app_handler.run() +} + +// Wasm +#[cfg(target_arch = "wasm32")] +#[wasm_bindgen::prelude::wasm_bindgen(start)] +pub fn main() { + #[cfg(debug_assertions)] + console_error_panic_hook::set_once(); + + console_log::init_with_level(if cfg!(debug_assertions) { + log::Level::Debug + } else { + log::Level::Info + }) + .ok(); + + let mut app_handler = AppHandler::new(); + app_handler.initialize_ui(); + + let res = app_handler.run(); + app_handler.save(); + + match res { + Ok(()) => {} + Err(e) => { + log::error!("Runtime error: {}", e); + } + } +} diff --git a/examples/weather-demo/src/main.rs b/examples/weather-demo/src/main.rs new file mode 100644 index 000000000..e2cd88581 --- /dev/null +++ b/examples/weather-demo/src/main.rs @@ -0,0 +1,30 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +#![cfg(any(target_os = "linux", target_os = "windows", target_os = "macos"))] + +use crate::app_main::AppHandler; + +pub mod ui { + slint::include_modules!(); +} + +mod app_main; +mod weather; + +fn main() -> Result<(), slint::PlatformError> { + env_logger::Builder::default() + .filter_level(if cfg!(debug_assertions) { + log::LevelFilter::Debug + } else { + log::LevelFilter::Info + }) + .init(); + + let mut app_handler = AppHandler::new(); + app_handler.initialize_ui(); + + let res = app_handler.run(); + app_handler.save(); + res +} diff --git a/examples/weather-demo/src/weather/dummyweather.json b/examples/weather-demo/src/weather/dummyweather.json new file mode 100644 index 000000000..e11d729c3 --- /dev/null +++ b/examples/weather-demo/src/weather/dummyweather.json @@ -0,0 +1,620 @@ +[ + { + "city_data": { + "lat": 52.51703643798828, + "lon": 13.388859748840332, + "city_name": "Berlin" + }, + "weather_data": { + "current_data": { + "condition": "PartiallyCloudy", + "description": "broken clouds", + "current_temperature": 15.24, + "detailed_temperature": { + "min": 12.39, + "max": 19.27, + "morning": 14.01, + "day": 18.62, + "evening": 15.83, + "night": 13.8 + }, + "precipitation": { + "probability": 1, + "rain_volume": 2.77, + "snow_volume": 0 + }, + "uv_index": 2.3 + }, + "forecast_data": [ + { + "day_name": "d0", + "weather_data": { + "condition": "SunnyRainy", + "description": "moderate rain", + "current_temperature": 16.18, + "detailed_temperature": { + "min": 9.56, + "max": 17.94, + "morning": 10.37, + "day": 16.18, + "evening": 16.71, + "night": 12.45 + }, + "precipitation": { + "probability": 1, + "rain_volume": 2.77, + "snow_volume": 0 + }, + "uv_index": 3.82 + } + }, + { + "day_name": "d1", + "weather_data": { + "condition": "SunnyRainy", + "description": "moderate rain", + "current_temperature": 15.94, + "detailed_temperature": { + "min": 9.34, + "max": 18.96, + "morning": 10.31, + "day": 15.94, + "evening": 16.76, + "night": 12.56 + }, + "precipitation": { + "probability": 1, + "rain_volume": 2.87, + "snow_volume": 0 + }, + "uv_index": 3.82 + } + }, + { + "day_name": "d2", + "weather_data": { + "condition": "Cloudy", + "description": "broken clouds", + "current_temperature": 15.73, + "detailed_temperature": { + "min": 9.17, + "max": 17.9, + "morning": 10.65, + "day": 15.73, + "evening": 17.14, + "night": 12.34 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 5.16 + } + }, + { + "day_name": "d3", + "weather_data": { + "condition": "Cloudy", + "description": "broken clouds", + "current_temperature": 16.99, + "detailed_temperature": { + "min": 9.47, + "max": 17.69, + "morning": 10.72, + "day": 16.99, + "evening": 16.7, + "night": 14.37 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 5.6 + } + }, + { + "day_name": "d4", + "weather_data": { + "condition": "SunnyRainy", + "description": "light rain", + "current_temperature": 22.95, + "detailed_temperature": { + "min": 13.23, + "max": 22.95, + "morning": 15.19, + "day": 22.95, + "evening": 20.97, + "night": 17.48 + }, + "precipitation": { + "probability": 0.2, + "rain_volume": 0.15, + "snow_volume": 0 + }, + "uv_index": 5.97 + } + }, + { + "day_name": "d5", + "weather_data": { + "condition": "SunnyRainy", + "description": "light rain", + "current_temperature": 24.07, + "detailed_temperature": { + "min": 16.06, + "max": 24.85, + "morning": 18.61, + "day": 24.07, + "evening": 21.87, + "night": 17.92 + }, + "precipitation": { + "probability": 0.2, + "rain_volume": 0.19, + "snow_volume": 0 + }, + "uv_index": 6 + } + }, + { + "day_name": "d6", + "weather_data": { + "condition": "Cloudy", + "description": "overcast clouds", + "current_temperature": 23.27, + "detailed_temperature": { + "min": 14.73, + "max": 23.27, + "morning": 16.66, + "day": 23.27, + "evening": 22.33, + "night": 18.94 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 6 + } + }, + { + "day_name": "d7", + "weather_data": { + "condition": "SunnyRainy", + "description": "light rain", + "current_temperature": 25.15, + "detailed_temperature": { + "min": 16.69, + "max": 25.29, + "morning": 19.84, + "day": 25.15, + "evening": 24.47, + "night": 20.54 + }, + "precipitation": { + "probability": 0.87, + "rain_volume": 0.69, + "snow_volume": 0 + }, + "uv_index": 6 + } + } + ] + } + }, + { + "city_data": { + "lat": 48.20835494995117, + "lon": 16.37250328063965, + "city_name": "Vienna" + }, + "weather_data": { + "current_data": { + "condition": "Rainy", + "description": "light intensity shower rain", + "current_temperature": 17.33, + "detailed_temperature": { + "min": 15.84, + "max": 18.96, + "morning": 17.5, + "day": 17.33, + "evening": 16.89, + "night": 17.5 + }, + "precipitation": { + "probability": 1, + "rain_volume": 10.78, + "snow_volume": 0 + }, + "uv_index": 2.63 + }, + "forecast_data": [ + { + "day_name": "d0", + "weather_data": { + "condition": "SunnyRainy", + "description": "moderate rain", + "current_temperature": 17.74, + "detailed_temperature": { + "min": 15.84, + "max": 18.96, + "morning": 17.5, + "day": 17.74, + "evening": 16.89, + "night": 17.5 + }, + "precipitation": { + "probability": 1, + "rain_volume": 10.78, + "snow_volume": 0 + }, + "uv_index": 2.63 + } + }, + { + "day_name": "d1", + "weather_data": { + "condition": "Cloudy", + "description": "overcast clouds", + "current_temperature": 18.14, + "detailed_temperature": { + "min": 15.06, + "max": 20.2, + "morning": 15.76, + "day": 18.14, + "evening": 19.76, + "night": 16.07 + }, + "precipitation": { + "probability": 0.11, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 4.81 + } + }, + { + "day_name": "d2", + "weather_data": { + "condition": "SunnyRainy", + "description": "light rain", + "current_temperature": 12.23, + "detailed_temperature": { + "min": 12.08, + "max": 15.59, + "morning": 13.42, + "day": 12.23, + "evening": 13.86, + "night": 12.08 + }, + "precipitation": { + "probability": 1, + "rain_volume": 1.82, + "snow_volume": 0 + }, + "uv_index": 0.78 + } + }, + { + "day_name": "d3", + "weather_data": { + "condition": "SunnyRainy", + "description": "light rain", + "current_temperature": 18.83, + "detailed_temperature": { + "min": 11.93, + "max": 20.12, + "morning": 12.56, + "day": 18.83, + "evening": 19.76, + "night": 14.12 + }, + "precipitation": { + "probability": 1, + "rain_volume": 1.05, + "snow_volume": 0 + }, + "uv_index": 2.35 + } + }, + { + "day_name": "d4", + "weather_data": { + "condition": "MostlyCloudy", + "description": "scattered clouds", + "current_temperature": 21.13, + "detailed_temperature": { + "min": 11.73, + "max": 23.26, + "morning": 11.73, + "day": 21.13, + "evening": 23.24, + "night": 17.1 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 6.17 + } + }, + { + "day_name": "d5", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 23.55, + "detailed_temperature": { + "min": 14.71, + "max": 26, + "morning": 14.71, + "day": 23.55, + "evening": 25.7, + "night": 20.03 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 7 + } + }, + { + "day_name": "d6", + "weather_data": { + "condition": "SunnyRainy", + "description": "light rain", + "current_temperature": 21.59, + "detailed_temperature": { + "min": 16.28, + "max": 23.22, + "morning": 16.28, + "day": 21.59, + "evening": 22.76, + "night": 17.24 + }, + "precipitation": { + "probability": 0.38, + "rain_volume": 0.27, + "snow_volume": 0 + }, + "uv_index": 7 + } + }, + { + "day_name": "d7", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 24.89, + "detailed_temperature": { + "min": 14.89, + "max": 27.33, + "morning": 14.89, + "day": 24.89, + "evening": 27.33, + "night": 23.1 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 7 + } + } + ] + } + }, + { + "city_data": { + "lat": 25.774173736572266, + "lon": -80.19361877441406, + "city_name": "Miami" + }, + "weather_data": { + "current_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 20.14, + "detailed_temperature": { + "min": 20.14, + "max": 30.88, + "morning": 20.83, + "day": 30.88, + "evening": 26.41, + "night": 23.2 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 11.85 + }, + "forecast_data": [ + { + "day_name": "d0", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 30.88, + "detailed_temperature": { + "min": 20.14, + "max": 30.88, + "morning": 20.83, + "day": 30.88, + "evening": 26.41, + "night": 23.2 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 11.85 + } + }, + { + "day_name": "d1", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 28.94, + "detailed_temperature": { + "min": 21.56, + "max": 29.68, + "morning": 21.61, + "day": 28.94, + "evening": 26.24, + "night": 23.22 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 11.62 + } + }, + { + "day_name": "d2", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 29.32, + "detailed_temperature": { + "min": 21.09, + "max": 31.17, + "morning": 21.09, + "day": 29.32, + "evening": 26.99, + "night": 23.65 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 11.67 + } + }, + { + "day_name": "d3", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 27.11, + "detailed_temperature": { + "min": 21.26, + "max": 30.37, + "morning": 21.26, + "day": 27.11, + "evening": 28.03, + "night": 22.17 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 11.53 + } + }, + { + "day_name": "d4", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 25.7, + "detailed_temperature": { + "min": 19.67, + "max": 28.59, + "morning": 19.67, + "day": 25.7, + "evening": 27.08, + "night": 20.91 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 12 + } + }, + { + "day_name": "d5", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 25.27, + "detailed_temperature": { + "min": 18.6, + "max": 27.95, + "morning": 18.6, + "day": 25.27, + "evening": 25.42, + "night": 20 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 12 + } + }, + { + "day_name": "d6", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 26.84, + "detailed_temperature": { + "min": 19.13, + "max": 28.99, + "morning": 19.13, + "day": 26.84, + "evening": 27.56, + "night": 21.58 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 12 + } + }, + { + "day_name": "d7", + "weather_data": { + "condition": "Sunny", + "description": "clear sky", + "current_temperature": 28.99, + "detailed_temperature": { + "min": 20.87, + "max": 30.64, + "morning": 20.87, + "day": 28.99, + "evening": 29.22, + "night": 22.64 + }, + "precipitation": { + "probability": 0, + "rain_volume": 0, + "snow_volume": 0 + }, + "uv_index": 12 + } + } + ] + } + } +] diff --git a/examples/weather-demo/src/weather/dummyweathercontroller.rs b/examples/weather-demo/src/weather/dummyweathercontroller.rs new file mode 100644 index 000000000..3be56dfa5 --- /dev/null +++ b/examples/weather-demo/src/weather/dummyweathercontroller.rs @@ -0,0 +1,93 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +use chrono::{Duration, Utc}; + +use crate::weather::utils::*; +use crate::weather::weathercontroller::{ + CityData, CityWeatherData, GeoLocationData, WeatherController, +}; + +pub struct DummyWeatherController { + city_weather_data: Vec, +} + +impl DummyWeatherController { + pub fn new() -> Self { + Self { city_weather_data: vec![] } + } + + fn generate_dummy_data() -> Vec { + let json_data = std::include_str!("./dummyweather.json"); + + match serde_json::from_str::>(json_data) { + Ok(weather_data) => { + // fix day names + let mut weather_data = weather_data.clone(); + for city_data in &mut weather_data { + let forecast_data = &mut (city_data.weather_data.forecast_data); + for (index, data) in forecast_data.iter_mut().enumerate() { + if index == 0 { + data.day_name = "Today".into(); + } else { + data.day_name = + get_day_from_datetime(Utc::now() + Duration::days(index as i64)); + } + } + } + + return weather_data; + } + Err(e) => { + log::warn!("Cannot read dummy weather data! Error: {}", e); + } + } + + vec![] + } +} + +impl WeatherController for DummyWeatherController { + fn load(&mut self) -> Result<(), Box> { + self.city_weather_data = Self::generate_dummy_data(); + Ok(()) + } + + fn save(&self) -> Result<(), Box> { + Ok(()) + } + + fn refresh_cities(&mut self) -> Result, Box> { + Ok(self.city_weather_data.clone()) + } + + fn add_city( + &mut self, + _city: CityData, + ) -> Result, Box> { + // not supported for the dummy data + unimplemented!(); + } + + fn reorder_cities( + &mut self, + index: usize, + new_index: usize, + ) -> Result<(), Box> { + self.city_weather_data.swap(index, new_index); + Ok(()) + } + + fn remove_city(&mut self, index: usize) -> Result<(), Box> { + self.city_weather_data.remove(index); + Ok(()) + } + + fn search_location( + &self, + _query: String, + ) -> Result, Box> { + // not supported for the dummy data + unimplemented!(); + } +} diff --git a/examples/weather-demo/src/weather/mod.rs b/examples/weather-demo/src/weather/mod.rs new file mode 100644 index 000000000..884abe1c3 --- /dev/null +++ b/examples/weather-demo/src/weather/mod.rs @@ -0,0 +1,21 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +mod weathercontroller; +mod weatherdisplaycontroller; + +mod dummyweathercontroller; + +pub use weathercontroller::WeatherControllerPointer; +pub use weathercontroller::WeatherControllerSharedPointer; +pub use weatherdisplaycontroller::WeatherDisplayController; + +pub use dummyweathercontroller::DummyWeatherController; + +#[cfg(not(target_arch = "wasm32"))] +mod openweathercontroller; + +#[cfg(not(target_arch = "wasm32"))] +pub use openweathercontroller::OpenWeatherController; + +pub mod utils; diff --git a/examples/weather-demo/src/weather/openweathercontroller.rs b/examples/weather-demo/src/weather/openweathercontroller.rs new file mode 100644 index 000000000..51280f19d --- /dev/null +++ b/examples/weather-demo/src/weather/openweathercontroller.rs @@ -0,0 +1,417 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +#![cfg(not(target_arch = "wasm32"))] + +use chrono::DateTime; +use openweather_sdk::responses::{GeocodingResponse, OneCallResponse}; +use openweather_sdk::{Language, OpenWeather, Units}; +use serde::{Deserialize, Serialize}; +use std::fs::File; +use std::io; +use std::io::{BufReader, BufWriter, Write}; +use std::ops::Deref; +use std::path::PathBuf; +use std::sync::Arc; +use std::vec; +use tokio::sync::Mutex; + +use crate::weather::utils::*; +use crate::weather::weathercontroller::{ + CityData, CityWeatherData, DayWeatherData, ForecastWeatherData, GeoLocationData, + PrecipitationData, TemperatureData, WeatherCondition, WeatherController, WeatherData, +}; + +#[cfg(target_os = "android")] +use std::env; + +const CITIES_STORED_FILE_NAME: &str = "cities_data.json"; +const ORGANIZATION_QUALIFIER: &str = "dev"; // have to match android app name in cargo.toml +const ORGANIZATION_NAME: &str = "slint.examples"; // have to match android app name in cargo.toml +const APPLICATION_NAME: &str = "weatherdemo"; // have to match app android name in cargo.toml + +fn project_data_dir() -> Option { + #[cfg(target_os = "android")] + { + match env::var("ANDROID_DATA") { + Ok(data_root) => { + if data_root.is_empty() { + return None; + } else { + let project_name = format!( + "{}.{}.{}", + ORGANIZATION_QUALIFIER, ORGANIZATION_NAME, APPLICATION_NAME + ); + return Some(PathBuf::from(format!( + "{}/data/{}/files", + data_root, project_name + ))); + } + } + Err(_e) => { + log::warn!("Cannot read ANDROID_DATA, persistence not avaialble."); + return None; + } + } + } + + #[cfg(any(target_os = "linux", target_os = "windows", target_os = "macos"))] + { + if let Some(project_dir) = directories::ProjectDirs::from( + ORGANIZATION_QUALIFIER, + ORGANIZATION_NAME, + APPLICATION_NAME, + ) { + return Some(project_dir.data_dir().to_path_buf()); + }; + + None + } +} + +#[derive(Serialize, Deserialize, Clone)] +pub struct WeatherClient { + pub city_data: CityData, + pub weather_data: Option, +} + +pub struct OpenWeatherController { + tokio_runtime: tokio::runtime::Runtime, + weather_api: OpenWeather, + city_clients: Arc>>, + storage_path: Option, +} + +impl OpenWeatherController { + pub fn new(api_key: String) -> Self { + let mut weather_api = OpenWeather::new(api_key, Units::Metric, Language::English); + weather_api.one_call.fields.minutely = false; + weather_api.one_call.fields.hourly = false; + weather_api.one_call.fields.alerts = false; + + let storage_path; + if let Some(project_dir) = project_data_dir() { + storage_path = Some(project_dir.as_path().join(CITIES_STORED_FILE_NAME)); + } else { + storage_path = None; + log::error!("Failed to initialize project dir. Persistent data will not be loaded"); + } + + Self { + tokio_runtime: tokio::runtime::Runtime::new().unwrap(), + weather_api, + city_clients: Arc::new(Mutex::new(vec![])), + storage_path, + } + } + + fn weather_condition_from_icon_icon_type(icon_type: &str) -> WeatherCondition { + match icon_type { + "01d" | "01n" => WeatherCondition::Sunny, + "02d" | "02n" => WeatherCondition::PartiallyCloudy, + "03d" | "03n" => WeatherCondition::MostlyCloudy, + "04d" | "04n" => WeatherCondition::Cloudy, + "10d" | "10n" => WeatherCondition::SunnyRainy, + "09d" | "09n" => WeatherCondition::Rainy, + "11d" | "11n" => WeatherCondition::Stormy, + "13d" | "13n" => WeatherCondition::Snowy, + "50d" | "50n" => WeatherCondition::Foggy, + _ => WeatherCondition::Unknown, + } + } + + fn current_day_weather_data_from_response( + weather_response: &Option, + ) -> DayWeatherData { + if let Some(weather_data) = weather_response { + if let Some(current) = &weather_data.current { + let weather_details = ¤t.weather[0]; + let today_weather_info = + weather_data.daily.as_ref().and_then(|daily| daily.first()); + + let detailed_temp = match today_weather_info { + Some(info) => { + let temp = info.temp; + TemperatureData { + min: temp.min, + max: temp.max, + + morning: temp.morn, + day: temp.day, + evening: temp.eve, + night: temp.night, + } + } + None => TemperatureData { + min: current.temp, + max: current.temp, + + morning: current.temp, + day: current.temp, + evening: current.temp, + night: current.temp, + }, + }; + + return DayWeatherData { + description: weather_details.description.clone(), + condition: Self::weather_condition_from_icon_icon_type(&weather_details.icon), + current_temperature: current.temp, + detailed_temperature: detailed_temp, + precipitation: PrecipitationData::default(), + uv_index: 0.0, + }; + } + } + + DayWeatherData::default() + } + + fn forecast_day_weather_data_from_response( + weather_response: &Option, + ) -> Vec { + let mut forecast_weather_info: Vec = vec![]; + + if let Some(weather_data) = weather_response { + if let Some(daily_weather_data) = &weather_data.daily { + for day_weather_data in daily_weather_data.iter() { + if let Some(datetime) = DateTime::from_timestamp(day_weather_data.datetime, 0) { + let weather_details = &day_weather_data.weather[0]; + + let detailed_temperature = TemperatureData { + min: day_weather_data.temp.min, + max: day_weather_data.temp.max, + + morning: day_weather_data.temp.morn, + day: day_weather_data.temp.day, + evening: day_weather_data.temp.eve, + night: day_weather_data.temp.night, + }; + + let precipitation: PrecipitationData = PrecipitationData { + probability: day_weather_data.pop, + rain_volume: day_weather_data.rain.unwrap_or(0 as f64), + snow_volume: day_weather_data.snow.unwrap_or(0 as f64), + }; + + let day_weather_info = DayWeatherData { + description: weather_details.description.clone(), + condition: Self::weather_condition_from_icon_icon_type( + &weather_details.icon, + ), + current_temperature: day_weather_data.temp.day, + detailed_temperature, + precipitation, + uv_index: day_weather_data.uvi, + }; + + // TODO: localization + forecast_weather_info.push(ForecastWeatherData { + day_name: get_day_from_datetime(datetime), + weather_data: day_weather_info, + }); + } + } + } + } + + forecast_weather_info + } + + fn city_weather_data_from_client(city_client: &WeatherClient) -> CityWeatherData { + let current_data = Self::current_day_weather_data_from_response(&city_client.weather_data); + let forecast_data = + Self::forecast_day_weather_data_from_response(&city_client.weather_data); + + CityWeatherData { + city_data: city_client.city_data.clone(), + weather_data: WeatherData { current_data, forecast_data }, + } + } + + fn geo_location_data_from_response(response: &GeocodingResponse) -> GeoLocationData { + GeoLocationData { + name: response.name.clone(), + state: response.state.clone(), + country: response.country.clone(), + lat: response.lat, + lon: response.lon, + } + } +} + +impl WeatherController for OpenWeatherController { + fn load(&mut self) -> Result<(), Box> { + if let Some(storage_path) = &self.storage_path { + log::debug!("Loading data from: {:?}", storage_path.to_str()); + + let file = File::open(storage_path.as_path())?; + let reader = BufReader::new(file); + + let city_clients_data: Vec = serde_json::from_reader(reader)?; + log::debug!("Successfully loaded {} cities", city_clients_data.len()); + + let city_clients = self.city_clients.clone(); + self.tokio_runtime.block_on(async move { + let mut city_clients = city_clients.lock().await; + *city_clients = city_clients_data; + Ok(()) + }) + } else { + Err(Box::new(io::Error::new(io::ErrorKind::NotFound, "Storage path not initialized"))) + } + } + + fn save(&self) -> Result<(), Box> { + if let Some(storage_path) = &self.storage_path { + log::debug!("Saving data to: {:?}", storage_path.to_str()); + + let file = File::create(storage_path)?; + let mut writer = BufWriter::new(file); + let city_clients = self.city_clients.clone(); + + self.tokio_runtime.block_on(async move { + let city_clients = city_clients.lock().await; + serde_json::to_writer(&mut writer, city_clients.deref())?; + writer.flush()?; + + Ok(()) + }) + } else { + Err(Box::new(io::Error::new(io::ErrorKind::NotFound, "Storage path not initialized"))) + } + } + + fn refresh_cities(&mut self) -> Result, Box> { + log::debug!("Refreshing all the clients!"); + + let city_clients_clone = self.city_clients.clone(); + let weather_api = self.weather_api.clone(); + + self.tokio_runtime.block_on(async move { + let mut city_clients = city_clients_clone.lock().await; + + let mut errors = vec![]; + for client in city_clients.iter_mut() { + // TODO: Spawn all tasks at once and join them later. + if let Err(e) = client.refresh_weather(&weather_api).await { + errors.push(e); + } + } + log::debug!("Refreshing weather finished!"); + + if !errors.is_empty() && errors.len() == city_clients.len() { + return Err(errors.pop().unwrap()); + } + Ok(city_clients.iter().map(Self::city_weather_data_from_client).collect()) + }) + } + + fn add_city( + &mut self, + city: CityData, + ) -> Result, Box> { + log::debug!("Adding new city: {city:?}"); + let city_clients_clone = self.city_clients.clone(); + let weather_api = self.weather_api.clone(); + + self.tokio_runtime.block_on(async move { + let mut city_clients = city_clients_clone.lock().await; + match city_clients.iter().position(|client| client.city_data == city) { + Some(_) => { + log::info!("City already present in list!"); + Ok(None) + } + None => { + // Add to list and refresh + let mut client = WeatherClient::new(city.lat, city.lon, &city.city_name); + client.refresh_weather(&weather_api).await?; + let city_weather_data = Self::city_weather_data_from_client(&client); + city_clients.push(client); + Ok(Some(city_weather_data)) + } + } + }) + } + + fn reorder_cities( + &mut self, + index: usize, + new_index: usize, + ) -> Result<(), Box> { + let city_clients = self.city_clients.clone(); + self.tokio_runtime.block_on(async move { + let mut city_clients = city_clients.lock().await; + city_clients.swap(index, new_index); + }); + Ok(()) + } + + fn remove_city(&mut self, index: usize) -> Result<(), Box> { + let city_clients = self.city_clients.clone(); + self.tokio_runtime.block_on(async move { + let mut city_clients = city_clients.lock().await; + city_clients.remove(index); + }); + Ok(()) + } + + fn search_location( + &self, + query: String, + ) -> Result, Box> { + log::debug!("Searching for: {query}"); + let weather_api = self.weather_api.clone(); + + if query.is_empty() { + return Ok(vec![]); + } + + self.tokio_runtime.block_on(async move { + let response_data = weather_api.geocoding.get_geocoding(&query, None, None, 0).await?; + + log::debug!("Search result: {response_data:?}"); + + let mut unique_response_data: Vec = Vec::new(); + for element in response_data { + if !unique_response_data.iter().any(|existing_element| { + if existing_element.name == element.name + && existing_element.country == element.country + && existing_element.state == element.state + { + return true; + } + false + }) { + unique_response_data.push(element); + } + } + + Ok(unique_response_data.iter().map(Self::geo_location_data_from_response).collect()) + }) + } +} + +impl WeatherClient { + pub fn new(lat: f64, lon: f64, cname: &str) -> Self { + Self { city_data: CityData { lat, lon, city_name: cname.to_string() }, weather_data: None } + } + + pub async fn refresh_weather( + &mut self, + weather_api: &OpenWeather, + ) -> Result<(), Box> { + let res = weather_api.one_call.call(self.city_data.lat, self.city_data.lon).await; + log::debug!("Weather response: {res:?}"); + + match res { + Ok(response_data) => { + self.weather_data = Some(response_data); + log::debug!("Response received at: {:?}", chrono::offset::Local::now().timestamp()); + + Ok(()) + } + Err(e) => Err(e), + } + } +} diff --git a/examples/weather-demo/src/weather/utils.rs b/examples/weather-demo/src/weather/utils.rs new file mode 100644 index 000000000..886212486 --- /dev/null +++ b/examples/weather-demo/src/weather/utils.rs @@ -0,0 +1,12 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +use chrono::{DateTime, Datelike}; + +pub fn get_day_from_datetime(date: DateTime) -> String { + if date.day() == chrono::offset::Local::now().day() { + // TODO: translations + return "Today".to_string(); + } + date.weekday().to_string() +} diff --git a/examples/weather-demo/src/weather/weathercontroller.rs b/examples/weather-demo/src/weather/weathercontroller.rs new file mode 100644 index 000000000..7593d7b2b --- /dev/null +++ b/examples/weather-demo/src/weather/weathercontroller.rs @@ -0,0 +1,115 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +use serde::{Deserialize, Serialize}; +use std::sync::{Arc, Mutex}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct CityData { + pub lat: f64, + pub lon: f64, + pub city_name: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)] +pub enum WeatherCondition { + #[default] + Unknown, + Sunny, + PartiallyCloudy, + MostlyCloudy, + Cloudy, + SunnyRainy, + Rainy, + Stormy, + Snowy, + Foggy, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)] +pub struct TemperatureData { + pub min: f64, + pub max: f64, + pub morning: f64, + pub day: f64, + pub evening: f64, + pub night: f64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)] +pub struct PrecipitationData { + pub probability: f64, + pub rain_volume: f64, + pub snow_volume: f64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)] +pub struct DayWeatherData { + pub condition: WeatherCondition, + pub description: String, + + pub current_temperature: f64, + pub detailed_temperature: TemperatureData, + + pub precipitation: PrecipitationData, + pub uv_index: f64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)] +pub struct ForecastWeatherData { + pub day_name: String, + pub weather_data: DayWeatherData, +} + +#[derive(Serialize, Deserialize, Clone)] +pub struct WeatherData { + pub current_data: DayWeatherData, + pub forecast_data: Vec, +} + +#[derive(Serialize, Deserialize, Clone)] +pub struct CityWeatherData { + pub city_data: CityData, + pub weather_data: WeatherData, +} + +#[derive(Serialize, Deserialize, Clone)] +pub struct GeoLocationData { + pub name: String, + pub lat: f64, + pub lon: f64, + pub country: String, + pub state: Option, +} + +#[cfg(not(target_arch = "wasm32"))] +pub type WeatherControllerPointer = Box; +#[cfg(target_arch = "wasm32")] +pub type WeatherControllerPointer = Box; + +pub type WeatherControllerSharedPointer = Arc>; + +pub trait WeatherController { + fn load(&mut self) -> Result<(), Box>; + fn save(&self) -> Result<(), Box>; + + fn refresh_cities(&mut self) -> Result, Box>; + + fn add_city( + &mut self, + city: CityData, + ) -> Result, Box>; + + fn reorder_cities( + &mut self, + index: usize, + new_index: usize, + ) -> Result<(), Box>; + + fn remove_city(&mut self, index: usize) -> Result<(), Box>; + + fn search_location( + &self, + query: String, + ) -> Result, Box>; +} diff --git a/examples/weather-demo/src/weather/weatherdisplaycontroller.rs b/examples/weather-demo/src/weather/weatherdisplaycontroller.rs new file mode 100644 index 000000000..9e89c21f3 --- /dev/null +++ b/examples/weather-demo/src/weather/weatherdisplaycontroller.rs @@ -0,0 +1,472 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +use slint::{ComponentHandle, Model, ModelRc, SharedString, VecModel, Weak}; +use std::rc::Rc; + +use crate::ui; +use ui::{ + AppWindow, BusyLayerController, CityWeather, CityWeatherInfo, GeoLocation, GeoLocationEntry, + IconType, TemperatureInfo, WeatherForecastInfo, WeatherInfo, +}; + +use crate::weather::weathercontroller::{ + CityData, CityWeatherData, DayWeatherData, ForecastWeatherData, GeoLocationData, + WeatherCondition, WeatherControllerSharedPointer, +}; + +#[cfg(not(target_arch = "wasm32"))] +use async_std::task::spawn as spawn_task; + +#[cfg(target_arch = "wasm32")] +use wasm_bindgen_futures::spawn_local as spawn_task; + +pub struct WeatherDisplayController { + data_controller: WeatherControllerSharedPointer, +} + +fn forecast_graph_command( + model: ModelRc, + days_count: i32, + width: f32, + height: f32, +) -> SharedString { + if days_count == 0 || width == 0.0 || height == 0.0 { + return SharedString::new(); + } + + let temperatures: Vec = model + .clone() + .iter() + .take(days_count as usize) + .map(|info| info.weather_info.detailed_temp.day) + .collect(); + + const MIN_MAX_MARGIN: f32 = 5.0; + let min_temperature = match temperatures.iter().min_by(|a, b| a.total_cmp(b)) { + Some(min) => min - MIN_MAX_MARGIN, + None => 0.0, + }; + let max_temperature = match temperatures.iter().max_by(|a, b| a.total_cmp(b)) { + Some(max) => max + MIN_MAX_MARGIN, + None => 50.0, + }; + + let max_temperature_value = max_temperature - min_temperature; + let temperature_ratio = height / max_temperature_value; + + let day_width = width / days_count as f32; + let max_day_shift = days_count as f32 * day_width; + + let border_command = + format!( + "M 0 0 M {max_width} 0 M {max_width} {max_temperature_value} M 0 {max_temperature_value} ", + max_width=max_day_shift, max_temperature_value=max_temperature_value * temperature_ratio); + + let mut command = border_command; + + let day_shift = |index: f32| -> f32 { index * day_width + 0.5 * day_width }; + let day_temperature = + |temperature: f32| -> f32 { (max_temperature - temperature) * temperature_ratio }; + + for (index, &temperature) in temperatures.iter().enumerate() { + if index == 0 { + command += format!( + "M {x} {y} ", + x = day_shift(index as f32), + y = day_temperature(temperature) + ) + .as_str(); + } + + if let Some(next_temperature) = temperatures.get(index + 1) { + let next_temperature = *next_temperature; + + let day1 = day_shift(index as f32); + let day2 = day_shift(index as f32 + 1.0); + let temp1 = day_temperature(temperature); + let temp2 = day_temperature(next_temperature); + + let day_mid = (day1 + day2) / 2.0; + let temp_mid = (temp1 + temp2) / 2.0; + + let cp_day1 = (day_mid + day1) / 2.0; + let cp_day2 = (day_mid + day2) / 2.0; + + command += format!( + "Q {x1} {y1} {cx1} {cy1} Q {x2} {y2} {cx2} {cy2} ", + x1 = cp_day1, + y1 = temp1, + cx1 = day_mid, + cy1 = temp_mid, + x2 = cp_day2, + y2 = temp2, + cx2 = day2, + cy2 = temp2 + ) + .as_str(); + } + } + + SharedString::from(command) +} + +impl WeatherDisplayController { + pub fn new(data_controller: &WeatherControllerSharedPointer) -> Self { + Self { data_controller: data_controller.clone() } + } + + pub fn initialize_ui(&self, window: &AppWindow, support_add_city: bool) { + let city_weather = window.global::(); + let geo_location = window.global::(); + + // initialized models + city_weather + .set_city_weather(ModelRc::from(Rc::new(VecModel::::from(vec![])))); + geo_location + .set_result_list(ModelRc::from(Rc::new(VecModel::::from(vec![])))); + + // initialize state + city_weather.set_can_add_city(support_add_city); + + // handle callbacks + city_weather.on_get_forecast_graph_command(forecast_graph_command); + + city_weather.on_refresh_all({ + let window_weak = window.as_weak(); + let data_controller = self.data_controller.clone(); + + move || Self::refresh_cities(&window_weak, &data_controller) + }); + + city_weather.on_reorder({ + let window_weak = window.as_weak(); + let data_controller = self.data_controller.clone(); + + move |index, new_index| { + if let Err(e) = + Self::reorder_cities(&window_weak, &data_controller, index, new_index) + { + log::warn!("Failed to reorder city from {} to {}: {}", index, new_index, e); + } + } + }); + + city_weather.on_delete({ + let window_weak = window.as_weak(); + let data_controller = self.data_controller.clone(); + + move |index| { + if let Err(e) = Self::remove_city(&window_weak, &data_controller, index) { + log::warn!("Failed to remove city from {}: {}", index, e); + } + } + }); + + geo_location.on_search_location({ + let window_weak = window.as_weak(); + let data_controller = self.data_controller.clone(); + + move |location| Self::search_location(&window_weak, &data_controller, location) + }); + + geo_location.on_add_location({ + let window_weak = window.as_weak(); + let data_controller = self.data_controller.clone(); + + move |location| { + Self::add_city(&window_weak, &data_controller, location); + } + }); + } + + #[cfg_attr(not(target_os = "android"), allow(dead_code))] + pub fn refresh(&self, window: &AppWindow) { + Self::set_busy(window); + + let window_weak = window.as_weak(); + Self::refresh_cities(&window_weak, &self.data_controller); + } + + pub fn load(&self, window: &AppWindow) { + Self::set_busy(window); + + let window_weak = window.as_weak(); + let data_controller = self.data_controller.clone(); + + spawn_task(async move { + let city_data_res = async { + let mut data_controller = data_controller.lock().unwrap(); + data_controller.load()?; + data_controller.refresh_cities() + } + .await; + + let city_data = match city_data_res { + Ok(city_data) => Some(city_data), + Err(e) => { + log::warn!("Failed to load cities: {}.", e); + None + } + }; + + Self::check_update_error(window_weak.upgrade_in_event_loop(move |window| { + if let Some(city_data) = city_data { + WeatherDisplayController::update_displayed_cities(&window, city_data); + } + Self::unset_busy(&window); + })); + }); + } + + fn refresh_cities( + window_weak: &Weak, + data_controller: &WeatherControllerSharedPointer, + ) { + let window_weak = window_weak.clone(); + let data_controller = data_controller.clone(); + + spawn_task(async move { + let city_data_res = async { data_controller.lock().unwrap().refresh_cities() }.await; + + let city_data = match city_data_res { + Ok(city_data) => Some(city_data), + Err(e) => { + log::warn!("Failed to update cities: {}.", e); + None + } + }; + + Self::check_update_error(window_weak.upgrade_in_event_loop(move |window| { + if let Some(city_data) = city_data { + WeatherDisplayController::update_displayed_cities(&window, city_data); + } + Self::unset_busy(&window); + })); + }); + } + + fn add_city( + window_weak: &Weak, + data_controller: &WeatherControllerSharedPointer, + location: GeoLocationEntry, + ) { + let city = CityData { + lat: location.lat as f64, + lon: location.lon as f64, + city_name: String::from(&location.name), + }; + let city_data_res = data_controller.lock().unwrap().add_city(city); + + // update ui + let window = window_weak.upgrade().unwrap(); + match city_data_res { + Ok(city_data) => { + if let Some(city_data) = city_data { + let city_weather = window.global::(); + let city_weather_list = city_weather.get_city_weather(); + + let city_weather = Self::city_weather_info_from_data(&city_data); + city_weather_list + .as_any() + .downcast_ref::>() + .unwrap() + .push(city_weather); + } + } + Err(e) => { + log::warn!("Failed to add city: {}.", e); + } + } + + Self::unset_busy(&window); + } + + fn reorder_cities( + window_weak: &Weak, + data_controller: &WeatherControllerSharedPointer, + index: i32, + new_index: i32, + ) -> Result<(), Box> { + let pos: usize = index.try_into()?; + let new_pos: usize = new_index.try_into()?; + + data_controller.lock().unwrap().reorder_cities(pos, new_pos)?; + + // update ui + let window = window_weak.upgrade().unwrap(); + let city_weather = window.global::(); + let city_weather_list = city_weather.get_city_weather(); + + let pos_data = city_weather_list.row_data(pos).ok_or(Box::new(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "Index out of bounds", + )))?; + let new_pos_data = city_weather_list.row_data(new_pos).ok_or(Box::new( + std::io::Error::new(std::io::ErrorKind::InvalidInput, "Index out of bounds"), + ))?; + + city_weather_list.set_row_data(pos, new_pos_data); + city_weather_list.set_row_data(new_pos, pos_data); + Ok(()) + } + + fn remove_city( + window_weak: &Weak, + data_controller: &WeatherControllerSharedPointer, + index: i32, + ) -> Result<(), Box> { + let pos: usize = index.try_into()?; + + data_controller.lock().unwrap().remove_city(pos)?; + + // update ui + let window = window_weak.upgrade().unwrap(); + let city_weather = window.global::(); + let city_weather_list = city_weather.get_city_weather(); + + let model = city_weather_list + .as_any() + .downcast_ref::>() + .expect("CityWeatherInfo model is not provided!"); + + model.remove(pos); + Ok(()) + } + + fn search_location( + window_weak: &Weak, + data_controller: &WeatherControllerSharedPointer, + query: slint::SharedString, + ) { + let window_weak = window_weak.clone(); + let data_controller = data_controller.clone(); + let query = query.to_string(); + + spawn_task(async move { + let locations_res = + async { data_controller.lock().unwrap().search_location(query) }.await; + + let locations = match locations_res { + Ok(locations) => Some(locations), + Err(e) => { + log::warn!("Failed to search for location: {}.", e); + None + } + }; + + Self::check_update_error(window_weak.upgrade_in_event_loop(move |window| { + if let Some(locations) = locations { + WeatherDisplayController::update_location_search_results(&window, locations); + } + })); + }); + } + + fn update_displayed_cities(window: &AppWindow, data: Vec) { + let display_vector: Vec = + data.iter().map(Self::city_weather_info_from_data).collect(); + + let city_weather = window.global::().get_city_weather(); + let model = city_weather + .as_any() + .downcast_ref::>() + .expect("City weather model not set."); + + model.set_vec(display_vector); + } + + fn update_location_search_results(window: &AppWindow, result: Vec) { + let display_vector: Vec = + result.iter().map(Self::geo_location_entry_from_data).collect(); + + let geo_location = window.global::().get_result_list(); + let model = geo_location + .as_any() + .downcast_ref::>() + .expect("Geo location entry model not set."); + + model.set_vec(display_vector); + } + + fn set_busy(window: &AppWindow) { + window.global::().invoke_set_busy(); + } + + fn unset_busy(window: &AppWindow) { + window.global::().invoke_unset_busy(); + } + + fn check_update_error(result: Result<(), E>) { + if let Err(e) = result { + log::error!("Error while updating UI: {}", e); + } + } + + fn icon_type_from_condition(condition: &WeatherCondition) -> IconType { + match condition { + WeatherCondition::Sunny => IconType::Sunny, + WeatherCondition::PartiallyCloudy => IconType::PartiallyCloudy, + WeatherCondition::MostlyCloudy => IconType::MostlyCloudy, + WeatherCondition::Cloudy => IconType::Cloudy, + WeatherCondition::SunnyRainy => IconType::SunnyRainy, + WeatherCondition::Rainy => IconType::Rainy, + WeatherCondition::Stormy => IconType::Stormy, + WeatherCondition::Snowy => IconType::Snowy, + WeatherCondition::Foggy => IconType::Foggy, + _ => IconType::Unknown, + } + } + + fn weather_info_from_data(data: &DayWeatherData) -> WeatherInfo { + WeatherInfo { + description: SharedString::from(&data.description), + icon_type: Self::icon_type_from_condition(&data.condition), + current_temp: data.current_temperature as f32, + detailed_temp: TemperatureInfo { + min: data.detailed_temperature.min as f32, + max: data.detailed_temperature.max as f32, + + morning: data.detailed_temperature.morning as f32, + day: data.detailed_temperature.day as f32, + evening: data.detailed_temperature.evening as f32, + night: data.detailed_temperature.night as f32, + }, + uv: data.uv_index as i32, + precipitation_prob: data.precipitation.probability as f32, + rain: data.precipitation.rain_volume as f32, + snow: data.precipitation.snow_volume as f32, + } + } + + fn forecast_weather_info_from_data(data: &[ForecastWeatherData]) -> Vec { + data.iter() + .map(|forecast_data| WeatherForecastInfo { + day_name: SharedString::from(&forecast_data.day_name), + weather_info: Self::weather_info_from_data(&forecast_data.weather_data), + }) + .collect() + } + + fn city_weather_info_from_data(data: &CityWeatherData) -> CityWeatherInfo { + let current_weather_info = Self::weather_info_from_data(&data.weather_data.current_data); + let forecast_weather_info = + Self::forecast_weather_info_from_data(&data.weather_data.forecast_data); + + CityWeatherInfo { + city_name: SharedString::from(&data.city_data.city_name), + current_weather: current_weather_info, + forecast_weather: Rc::new(slint::VecModel::from(forecast_weather_info)).into(), + } + } + + fn geo_location_entry_from_data(data: &GeoLocationData) -> GeoLocationEntry { + GeoLocationEntry { + name: SharedString::from(&data.name), + state: SharedString::from(data.state.as_deref().unwrap_or_default()), + country: SharedString::from(&data.country), + lat: data.lat as f32, + lon: data.lon as f32, + } + } +} diff --git a/examples/weather-demo/ui/about-box.slint b/examples/weather-demo/ui/about-box.slint new file mode 100644 index 000000000..63e3e6b4e --- /dev/null +++ b/examples/weather-demo/ui/about-box.slint @@ -0,0 +1,90 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { WindowInfo } from "./ui_utils.slint"; +import { AppText } from "./controls/generic.slint"; +import { AboutSlint } from "std-widgets.slint"; + +component AboutFelgo { + width: 100%; + height: 100%; + + VerticalLayout { + spacing: 5px; + + width: 90% * parent.width; + padding-bottom: 14px; + + Rectangle { + background: white; + border-radius: self.height / 2; + + preferred-height: self.width * 45%; + + logo-layout := VerticalLayout { + alignment: center; + spacing: 2px; + + made-text := AppText { + text: "MADE BY"; + horizontal-alignment: center; + font-size: 1rem; + color: black; + } + + Rectangle { + Image { + image-fit: contain; + width: 70% * parent.width; + source: @image-url("./assets/felgo-logo.svg"); + } + } + } + } + + AppText { + text: "https://felgo.com/"; + horizontal-alignment: center; + } + } +} + +export component AboutBox { + VerticalLayout { + if WindowInfo.is-portrait: VerticalLayout { + alignment: center; + + Rectangle { + AboutFelgo { + width: Math.min(200px, 80% * parent.width); + min-height: self.preferred-height; + } + } + Rectangle { + AboutSlint { + width: Math.min(200px, 80% * parent.width); + min-height: self.preferred-height; + } + } + } + + if !WindowInfo.is-portrait: HorizontalLayout { + alignment: space-around; + + // adjust AboutFelgo size to look the same as AboutSlint + Rectangle { + max-width: 200px; + + AboutFelgo { + height: 84%; + preferred-width: 200px; + padding-bottom: 10px; + } + } + + AboutSlint { + max-width: 200px; + } + } + } +} diff --git a/examples/weather-demo/ui/assets/felgo-logo.svg b/examples/weather-demo/ui/assets/felgo-logo.svg new file mode 100644 index 000000000..d43910384 --- /dev/null +++ b/examples/weather-demo/ui/assets/felgo-logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/weather-demo/ui/assets/icons/arrow-down.svg b/examples/weather-demo/ui/assets/icons/arrow-down.svg new file mode 100644 index 000000000..7033b6931 --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/arrow-down.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/icons/arrow-up.svg b/examples/weather-demo/ui/assets/icons/arrow-up.svg new file mode 100644 index 000000000..3ca1f0bbd --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/arrow-up.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/icons/plus.svg b/examples/weather-demo/ui/assets/icons/plus.svg new file mode 100644 index 000000000..6f19769e0 --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/plus.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/icons/refresh.svg b/examples/weather-demo/ui/assets/icons/refresh.svg new file mode 100644 index 000000000..085b0d5c4 --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/refresh.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/icons/search.svg b/examples/weather-demo/ui/assets/icons/search.svg new file mode 100644 index 000000000..c66f03bcc --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/search.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/icons/trash.svg b/examples/weather-demo/ui/assets/icons/trash.svg new file mode 100644 index 000000000..a60e5a8f1 --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/trash.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/icons/xmark.svg b/examples/weather-demo/ui/assets/icons/xmark.svg new file mode 100644 index 000000000..fc6f507c7 --- /dev/null +++ b/examples/weather-demo/ui/assets/icons/xmark.svg @@ -0,0 +1 @@ + diff --git a/examples/weather-demo/ui/assets/weathericons-font.ttf b/examples/weather-demo/ui/assets/weathericons-font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..948f0a5d26e899539e7821aa5a500932f76ba582 GIT binary patch literal 99564 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%0D#Rj$k_pOl`WL;%6e`2iA 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 C!5iiP literal 0 HcmV?d00001 diff --git a/examples/weather-demo/ui/city_weather.slint b/examples/weather-demo/ui/city_weather.slint new file mode 100644 index 000000000..de53dc0e5 --- /dev/null +++ b/examples/weather-demo/ui/city_weather.slint @@ -0,0 +1,218 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { WindowInfo } from "./ui_utils.slint"; +import { PageBase } from "page-base.slint"; +import { CityWeatherTile } from "city_weather_tile.slint"; +import { ExpandedCityWeatherTile } from "expanded_city_weather_tile.slint"; +import { CityWeather, CityWeatherInfo } from "weather_datatypes.slint"; +import { AppPalette, AppImages } from "./style/styles.slint"; +import { SlideButton } from "./controls/generic.slint"; +import { AboutBox } from "about-box.slint"; + +component CitySlideArea inherits Rectangle { + in property can-move-up: true; + in property can-move-down: true; + + callback opened; + callback closed; + + callback up-clicked; + callback down-clicked; + callback delete-clicked; + callback content-clicked; + + public function open() { + flickable.viewport-x = -buttons-layout.width; + root.opened(); + } + + public function close() { + flickable.viewport-x = 0; + root.closed(); + } + + height: content.preferred-height; + + flickable := Flickable { + width: 100%; + + viewport-width: slide-layout.preferred-width; + viewport-x: 0; + + property last-viewport-x: 0px; + flicked => { + if (self.last-viewport-x > self.viewport-x) { + root.open(); + } + else { + root.close(); + } + } + + slide-layout := HorizontalLayout { + content := Rectangle { + width: root.width; + + Rectangle { + @children + } + + TouchArea { + pointer-event(event) => { + if (event.kind == PointerEventKind.down) { + flickable.last-viewport-x = flickable.viewport-x; + } + } + + clicked => { root.content-clicked(); } + } + } + + buttons-layout := VerticalLayout { + width: 50px; + spacing: 1px; + + SlideButton { + icon-source: AppImages.arrow-up; + enabled: root.can-move-up; + + clicked => { root.up-clicked(); } + } + SlideButton { + icon-source: AppImages.trash; + background-color: AppPalette.error-red; + + clicked => { root.delete-clicked(); } + } + SlideButton { + icon-source: AppImages.arrow-down; + enabled: root.can-move-down; + + clicked => { root.down-clicked(); } + } + } + } + } + +} + +component CityWeatherList inherits Flickable { + property opened-index: -1; + + callback expand(int, Point, length, length); + + VerticalLayout { + alignment: start; + padding: 0px; + + for city-weather-info[index] in CityWeather.city-weather: + CitySlideArea { + property is-opened: root.opened-index == index; + + can-move-up: index > 0; + can-move-down: index < CityWeather.city-weather.length - 1; + + changed is-opened => { + if (is-opened) { + self.open(); + } + else { + self.close(); + } + } + + opened => { + root.opened-index = index; + } + + content-clicked => { + root.opened-index = -1; + root.expand(index, self.absolute-position, self.width, self.height); + } + + up-clicked => { + root.opened-index = index - 1; + CityWeather.reorder(index, root.opened-index); + } + down-clicked => { + root.opened-index = index + 1; + CityWeather.reorder(index, root.opened-index); + } + delete-clicked => { + root.opened-index = -1; + CityWeather.delete(index); + self.close(); + } + + CityWeatherTile { + city-weather-info: city-weather-info; + alternative-background: Math.mod(index, 2) == 0; + } + } + + Rectangle { + // spacing + min-height: WindowInfo.is-portrait ? 25px : 10px; + } + AboutBox { + min-height: self.preferred-height; + } + } +} + +struct TileInfo { + index: int, + absolute-position: Point, + size: { width: length, height: length } +} + +export component CityListView inherits PageBase { + property selected-tile; + + CityWeatherList { + padding: 16px; + + expand(index, absolute-position, width, height) => { + root.selected-tile = { + index: index, + absolute-position: absolute-position, + size: { width: width, height: height } + }; + expanded-tile.expand(); + } + } + + PageBase { + opacity: 0.0; + + states [ + visible when expanded-tile.expanded: { + opacity: 1; + + out { + animate opacity { delay: expanded-tile.animation-duration; } + } + } + ] + } + + expanded-tile := ExpandedCityWeatherTile { + city-weather-info: CityWeather.city-weather[root.selected-tile.index]; + alternative-background: Math.mod(root.selected-tile.index, 2) == 0; + + block-x: root.selected-tile.absolute-position.x - root.absolute-position.x; + block-y: root.selected-tile.absolute-position.y - root.absolute-position.y; + block-width: root.selected-tile.size.width; + block-height: root.selected-tile.size.height; + + full-x: 0px; + full-y: 0px; + full-width: parent.width; + full-height: parent.height; + + clicked => { + self.collapse(); + } + } +} diff --git a/examples/weather-demo/ui/city_weather_tile.slint b/examples/weather-demo/ui/city_weather_tile.slint new file mode 100644 index 000000000..cc52a2005 --- /dev/null +++ b/examples/weather-demo/ui/city_weather_tile.slint @@ -0,0 +1,108 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { WeatherInfo, WeatherForecastInfo, CityWeatherInfo, CityWeather } from "weather_datatypes.slint"; +import { WindowInfo } from "./ui_utils.slint"; +import { AppPalette } from "./style/styles.slint"; +import { AppText } from "./controls/generic.slint"; +import { WeatherIcon } from "./controls/weather.slint"; +import { DayForecastGraph } from "./forecast_with_graph.slint"; + +component TileBaseInfo inherits HorizontalLayout { + in property city-name; + in property current-weather; + + spacing: 15px; + + AppText { + font-size: 2.1rem; + text: root.city-name; + } + + VerticalLayout { + horizontal-stretch: 1; + alignment: start; + + AppText { + min-width: self.preferred-width; + font-size: 1.8rem; + horizontal-alignment: right; + + text: Math.round(root.current-weather.current_temp) + "°"; + } + + AppText { + font-size: 1.2rem; + horizontal-alignment: right; + + text: root.current-weather.description; + wrap: word-wrap; + } + } + + WeatherIcon { + icon-type: root.current-weather.icon-type; + + font-size: 3.5rem; + vertical-alignment: top; + } +} + +export component CityWeatherTile inherits TouchArea { + in property city-weather-info; + in property alternative-background: false; + in property show-animations: true; + + out property city-name: city-weather-info.city-name; + out property current-weather: city-weather-info.current-weather; + out property<[WeatherForecastInfo]> forecast-weather: city-weather-info.forecast-weather; + + preferred-height: layout.preferred-height; + + Rectangle { + background: root.alternative-background ? white.with-alpha(2.5%) : white.with-alpha(8.5%); + } + + layout := VerticalLayout { + padding: 15px; + spacing: 10px; + + if WindowInfo.is-portrait: VerticalLayout { + vertical-stretch: 0; + spacing: parent.spacing; + + TileBaseInfo { + city-name: root.city-name; + current-weather: root.current-weather; + } + + DayForecastGraph { + min-height: self.preferred-height; + + forecast-weather: root.forecast-weather; + show-animations: root.show-animations; + } + } + if !WindowInfo.is-portrait: HorizontalLayout { + spacing: 5% * self.width; + + TileBaseInfo { + horizontal-stretch: 1; + max-width: parent.width * 40%; + height: self.preferred-height; + + city-name: root.city-name; + current-weather: root.current-weather; + } + + Rectangle { + min-height: self.preferred-height; + + DayForecastGraph { + forecast-weather: root.forecast-weather; + show-animations: root.show-animations; + } + } + } + } +} diff --git a/examples/weather-demo/ui/controls/busy-layer.slint b/examples/weather-demo/ui/controls/busy-layer.slint new file mode 100644 index 000000000..102c212c4 --- /dev/null +++ b/examples/weather-demo/ui/controls/busy-layer.slint @@ -0,0 +1,50 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { AppFonts, AppImages } from "../style/styles.slint"; + +export global BusyLayerController { + out property is-busy: false; + + property busy-counter: 0; + + public function set-busy() { + busy-counter += 1; + + // updating only when real change happen to avoid: + // https://github.com/slint-ui/slint/issues/5209 + if (!root.is-busy) { + root.is-busy = true; + } + } + public function unset-busy() { + busy-counter -= 1; + + // updating only when real change happen to avoid: + // https://github.com/slint-ui/slint/issues/5209 + if (root.is-busy && busy-counter == 0) { + root.is-busy = false; + } + } +} + +export component BusyLayer inherits Rectangle { + Rectangle { + background: black; + opacity: 0.75; + } + + Image { + width: 75px; + height: 75px; + image-fit: contain; + + source: AppImages.refresh; + colorize: white.darker(15%); + + rotation-angle: Math.mod(animation-tick() / 3.25ms, 360) * 1deg; + } + + // touch blocker + TouchArea {} +} diff --git a/examples/weather-demo/ui/controls/generic.slint b/examples/weather-demo/ui/controls/generic.slint new file mode 100644 index 000000000..859691739 --- /dev/null +++ b/examples/weather-demo/ui/controls/generic.slint @@ -0,0 +1,123 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { AppPalette, AppFonts, AppImages } from "../style/styles.slint"; + +export component AppText inherits Text { + color: AppPalette.foreground; + + overflow: elide; +} + +export component AppIcon inherits Image { + image-fit: contain; + colorize: AppPalette.foreground; +} + +export component FloatingTextButton inherits Rectangle { + in property icon-source <=> icon.source; + in property icon-color <=> icon.colorize; + + callback clicked; + + drop-shadow-color: self.background.darker(50%); + drop-shadow-blur: 5px; + drop-shadow-offset-x: 3px; + drop-shadow-offset-y: 2px; + + background: AppPalette.background; + border-radius: Math.min(self.width, self.height) / 2; + + padding: 12px; + padding-left: self.padding; + padding-right: self.padding; + padding-top: self.padding; + padding-bottom: self.padding; + + preferred-width: 48px; + preferred-height: 48px; + + width: self.preferred-width; + height: self.preferred-height; + + icon := AppIcon { + width: parent.width - parent.padding-left - parent.padding-right; + height: parent.height - parent.padding-top - parent.padding-bottom; + } + + TouchArea { + clicked => { root.clicked(); } + } +} + +export component SlideButton inherits Rectangle { + in-out property icon-source <=> icon.source; + in-out property enabled <=> touch-area.enabled; + in property background-color; + callback clicked <=> touch-area.clicked; + + background: touch-area.pressed ? self.background-color.darker(10%) : self.background-color; + opacity: root.enabled ? 1.0 : 0.5; + + icon := AppIcon { + width: 50%; + height: 50%; + + colorize: touch-area.pressed ? AppPalette.foreground.darker(10%) : AppPalette.foreground; + } + + touch-area := TouchArea {} +} + +export component TextField inherits Rectangle { + in property icon-source <=> icon.source; + in property placeholder-text; + in-out property text <=> text-input.text; + callback edited <=> text-input.edited; + + forward-focus: text-input; + + padding: 5px; + padding-top: self.padding; + padding-right: self.padding; + padding-bottom: self.padding; + padding-left: self.padding; + + preferred-height: text-input.preferred-height + self.padding-top + self.padding-bottom; + height: self.preferred-height; + + border-radius: 5px; + background: white.with-alpha(15%); + + HorizontalLayout { + x: root.padding-left; + width: parent.width - root.padding-left - root.padding-right; + + y: root.padding-top; + height: parent.height - root.padding-top - root.padding-bottom; + + spacing: icon.preferred-width > 0 ? 10px : 0px; + + icon := AppIcon { + max-width: self.height; + } + + AppText { + horizontal-stretch: 1; + + horizontal-alignment: left; + font-size: text-input.font-size; + text: text-input.text == "" ? root.placeholder-text : ""; + + text-input := TextInput { + color: AppPalette.foreground; + font-size: 1.2rem; + } + } + + AppIcon { + source: AppImages.xmark; + max-width: self.height; + } + } +} diff --git a/examples/weather-demo/ui/controls/stackview.slint b/examples/weather-demo/ui/controls/stackview.slint new file mode 100644 index 000000000..3d71bd544 --- /dev/null +++ b/examples/weather-demo/ui/controls/stackview.slint @@ -0,0 +1,136 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +/*! + * \brief The StackView is a component that can be used to simulate a stack view. + * + * \note: Due to the language limitation only the partial implementaion is possible. + * The component is meant to be a helper. + * + * \par Usage: + * The component can be used in two ways: + * - for smaller pages, where all pages are loaded at once, + * - for more complex pages, where pages are loaded dynamically. + * + * Static pages: + * \code{*.slint} + * stack := StackView { + * current-index: 0; + * min-index: 0; + * + * for color in [ Colors.red, Colors.green, Colors.blue ]: + * StackPage { + * is-current: self.check-is-current(stack.current-index); + * init => { self.page-index = stack.insert-page(); } // StackPage.count increased with insert-page function + * + * TestPage { + * background: color; + * push => { stack.push(); } + * pop => { stack.pop(); } + * } + * } + * } + * \endcode + * + * Dynamic pages: + * \code{*.slint} + * stack := StackView { + * count: 2; // StackPage.count provided manually + * current-index: 0; + * min-index: 0; + * + * if (stack.current-index == 0): StackPage { + * page-index: 0; is-current: true; + * + * TestPage { + * background: Colors.red; + * push => { stack.push(); } + * pop => { stack.pop(); } + * } + * } + * if (stack.current-index == 1): StackPage { + * page-index: 1; is-current: true; + * + * TestPage { + * background: Colors.green; + * push => { stack.push(); } + * pop => { stack.pop(); } + * } + * } + * } + * \endcode + * + * \sa StackPage + */ +export component StackView inherits Rectangle { + /// \brief This property states the number of items in the stack + in-out property count: 0; + + /// \brief This property states the index of the currently visible item + in-out property current-index: -1; + + /// \brief This property configures the minimum index the pop function can set (-1 by default) + in property min-index: -1; + + /// \brief This property configures the minimum index the push function can set (#count -1 by default) + in property max-index: self.count - 1; + + /// \brief This function increases the pages #count by one and returns new page index + public function insert-page() -> int { + self.count += 1; + return self.count - 1; + } + + /// \brief This function increases the #current-index if possible + public function push() { + if (self.current-index < Math.min(self.max-index, self.count - 1)) { + self.current-index += 1; + } + } + + /// \brief This function decreased the #current-index if possible + public function pop() { + if (self.current-index > Math.max(self.min-index, -1)) { + self.current-index -= 1; + } + } +} + +/*! + * \brief The StackPage is a component to use in the StackView. + * + * The real content can either derive from the StackPage (which is Rectangle based) or can be contained + * as the page children. + * + * Inherits: + * \code{*.slint} + * export TestPage inherits StackPage { + * background: color; + * } + * \endcode + * + * Contains: + * \code{*.slint} + * StackPage { + * TestPage { + * background: Colors.red; + * } + * } + * \endcode + * + * \sa StackView + */ +export component StackPage inherits TouchArea { + /// \brief This property configures the page index + in property page-index: -1; + + /// \brief This property configures whether the page is a current page (if not, it is hidden) + in property is-current: false; + + /// \brief This function is a helper function to use when setting the #is-current property + public pure function check-is-current(current-index: int) -> bool { + return current-index == self.page-index; + } + + visible: self.is-current; +} diff --git a/examples/weather-demo/ui/controls/weather.slint b/examples/weather-demo/ui/controls/weather.slint new file mode 100644 index 000000000..d9d67af96 --- /dev/null +++ b/examples/weather-demo/ui/controls/weather.slint @@ -0,0 +1,158 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { AppPalette, AppFonts } from "../style/styles.slint"; +import { AppText } from "./generic.slint"; +import { WindowInfo } from "../ui_utils.slint"; +import { IconType } from "../weather_datatypes.slint"; + +export component WeatherIconBase inherits Text { + color: AppPalette.foreground; + font-family: AppFonts.weather-icons-font-name; + + horizontal-alignment: center; + vertical-alignment: center; +} + +export component WeatherIcon inherits WeatherIconBase { + in property icon-type; + + pure function get-weather-icon-url(type: IconType) -> string { + if (type == IconType.Sunny) { return "\u{f00d}"; } + if (type == IconType.PartiallyCloudy) { return "\u{f002}"; } + if (type == IconType.MostlyCloudy) { return "\u{f041}"; } + if (type == IconType.Cloudy) { return "\u{f013}"; } + if (type == IconType.SunnyRainy) { return "\u{f008}"; } + if (type == IconType.Rainy) { return "\u{f015}"; } + if (type == IconType.Stormy) { return "\u{f01e}"; } + if (type == IconType.Snowy) { return "\u{f064}"; } + if (type == IconType.Foggy) { return "\u{f063}"; } + + return ""; + } + + pure function get-weather-icon-color(type: IconType) -> color { + if (type == IconType.Sunny) { return AppPalette.sun-yellow; } + + return AppPalette.foreground; + } + + text: root.get-weather-icon-url(root.icon-type); + color: root.get-weather-icon-color(root.icon-type); +} + +component DataText inherits AppText { + in property minimal: false; + + font-size: root.minimal ? (WindowInfo.is-portrait ? 0.85rem : 0.9rem) : 1.1rem; + overflow: elide; + horizontal-alignment: center; + vertical-alignment: center; +} + +export component RainInfo inherits Rectangle { + in property precipitation-probability; + in property rain-volume; + in property snow-volume; + + in property minimal: false; + + property is-snow: root.snow-volume > root.rain-volume; + property volume: Math.max(root.rain-volume, root.snow-volume); + property probability: Math.round(root.precipitation-probability * 100); + + property volume-display: Math.round(volume * 10) / 10; + property type-indicator: self.is-snow ? "\u{f076}" : "\u{f078}"; + property type-color: self.is-snow ? AppPalette.snow-white : AppPalette.rain-blue; + + property max-bar-volume: 10; + + padding-top: 2px; + padding-bottom: 2px; + + opacity: root.minimal ? (root.precipitation-probability * 30% + 70%) : 100%; + + if !root.minimal: Rectangle { + x: parent.width - self.width; + y: parent.height - self.height; + + width: 3px; + height: (parent.height - parent.padding-top - parent.padding-bottom) * + Math.min(root.volume, root.max-bar-volume) / root.max-bar-volume * 100%; + + background: root.type-color; + opacity: root.precipitation-probability * 70% + 30%; + } + + VerticalLayout { + HorizontalLayout { + alignment: center; + spacing: 3px; + + DataText { + minimal: root.minimal; + text: "\{root.probability}%"; + + color: root.type-color; + } + + if !root.minimal || !WindowInfo.is-portrait: WeatherIcon { + font-size: root.minimal ? 0.9rem : 1rem; + text: "\{root.type-indicator}"; + color: root.type-color; + } + + if root.minimal && WindowInfo.is-portrait: DataText { + minimal: true; + text: "/ \{root.volume-display}l"; + + color: root.type-color; + } + } + + if !root.minimal || !WindowInfo.is-portrait: DataText { + minimal: root.minimal; + text: "\{root.volume-display}l"; + + color: root.type-color; + } + } +} + +export component UvInfo inherits Rectangle { + in property uv-index; + + in property minimal: false; + + property uv-index-rate: (root.uv-index / 12.0); + + opacity: root.minimal ? (root.uv-index-rate * 30% + 70%) : 100%; + + HorizontalLayout { + alignment: center; + spacing: 3px; + + WeatherIcon { + text: "\u{f06e}"; + + font-size: root.minimal ? 0.9rem : 1.3rem; + + opacity: root.minimal ? 100% : (root.uv-index-rate * 70% + 30%); + color: AppPalette.sun-yellow; + } + + if root.minimal: DataText { + minimal: true; + text: "UV"; + + color: AppPalette.sun-yellow; + } + + DataText { + minimal: root.minimal; + text: "\{root.uv-index}"; + + color: AppPalette.sun-yellow; + } + } +} diff --git a/examples/weather-demo/ui/expanded_city_weather_tile.slint b/examples/weather-demo/ui/expanded_city_weather_tile.slint new file mode 100644 index 000000000..2948202c2 --- /dev/null +++ b/examples/weather-demo/ui/expanded_city_weather_tile.slint @@ -0,0 +1,285 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { VerticalBox, HorizontalBox } from "std-widgets.slint"; + +import { WindowInfo } from "./ui_utils.slint"; +import { AppPalette } from "./style/styles.slint"; +import { AppText } from "./controls/generic.slint"; +import { WeatherIcon, RainInfo, UvInfo } from "./controls/weather.slint"; +import { WeatherInfo, WeatherForecastInfo, CityWeatherInfo } from "weather_datatypes.slint"; +import { CityWeather } from "weather_datatypes.slint"; + +import { CityWeatherTile } from "city_weather_tile.slint"; + +component ForecastDayLineBase inherits Rectangle { + out property<{temp: length, rain: length, uv: length}> fields-width: { + temp: 90px, rain: 65px, uv: 65px + }; +} + +component ForecastDataText inherits AppText { + font-size: 1.1rem; + overflow: elide; + horizontal-alignment: center; + vertical-alignment: center; +} + +component ForecastTitleText inherits ForecastDataText { + font-size: 1.25rem; + font-weight: 500; + letter-spacing: 1pt; +} + +component ForecastTitleLine inherits ForecastDayLineBase { + HorizontalLayout { + // spacer + Rectangle { horizontal-stretch: 1; } + + ForecastTitleText { + preferred-width: root.fields-width.temp; + text: @tr("Max/Min"); + } + ForecastTitleText { + preferred-width: root.fields-width.rain; + text: @tr("Rain"); + } + ForecastTitleText { + preferred-width: root.fields-width.uv; + text: @tr("UV"); + } + + if !WindowInfo.is-portrait: HorizontalLayout { + width: WindowInfo.is-portrait ? 0% : 50%; + + for description[index] in [ @tr("Morning"), @tr("Day"), @tr("Evening"), @tr("Night") ]: + ForecastTitleText { + width: 25%; + text: description; + } + } + } +} + +component ForecastDayLine inherits ForecastDayLineBase { + in property day-name; + in property day-weather; + + height: 50px; + + HorizontalLayout { + // spacer + Rectangle { width: 5px; } + + name-text := ForecastDataText { + horizontal-stretch: 1; + min-width: self.preferred-width; + + horizontal-alignment: left; + text: root.day-name; + font-size: 1.2rem; + } + + WeatherIcon { + icon-type: root.day-weather.icon_type; + font-size: 1.8rem; + + visible: WindowInfo.window-width >= 360px; + } + + // spacer + Rectangle { + max-width: WindowInfo.window-width >= 380px ? self.preferred-width : 0; + preferred-width: 15px; + } + + ForecastDataText { + property min-temp: Math.round(root.day-weather.detailed_temp.min); + property max-temp: Math.round(root.day-weather.detailed_temp.max); + + preferred-width: root.fields-width.temp; + text: "\{self.max-temp}° / \{self.min-temp}°"; + } + + RainInfo { + precipitation-probability: root.day-weather.precipitation_prob; + rain-volume: root.day-weather.rain; + snow-volume: root.day-weather.snow; + + preferred-width: root.fields-width.rain; + } + + UvInfo { + uv-index: root.day-weather.uv; + + preferred-width: root.fields-width.uv; + } + } +} + +component ForecastDayDetails inherits HorizontalLayout { + in property day-weather; + + property<[{ time: string, temp: float }]> temp-model: [ + { time: "\u{f051}", temp: Math.round(root.day-weather.detailed_temp.morning) }, + { time: "\u{f00d}", temp: Math.round(root.day-weather.detailed_temp.day) }, + { time: "\u{f052}", temp: Math.round(root.day-weather.detailed_temp.evening) }, + { time: "\u{f02e}", temp: Math.round(root.day-weather.detailed_temp.night) }, + ]; + + padding-top: WindowInfo.is-portrait ? 10px : 0; + padding-bottom: WindowInfo.is-portrait ? 10px : 0; + + for time-temp in root.temp-model: + HorizontalLayout { + width: 25%; + alignment: center; + spacing: 5px; + + WeatherIcon { + text: "\{time-temp.time}"; + font-size: 1.3rem; + } + + ForecastDataText { + font-size: 1.3rem; + text: "\{time-temp.temp}°"; + } + } +} + +component ForecastDayDelegate inherits TouchArea { + in property expanded: false; + in property alternative-background: false; + + in property day-name; + in property day-weather; + + animate height { duration: 250ms; easing: ease-in-out-quad; } + + height: root.expanded ? self.preferred-height : main-info-line.preferred-height; + + Rectangle { + background: root.alternative-background ? Colors.white.transparentize(80%) : transparent; + clip: true; + + VerticalLayout { + main-info-line := HorizontalLayout { + ForecastDayLine { + day-name: root.day-name; + day-weather: root.day-weather; + } + + if !WindowInfo.is-portrait: ForecastDayDetails { + width: 50%; + day-weather: root.day-weather; + } + } + + if WindowInfo.is-portrait: ForecastDayDetails { + day-weather: root.day-weather; + } + } + } +} + +export component ExpandedCityWeatherTile inherits TouchArea { + in property city-weather-info <=> base-tile.city-weather-info; + in property alternative-background <=> base-tile.alternative-background; + + out property expanded: false; + in-out property animation-duration: 300ms; + + in property block-x; + in property block-y; + in property block-width; + in property block-height; + + in property full-x; + in property full-y; + in property full-width; + in property full-height; + + public function expand() { + // Not working properly without the lines below. (A bug?) + // Seems the animation in transition using old values, and + // accessing the properties somehow forces the update. + root.x; root.y; root.width; root.height; + details-rect.height; + + root.expanded = true; + } + + public function collapse() { + root.expanded = false; + } + + x: self.block-x; + y: self.block-y; + width: self.block-width; + height: self.block-height; + + visible: self.opacity > 0; + opacity: 0; + + states [ + full-size when root.expanded: { + opacity: 1; + x: full-x; + y: full-y; + width: full-width; + height: full-height; + + in { + animate x, y, width, height { duration: root.animation-duration; easing: ease-in-out-quad; } + } + out { + animate x, y, width, height { duration: root.animation-duration; easing: ease-in-out-quad; } + animate opacity { delay: root.animation-duration; } + } + } + ] + + VerticalLayout { + base-tile := CityWeatherTile { + show-animations: false; + + clicked => { + root.clicked(); + } + } + + details-rect := Rectangle { + vertical-stretch: 1; + + clip: true; + + Flickable { + padding-top: 15px; + padding-bottom: 15px; + + y: self.padding-top; + height: parent.height - self.padding-top - self.padding-bottom; + + VerticalLayout { + alignment: start; + padding-left: 15px; + padding-right: 15px; + + ForecastTitleLine {} + + for day-forecast-weather[index] in root.city-weather-info.forecast-weather: + ForecastDayDelegate { + alternative-background: Math.mod(index, 2) == 0; + day-name: day-forecast-weather.day-name; + day-weather: day-forecast-weather.weather-info; + + clicked => { + self.expanded = !self.expanded; + } + } + } + } + } + } +} diff --git a/examples/weather-demo/ui/forecast_with_graph.slint b/examples/weather-demo/ui/forecast_with_graph.slint new file mode 100644 index 000000000..bc0f937b3 --- /dev/null +++ b/examples/weather-demo/ui/forecast_with_graph.slint @@ -0,0 +1,128 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { VerticalBox } from "std-widgets.slint"; +import { AppPalette } from "./style/styles.slint"; +import { AppText } from "./controls/generic.slint"; +import { WeatherIcon, RainInfo, UvInfo } from "./controls/weather.slint"; +import { WeatherInfo, WeatherForecastInfo, CityWeather } from "./weather_datatypes.slint"; + +component ForecastGraphText inherits AppText { + horizontal-alignment: center; + vertical-alignment: center; + + font-size: 0.85rem; +} + +component DayForecastGraphEntry inherits VerticalLayout { + in property day-name; + in property day-weather; + in property detailed: true; + + spacing: 5px; + + ForecastGraphText { + font-size: 1.2rem; + text: day-name; + } + + WeatherIcon { + icon-type: day-weather.icon-type; + font-size: 1.6rem; + } + + VerticalLayout { + spacing: 5px; + + ForecastGraphText { + text: Math.round(day-weather.detailed_temp.max) + "° / " + Math.round(day-weather.detailed_temp.min) + "°"; + } + + RainInfo { + precipitation-probability: root.day-weather.precipitation_prob; + rain-volume: root.day-weather.rain; + snow-volume: root.day-weather.snow; + + minimal: true; + } + + UvInfo { + uv-index: root.day-weather.uv; + + minimal: true; + } + } +} + +export component DayForecastGraph inherits Rectangle { + in property <[WeatherForecastInfo]> forecast-weather; + in property show-animations: true; + + property preferred-day-width: 85px; + + // max-days-count is not directly as a binding here, only when the value is actually changed. + // This is to avoid reevaluation of the conditional components that rely on it for every window size change. + // see: https://github.com/slint-ui/slint/issues/5209 + property max-days-count: 0; + property days-count: Math.min(root.forecast-weather.length, root.max-days-count); + + property day-width: root.width / root.days-count; + + function update-max-days-count() { + if (Math.floor(root.width / root.preferred-day-width) != root.max-days-count) { + root.max-days-count = Math.floor(root.width / root.preferred-day-width); + } + } + + init => { root.update-max-days-count(); } + changed width => { root.update-max-days-count(); } + + preferred-height: layout.preferred-height; + + Path { + property visible-part: 0%; + + y: 0; + height: 50%; + + stroke-width: 2px; + commands: CityWeather.get_forecast_graph_command( + root.forecast-weather, root.days-count, self.width, self.height); + + stroke: @linear-gradient(90deg, AppPalette.foreground.with-alpha(25%) 0%, + AppPalette.foreground.with-alpha(25%) self.visible-part, + transparent self.visible-part, + transparent 100%); + + opacity: 0.0; + animate opacity { duration: root.show-animations ? 1200ms : 0ms; easing: ease-in; } + animate visible-part { duration: root.show-animations ? 900ms : 0ms; easing: ease-in; } + + init => { + self.opacity = 1.0; + self.visible-part = 100%; + } + } + + layout := HorizontalLayout { + for index in root.days-count: + DayForecastGraphEntry { + property day-forecast-weather: root.forecast-weather[index]; + property animation-duration: 0ms; + + width: root.day-width; + day-name: day-forecast-weather.day-name; + day-weather: day-forecast-weather.weather-info; + + opacity: 0.0; + animate opacity { duration: self.animation-duration; easing: ease-in-out-quad; } + + init => { + if (root.show-animations) { + self.animation-duration = 600ms + (500ms - index * 50ms) * index; + } + self.opacity = 1.0; + } + } + } +} diff --git a/examples/weather-demo/ui/location_datatypes.slint b/examples/weather-demo/ui/location_datatypes.slint new file mode 100644 index 000000000..2fadd0126 --- /dev/null +++ b/examples/weather-demo/ui/location_datatypes.slint @@ -0,0 +1,17 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +export struct GeoLocationEntry { + name: string, + state: string, + country: string, + lat: float, + lon: float, +} + +export global GeoLocation { + in property <[GeoLocationEntry]> result-list; + + callback search-location(string); + callback add-location(GeoLocationEntry); +} \ No newline at end of file diff --git a/examples/weather-demo/ui/location_search.slint b/examples/weather-demo/ui/location_search.slint new file mode 100644 index 000000000..419de55ac --- /dev/null +++ b/examples/weather-demo/ui/location_search.slint @@ -0,0 +1,68 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { PageBase } from "page-base.slint"; +import { AppImages } from "./style/styles.slint"; +import { AppText, TextField } from "./controls/generic.slint"; +import { BusyLayerController } from "./controls/busy-layer.slint"; +import { GeoLocation } from "./location_datatypes.slint"; + +import { Button } from "std-widgets.slint"; + +export component LocationSearchView inherits PageBase { + callback close-request; + + public function clear() { + GeoLocation.search_location(""); + text-field.text = ""; + } + + forward-focus: text-field; + + VerticalLayout { + padding: 20px; + spacing: 10px; + + text-field := TextField { + icon-source: AppImages.search; + placeholder-text: "Search"; + + edited => { + GeoLocation.search_location(self.text); + } + } + + Flickable { + VerticalLayout { + alignment: start; + + for data[index] in GeoLocation.result-list : Rectangle { + preferred-height: layout.preferred-height + 20px; + min-height: self.preferred-height; + + layout := VerticalLayout { + alignment: center; + spacing: 5px; + + AppText { + text: data.name; + font-size: 1.3rem; + } + AppText { + text: data.state == "" ? data.country : data.state + ", " + data.country; + font-size: 0.9rem; + } + } + + TouchArea { + clicked => { + BusyLayerController.set-busy(); + GeoLocation.add-location(data); + root.close-request(); + } + } + } + } + } + } +} diff --git a/examples/weather-demo/ui/main.slint b/examples/weather-demo/ui/main.slint new file mode 100644 index 000000000..02d80651b --- /dev/null +++ b/examples/weather-demo/ui/main.slint @@ -0,0 +1,195 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Palette } from "std-widgets.slint"; +import { WindowInfo, WindowInfoHelper } from "./ui_utils.slint"; +import { StackView, StackPage } from "./controls/stackview.slint"; +import { CityListView } from "./city_weather.slint"; +import { CityWeather } from "./weather_datatypes.slint"; +import { LocationSearchView } from "./location_search.slint"; +import { GeoLocation } from "./location_datatypes.slint"; +import { AppPalette, AppFonts, AppImages } from "./style/styles.slint"; +import { FloatingTextButton } from "./controls/generic.slint"; +import { BusyLayerController, BusyLayer } from "./controls/busy-layer.slint"; + +// Re export for native rust +export { WindowInfo, AppPalette, BusyLayerController, CityWeather, GeoLocation } + +component EdgeFloatingTextButton inherits FloatingTextButton { + out property edge-spacing: 15px; +} + +component AnimatedStackPage inherits StackPage { + // is-active and is-opened are not set as a binding here, only when the value is actually changed. + // This is to avoid redundant reevaluation of dependent properties and conditional elements. + // see: https://github.com/slint-ui/slint/issues/5209 + out property is-active: false; + out property is-opened: false; + + // using a helper int property to be able to use animate + property is-active-value: 0; + + property animation-duration: 250ms; + + visible: root.is-active; + + init => { root.is-active = (self.is-active_value == 1); } + changed is-active-value => { root.is-active = (self.is-active_value == 1); } + + states [ + active when self.is-current: { + is-active-value: 1; + + out { + animate is-active-value { delay: root.animation-duration; } + } + } + ] + + content := Rectangle { + changed y => { + // First open animation is not working properly without the line below. (A bug?) + // Seems the animation in transition is using old values, + // and accessing the property somehow forces the update. + self.y; + + if (root.is-opened != (self.y == 0)) { + root.is-opened = (self.y == 0); + } + } + + y: root.is-current ? 0px : root.height; + + animate y { duration: root.animation-duration; easing: ease-in-out-quad; } + + @children + } +} + +enum PageType { + Main, + AddLocation, +} + +export component AppWindow inherits Window { + background: AppPalette.background; + default-font-size: AppFonts.default-font-size; + + preferred-width: 900px; + preferred-height: 600px; + + WindowInfoHelper { + init => { + // no support for the different modes currently + // this is to display slint badge in proper colors + Palette.color-scheme = ColorScheme.dark; + } + } + + // this component is added to overcome a slint issue with android cursor never being hidden + // see: https://github.com/slint-ui/slint/issues/5233 + invisible-input := TextInput { + y: -self.height * 2; + } + + stack := StackView { + function show-page(pageType : PageType) { + if (pageType == PageType.Main) { + self.current-index = 0; + } + else if (pageType == PageType.AddLocation) { + self.current-index = 1; + } + } + + function back-to-main() { + self.show-page(PageType.Main); + } + + current-index: 0; + min-index: 0; + + StackPage { + is-current: self.check-is-current(stack.current-index); + init => { self.page-index = stack.insert-page(); } + visible: self.page-index <= stack.current-index; + + CityListView {} + + // right (refresh) button + EdgeFloatingTextButton { + x: parent.width - self.width - self.edge-spacing; + y: parent.height - self.height - self.edge-spacing; + + icon-source: AppImages.refresh; + + clicked => { + BusyLayerController.set-busy(); + CityWeather.refresh-all(); + } + } + + // left (add) button + EdgeFloatingTextButton { + x: self.edge-spacing; + y: parent.height - self.height - self.edge-spacing; + + visible: CityWeather.can-add-city; + + icon-source: AppImages.plus; + + clicked => { + stack.show-page(PageType.AddLocation); + } + } + } + + AnimatedStackPage { + is-current: self.check-is-current(stack.current-index); + init => { self.page-index = stack.insert-page(); } + + changed is-active => { + if (!self.is-active) { + // focusing invisible input so the cursor is drawn out of the window scope + invisible-input.focus(); + // clearing focus right after to hide the keyboard + invisible-input.clear-focus(); + } + } + + location-search-view := LocationSearchView { + property is-active: parent.is-active; + property is-opened: parent.is-opened; + + changed is-active => { + if (self.is-active) { + self.clear(); + } + } + + changed is-opened => { + if (self.is-opened) { + // we cannot focus on init, because android cursor is then wrongly positioned + self.focus(); + } + } + + close-request => { + self.clear-focus(); + stack.back-to-main(); + } + + EdgeFloatingTextButton { + x: parent.width - self.width - self.edge-spacing; + y: parent.height - self.height - self.edge-spacing; + + icon-source: AppImages.xmark; + + clicked => { location-search-view.close-request(); } + } + } + } + } + + if BusyLayerController.is-busy: BusyLayer {} +} diff --git a/examples/weather-demo/ui/page-base.slint b/examples/weather-demo/ui/page-base.slint new file mode 100644 index 000000000..1160aee71 --- /dev/null +++ b/examples/weather-demo/ui/page-base.slint @@ -0,0 +1,8 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { AppPalette } from "style/styles.slint"; + +export component PageBase inherits Rectangle { + background: @linear-gradient(180deg, AppPalette.background 0%, AppPalette.alternate-background 100%); +} diff --git a/examples/weather-demo/ui/style/styles.slint b/examples/weather-demo/ui/style/styles.slint new file mode 100644 index 000000000..ad6f870a9 --- /dev/null +++ b/examples/weather-demo/ui/style/styles.slint @@ -0,0 +1,34 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +import { Palette } from "std-widgets.slint"; + +import "../assets/weathericons-font.ttf"; + +export global AppPalette { + out property background: #1673b4; + out property alternate-background: #2296bc; + out property foreground: white; + + out property sun-yellow: Colors.yellow; + out property snow-white: Colors.cornsilk; + out property rain-blue: #7DCDFF.brighter(15%); + + out property error-red: Colors.red.darker(20%); +} + +export global AppFonts { + out property default-font-size: 10pt; + + out property weather-icons-font-name: "Weather Icons"; +} + +export global AppImages { + out property arrow-down: @image-url("../assets/icons/arrow-down.svg"); + out property arrow-up: @image-url("../assets/icons/arrow-up.svg"); + out property plus: @image-url("../assets/icons/plus.svg"); + out property refresh: @image-url("../assets/icons/refresh.svg"); + out property search: @image-url("../assets/icons/search.svg"); + out property trash: @image-url("../assets/icons/trash.svg"); + out property xmark: @image-url("../assets/icons/xmark.svg"); +} diff --git a/examples/weather-demo/ui/ui_utils.slint b/examples/weather-demo/ui/ui_utils.slint new file mode 100644 index 000000000..fadb7bc17 --- /dev/null +++ b/examples/weather-demo/ui/ui_utils.slint @@ -0,0 +1,30 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +export global WindowInfo { + // default values provided for the slint-viewer + in property window-width: 400px; + in property window-height: 700px; + + // is-portrait is not set as a binding here, only when the value is actually changed. + // This is to avoid reevaluation of the conditional components that rely on it for every window size change. + // see: https://github.com/slint-ui/slint/issues/5209 + in property is-portrait: true; +} + +export component WindowInfoHelper inherits Rectangle { + function check-is-portrait() { + if (WindowInfo.is-portrait != (self.width < self.height)) { + WindowInfo.is-portrait = (self.width < self.height); + } + } + + changed width => { + WindowInfo.window-width = self.width; + self.check-is-portrait(); + } + changed height => { + WindowInfo.window-height = self.height; + self.check-is-portrait(); + } +} \ No newline at end of file diff --git a/examples/weather-demo/ui/weather_datatypes.slint b/examples/weather-demo/ui/weather_datatypes.slint new file mode 100644 index 000000000..d9fe777ef --- /dev/null +++ b/examples/weather-demo/ui/weather_datatypes.slint @@ -0,0 +1,57 @@ +// Copyright © SixtyFPS GmbH +// SPDX-License-Identifier: MIT + +export enum IconType { + Unknown, + Sunny, + PartiallyCloudy, + MostlyCloudy, + Cloudy, + SunnyRainy, + Rainy, + Stormy, + Snowy, + Foggy, +} + +export struct TemperatureInfo { + min: float, + max:float, + + morning: float, + day: float, + evening:float, + night:float, +} + +export struct WeatherInfo { + description: string, + icon_type: IconType, + current_temp: float, + detailed_temp: TemperatureInfo, + uv: int, + precipitation_prob: float, + rain: float, + snow: float, +} + +export struct WeatherForecastInfo { + day_name: string, + weather_info: WeatherInfo, +} + +export struct CityWeatherInfo { + city_name: string, + current_weather: WeatherInfo, + forecast_weather: [WeatherForecastInfo], +} + +export global CityWeather { + in property <[CityWeatherInfo]> city-weather; + in property can-add-city: false; + + pure callback refresh-all(); + pure callback delete(int); + pure callback reorder(int, int); + pure callback get_forecast_graph_command([WeatherForecastInfo], int, length, length) -> string; +} diff --git a/examples/weather-demo/wasm/index.html b/examples/weather-demo/wasm/index.html new file mode 100644 index 000000000..98f07f181 --- /dev/null +++ b/examples/weather-demo/wasm/index.html @@ -0,0 +1,38 @@ + + + + + + +

+
+ + + +
+ +