diff --git a/assets/translations/en.json b/assets/translations/en.json index 5ceac4c..14e1421 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -113,6 +113,7 @@ "dark": "Dark", "light": "Light", "followSystem": "Follow System", + "followSystemThemeExplanation": "Following system theme is possible only by using third-party applications", "useBlackTheme": "Use pure black dark theme", "appSortBy": "App Sort By", "authorName": "Author/Name", diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 6ce3b47..4135c1c 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -113,6 +113,7 @@ "dark": "Тёмная", "light": "Светлая", "followSystem": "Системная", + "followSystemThemeExplanation": "Следование системной теме возможно только при использовании сторонних приложений", "useBlackTheme": "Использовать чёрную тему", "appSortBy": "Сортировка приложений", "authorName": "Автор/Название", diff --git a/lib/app_sources/huaweiappgallery.dart b/lib/app_sources/huaweiappgallery.dart index 2c4d480..203b79f 100644 --- a/lib/app_sources/huaweiappgallery.dart +++ b/lib/app_sources/huaweiappgallery.dart @@ -84,7 +84,7 @@ class HuaweiAppGallery extends AppSource { } var relDate = relDateStrAdj == null ? null - : DateFormat('yy-MM-dd-HH-mm').parse(relDateStrAdj.join('')); + : DateFormat('yy-MM-dd-HH-mm', 'en_US').parse(relDateStrAdj.join('')); if (relDateStr == null) { throw NoVersionError(); } diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index b4f9452..367e842 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -88,30 +88,12 @@ class _SettingsPageState extends State { initUpdateIntervalInterpolator(); processIntervalSliderValue(settingsProvider.updateIntervalSliderVal); - var themeDropdown = FutureBuilder( + var followSystemThemeExplanation = FutureBuilder( builder: (ctx, val) { - return DropdownButtonFormField( - decoration: InputDecoration(labelText: tr('theme')), - value: settingsProvider.theme, - items: [ - DropdownMenuItem( - value: ThemeSettings.light, - child: Text(tr('light')), - ), - DropdownMenuItem( - value: ThemeSettings.dark, - child: Text(tr('dark')), - ), - if ((val.data?.version.sdkInt ?? 0) >= 29) DropdownMenuItem( - value: ThemeSettings.system, - child: Text(tr('followSystem')), - ) - ], - onChanged: (value) { - if (value != null) { - settingsProvider.theme = value; - } - }); + return ((val.data?.version.sdkInt ?? 30) < 29) ? + Text(tr('followSystemThemeExplanation'), + style: Theme.of(context).textTheme.labelSmall) + : const SizedBox.shrink(); }, future: DeviceInfoPlugin().androidInfo ); @@ -367,7 +349,7 @@ class _SettingsPageState extends State { intervalSlider, FutureBuilder( builder: (ctx, val) { - return ((val.data?.version.sdkInt ?? 0) >= 30) || settingsProvider.useShizuku + return (settingsProvider.updateInterval > 0) && (((val.data?.version.sdkInt ?? 0) >= 30) || settingsProvider.useShizuku) ? Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -583,9 +565,34 @@ class _SettingsPageState extends State { fontWeight: FontWeight.bold, color: Theme.of(context).colorScheme.primary), ), - themeDropdown, + DropdownButtonFormField( + decoration: InputDecoration(labelText: tr('theme')), + value: settingsProvider.theme, + items: [ + DropdownMenuItem( + value: ThemeSettings.system, + child: Text(tr('followSystem')), + ), + DropdownMenuItem( + value: ThemeSettings.light, + child: Text(tr('light')), + ), + DropdownMenuItem( + value: ThemeSettings.dark, + child: Text(tr('dark')), + ) + ], + onChanged: (value) { + if (value != null) { + settingsProvider.theme = value; + } + }), + height8, + if (settingsProvider.theme == ThemeSettings.system) + followSystemThemeExplanation, height16, - Row( + if (settingsProvider.theme != ThemeSettings.light) + Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible(child: Text(tr('useBlackTheme'))), @@ -593,10 +600,11 @@ class _SettingsPageState extends State { value: settingsProvider.useBlackTheme, onChanged: (value) { settingsProvider.useBlackTheme = value; - }) - ], - ), - height16, + } + ) + ] + ), + height8, useMaterialThemeSwitch, if (!settingsProvider.useMaterialYou) colorPicker, Row( diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 31838bb..f12dfbe 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -19,7 +19,7 @@ String obtainiumId = 'dev.imranr.obtainium'; String obtainiumUrl = 'https://github.com/ImranR98/Obtainium'; Color obtainiumThemeColor = const Color(0xFF6438B5); -enum ThemeSettings { light, dark, system } +enum ThemeSettings { system, light, dark } enum SortColumnSettings { added, nameAuthor, authorName, releaseDate } @@ -59,7 +59,7 @@ class SettingsProvider with ChangeNotifier { ThemeSettings get theme { return ThemeSettings - .values[prefs?.getInt('theme') ?? ThemeSettings.light.index]; + .values[prefs?.getInt('theme') ?? ThemeSettings.system.index]; } set theme(ThemeSettings t) {