Skip to content

Dev 1.10#85

Merged
TheJoeFin merged 23 commits into
mainfrom
dev
May 25, 2026
Merged

Dev 1.10#85
TheJoeFin merged 23 commits into
mainfrom
dev

Conversation

@TheJoeFin
Copy link
Copy Markdown
Owner

@TheJoeFin TheJoeFin commented May 24, 2026

Closes #84
Closes #83
Closes #80
Closes #87

Also recovers the icon from a Windows Explorer restart

TheJoeFin added 14 commits May 17, 2026 21:31
Refactor Now Playing display to use a Grid with both MarqueeText and TextBlock. Dynamically switch to marquee only when text overflows, with a short delay before scrolling. Add logic to measure overflow, manage timers, and update UI on property or layout changes.
Added TaskbarCreatedMonitor to detect taskbar recreation and restore the tray icon after Explorer restarts. Replaced the old watchdog timer with this event-driven approach. Improved tray icon initialization and added better error handling and logging.
Introduced MiniPlayerWindow with a themed UI using WinUIEx WindowEx and Mica backdrop. The window features track info, station display, play/pause, and close controls, all bound to the shared PlayerViewModel. Implements compact overlay mode and custom title bar.
- Implement ShowMiniPlayerWindow in App to display a pop-out mini player
- Replace Quit button with pop-out and quit HyperlinkButtons in PlayingPage
- Bind play button glyph/text to new PlayerViewModel properties
- Move play/pause/buffering UI logic to ViewModel (PlaybackButtonGlyph, PlaybackButtonText, etc.)
- Add Pause method to PlayerViewModel
- Improve XAML bindings readability in AddStation.xaml
- Register MiniPlayerWindow.xaml as a Page in project file
Redesigned MiniPlayerWindow layout for improved visuals and structure, including album art and station favicon display with fallback icons. Added hover-activated play/pause button, restyled controls, and new ViewModel properties for image handling. Commented out AppWindow.Resize for auto-sizing.
closes #80

Enhance SearchStation to handle preview stop when buffering and add StopPreview to reset state and restore previous playback. Add ClearPlaybackTarget to RadioPlayerService for full playback reset. Introduce RestoreSelectedStationPlaybackTarget and PrepareSelectedStationForPlayback in PlayerViewModel to robustly re-initialize selected station playback and metadata, with error handling for invalid URLs.
closes #83

Enable next/previous station cycling via system media controls and UI.
Add events and flags to manage cycling availability. Improve playback
resume logic after station changes and keep cycling state in sync with
station list. Refactor playback state checks for accuracy.
Introduced SpectrumVisualizerControl user control with real-time animated audio spectrum visualization using WASAPI loopback and FFT. Applied spring physics for smooth bar animation. Registered the control in Trdo.csproj for correct XAML compilation and usage.
Rewrite MiniPlayerWindow XAML for new layout and visual states. Add animated morph transitions between idle/active, overlay controls with fade/timer, and a favorite track button. Update ViewModel to track favorite status, expose new UI properties, and add music search methods. Switch to standard Window and CompactOverlayPresenter. Remove legacy code.
Refactored XAML bindings in MiniPlayerWindow, NowPlayingPage, and PlayingPage to use multi-line formatting for improved clarity and maintainability. No changes to logic or UI behavior. Also moved the "Quit" button's ToolTip in PlayingPage for consistency.
@TheJoeFin TheJoeFin added the enhancement New feature or request label May 24, 2026
ShahafShavit and others added 9 commits May 24, 2026 14:43
Use Shell_NotifyIconGetRect so TutorialWindow and other pop-outs open
above the tray icon instead of the screen corner. Preserve existing
cursor-relative placement when a pointer anchor is captured.
Position pop-out windows near the tray icon when no pointer anchor
Remove CapturePointerAnchor calls from pop-out window logic. Update PositionWindowNearAnchor to scale window size/position for DPI, center horizontally on anchor, and use AppWindow.MoveAndResize. Add GetDpiForWindow P/Invoke for accurate scaling.
Add support for positioning windows (e.g., flyouts) centered on the system tray icon, matching native Windows behavior. Introduce SetTrayIconSource to provide tray icon context. Refactor anchor and placement logic to prioritize pointer, tray icon, and taskbar, with improved handling for DPI, RTL, and taskbar edge cases. Add P/Invoke and struct support for Shell_NotifyIconGetRect to obtain tray icon bounds.
Switch MiniPlayerWindow to WinUIEx's WindowEx for improved window features, including always-on-top and disabling maximize/minimize. Update XAML and code-behind accordingly. Remove compact overlay presenter logic and hide window from task switcher. Adjust window size and positioning to 320x220.
Added a MenuFlyout with a "Show Visualizer" toggle to the MiniPlayer window. The spectrum visualizer's visibility can now be controlled via the context menu. Assigned an x:Name to the visualizer control and implemented the toggle handler in code-behind.
Added a new section to the README highlighting Trdo's coverage in Wired, MakeUseOf, and WinFuture, including article titles, authors, and publication details.
@TheJoeFin TheJoeFin merged commit 730c457 into main May 25, 2026
2 checks passed
@TheJoeFin TheJoeFin deleted the dev branch May 25, 2026 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

2 participants