m3mo 864560ef2e Fix calendar navigation, task deletion, and language defaults
- Add date parameter support to DailyAgendaPage for calendar navigation
- Add popup menu to task tile with delete and reschedule options
- Set default locale to English when none is saved
- Update API base URL comment for desktop vs Android
2026-02-02 21:07:27 +01:00

59 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import '../../../../core/logging/app_logger.dart';
import '../../data/settings_local_datasource.dart';
class SettingsViewModel extends ChangeNotifier {
final SettingsLocalDataSource dataSource;
final AppLogger logger;
SettingsViewModel({
required this.dataSource,
required this.logger,
}) {
_loadSettings();
}
Locale? _locale;
ThemeMode _themeMode = ThemeMode.system;
Locale? get locale => _locale;
ThemeMode get themeMode => _themeMode;
static const supportedLocales = [
Locale('en'),
Locale('de'),
];
void _loadSettings() {
_locale = dataSource.getLocale() ?? const Locale('en');
_themeMode = dataSource.getThemeMode();
logger.info('Settings loaded: locale=$_locale, themeMode=$_themeMode');
}
Future<void> setLocale(Locale locale) async {
_locale = locale;
await dataSource.setLocale(locale);
logger.info('Locale changed to: ${locale.languageCode}');
notifyListeners();
}
Future<void> setThemeMode(ThemeMode mode) async {
_themeMode = mode;
await dataSource.setThemeMode(mode);
logger.info('Theme mode changed to: $mode');
notifyListeners();
}
String getLanguageName(Locale locale) {
switch (locale.languageCode) {
case 'en':
return 'English';
case 'de':
return 'Deutsch';
default:
return locale.languageCode.toUpperCase();
}
}
}