# stevexu9102/audioplaybackconnectorwinui architecture

> Architecture diagram of the GitHub repository stevexu9102/audioplaybackconnectorwinui, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/stevexu9102/audioplaybackconnectorwinui
- Repository: https://github.com/stevexu9102/audioplaybackconnectorwinui

## Overview

AudioPlaybackConnectorWinUI is a Windows tray utility that receives Bluetooth A2DP audio. The user opens a tray popup, browses automatically enumerated devices, and connects or disconnects them; device cards also expose removal and reconnect-on-next-start. The app owns startup and coordinates the tray, popup, settings, and playback service. The context menu adds receiver, notifications, theme, language, startup, Bluetooth settings, and license controls. Source excerpts are partial, so links for unsampled features are limited to documented responsibilities; no network service is described.

Main entry points: [`App.xaml.cpp`](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/App.xaml.cpp) (App coordinator), [`AudioPlaybackService.cpp`](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AudioPlaybackService.cpp) (Playback service), [`AppShell.cpp`](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppShell.cpp) (UI actions), [`TrayWindow.xaml.cpp`](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/TrayWindow.xaml.cpp) (Tray popup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application lifecycle"]
  node_app["App coordinator<br/>[App.xaml.cpp]"]
  node_shell["UI actions<br/>[AppShell.cpp]"]
end

subgraph group_interface["Tray interface"]
  node_trayicon["Tray icon<br/>[TrayIcon.cpp]"]
  node_popup["Tray popup"]
  node_deviceview["Device panel"]
  node_menview["Context menu"]
  node_licenses["License dialog"]
end

subgraph group_playback["Bluetooth playback"]
  node_playback["Playback service"]
  node_btlink["Bluetooth link<br/>[BluetoothLink.cpp]"]
end

subgraph group_support["Settings and support"]
  node_settings["Settings<br/>[AppSettings.cpp]"]
  node_startup["Startup registration"]
  node_i18n["Localization<br/>[I18n.hpp]"]
  node_logs["Diagnostics<br/>[Util.hpp]"]
  node_settingsfile["Settings file<br/>[AppSettings.cpp]"]
end

node_user(("User"))
node_windows["Windows platform"]

node_user -->|"clicks"| node_trayicon
node_trayicon -->|"dispatches action"| node_app
node_app -->|"loads settings"| node_settings
node_settings -->|"reads/writes"| node_settingsfile
node_app -->|"repairs registration"| node_startup
node_app -->|"creates"| node_popup
node_app -->|"creates"| node_trayicon
node_app -->|"starts and configures"| node_playback
node_playback -->|"enumerates and connects"| node_windows
node_playback -->|"uses Bluetooth link"| node_btlink
node_playback -->|"reports device changes"| node_popup
node_popup -->|"shows panel"| node_deviceview
node_popup -->|"shows menu"| node_menview
node_deviceview -->|"invokes device actions"| node_shell
node_menview -->|"invokes menu actions"| node_shell
node_shell -->|"requests playback actions"| node_playback
node_shell -->|"updates preferences"| node_settings
node_shell -->|"opens licenses"| node_licenses
node_app -->|"loads language"| node_i18n
node_app -->|"records failures"| node_logs
node_playback -->|"records diagnostics"| node_logs
node_popup -->|"controls startup setting"| node_startup
node_licenses -->|"reads embedded resources"| node_windows

click node_app "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/App.xaml.cpp"
click node_trayicon "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/TrayIcon.cpp"
click node_popup "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/TrayWindow.xaml.cpp"
click node_deviceview "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/FluentView.xaml.cpp"
click node_menview "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/ContextMenuView.xaml.cpp"
click node_licenses "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/LicenseDialogWindow.xaml.cpp"
click node_shell "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppShell.cpp"
click node_playback "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AudioPlaybackService.cpp"
click node_btlink "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/BluetoothLink.cpp"
click node_settings "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppSettings.cpp"
click node_startup "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/StartupRegistration.cpp"
click node_i18n "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/I18n.hpp"
click node_logs "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/Util.hpp"
click node_settingsfile "https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppSettings.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_shell,node_user toneBlue
class node_trayicon,node_popup,node_deviceview,node_menview,node_licenses toneAmber
class node_playback,node_btlink toneMint
class node_settings,node_startup,node_i18n,node_logs,node_settingsfile toneRose
class node_windows toneIndigo
```

## Components

### Application lifecycle

- [App coordinator](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/App.xaml.cpp): `App.xaml.cpp`
- [UI actions](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppShell.cpp): `AppShell.cpp`

### Tray interface

- [Tray icon](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/TrayIcon.cpp): `TrayIcon.cpp`
- [Tray popup](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/TrayWindow.xaml.cpp): `TrayWindow.xaml.cpp`
- [Device panel](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/FluentView.xaml.cpp): `FluentView.xaml.cpp`
- [Context menu](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/ContextMenuView.xaml.cpp): `ContextMenuView.xaml.cpp`
- [License dialog](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/LicenseDialogWindow.xaml.cpp): `LicenseDialogWindow.xaml.cpp`

### Bluetooth playback

- [Playback service](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AudioPlaybackService.cpp): `AudioPlaybackService.cpp`
- [Bluetooth link](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/BluetoothLink.cpp): `BluetoothLink.cpp`

### Settings and support

- [Settings](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppSettings.cpp): `AppSettings.cpp`
- [Startup registration](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/StartupRegistration.cpp): `StartupRegistration.cpp`
- [Localization](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/I18n.hpp): `I18n.hpp`
- [Diagnostics](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/Util.hpp): `Util.hpp`
- [Settings file](https://github.com/stevexu9102/audioplaybackconnectorwinui/blob/main/AppSettings.cpp): `AppSettings.cpp`

### Other components

- **User**
- **Windows platform**

## Connections

- User → Tray icon: clicks
- Tray icon → App coordinator: dispatches action
- App coordinator → Settings: loads settings
- Settings → Settings file: reads/writes
- App coordinator → Startup registration: repairs registration
- App coordinator → Tray popup: creates
- App coordinator → Tray icon: creates
- App coordinator → Playback service: starts and configures
- Playback service → Windows platform: enumerates and connects
- Playback service → Bluetooth link: uses Bluetooth link
- Playback service → Tray popup: reports device changes
- Tray popup → Device panel: shows panel
- Tray popup → Context menu: shows menu
- Device panel → UI actions: invokes device actions
- Context menu → UI actions: invokes menu actions
- UI actions → Playback service: requests playback actions
- UI actions → Settings: updates preferences
- UI actions → License dialog: opens licenses
- App coordinator → Localization: loads language
- App coordinator → Diagnostics: records failures
- Playback service → Diagnostics: records diagnostics
- Tray popup → Startup registration: controls startup setting
- License dialog → Windows platform: reads embedded resources
