Conversation
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.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #84
Closes #83
Closes #80
Closes #87
Also recovers the icon from a Windows Explorer restart