84fcbd3345
Bump windows-reactor + windows to a4f7b2cb (from b4129fcc) for the new PointerEntered/PointerExited events; migration is mechanical renames only (SymbolGlyph->Symbol, placeholder->placeholder_text, on_changed-> on_text_changed/on_toggled, on_menu_item_clicked->on_item_clicked, on_ready->on_mounted). New runtime model: reactor lost its build.rs, so the client build.rs stages the WinAppSDK bootstrap via windows-reactor-setup::as_framework_dependent() and main calls windows_reactor::bootstrap() (missing either = 0x80040154 at launch); staged filenames unchanged, so pack-msix and the MSIX manifest are untouched. - Host tiles: WinUI pointer-over fill (ControlFillSecondary) via the new pointer enter/exit events, hover id in root state (backend-wired handlers bypass the reconciler flush, like the flyout clicks). - Settings: stock NavigationView sidebar (Windows-Settings pattern) with Display/Video/Input/Audio/About panes, built-in back arrow, wide content column, and a per-section content slide-up tween. The section card is KEYED by section: an in-place diff across sections re-sets a reused ComboBox's items (clearing WinUI's selection) but skips selected_index when the values compare equal, rendering a blank selection - the key forces a remount. Card titles/descriptions dropped; per-control guidance moved to hover tooltips (ToolTipService). - New "Show the stats overlay (HUD)" setting (show_hud, default on), honored mid-stream via the 400 ms HUD re-render. - Add-host modal: entrance fade + slide-up tween (scrim fades with it). - Self-initiated disconnect (Ctrl+Alt+Shift+D -> Ended(None)) returns to the host list silently instead of raising the error banner. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
71 lines
2.4 KiB
Rust
71 lines
2.4 KiB
Rust
//! 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<Screen>) -> 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(),
|
|
])
|
|
}
|