Refactor PLib video library manager's UI to implement a side panel for settings, enhancing accessibility and layout. Update MainWindow and SettingsView to accommodate the new design, ensuring the settings panel integrates seamlessly without overlaying the main content. Revise styles for app bars and status bars for consistency across the application. Update README.md to reflect these UI changes.

This commit is contained in:
Leonid Pershin
2026-08-08 12:52:59 +03:00
parent 835937357e
commit 5920f7a940
5 changed files with 125 additions and 130 deletions
+8 -5
View File
@@ -9,9 +9,9 @@
- Метаданные (длительность, разрешение, кодек) через ffprobe.
- Постеры кадром из видео через ffmpeg, с кэшем на диске.
- Виртуализированная сетка карточек, ленивая загрузка превью, поиск и сортировка.
- Настройки — выдвижной панелью в том же окне: папки библиотеки (с удалением), параметры
превью и сканирования, тема, очистка кэша. Всё пишется в `settings.json` и подхватывается
без перезапуска.
- Настройки — боковой панелью в том же окне (сетка сдвигается, а не перекрывается): папки
библиотеки с удалением, параметры превью и сканирования, тема, очистка кэша. Всё пишется
в `settings.json` и подхватывается без перезапуска.
- Светлая, тёмная и системная темы; выбор запоминается.
- Клик или Enter по карточке — открыть в системном плеере, правая кнопка — контекстное меню.
@@ -63,9 +63,12 @@ dotnet test
декодированием в нужную ширину. Память зависит от размера окна, а не от размера библиотеки.
- **Scope на операцию.** `DbContext` живёт ровно одну операцию — ViewModel берёт
`IServiceScopeFactory` и создаёт scope на каждый вызов.
- **Одно окно.** Настройки — панель поверх сетки, а не второе окно: библиотека остаётся
видна, в alt-tab ничего не добавляется, и приложение остаётся переносимым на
- **Одно окно.** Настройки — колонка макета, а не второе окно и не оверлей: открываясь, она
сдвигает сетку, и та переливается в меньшее число столбцов, оставаясь целиком доступной.
В alt-tab ничего не добавляется, и приложение остаётся переносимым на
`ISingleViewApplicationLifetime`, где `ShowDialog` попросту не существует.
Верхняя и нижняя полосы обеих половин заданы одной парой стилей, поэтому разделители
читаются как сплошные линии через всё окно.
- **Настройки — рабочая копия.** Панель правит снимок `AppSettings` и записывает его целиком
только по «Сохранить», так что отмена не оставляет следов. Пересканирование запускается
только если изменилось то, что влияет на состав библиотеки, — смена темы или ширины кадра