-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHigh-LevelDirectoryStructure.txt
103 lines (92 loc) · 5.36 KB
/
High-LevelDirectoryStructure.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
MetaQuestTrayManager/
├── MetaQuestTrayManager.csproj // Project file
├── App.xaml // Entry point for the WPF app
├── App.xaml.cs // Application-wide events and startup logic
├── AssemblyInfo.cs // Assembly metadata
├── MainWindow.xaml // Main user interface
├── MainWindow.xaml.cs // MainWindow logic
├── Resources/ // Static resources like icons and styles
│ ├── Icons/ // Organized icons for tray and app
│ │ ├── TrayIcon.ico
│ │ ├── ProfileIcon.ico
│ │ ├── AirlinkIcon.ico
│ ├── Styles.xaml // Common styles and themes
├── Views/ // UI Views and XAML files
│ ├── TrayIcon/ // Tray menu XAML and logic
│ │ ├── TrayIcon.xaml
│ │ ├── TrayIcon.xaml.cs
│ ├── ProfilesView.xaml // Game profiles management UI
│ ├── ProfilesView.xaml.cs
│ ├── AirlinkView.xaml // Airlink-specific UI
│ ├── AirlinkView.xaml.cs
├── Managers/ // Core logic and feature managers
│ ├── ADBManager.cs // Handles ADB commands
│ ├── AirlinkManager.cs // Airlink settings management
│ ├── AudioManager.cs // Handles audio switching and configurations
│ ├── DeviceManager.cs // Detects connected devices (headsets, GPU)
│ ├── GameLibraryManager.cs // Scans Oculus and Steam games
│ ├── OptimizationManager.cs // Applies optimizations with OculusDebugToolCLI
│ ├── ProfileManager.cs // Game profile management
│ ├── RegistryManager.cs // Handles registry tweaks
│ ├── SettingsManager.cs // Manages user settings and preferences
├── Models/ // Data models for structured data
│ ├── AudioProfile.cs // Audio profile model
│ ├── DeviceInfo.cs // Headset and GPU model
│ ├── GameProfile.cs // Game profile data structure
├── Utils/ // Utility classes for various tasks
│ ├── CommandRunner.cs // Handles command-line execution
│ ├── FileUtils.cs // File and directory operations
│ ├── Logger.cs // Logging utility
│ ├── NetworkUtils.cs // Network performance checks and tweaks
├── Tests/ // Unit tests for core functionality
│ ├── Managers/
│ │ ├── ADBManagerTests.cs
│ │ ├── RegistryManagerTests.cs
│ │ ├── ProfileManagerTests.cs
│ ├── Utils/
│ │ ├── FileUtilsTests.cs
│ │ ├── LoggerTests.cs
└── MetaQuestTrayManager.sln // Solution file
### **Current Structure Analysis**
1. **Managers (Core Logic)**
Contains all functional managers for your app:
- `ADBManager.cs`: Handles communication with the headset via ADB.
- `AirlinkManager.cs`: Manages Airlink configurations.
- `AudioManager.cs`: Manages audio devices and profiles.
- `DeviceManager.cs`: Detects VR headsets and GPU.
- `GameLibraryManager.cs`: Scans Oculus/Steam libraries.
- `OptimizationManager.cs`: Applies optimizations via CLI tools.
- `ProfileManager.cs`: Manages game profiles and settings.
- `RegistryManager.cs`: Handles registry tweaks.
2. **Models (Data Structures)**
Defines the data used across the app:
- `AudioProfile.cs`: Represents audio configurations.
- `DeviceInfo.cs`: Represents detected headset and GPU information.
- `GameProfile.cs`: Stores game-specific profiles and settings.
3. **Utils (Helper Classes)**
Provides reusable helper utilities:
- `CommandRunner.cs`: Runs CLI commands like ADB and OculusDebugToolCLI.
- `FileUtils.cs`: Simplifies file operations.
- `Logger.cs`: Handles logging for debugging.
- `NetworkUtils.cs`: Assists with network detection/optimization.
4. **Views (UI Files)**
Currently only includes the main window:
- `MainWindow.xaml`: The primary UI.
- `MainWindow.xaml.cs`: Code-behind for main logic.
5. **App and Configuration**
- `App.xaml` and `App.xaml.cs`: Handles application lifecycle and startup.
- `AssemblyInfo.cs`: Project assembly metadata.
### **Summary of Required NuGet Packages**
| Package Name | Purpose |
|-------------------------------------|-------------------------------------------|
| Newtonsoft.Json | JSON parsing for settings or profiles. |
| Hardcodet.NotifyIcon.Wpf | System tray icon support. |
| Microsoft.Win32.Registry | Windows Registry management. |
| Microsoft.Extensions.Configuration.Json | Configuration using `settings.json`. |
| System.Management | WMI for hardware and device detection. |
| NAudio | Switching audio input/output devices. |
---
With **NAudio**, you'll be able to:
- Retrieve the list of available audio devices.
- Change the default input/output audio device programmatically.
- Restore the previous audio device configuration after the session.