Skip to content

Исправить настройку тем #21

@Scream034

Description

@Scream034

Суть проблемы

Текущий интерфейс выбора и настройки тем в AppearancePage.axaml имеет несколько проблем с UX и логикой:

  1. Дублирование: В выпадающем списке пресетов тем дублируется название текущей активной темы при раскрытии.
  2. Избыточность кнопки «Применить»: Кнопка «Применить» активна всегда, даже если выбранная тема уже полностью совпадает с текущей применённой. Это сбивает пользователя с толку.
  3. Исчезновение кнопок при сбросе: При нажатии кнопки «Сбросить» (Reset) визуальные элементы управления иногда пропадают из-за некорректного обновления состояния в SettingsViewModel.

Возможное решение (Теория и архитектура)

  1. Фильтрация списка: В SettingsViewModel.RefreshThemePresets переписать логику наполнения коллекции ThemePresets. Нам нужно гарантировать, что текущая кастомная тема не добавляется в список повторно, если она по цветам совпадает с одним из встроенных пресетов.
  2. Реактивное управление кнопкой Apply: Привязать видимость (IsVisible) или доступность (IsEnabled) кнопок «Применить» и «Сбросить» к вычисляемому свойству HasUnsavedThemeChanges. Это свойство должно возвращать true только если цвета в пикерах (AccentColor, BgPrimaryColor и т.д.) фактически отличаются от текущей сохранённой темы в theme.json.
  3. Исправление сброса: В методе ResetTheme() в SettingsViewModel явно вызывать LoadThemeColors() после сброса в ThemeManagerService, чтобы принудительно обновить свойства привязки и не допустить «залипания» UI в невалидном состоянии.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions