//! Static screen: the app's own license + the third-party software notices (reached from //! Settings). use super::style::*; use super::Screen; use windows_reactor::*; /// punktfunk's own license (MIT OR Apache-2.0). const APP_LICENSE: &str = concat!( include_str!("../../../../LICENSE-MIT"), "\n\n================================ Apache-2.0 ================================\n\n", include_str!("../../../../LICENSE-APACHE"), ); /// Third-party software notices for the linked Rust crates (generated by /// scripts/gen-third-party-notices.sh; the MSIX also ships this under licenses/). const THIRD_PARTY_NOTICES: &str = include_str!("../../../../THIRD-PARTY-NOTICES.txt"); pub(crate) fn licenses_page(set_screen: &AsyncSetState) -> Element { let back_btn = button("Back").accent().icon(Symbol::Back).on_click({ let ss = set_screen.clone(); move || ss.call(Screen::Settings) }); let app_card = card( vstack(( text_block("punktfunk").font_size(15.0).semibold(), text_block("Licensed under MIT OR Apache-2.0, at your option.") .font_size(12.0) .foreground(ThemeRef::SecondaryText), text_block(APP_LICENSE) .font_size(11.0) .foreground(ThemeRef::SecondaryText), )) .spacing(8.0), ); let natives_card = card( vstack(( text_block("Bundled components").font_size(15.0).semibold(), text_block( "FFmpeg is bundled under the LGPL v2.1+ (dynamically linked, replaceable DLLs); its \ license and notice ship in the installed licenses\\ folder. SDL 3 (Zlib) and the \ Windows App SDK (Microsoft) are also linked.", ) .font_size(12.0) .foreground(ThemeRef::SecondaryText), )) .spacing(8.0), ); let notices_card = card( vstack(( text_block("Rust crates").font_size(15.0).semibold(), text_block(THIRD_PARTY_NOTICES) .font_size(11.0) .foreground(ThemeRef::SecondaryText), )) .spacing(8.0), ); page(vec![ page_header("Third-party licenses", back_btn), section("PUNKTFUNK"), app_card.into(), section("BUNDLED"), natives_card.into(), section("OPEN SOURCE"), notices_card.into(), ]) }