feat: Implement Playlists and Programs Management

- Added PlaylistsGroupViewModel to manage playlists and selection.
- Introduced ProgramsGroupViewModel for handling program groups and subscriptions.
- Created ProgramsListViewModel to manage individual program listings.
- Developed SettingsViewModel for user settings including playlist management.
- Implemented TVPlayerViewModel as the main view model coordinating screens and data.
- Added PlayerView for video playback with LibVLC integration.
- Created XAML views for PlaylistsGroup, ProgramsGroup, ProgramsList, and Settings.
- Added sample M3U playlist for testing.
- Documented WPF build instructions and project structure in WPF-BUILD.md.
- Configured global.json for .NET SDK versioning.
This commit is contained in:
Vladimir
2026-03-22 12:11:24 +02:00
parent a6ec011e79
commit 1e8e444376
82 changed files with 2970 additions and 1687 deletions
+36
View File
@@ -0,0 +1,36 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Avalonia Debug",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}/TV Player Avalonia/bin/Debug/net8.0/TV Player Avalonia.dll",
"args": [],
"cwd": "${workspaceFolder}/TV Player Avalonia",
"stopAtEntry": false,
"serverReadyAction": {
"pattern": "\\bstarted on port ([0-9]+)\\b",
"uriFormat": "http://localhost:{1}",
"action": "openExternally"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
},
{
"name": "Avalonia Run (dotnet run)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-avalonia",
"program": "${workspaceFolder}/TV Player Avalonia/bin/Debug/net8.0/TV Player Avalonia.dll",
"args": [],
"cwd": "${workspaceFolder}/TV Player Avalonia",
"stopAtEntry": false,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
]
}
+61
View File
@@ -0,0 +1,61 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build-avalonia",
"command": "dotnet",
"type": "shell",
"args": [
"build",
"${workspaceFolder}/TV Player Avalonia/TV Player Avalonia.csproj"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always"
},
"problemMatcher": "$msCompile"
},
{
"label": "run-avalonia",
"command": "dotnet",
"type": "shell",
"args": [
"run",
"--project",
"${workspaceFolder}/TV Player Avalonia/TV Player Avalonia.csproj"
],
"presentation": {
"reveal": "always"
},
"isBackground": true,
"problemMatcher": {
"pattern": {
"regexp": "^.*$",
"file": 1,
"location": 2,
"message": 3
},
"background": {
"activeOnStart": true,
"beginsPattern": "^(.*?)$",
"endsPattern": "(Application started|terminated with exit code)"
}
}
},
{
"label": "clean-avalonia",
"command": "dotnet",
"type": "shell",
"args": [
"clean",
"${workspaceFolder}/TV Player Avalonia/TV Player Avalonia.csproj"
],
"presentation": {
"reveal": "always"
}
}
]
}