From 2af2364ee44cfc06fd7d57bdb6c78470807983d3 Mon Sep 17 00:00:00 2001 From: Frank Gregor Date: Thu, 2 Apr 2020 11:43:34 +0200 Subject: [PATCH 1/3] OT-717: Unreadable Status Bar Fixes #449 BUGFIX * Fixes a bug that happens on switching between Light and Dark mode, which results in an unreadable system status bar ADDITIONS & CHANGES * Adds a new `ThemeKey` enum value `system` * Changes setting for Light/Dark mode in user profile by removing the switch * Adds a new screen for switching application appearance to `Light`/`Dark` or `System` * Refactors all `ThemeKey` enum values from UPPERCASE to lowercase * Adds `vibrateLight` method for haptic feedback when user changes appearance * Adds new assets for all three theme states: Light, Dark, System * Cleans up code ADDITIONAL NOTES * Adds `activeColor` setting to all used `Switch.adaptive` widgets with the value of `CustomTheme.of(context).accent`, because on iOS they had the default green color which doesn't fit our application color theme. * Adds `Preference` class with just two static methods `set({@required value, @required String forKey})` and `value({@required String forKey})` for convenience and better readability * Adds static getter/setter on `Preference` class for easier handling of preference values and better readability (NOTE: Should be discussed if we adopt this system overall) So instead of calling: ``` setPreference(preferenceAppThemeKey, ThemeKey.light.toString()); ``` we can call: ``` Preference.themeKey = ThemeKey.light.toString(); ``` --- assets/images/2.0x/theme_coi_dark.png | Bin 0 -> 11710 bytes assets/images/2.0x/theme_coi_light.png | Bin 0 -> 11508 bytes assets/images/2.0x/theme_coi_system.png | Bin 0 -> 18212 bytes assets/images/3.0x/theme_coi_dark.png | Bin 0 -> 20133 bytes assets/images/3.0x/theme_coi_light.png | Bin 0 -> 20001 bytes assets/images/3.0x/theme_coi_system.png | Bin 0 -> 31501 bytes assets/images/theme_coi_dark.png | Bin 0 -> 4902 bytes assets/images/theme_coi_light.png | Bin 0 -> 4767 bytes assets/images/theme_coi_system.png | Bin 0 -> 8049 bytes lib/main.dart | 19 +- lib/src/brandable/brandable_icon.dart | 4 +- lib/src/brandable/branded_theme.dart | 2 +- lib/src/brandable/custom_theme.dart | 80 +++++-- lib/src/l10n/l.dart | 8 +- lib/src/navigation/navigatable.dart | 1 + lib/src/navigation/navigation.dart | 5 +- lib/src/platform/preferences.dart | 18 +- lib/src/settings/settings_anti_mobbing.dart | 7 +- lib/src/settings/settings_appearance.dart | 202 ++++++++++++++++++ .../settings/settings_appearance_bloc.dart | 63 ++++++ .../settings_appearance_event_state.dart | 68 ++++++ lib/src/settings/settings_chat.dart | 10 +- lib/src/settings/settings_notifications.dart | 10 +- .../settings/settings_notifications_bloc.dart | 3 +- lib/src/ui/text_styles.dart | 8 +- lib/src/user/user_profile.dart | 23 +- lib/src/utils/keyMapping.dart | 1 + lib/src/utils/vibration.dart | 4 +- lib/src/widgets/settings_item.dart | 1 + 29 files changed, 475 insertions(+), 62 deletions(-) create mode 100644 assets/images/2.0x/theme_coi_dark.png create mode 100644 assets/images/2.0x/theme_coi_light.png create mode 100644 assets/images/2.0x/theme_coi_system.png create mode 100644 assets/images/3.0x/theme_coi_dark.png create mode 100644 assets/images/3.0x/theme_coi_light.png create mode 100644 assets/images/3.0x/theme_coi_system.png create mode 100644 assets/images/theme_coi_dark.png create mode 100644 assets/images/theme_coi_light.png create mode 100644 assets/images/theme_coi_system.png create mode 100644 lib/src/settings/settings_appearance.dart create mode 100644 lib/src/settings/settings_appearance_bloc.dart create mode 100644 lib/src/settings/settings_appearance_event_state.dart diff --git a/assets/images/2.0x/theme_coi_dark.png b/assets/images/2.0x/theme_coi_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c07fec1638b48aff2071e9d25fb685c792f0a7ac GIT binary patch literal 11710 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 IIn(F=0xup=hX4Qo literal 0 HcmV?d00001 diff --git a/assets/images/2.0x/theme_coi_light.png b/assets/images/2.0x/theme_coi_light.png new file mode 100644 index 0000000000000000000000000000000000000000..8da8a20eff355869078c0fb6c98f167936ddc2c4 GIT binary patch literal 11508 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 Mr!HGAZT|Xy0cmv-asU7T literal 0 HcmV?d00001 diff --git a/assets/images/2.0x/theme_coi_system.png b/assets/images/2.0x/theme_coi_system.png new file mode 100644 index 0000000000000000000000000000000000000000..620dcc78940badb67751bb89b8c9c93550ec9dac GIT binary patch literal 18212 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

ex^;gR{5d%}v6PZER6n8o4XSio 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 literal 0 HcmV?d00001 diff --git a/assets/images/3.0x/theme_coi_system.png b/assets/images/3.0x/theme_coi_system.png new file mode 100644 index 0000000000000000000000000000000000000000..33348c3d7a91ad5fb5a61178c81842a11f760172 GIT binary patch literal 31501 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 literal 0 HcmV?d00001 diff --git a/assets/images/theme_coi_dark.png b/assets/images/theme_coi_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe39b1b639245052729903d0f0f292cd45541d2 GIT binary patch literal 4902 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 TL)p3g=W|F)Ll04{_9*P{nJj<9 literal 0 HcmV?d00001 diff --git a/assets/images/theme_coi_system.png b/assets/images/theme_coi_system.png new file mode 100644 index 0000000000000000000000000000000000000000..bfeeebfec532a31c284bb59a3362de7d843d57e3 GIT binary patch literal 8049 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 z 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 literal 0 HcmV?d00001 diff --git a/lib/main.dart b/lib/main.dart index b7e4ff81..a27560e1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -91,7 +91,7 @@ void main() { ), ], child: CustomTheme( - initialThemeKey: ThemeKey.LIGHT, + initialThemeKey: ThemeKey.light, child: OxCoiApp(), ), ), @@ -104,20 +104,23 @@ class OxCoiApp extends StatelessWidget { @override Widget build(BuildContext context) { var customTheme = CustomTheme.of(context); - return MaterialApp( - theme: ThemeData( + final themeData = ThemeData( brightness: customTheme.brightness, backgroundColor: customTheme.background, scaffoldBackgroundColor: customTheme.background, toggleableActiveColor: customTheme.accent, accentColor: customTheme.accent, primaryIconTheme: Theme.of(context).primaryIconTheme.copyWith( - color: customTheme.onSurface, - ), + color: customTheme.onSurface, + ), primaryTextTheme: Theme.of(context).primaryTextTheme.apply( - bodyColor: customTheme.onSurface, - ), - ), + bodyColor: customTheme.onSurface, + ), + ); + + return MaterialApp( + theme: themeData, + themeMode: customTheme.brightness == Brightness.light ? ThemeMode.light : ThemeMode.dark, localizationsDelegates: getLocalizationsDelegates(), supportedLocales: L10n.supportedLocales, localeResolutionCallback: (deviceLocale, supportedLocales) { diff --git a/lib/src/brandable/brandable_icon.dart b/lib/src/brandable/brandable_icon.dart index ef86adf8..23efdd21 100644 --- a/lib/src/brandable/brandable_icon.dart +++ b/lib/src/brandable/brandable_icon.dart @@ -103,7 +103,7 @@ enum IconSource { retry, checkedCircle, circle, - darkMode, + appearance, qr, signature, serverSetting, @@ -173,7 +173,7 @@ const iconData = { IconSource.retry: Icons.autorenew, IconSource.checkedCircle: Icons.check_circle, IconSource.circle: Icons.radio_button_unchecked, - IconSource.darkMode: Icons.brightness_2, + IconSource.appearance: Icons.palette, IconSource.qr: Icons.filter_center_focus, IconSource.signature: Icons.gesture, IconSource.serverSetting: Icons.router, diff --git a/lib/src/brandable/branded_theme.dart b/lib/src/brandable/branded_theme.dart index 66e12c61..aca3129a 100644 --- a/lib/src/brandable/branded_theme.dart +++ b/lib/src/brandable/branded_theme.dart @@ -52,7 +52,7 @@ class BrandedTheme { final Color chatIcon = Colors.lightBlue[800]; final Color signatureIcon = Colors.blue[600]; final Color serverSettingsIcon = Colors.indigo[600]; - final Color darkModeIcon = Colors.deepPurple[500]; + final Color appearanceIcon = Colors.deepPurple[500]; final Color dataProtectionIcon = Colors.purple[400]; final Color blockIcon = Colors.pink[500]; final Color encryptionIcon = Colors.red[600]; diff --git a/lib/src/brandable/custom_theme.dart b/lib/src/brandable/custom_theme.dart index c0c6b641..e5bc2c3d 100644 --- a/lib/src/brandable/custom_theme.dart +++ b/lib/src/brandable/custom_theme.dart @@ -40,14 +40,16 @@ * for more details. */ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:ox_coi/src/platform/preferences.dart'; - -import 'branded_theme.dart'; +import 'package:ox_coi/src/brandable/branded_theme.dart'; enum ThemeKey { - LIGHT, - DARK, + system, + light, + dark, } class CustomerThemes { @@ -93,12 +95,13 @@ class CustomerThemes { static BrandedTheme getThemeFromKey(ThemeKey themeKey) { switch (themeKey) { - case ThemeKey.LIGHT: + case ThemeKey.light: return lightTheme; - case ThemeKey.DARK: + case ThemeKey.dark: return darkTheme; default: - return lightTheme; + final brightness = WidgetsBinding.instance.window.platformBrightness; + return brightness == Brightness.light ? lightTheme : darkTheme; } } } @@ -122,11 +125,7 @@ class CustomTheme extends StatefulWidget { final Widget child; final ThemeKey initialThemeKey; - const CustomTheme({ - Key key, - this.initialThemeKey, - @required this.child, - }) : super(key: key); + const CustomTheme({Key key, this.initialThemeKey, @required this.child}) : super(key: key); @override CustomThemeState createState() => new CustomThemeState(); @@ -140,6 +139,24 @@ class CustomTheme extends StatefulWidget { _CustomTheme inherited = (context.dependOnInheritedWidgetOfExactType<_CustomTheme>()); return inherited.data; } + + static ThemeKey getThemeKeyFor({@required String name}) { + if (name == describeEnum(ThemeKey.system)) { + return ThemeKey.system; + } else if (name == describeEnum(ThemeKey.light)) { + return ThemeKey.light; + } else { + return ThemeKey.dark; + } + } + + static ThemeKey get systemThemeKey { + final brightness = WidgetsBinding.instance.window.platformBrightness; + if (brightness == Brightness.light) { + return ThemeKey.light; + } + return ThemeKey.dark; + } } class CustomThemeState extends State with WidgetsBindingObserver { @@ -169,23 +186,42 @@ class CustomThemeState extends State with WidgetsBindingObserver { _checkSavedTheme(); } - void _checkSavedTheme() async{ - var newThemeKey; - String savedThemeKey = await getPreference(preferenceAppThemeKey); - if(savedThemeKey == null){ - final Brightness brightness = WidgetsBinding.instance.window.platformBrightness; - newThemeKey = brightness == Brightness.light ? ThemeKey.LIGHT : ThemeKey.DARK; - }else{ - newThemeKey = savedThemeKey.compareTo(ThemeKey.LIGHT.toString()) == 0 ? ThemeKey.LIGHT : ThemeKey.DARK; + void _checkSavedTheme() async { + var savedThemeKeyString = await Preference.themeKey; + + ThemeKey savedThemeKey; + if (savedThemeKeyString == null) { + savedThemeKey = ThemeKey.system; + savedThemeKeyString = describeEnum(savedThemeKey); + Preference.themeKey = savedThemeKeyString; + } + + ThemeKey newThemeKey; + if (savedThemeKey == ThemeKey.system) { + final platformBrightness = WidgetsBinding.instance.window.platformBrightness; + newThemeKey = platformBrightness == Brightness.light ? ThemeKey.light : ThemeKey.dark; + } else { + newThemeKey = CustomTheme.getThemeKeyFor(name: savedThemeKeyString); } - changeTheme(newThemeKey); + + changeTheme(themeKey: newThemeKey, preservePreference: true); } - void changeTheme(ThemeKey themeKey) { + void changeTheme({@required ThemeKey themeKey, bool preservePreference = false}) async { setState(() { _actualThemeKey = themeKey; _theme = CustomerThemes.getThemeFromKey(themeKey); }); + + if (!preservePreference) { + Preference.themeKey = describeEnum(themeKey); + } + + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( + statusBarColor: CustomerThemes.getThemeFromKey(themeKey).background, // Android only + statusBarIconBrightness: themeKey == ThemeKey.dark ? Brightness.light : Brightness.dark, // Android only + statusBarBrightness: themeKey == ThemeKey.dark ? Brightness.dark : Brightness.light // iOS only + )); } @override diff --git a/lib/src/l10n/l.dart b/lib/src/l10n/l.dart index 5c7a6e56..26f947e0 100644 --- a/lib/src/l10n/l.dart +++ b/lib/src/l10n/l.dart @@ -429,7 +429,6 @@ class L { static final settingItemChatTitle = _translationKey("Chat"); static final settingItemSignatureTitle = _translationKey("Email signature"); static final settingItemServerSettingsTitle = _translationKey("Server settings"); - static final settingItemDarkModeTitle = _translationKey("Dark mode"); static final settingItemDataProtectionTitle = _translationKey("Data protection"); static final settingItemBlockedTitle = _translationKey("Blocked contacts"); static final settingItemEncryptionTitle = _translationKey("Encryption"); @@ -437,6 +436,13 @@ class L { static final settingItemFeedbackTitle = _translationKey("Feedback"); static final settingItemBugReportTitle = _translationKey("Report a bug"); + static final settingsAppearanceTitle = _translationKey("Appearance"); + static final settingsAppearanceSystemTitle = _translationKey("System"); + static final settingsAppearanceDarkTitle = _translationKey("Dark"); + static final settingsAppearanceLightTitle = _translationKey("Light"); + static final settingsAppearanceDescritpion = _translationKey("Here you can choose your favorite theme. If you choose '%s', the theme may change automatically. This depends on whether you have selected 'Automatic' in the system preferences or not."); + static final settingsAppearanceSystemThemeDescription = _translationKey("Current System theme is: %s"); + static List _translationKey(String key, [String pluralKey]) { String logging = "Registered localization key: '$key'"; if (!pluralKey.isNullOrEmpty()) { diff --git a/lib/src/navigation/navigatable.dart b/lib/src/navigation/navigatable.dart index 7e4e75df..ac7a7fc1 100644 --- a/lib/src/navigation/navigatable.dart +++ b/lib/src/navigation/navigatable.dart @@ -99,6 +99,7 @@ enum Type { settingsKeyTransferDoneDialog, settingsAutocryptImport, settingsNotifications, + settingsAppearance, splash, share, showQr, diff --git a/lib/src/navigation/navigation.dart b/lib/src/navigation/navigation.dart index 344f95f2..ec9f46f4 100644 --- a/lib/src/navigation/navigation.dart +++ b/lib/src/navigation/navigation.dart @@ -53,10 +53,11 @@ import 'package:ox_coi/src/navigation/navigatable.dart'; import 'package:ox_coi/src/settings/settings.dart'; import 'package:ox_coi/src/settings/settings_about.dart'; import 'package:ox_coi/src/settings/settings_anti_mobbing.dart'; +import 'package:ox_coi/src/settings/settings_appearance.dart'; import 'package:ox_coi/src/settings/settings_chat.dart'; import 'package:ox_coi/src/settings/settings_debug.dart'; -import 'package:ox_coi/src/settings/settings_notifications.dart'; import 'package:ox_coi/src/settings/settings_encryption.dart'; +import 'package:ox_coi/src/settings/settings_notifications.dart'; import 'package:ox_coi/src/user/user_account_settings.dart'; class Navigation { @@ -70,6 +71,7 @@ class Navigation { static const String settingsAbout = '/settings/about'; static const String settingsChat = '/settings/chat'; static const String settingsAntiMobbing = '/settings/antiMobbing'; + static const String settingsAppearance = '/settings/appearance'; static const String settingsNotifications = '/settings/notifications'; static const String settingsAntiMobbingList = '/settings/antiMobbingList'; static const String settingsDebug = '/settings/debug'; @@ -86,6 +88,7 @@ class Navigation { settingsChat: (context) => SettingsChat(), settingsAntiMobbing: (context) => SettingsAntiMobbing(), settingsAntiMobbingList: (context) => AntiMobbingList(), + settingsAppearance: (context) => SettingsAppearance(), settingsNotifications: (context) => SettingsNotifications(), settingsDebug: (context) => SettingsDebug(), chatCreate: (context) => ChatCreate(), diff --git a/lib/src/platform/preferences.dart b/lib/src/platform/preferences.dart index a7405fd0..2d4c726f 100644 --- a/lib/src/platform/preferences.dart +++ b/lib/src/platform/preferences.dart @@ -40,6 +40,7 @@ * for more details. */ +import 'package:flutter/cupertino.dart'; import 'package:shared_preferences/shared_preferences.dart'; const preferenceSystemContactsImportShown = "preferenceSystemContactsImportShown"; @@ -54,7 +55,6 @@ const preferenceNotificationsPushStatus = "preferenceNotificationsPushStatus"; const preferenceAppState = "preferenceAppState"; const preferenceInviteServiceUrl = "preferenceInviteServiceUrl"; const preferenceHasAuthenticationError = "preferenceHasAuthenticationError"; -const preferenceAppThemeKey = "preferenceAppThemeKey"; const preferenceNotificationsAuth = "preferenceNotificationsAuth"; // Unused const preferenceNotificationsP256dhPublic = "preferenceNotificationsP256dhPublic"; // Unused @@ -96,4 +96,20 @@ Future removePreference(String key) async { Future clearPreferences() async { SharedPreferences sharedPreferences = await getSharedPreferences(); await sharedPreferences.clear(); +} + +class Preference { + + static const _themeKey = "themeKey"; + static Future get themeKey async => await value(forKey: _themeKey); + static set themeKey(String value) => set(value: value, forKey: _themeKey); + + static set({@required value, @required String forKey}) async { + await setPreference(forKey, value); + } + + static value({@required String forKey}) async { + return await getPreference(forKey); + } + } \ No newline at end of file diff --git a/lib/src/settings/settings_anti_mobbing.dart b/lib/src/settings/settings_anti_mobbing.dart index bfe3418a..695ba6ef 100644 --- a/lib/src/settings/settings_anti_mobbing.dart +++ b/lib/src/settings/settings_anti_mobbing.dart @@ -44,6 +44,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:ox_coi/src/brandable/brandable_icon.dart'; +import 'package:ox_coi/src/brandable/custom_theme.dart'; import 'package:ox_coi/src/l10n/l.dart'; import 'package:ox_coi/src/l10n/l10n.dart'; import 'package:ox_coi/src/navigation/navigatable.dart'; @@ -93,7 +94,11 @@ class _SettingsAntiMobbingState extends State { contentPadding: EdgeInsets.symmetric(vertical: listItemPadding, horizontal: listItemPadding), title: Text(L10n.get(L.settingAntiMobbing)), subtitle: Text(L10n.get(L.settingAntiMobbingText)), - trailing: Switch.adaptive(value: state.antiMobbingActive, onChanged: (value) => _changeAntiMobbingSetting()), + trailing: Switch.adaptive( + value: state.antiMobbingActive, + onChanged: (value) => _changeAntiMobbingSetting(), + activeColor: CustomTheme.of(context).accent, + ), ), Visibility( visible: state.antiMobbingActive, diff --git a/lib/src/settings/settings_appearance.dart b/lib/src/settings/settings_appearance.dart new file mode 100644 index 00000000..f1914ebd --- /dev/null +++ b/lib/src/settings/settings_appearance.dart @@ -0,0 +1,202 @@ +/* + * OPEN-XCHANGE legal information + * + * All intellectual property rights in the Software are protected by + * international copyright laws. + * + * + * In some countries OX, OX Open-Xchange and open xchange + * as well as the corresponding Logos OX Open-Xchange and OX are registered + * trademarks of the OX Software GmbH group of companies. + * The use of the Logos is not covered by the Mozilla Public License 2.0 (MPL 2.0). + * Instead, you are allowed to use these Logos according to the terms and + * conditions of the Creative Commons License, Version 2.5, Attribution, + * Non-commercial, ShareAlike, and the interpretation of the term + * Non-commercial applicable to the aforementioned license is published + * on the web site https://www.open-xchange.com/terms-and-conditions/. + * + * Please make sure that third-party modules and libraries are used + * according to their respective licenses. + * + * Any modifications to this package must retain all copyright notices + * of the original copyright holder(s) for the original code used. + * + * After any such modifications, the original and derivative code shall remain + * under the copyright of the copyright holder(s) and/or original author(s) as stated here: + * https://www.open-xchange.com/legal/. The contributing author shall be + * given Attribution for the derivative code and a license granting use. + * + * Copyright (C) 2016-2020 OX Software GmbH + * Mail: info@open-xchange.com + * + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the Mozilla Public License 2.0 + * for more details. + */ + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:ox_coi/src/brandable/brandable_icon.dart'; +import 'package:ox_coi/src/brandable/custom_theme.dart'; +import 'package:ox_coi/src/extensions/color_apis.dart'; +import 'package:ox_coi/src/l10n/l.dart'; +import 'package:ox_coi/src/l10n/l10n.dart'; +import 'package:ox_coi/src/navigation/navigatable.dart'; +import 'package:ox_coi/src/navigation/navigation.dart'; +import 'package:ox_coi/src/settings/settings_appearance_bloc.dart'; +import 'package:ox_coi/src/settings/settings_appearance_event_state.dart'; +import 'package:ox_coi/src/ui/dimensions.dart'; +import 'package:ox_coi/src/utils/vibration.dart'; +import 'package:ox_coi/src/widgets/dynamic_appbar.dart'; +import 'package:ox_coi/src/widgets/state_info.dart'; + +class SettingsAppearance extends StatefulWidget { + static get viewTitle => L10n.get(L.settingsAppearanceTitle); + + SettingsAppearance(); + + @override + _SettingsAppearanceState createState() => _SettingsAppearanceState(); +} + +class _SettingsAppearanceState extends State { + SettingsAppearanceBloc _settingsAppearanceBloc = SettingsAppearanceBloc(); + Navigation _navigation = Navigation(); + + @override + void initState() { + super.initState(); + _navigation.current = Navigatable(Type.settingsAppearance); + _settingsAppearanceBloc.add(LoadAppearance()); + } + + @override + Widget build(BuildContext context) { + return BlocBuilder( + bloc: _settingsAppearanceBloc, + builder: (context, state) { + if (state is SettingsAppearanceStateInitial) { + return StateInfo(showLoading: true); + } else if (state is SettingsAppearanceStateLoaded) { + return _buildAppearanceSelector(selectedTheme: state.themeKey); + } else { + return Center( + child: AdaptiveIcon(icon: IconSource.error), + ); + } + }); + } + + Widget _buildAppearanceSelector({@required ThemeKey selectedTheme}) { + return Scaffold( + appBar: DynamicAppBar( + title: SettingsAppearance.viewTitle, + leading: AppBarBackButton(context: context), + ), + body: _AppearanceSelector( + themeItemData: { + ThemeKey.light: L10n.get(L.settingsAppearanceLightTitle), + ThemeKey.dark: L10n.get(L.settingsAppearanceDarkTitle), + ThemeKey.system: L10n.get(L.settingsAppearanceSystemTitle), + }, + selectedTheme: selectedTheme, + onChanged: _appearanceChanged, + ) + ); + } + + void _appearanceChanged(ThemeKey theme) async { + vibrateLight(); + CustomTheme.instanceOf(context).changeTheme(themeKey: theme); + _settingsAppearanceBloc.add(AppearanceLoaded(themeKey: theme)); + } +} + +class _AppearanceSelector extends StatelessWidget { + final Map themeItemData; + final ThemeKey selectedTheme; + final ValueChanged onChanged; + + const _AppearanceSelector({Key key, @required this.themeItemData, @required this.selectedTheme, @required this.onChanged}) : super(key: key); + + @override + Widget build(BuildContext context) { + final systemTheme = themeItemData[CustomTheme.systemThemeKey]; + + return Container( + padding: EdgeInsets.all(dimension32dp), + color: CustomTheme.of(context).background, + child: Column( + children: [ + Container( + padding: EdgeInsets.only(bottom: dimension32dp), + child: Text( + L10n.getFormatted(L.settingsAppearanceDescritpion, [L10n.get(L.settingsAppearanceSystemTitle)]), + ) + ), + Row( + children: [ + for (var themeKey in themeItemData.keys) + _buildAppearanceSelectorItem(context, themeKey), + ], + ), + ], + ), + ); + } + + Widget _buildAppearanceSelectorItem(BuildContext context, ThemeKey themeKey) { + return Expanded( + child: GestureDetector( + onTap: () => onChanged(themeKey), + child: Column( + children: [ + Container( + margin: EdgeInsets.only(left: dimension8dp, right: dimension8dp), + padding: EdgeInsets.all(dimension16dp), + decoration: BoxDecoration( + color: selectedTheme == themeKey ? CustomTheme.of(context).surface : CustomTheme.of(context).background, + borderRadius: BorderRadius.all(Radius.circular(dimension8dp)), + border: selectedTheme == themeKey ? Border.all(color: CustomTheme.of(context).onBackground.barely()) : null, + ), + child: Column( + children: [ + Padding( + padding: EdgeInsets.only(bottom: dimension16dp), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(dimension4dp)), + border: Border.all(color: CustomTheme.of(context).onBackground.slightly()), + ), + child: Image( + image: AssetImage('assets/images/theme_coi_${describeEnum(themeKey)}.png'), + ), + ), + ), + Text( + themeItemData[themeKey], + ), + ], + ), + ), + Padding( + padding: EdgeInsets.only(bottom: dimension16dp), + child: Radio( + value: themeKey, + groupValue: selectedTheme, + onChanged: (value) => onChanged(themeKey), + ), + ) + ], + ), + ), + ); + } +} diff --git a/lib/src/settings/settings_appearance_bloc.dart b/lib/src/settings/settings_appearance_bloc.dart new file mode 100644 index 00000000..6315869a --- /dev/null +++ b/lib/src/settings/settings_appearance_bloc.dart @@ -0,0 +1,63 @@ +/* + * OPEN-XCHANGE legal information + * + * All intellectual property rights in the Software are protected by + * international copyright laws. + * + * + * In some countries OX, OX Open-Xchange and open xchange + * as well as the corresponding Logos OX Open-Xchange and OX are registered + * trademarks of the OX Software GmbH group of companies. + * The use of the Logos is not covered by the Mozilla Public License 2.0 (MPL 2.0). + * Instead, you are allowed to use these Logos according to the terms and + * conditions of the Creative Commons License, Version 2.5, Attribution, + * Non-commercial, ShareAlike, and the interpretation of the term + * Non-commercial applicable to the aforementioned license is published + * on the web site https://www.open-xchange.com/terms-and-conditions/. + * + * Please make sure that third-party modules and libraries are used + * according to their respective licenses. + * + * Any modifications to this package must retain all copyright notices + * of the original copyright holder(s) for the original code used. + * + * After any such modifications, the original and derivative code shall remain + * under the copyright of the copyright holder(s) and/or original author(s) as stated here: + * https://www.open-xchange.com/legal/. The contributing author shall be + * given Attribution for the derivative code and a license granting use. + * + * Copyright (C) 2016-2020 OX Software GmbH + * Mail: info@open-xchange.com + * + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the Mozilla Public License 2.0 + * for more details. + */ + +import 'package:bloc/bloc.dart'; +import 'package:ox_coi/src/brandable/custom_theme.dart'; +import 'package:ox_coi/src/platform/preferences.dart'; +import 'package:ox_coi/src/settings/settings_appearance_event_state.dart'; + +class SettingsAppearanceBloc extends Bloc { + @override + SettingsAppearanceState get initialState => SettingsAppearanceStateInitial(); + + @override + Stream mapEventToState(SettingsAppearanceEvent event) async* { + if (event is LoadAppearance) { + final themeKeyString = await Preference.themeKey; + final savedThemeKey = CustomTheme.getThemeKeyFor(name: themeKeyString); + add(AppearanceLoaded(themeKey: savedThemeKey)); + + } else if (event is AppearanceLoaded) { + yield SettingsAppearanceStateLoaded(themeKey: event.themeKey); + } + } +} diff --git a/lib/src/settings/settings_appearance_event_state.dart b/lib/src/settings/settings_appearance_event_state.dart new file mode 100644 index 00000000..72cf0e32 --- /dev/null +++ b/lib/src/settings/settings_appearance_event_state.dart @@ -0,0 +1,68 @@ +/* + * OPEN-XCHANGE legal information + * + * All intellectual property rights in the Software are protected by + * international copyright laws. + * + * + * In some countries OX, OX Open-Xchange and open xchange + * as well as the corresponding Logos OX Open-Xchange and OX are registered + * trademarks of the OX Software GmbH group of companies. + * The use of the Logos is not covered by the Mozilla Public License 2.0 (MPL 2.0). + * Instead, you are allowed to use these Logos according to the terms and + * conditions of the Creative Commons License, Version 2.5, Attribution, + * Non-commercial, ShareAlike, and the interpretation of the term + * Non-commercial applicable to the aforementioned license is published + * on the web site https://www.open-xchange.com/terms-and-conditions/. + * + * Please make sure that third-party modules and libraries are used + * according to their respective licenses. + * + * Any modifications to this package must retain all copyright notices + * of the original copyright holder(s) for the original code used. + * + * After any such modifications, the original and derivative code shall remain + * under the copyright of the copyright holder(s) and/or original author(s) as stated here: + * https://www.open-xchange.com/legal/. The contributing author shall be + * given Attribution for the derivative code and a license granting use. + * + * Copyright (C) 2016-2020 OX Software GmbH + * Mail: info@open-xchange.com + * + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the Mozilla Public License 2.0 + * for more details. + */ + +// Bloc Events + +import 'package:flutter/cupertino.dart'; +import 'package:ox_coi/src/brandable/custom_theme.dart'; + +mixin SettingsAppearanceEvent {} + +class LoadAppearance with SettingsAppearanceEvent {} + +class AppearanceLoaded with SettingsAppearanceEvent { + final ThemeKey themeKey; + + AppearanceLoaded({@required this.themeKey}); +} + +// Bloc States + +mixin SettingsAppearanceState {} + +class SettingsAppearanceStateInitial with SettingsAppearanceState {} + +class SettingsAppearanceStateLoaded with SettingsAppearanceState { + final ThemeKey themeKey; + + SettingsAppearanceStateLoaded({@required this.themeKey}); +} diff --git a/lib/src/settings/settings_chat.dart b/lib/src/settings/settings_chat.dart index 8a9057b4..66eee330 100644 --- a/lib/src/settings/settings_chat.dart +++ b/lib/src/settings/settings_chat.dart @@ -44,6 +44,7 @@ import 'package:delta_chat_core/delta_chat_core.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:ox_coi/src/brandable/custom_theme.dart'; import 'package:ox_coi/src/l10n/l.dart'; import 'package:ox_coi/src/l10n/l10n.dart'; import 'package:ox_coi/src/navigation/navigatable.dart'; @@ -91,7 +92,11 @@ class _SettingsChatState extends State { contentPadding: EdgeInsets.symmetric(vertical: listItemPadding, horizontal: listItemPadding), title: Text(L10n.get(L.settingReadReceiptP, count: L10n.plural)), subtitle: Text(L10n.get(L.settingReadReceiptText)), - trailing: Switch.adaptive(value: state.readReceiptsEnabled, onChanged: (value) => _changeReadReceipts()), + trailing: Switch.adaptive( + value: state.readReceiptsEnabled, + onChanged: (value) => _changeReadReceipts(), + activeColor: CustomTheme.of(context).accent, + ), ), ListTile( contentPadding: EdgeInsets.symmetric(vertical: listItemPadding, horizontal: listItemPadding), @@ -130,18 +135,21 @@ class _SettingsChatState extends State { value: Context.showEmailsOff, groupValue: inviteSetting, onChanged: _onMessageSyncChooserTab, + activeColor: CustomTheme.of(context).accent, ), RadioListTile( title: Text(L10n.get(L.settingMessageSyncingTypeKnown)), value: Context.showEmailsAcceptedContacts, groupValue: inviteSetting, onChanged: _onMessageSyncChooserTab, + activeColor: CustomTheme.of(context).accent, ), RadioListTile( title: Text(L10n.get(L.settingMessageSyncingTypeAll)), value: Context.showEmailsAll, groupValue: inviteSetting, onChanged: _onMessageSyncChooserTab, + activeColor: CustomTheme.of(context).accent, ), ], ); diff --git a/lib/src/settings/settings_notifications.dart b/lib/src/settings/settings_notifications.dart index fe574d59..411ba575 100644 --- a/lib/src/settings/settings_notifications.dart +++ b/lib/src/settings/settings_notifications.dart @@ -45,17 +45,17 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:ox_coi/src/brandable/brandable_icon.dart'; +import 'package:ox_coi/src/brandable/custom_theme.dart'; import 'package:ox_coi/src/l10n/l.dart'; import 'package:ox_coi/src/l10n/l10n.dart'; import 'package:ox_coi/src/navigation/navigatable.dart'; import 'package:ox_coi/src/navigation/navigation.dart'; +import 'package:ox_coi/src/settings/settings_notifications_bloc.dart'; import 'package:ox_coi/src/settings/settings_notifications_event_state.dart'; import 'package:ox_coi/src/ui/dimensions.dart'; import 'package:ox_coi/src/widgets/dynamic_appbar.dart'; import 'package:ox_coi/src/widgets/state_info.dart'; -import 'settings_notifications_bloc.dart'; - class SettingsNotifications extends StatefulWidget { @override _SettingsNotificationsState createState() => _SettingsNotificationsState(); @@ -97,7 +97,11 @@ class _SettingsNotificationsState extends State { contentPadding: const EdgeInsets.symmetric(vertical: listItemPadding, horizontal: listItemPadding), title: Text(L10n.get(L.settingNotificationPull)), subtitle: Text(L10n.get(L.settingNotificationPullText)), - trailing: Switch.adaptive(value: state.pullActive, onChanged: (value) => _changeNotificationsSetting()), + trailing: Switch.adaptive( + value: state.pullActive, + onChanged: (value) => _changeNotificationsSetting(), + activeColor: CustomTheme.of(context).accent, + ), ), ), Visibility( diff --git a/lib/src/settings/settings_notifications_bloc.dart b/lib/src/settings/settings_notifications_bloc.dart index 93454eae..7f6285db 100644 --- a/lib/src/settings/settings_notifications_bloc.dart +++ b/lib/src/settings/settings_notifications_bloc.dart @@ -44,8 +44,7 @@ import 'package:bloc/bloc.dart'; import 'package:delta_chat_core/delta_chat_core.dart'; import 'package:ox_coi/src/background_refresh/background_refresh_manager.dart'; import 'package:ox_coi/src/platform/preferences.dart'; - -import 'settings_notifications_event_state.dart'; +import 'package:ox_coi/src/settings/settings_notifications_event_state.dart'; class SettingsNotificationsBloc extends Bloc { @override diff --git a/lib/src/ui/text_styles.dart b/lib/src/ui/text_styles.dart index 3100fb93..a65a119f 100644 --- a/lib/src/ui/text_styles.dart +++ b/lib/src/ui/text_styles.dart @@ -45,18 +45,18 @@ import 'package:flutter/material.dart'; import '../brandable/custom_theme.dart'; import '../extensions/color_apis.dart'; -getAccentW500TextStyle(BuildContext context){ +getAccentW500TextStyle(BuildContext context) { return TextStyle(color: CustomTheme.of(context).accent, fontWeight: FontWeight.w500); } -getProfileHeaderTextStyle(BuildContext context){ +getProfileHeaderTextStyle(BuildContext context) { return Theme.of(context).textTheme.body1.apply(color: CustomTheme.of(context).onSurface); } -getProfileHeaderSecondTextStyle(BuildContext context){ +getProfileHeaderSecondTextStyle(BuildContext context) { return Theme.of(context).textTheme.caption.apply(color: CustomTheme.of(context).onSurface.fade()); } -getProfileHeaderPlaceholderTextStyle(BuildContext context){ +getProfileHeaderPlaceholderTextStyle(BuildContext context) { return Theme.of(context).textTheme.body1.apply(color: CustomTheme.of(context).onSurface.disabled()); } diff --git a/lib/src/user/user_profile.dart b/lib/src/user/user_profile.dart index fa56770c..c69b5736 100644 --- a/lib/src/user/user_profile.dart +++ b/lib/src/user/user_profile.dart @@ -62,6 +62,7 @@ import 'package:ox_coi/src/navigation/navigation.dart'; import 'package:ox_coi/src/platform/app_information.dart'; import 'package:ox_coi/src/platform/preferences.dart'; import 'package:ox_coi/src/qr/qr.dart'; +import 'package:ox_coi/src/settings/settings_appearance.dart'; import 'package:ox_coi/src/settings/settings_signature.dart'; import 'package:ox_coi/src/user/user_bloc.dart'; import 'package:ox_coi/src/user/user_change_bloc.dart'; @@ -189,13 +190,11 @@ class _ProfileState extends State { text: L10n.get(L.settingGroupHeaderGeneralTitle), ), SettingsItem( - icon: IconSource.darkMode, - text: L10n.get(L.settingItemDarkModeTitle), - iconBackground: CustomTheme.of(context).darkModeIcon, - onTap: () => _changeTheme(), - showSwitch: true, - onSwitchChanged: () => _changeTheme(), - key: Key(keyUserProfileDarkModeIconSource), + icon: IconSource.appearance, + text: SettingsAppearance.viewTitle, + iconBackground: CustomTheme.of(context).appearanceIcon, + onTap: () => _settingsItemTapped(context, SettingsItemName.appearance), + key: Key(keyUserProfileAppearanceIconSource), ), SettingsItem( icon: IconSource.notifications, @@ -319,6 +318,9 @@ class _ProfileState extends State { case SettingsItemName.invite: _createInviteUrl(); break; + case SettingsItemName.appearance: + navigation.pushNamed(context, Navigation.settingsAppearance); + break; case SettingsItemName.notification: navigation.pushNamed(context, Navigation.settingsNotifications); break; @@ -381,13 +383,6 @@ class _ProfileState extends State { mainBloc.add(Logout()); } - void _changeTheme() async { - ThemeKey actualKey = CustomTheme.instanceOf(context).actualThemeKey; - var newTheme = actualKey == ThemeKey.DARK ? ThemeKey.LIGHT : ThemeKey.DARK; - await setPreference(preferenceAppThemeKey, newTheme.toString()); - CustomTheme.instanceOf(context).changeTheme(newTheme); - } - void _editPhotoCallback(String avatarPath) { setState(() { _avatarPath = avatarPath; diff --git a/lib/src/utils/keyMapping.dart b/lib/src/utils/keyMapping.dart index 29d44894..b09dc820 100644 --- a/lib/src/utils/keyMapping.dart +++ b/lib/src/utils/keyMapping.dart @@ -85,6 +85,7 @@ const keyUserProfileBlockIconButton = "keyContactListBlockIconButton"; const keyUserProfileBlockIconSource = "keyUserProfilBlockIconSource"; const keyUserProfileNotificationIconSource = "keyProfileNotificationIconSource"; const keyUserProfileDarkModeIconSource = "keyProfileDarkModeIconSource"; +const keyUserProfileAppearanceIconSource = "keyProfileAppearanceIconSource"; const keyUserProfileServerSettingIconSource = "keyUserProfileServerSettingIconSource"; const keyContactDetailOpenChatProfileActionIcon = "keyContactDetailOpenChatProfileActionIcon"; diff --git a/lib/src/utils/vibration.dart b/lib/src/utils/vibration.dart index 6473591d..96614df4 100644 --- a/lib/src/utils/vibration.dart +++ b/lib/src/utils/vibration.dart @@ -42,4 +42,6 @@ import 'package:vibrate/vibrate.dart'; -vibrateMedium ()=> Vibrate.feedback(FeedbackType.medium); \ No newline at end of file +void vibrateLight() => Vibrate.feedback(FeedbackType.light); + +void vibrateMedium() => Vibrate.feedback(FeedbackType.medium); diff --git a/lib/src/widgets/settings_item.dart b/lib/src/widgets/settings_item.dart index 118c8188..903c2e58 100644 --- a/lib/src/widgets/settings_item.dart +++ b/lib/src/widgets/settings_item.dart @@ -53,6 +53,7 @@ enum SettingsItemName { flagged, qrShow, invite, + appearance, notification, chat, signature, From 9e59edeeeec9e1f6d426a04154c9c4c94f5b1570 Mon Sep 17 00:00:00 2001 From: Frank Gregor Date: Mon, 6 Apr 2020 12:10:04 +0200 Subject: [PATCH 2/3] * Fixes broken changes after Merge commit with develop * Adds missing line break after last line of code * Fixes bug on using describeEnum(..) * Updates assets to new versions * Adapts corner radius at image border according Cornelius' request * adapts UI according to Cornelius' request * fixes Image height * removes code regarding convenience class 'Preference' --- assets/images/2.0x/theme_coi_dark.png | Bin 11710 -> 7504 bytes assets/images/2.0x/theme_coi_light.png | Bin 11508 -> 7296 bytes assets/images/2.0x/theme_coi_system.png | Bin 18212 -> 11373 bytes assets/images/3.0x/theme_coi_dark.png | Bin 20133 -> 12013 bytes assets/images/3.0x/theme_coi_light.png | Bin 20001 -> 11905 bytes assets/images/3.0x/theme_coi_system.png | Bin 31501 -> 17699 bytes assets/images/theme_coi_dark.png | Bin 4902 -> 3589 bytes assets/images/theme_coi_light.png | Bin 4767 -> 3483 bytes assets/images/theme_coi_system.png | Bin 8049 -> 5601 bytes lib/main.dart | 74 +++++++++--------- lib/src/brandable/custom_theme.dart | 49 +++++++----- lib/src/platform/preferences.dart | 17 +--- lib/src/settings/settings_appearance.dart | 18 +++-- .../settings/settings_appearance_bloc.dart | 2 +- lib/src/ui/dimensions.dart | 1 + 15 files changed, 78 insertions(+), 83 deletions(-) diff --git a/assets/images/2.0x/theme_coi_dark.png b/assets/images/2.0x/theme_coi_dark.png index c07fec1638b48aff2071e9d25fb685c792f0a7ac..2adcedec1a948d4133cb8aad7658c4551f2bfa72 100644 GIT binary patch literal 7504 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 literal 11710 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 IIn(F=0xup=hX4Qo diff --git a/assets/images/2.0x/theme_coi_light.png b/assets/images/2.0x/theme_coi_light.png index 8da8a20eff355869078c0fb6c98f167936ddc2c4..07692991ab061a6e2ff7fc5fc439e19d3002ac75 100644 GIT binary patch literal 7296 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 PzkeDkI*R9C>oBF6%OK)6bZvQI%EFf9lK zLBl`;okLZJ;4*t*>OGrUqgIo-sh+a61t6PZ!`r4tzi$lw2?f z1^5R4d6x_MhZIbki}H_W2rxGY1kb8y0f9J7m1L!Kyuo`}m}ykj=?9DBMk&nOc(b$= zMzjzJJp_`Wm82Fgw?Y2+LyWhaaoji8-|g$B=$;!sOW(lh6rKp%Ofqz8cWbl``WV{h z2(ly#VvIMOR*CAi+Xbn=7tTwWKQ)a!J=M*+E7>W%3QXQC(3q@mIXJkTHoAU^cZc`%LCO4{p3MKMda8+MQM zGt;=KX3saD`Cb@LOq()RpPf4^?0l*yB(B2riz0ca=sg>^|`C1UNZ_;k9=IyRj+y`XsoC}@0v$iPNx69x^8m@ zX-sH+a#nsOd7b)rw${RYVu8IPTi3?Rt;VwSHae)L#%kh&*5@-OeU3CT>~z#GQ5oio zhEsF*XBnt;G?1xKoDhF{fiI-emaP6rcrW_k%yW$Byu(Wf9SyhTJ39Wb_D$?J{%uj5 zVWXs2Ib6Tit`THLQDNPh7yeZ-ah~R*_f*gB+ZfTQLFHhz#1pc zj@%O0j7n}@X``mF^OKgVb3+ z&}4Syw@sPRp7y+l&bts#wCJ)k-lJDpM9wdK=W<(HOUPTstcyRNRc{lUg*-LbTNm}Z zB2V%Fm$t-wZ7IF&ybgbRjM2 zGm#a*&V&avYzv|VC(JR&W0QBm*S`MO>eh9ONXOpkT%Bjv*phr5)42uM`g@+86kqd{ zLV6oJBcw7SjuTy5cI*DKJz=+NzQ!5DCINXAM+S(={LN_6|WW9ht5<~gSsX0FE1 z(m+y9nKb83mcxcX61V`YlTe_rtM1R8+w7W*j(Utt=Ngg?NFX zbjgP3#y+_$BO0|IiM*+Zz4kLijZ1ugnXu_BW_*$w;eSsTtcFN7w)NMmGl!a)KRa}R3g~hlJy!Z|Iv@GqF1fz!jMjYN$q5tU*}~HO zjjQnIm1b?0z5CyZd}}c@2am6)cPaqYjwe5RK5Owmd&egO9x!4OJjsYKJZ~=QUg&%` z``|k*It;-NpptQJPH6E3Xi z3T0Jf0DaLd`Aik3JKto zOWt8PxDWdBji?jPIfXv9mp9Y2h7L5AY+{yogF~w}M(qUR|qXlph-yV-=B8jvVAk#rFi!9WTV{ zXfC}#MywT9JZu#{t@ltE(~y#5)LnS1$2+A+>*lM}Yx~B2TUX57mo8%U=-~=$$W-6;{DU+@so?y}7DZ&UuL3G1$-^YpqKDxP zf@autly#V8xt1jSx}I~z`96R-;$4r{?Xwq|uBE8o)TF4Lq@=29_@$cm$SzTEk0++10%$vUV5b#hOC9eaRH{GL<7nj;J@1R<7u z$j!@pY&|*Qhplp&DiOAuYIw=8bbB?zu;X6bFZTZJel(V1ZcKRS(W-!Am^8aSD- z@A77~+^` zePZpZ5^(u^(FeNrF6=cobOs$uCQ<|mg~f4^W3|KJa0^zgo>UOzSWZTY6oSEu!?bfj zaM+ThweVbKQ{HE32z|Y4k4wpD#OS*uKkch7S` z_)@Df0@aD_?2~=0`8W1Xd0GYrV_t-3-(ynk31Tz|Xy-TaH%lTVHYM+(MUMXAomon?W2r!5= zU(L547hqgCwI}c*T&vYUU~AF9Vxw5Z(+5&taN+RT7_*%zhTI96I7bwJ4aR3*>$ZvG z7jIP8)>-7fI1z2@Jt!P9{(r`C(s*IkGcEufZ8XfMJ=41d~$6;G)0z1^f4|168M8v zxGP+_=Ow!at&QSeg5OcO3m_Fg96J|QbPq61Kl3Ge)wjt!CishVqUJUHP-_MuqH{kH zKZbMK>HdQyzb@~U4JH(uwZ_T9`ziD$wmqR5;mZ4Ge?8b*6Y(<_wSm@yqP#m?-r8DjQEf*1J^IT(ex1Faar#(8YMqU!K$PE||DbUU zL^`%LfBgM|3A`APd$zwUi?i|4|L<<4F%Z-ZJofN%Kp_zY-p0$WFRGeF-w$tdCR2wR zA7_ml$xIa(PGLf+Lr-zva$GN@C`$OQTuxMtGt}j|y~2cIu{Jqb_&kOB1H1iKyqVHe z7cf`ZeCUwlupq?RBobz=XcFz5uFG{jT%4F6lTQEc0nWUx&-9>e8hpv(rX*-TiSzwL zUv9*Bvfc>R{Oi)Ae*n2>NJb#C=j8Y-2qTc?Q!*oW2{Qx<@jblzQ4!)8!0tO$(&tP5 zQN7Kp=i?_oM*P*U^a`L zK7Gy*+?HQSSI6#taw^I&yBE2+<)slh5!OG;1Y^zp)fl?2gnuZGrP2@T?h^z14Bz|s0$4js6uz_YMWoH+!7mr{&ERRJz2OV=Stn~Q@!f;NsHhpW|F ziHpJ7@vY{Y2h>W2h}QuH^50_^#jCxa79mtKaaxd@rvdUPw(n*g+8rWg<@exlGTcl~ z8wOe<`gko-nC4$HjNTMQs|h@4(pcN`ft-xYpuomS zE9bm)M8Xo)KN!&~g1T%|w^-vwAH@THboA>PDj)O1V=9OQbXZrqagLpWIF4W>?rK;` zj>eFqT-jVl)>B!mo<6$-p--x6UZ*$6S@tcC6_@#t7)pc_@!cG<3)AGLRThBGxK4pS z2&I7_SQ|3MVIau&|Jv4r9(&Mw-9?P8@7foZMyu6wy7XydE?Y`L-Ev{i!ii|{N2J5< zi+&&U$_$Ci!-?$6^sDH*#%hE;T74mhl@wnt$nWz{&Xf6))7sS?+S?QQm0GM9uPt*~ zQs;^HCP^?@VYYWzlOY9$p8%qW{i0q4fv_dGEFJtf`=)7nw^6sCdD^Uu!OCCqOV0tL zA>^k%P4x%q6+fbGyq9OF+WX(=Y63b;o}MD6t`aVD$#^wkS((Y9;jb_zVIhO84=vCyB3zmZ==XoNf;GKJaZ9I*%V&Q_+}Nx-ub1r$&i<&;wNZ0Sz8v2i zI67Hm_(XGIG5aZg`W=KhQ~cN}2P81!=BLXhiVWujM?Xeg?xpru`Uu>^7@J9PLlyzd;^fb2nI@_WB0@kYu#d zw_!tW;Dg`II)&^)km=SdF$x;;%hMk}#@G^pq~Z6<0q-_Uo<*h2 z44znJInJJFr#6R!AE5xJFdc?LRI_k`UBZvF6lSPzoQ@;sj~s4f$!D*rHPBvWCWsU0 z8xsb5L-}o`)VfDm{h%weZ#YHx`7yJj&lT2x)f`nXg70)#`-s8!YBTLJZtJYWoic6r zPrEntd=nV)`vPqU*Gd>Y#BUkn0*lr7WT$S* zk>ayy+xMUN5pr;@I`md@proaG#X4c(uOkukvn()^ZLPEBh)&ADkTV5`|6{PbbV~Q! zSA!~y7Zxflt}@%B>VLunFKeFkhtWUWf<8=-aydY6#)N!d`4PWb5gE6nMg&2o@|w;| zu+ktM?URu5yV?G2L=CI$v+;9dwC@4uXogSkG_c3!sqK3(TqXJ^?X)C~C`Mlg!S8mqpVC=5Zq=XRGF)y@VyB&P5Lya>~T#GQyi zA^q+igon6bCXn!m%)cs<1w5oM;W?3Nwv}2paz0QVV=>!euV46tq~IfvS{nXfRcI+y zDm--X&-Pr|HCpPL*x$!*Sih!1Mh{?1xcu-CKJzve)Ej0RIYE;34v1)Vu1fh{1XHJr zl+lK_);!|p%Z`5VcLwuX7}HJs*4o_ERQQU&pBZchcJxjBq*6on-Ky-2c+_feW~$_B^y$7vo}IRRmQTe`Z)(#5#2)r!@d!p{O94$wJ1kI7sZRdtFF^(O_8uh>4exH6Z z&x9`6k4kd%=B1SjnIkMNc*kntW~)gtf+b(MXv_id%rEB-ije9nTNBW2^zGOn4+NvP3i19G2{@g3M?dJ_G;mvPfBJ0c4@Nht zpz*#PZyAQg`SCp2;eq^5SmvVgQ%JL}5%o!c$e z=FgtxJ{ak<#`JAZ?#2f|p8RZ)q+}$nJ`NKChB|5cTBNdoU~(`72uceAF2?`l)gb6| zdd;G#3K4-8IA`m#0Etow$_m|(PF@T+Ee`mgc`0^s)5uRlD7E&H5}fVGUpIN7NW$2h z^IInll-3;4R=Km<-$KGE-$bDX_dEACeX3$ZO8VyUpZTHqTRNc!hi4JZqQMV~(@%Fg z@={*6LBSY|(ru#rqNAb{jdB5s5|P}tFbudk7np1F=gJ<~r%C1-f%+%oZ-+K|cSyB& zlHoyMq%3Wd<*pC?LqJdhW;jHdRH#D=1X+bD!dE#i(10mb5zr)VmoPxyjTwjNHaNtE zz!cL!n5-5{IOt%EC_-9rbj=b4ls1kVOrY7`_P0sl5OUjZPk^mjKp1o11oKfsX}Q%A zQ2yc9&VMPO2**UR6#}%&1Yy3&L|vo>1-}8NCqNr^fg#$2zyza0*hoMTOkjE@oXllF z?h4HG?zdrMT`XGUVW;^Mdg|oUOm0-PApvyjofru!QAOG@69+1(0 ztj{Djgs?yRJUW#JfvUnT_GOyZfimFben~^I`rU0pLv>Nt&49ZQv{aab{|(|6iu4KU zDM*OjwD7vGY(7wMtPcEi&c;e(B{bzf5{AT^(+`*=N> zcGu6q3=&zu0m*Qy`sKL^^N+DBm+FxO| zm*_c%X63aQ;cSe%-Z5`o2twhopA1p=%2v(;I9h4Tv0v-l; zDWxLmK*4ap3ve+aX%NJffc8Il`KOo&CT4vDLE+vo-1m*)f3ZHR!}t;zCEM z(RuA$C!P_2bR~ia|7Tvd&OMCbpIa{Xk@Iy=&g}a7v}w43n_&o){s26bBOwW{DS5!- zb(Oh;$^qDqSBcgQa_mH;YM=4M(bQ0e?=hejN^ozuIm=$q2eH{R9h^d_mvEg$38nC6 z#FDZ=Qn^7*Vc0W%*Q~bV^#KzF^UnKTKRAu?F}Rp3EnqulY%NaTvwIq0+W*j!2sN@(A84d&%kpowYeeP{@JI}|yuD44QHQ(OdDBs|8x!9Xm zreaC+4h(F`3UeY8A;#wy?z_J6>Dk+JhqP@w-&OvGm6?kEKI{eiM*Ay(VL0fxi=jIE zA?Fd@-NS0fSLILEa8G?|+(SIhyp+%3=L;IK-hTW;(L?z;0TYYD;~Tx-IMMsQmFJ{-5g>AB11^daO61cf1wfX9+K!gqmdgpsa|%?pt#gJxdPf z@$&s+UR$YxLY*)Wv|29rEL_X0WctLoERfM*bIMy>;`VvG${pJR&lVLxv!QTD%q__S z!pl42KC+*@Mr-IhPr`R7qGS7-mWOE9Pvvcd8mCl#yTb$gCPwH?(>Xqw%*i>mFwgRk z0hAb#1^*5GeV9ex(br00O5LOvElMN`LjyuAfdM8C77q+^n^L2+%hgyDK9Rf?am7H& zfFOMY5!r|zPnhhNJIB5_rVI6W0q$RgelQC=c%d<}J}(*-JJhGWs<;h<Boa?J%stO{3rwB@OEZSBdA0lLJU_9g-!&uhaWCub){|{~_144d z?eAaDXilf+^6j!8@tU-tEL@BF1pzfA>HT1u?gIPYP?iRuEc7pwi9tUADC@!V{Vzh< z7=SXI1Yf>pvEPO{Kkq#1Z+gNcwy6$NCL}nW9OK;aa+pb4>>D{U)7u~9Ogf2h0>m8w zeHlnvS7xs-ai+0XUB|wViW+z|KXkk|Zb;uK=LvWj8~Rcie*SqcdEh|s{w<}XxqHU$ zx@0TA8M&p9`P%$p;6y&>=BfOcx7M{IBwlY@d|NIcbf9Q+FFx38MG))y~TN zs^9Xx=diPB85hN~Ky(4unRzt+93c_7=22Xsa!0kdNyVdyy?`tEf*NQ2X7P-4?MVeD(t}kKL&@i+K;7Kx`kT+*a4o;x zjV~=6I0U5IUO@UIM$$0B82ZwPd0Z7pFd57x9-y|aqE$YCU*V8yMpzmcOadfZ#!(^? zGHnC^1ODf`$==CzzKk;s@`Pvmm1qbeg;_%q{h#=&*tc+qeo%@D^hz8|Qwsdt{oWeZ ziyfRnBfqy#9xr-lQSVXg)!8FV<^EGg_%zDS6;Emr0EqG*B<`A0#$5+4B&YR_zu#Ru zNv&5j!4Z{hrdUuV^=XMGizz=P@JXhogk5&+Tm)gdKBx7aXzHcDksIlh^9O9<1_was zyWAi_rnEeN$kjSi(LDrqH3rC``wvcbr%Ft6i3+7ooi3i3X&lszKKeQs2kR9Fj_MbB z3cd%ni!GuHgbNL^f_TzxypVXVj&qMsUX-=rUL8ivG=sryYZ$T%C>gWl4Sj1InWGuk zubJDH*#BBp&`ya5Jme7R;Djgr1{>DP_2(2;Nfqe3nof|!pP$i*lT)F8Um8t$5H<~5 z!4gB7DUeu64oukf<(RRZhxh~uC>b?LwGu-DS9yWL9}E;n92gL0c$+SO za6N|DMOY;QK=^A~a|qO!3CLgtjxTV**gyvR|5~>trd-c*5kO%CyaYPsgSoY#qh{^` zP>U|)35nRqjdCw<)H4=#9na&DITmyK39eF=Ld<3;*o%z8bhW`wH@cl?R%84x75l6xdCo}{&B1% Mr!HGAZT|Xy0cmv-asU7T diff --git a/assets/images/2.0x/theme_coi_system.png b/assets/images/2.0x/theme_coi_system.png index 620dcc78940badb67751bb89b8c9c93550ec9dac..ea6676819e2f9e7528edc22facde2c63bbc502a5 100644 GIT binary patch literal 11373 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

ex^;gR{5d%}v6PZER6n8o4XSio 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 literal 20133 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 literal 20001 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 diff --git a/assets/images/3.0x/theme_coi_system.png b/assets/images/3.0x/theme_coi_system.png index 33348c3d7a91ad5fb5a61178c81842a11f760172..1592d49a06179ef5a5030027050ebbd5d85e2334 100644 GIT binary patch literal 17699 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 P00000NkvXXu0mjfFQ+0oMphcw3x;^&&FMTzt5= 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 diff --git a/assets/images/theme_coi_dark.png b/assets/images/theme_coi_dark.png index bfe39b1b639245052729903d0f0f292cd45541d2..023e7517df00891441ce57e76b475830a25b963a 100644 GIT binary patch literal 3589 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 BzP$hd literal 4902 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 TL)p3g=W|F)Ll04{_9*P{nJj<9 diff --git a/assets/images/theme_coi_system.png b/assets/images/theme_coi_system.png index bfeeebfec532a31c284bb59a3362de7d843d57e3..3bc4bea1d4ee54ad169fb03e57536f7b2f391f25 100644 GIT binary patch delta 5581 zcmV;;6*B7aKH)1NiBL{Q4GJ0x0000DNk~Le000150001>2nGNE0sE#)>yaTye_Ege z00aO4009610H6Q>002w)!%F}F6-!A(K~#7F?OhLa7R9x{-OaoDkA@A8!aP*1J@bSkVn+oRV=fj~xhjf@UL)X%X z5hG~YbmY~bLz?r7@|o5d%pDR9TIp?vWoNSilr78cO1>5u~{A#?tnf@=b~ zw1$QTo378FKW~=6q(Y?nvO$9e@s-}h*mTCL!qFIKKKC4zof%rYcCG1bSuazzABEiB zR#3e5@S2~)@yZi0spfuKoqpt9o{o~s%F1BO=+TCd(AC=Nt8n@Vf1FKkZxAtpmnDlA zX&Qu608%tP6A4ZsjEvBw@vh*+h zGmjBzQp}q5I-Ea$e?Ew=McYZ?oeT;q^xDFOUp_cxN;gXIdgN6S?w*$yh+qUMr9d~W z!sj{-zJ*)WLB{}Cf&NGw|Moq!GJQO-Yu7F#9W9cTl?9?3t1g_58K|KC{rl6X<8kny zK~P^`FXYjML(}*|=MszrcoLihBY&fC34yedNs}hgsPL!@f5%}64LBTO$6%CBkMw@N zZ|`185*~HoD3A?Q083-zvuDp{lft+@9=cjP1a@w%hBj@(@RLW{Mn!Jzej@2Q@{wcG zAtN&cgKtaI`J9lG2dhYyjjolJl>@ntL;qV+^rMZ#LMSLGuu#NFsVfwpwK73Uc-PLk zGP2d*xY*iVeJmP1D0X)Vn|bqkL^4k9mWR&vyIxTK`y$*5c& z8SsINzlKoAGF+ArIDOhQShsFnq(mt6Q`?g~lIuRkyA=d>A_Ehw->BHPb5;S?(LI|- z>{kPy-$E<$O6)u9SS~|3QfAc=If(_^-60DBtxP%TNM9)a; zLt^*t-7H8`Tt9gx3Q1gl{qlFq#6->81Gr+*pi+R+ay^CI$}DAq~pD4 z7s%s}e?M*!V^4BVUT!XbTtSU!moHrcd?ClczLc}#JzXG97X}p`td6OrVA`*;^$MMI zymaYO3d-@w)$v$C=SLIb{CV?$nkG;(Yo1_h(sf*3+5lCR4bZIzw;q(ib!`tB zx#0Tb$(%Su;2NR=&6M<0EZ5P(ZdOI-2FGj_2>}{k6J(w!#%M(}#9~`$ja%OVt@&=#-yJiC%gS2hZ3c8Kp$Y)E z_9#TrJ&y&-iqO#hT~$@Z(qbB)K7Bf5Wj79}-Bzrnq@+M*W~Req z4li;m!x!JSty`tb8-1GEGEl<)@&kZre`?o2+L0qi@E{d>^l%ttwMiiCz@g>E@JS?th5zrd>f7oCJ z&4>}1Iv5sPl$t@T8E6WjW)bV$A}cR19Ra;y2QS~C4Ie(-i2I4GU9(1Lzi}%!=6%|Y zRVx~JL(`j2)WUsBBE!QU-;xQxDQKJ&f)pOoiDfLoquHea`LkWZ^4W7+y9>&PF*w5hFVipWfgk>hUlH8$fr5T>`EqWheu;sB{`V)J@QY1YJ}}TP%$Xys z)Ne*0pkIFJCBL{F%LfAbf6?jF94qyksT}kw4^K|nMkoh;?+?B&i$R)SDd-6;*g zO97>zZyh|?3kK;j%0R0emu zs;l|y8YHCt)3|XG-2Pd^W5X*kLk~UV?X^T@cW zSRpP)QNQ{1uVK}yRgOHEi5gEB&`w>$+7czVJgd;4(+L6k5}C#)6A}XSqSs!N!R&uB zv{Y>Z=G$+(4XUdne}*Cfn?cr%HTao##}4N&0Y-_Y2u^M8)Txt|>?th*Ouvn{|8pT( z7$2G8p@YU1ifEpa33+*WGVId4mu~*CQKo9}FCcT%^F~?+jgyt*^+Esbx8F9vu#xor z%i(h0#LTBCa$tvCvk-kSmw-~A!1KDI_$ke32vDYBPhkqeQX?}3tDAX6!Nl9>rK z$bK8gTjG!*LuhgCQD%_D3eazP`^xvTG(Eoh*jf|l!II{I)~#FHWU3EVA4yH6;~l>LXJp?(Rt* zolNlZp@=DNi#}UaQ`R^{Cx$$&K|;bHSlcO`zj7-sUx-5p>U+?0Nn2O*GNWFB6lC#E~z) zFlLG&yJ!)elc-3ap8HFHb#FHEb|GVq+3!1*^PG40gb8r`_;JtWv0wzWFEQ>5`+2C) zTHPL zjvYHjMf*PLp!;3Z_>5ttP3&*hl;4NTmMvRMe-9N}m#>G*p|UG*{~KjcP5SlIquatg z{lqiJXoWIIRs9+3G%iFL0A6@ig4XCfQ!hZ=mcc>4-+@0{mqzEAvP9K!Tmz7vuCBY8 zy2q~VHRKyNz_)Kng{C>PO7IW8{dT3AHb7e^$o}lHY-qtu#PwrgQrVwTi~7Cp%vW}A ze{LJsUxwiYky9%Buu#32hdt#w=+u@WmZrzG7G|24)fed10asgy-W9PTk(UP>AcmlW z&T3~LHw|g>s786uoH;|IQb+V8?BvVE3uvQHBa$F4MAiKnahjgr{RgOBRE8A<5j6BO z98_4pem#6nTqvs!Qa(atD=(VyjP%rbe>Ziwc46U0n3cziTL!BPUfO=!;Bh4wEilk% zlnE*X272bqnL%N8=Q6}g?LqZt#1fdMy)@KqnLt3R9PslR5(wxZ7cpQX0=Z9LlhZzs zhYHntAexr_P)fnLJq7~WZRKA1l!IQfq}VGK*X5M=>2KfM9}eudPY`g8$OWTvf6zfb zRA_sYcMmE!$fHuw>n;1J1O;3v=$SK(4LX9ttIJi|r(@Bd5w%iH2dZ91xH8aR9zDv4 z4K}I_^mCC7XM#mcq$}&wt-Bdhs#0WQRN_brPJB(Hn&fgIE2a8tL zOTLmm?bq9nEO3(nQnoPVA3kgte_XtHktPE_D$#T-0i#BgfDT-><_fC9e&3wmb+O*c zT&K@eC^S7hY}l~QetgL+R5TsJO;gZ4==SZ~=j$I<1`ZsU`_xlUZ73`(%tKdj-voey zJMZ*;8%HIRWqp&jZQFKQBMUyCm@{Wik;)IM$$p~9>RsPTMjfEvSn_vjf53nNKMnog zd+*hLckEc_&18~YbCUQAi6f?yCr?V2a%8Uxr>3QSqhv-$AAInEY9*ue%w&9oGip&E z^}1Ln8j^1m&1eWGt?duU1o@4k8AS)xo3RShoC&7Rf4C@aQMFalpLBiOJgCpggK*_Z z(8}#Q;<8FKDH_+X$Sw(Ce}%b?6)K1RhmAjD>r0S! z_&pmP2_{A3dPmtcl3b}#h)(mbq7)4z`zW!QlD!>V%Wi0u!{xmypd+(M(P?RE3D?uO zEmBOB>CISm+UKjF#i`A3`Nqj`CHq=PA-jdQ`m7jID#WXHOo~>Fe?KY2;qD-A9OPIV zlXCHE;z?q*l`Kq?T^Jh39M4K2LvznqQoICma`?9bm2D?GM})~l+u+uss|2fB7W(ul zE?z9P6N^_2|Ip)TT#_ua-HlfzV>#PBdQaJ2_|Fah1$Fg&zj=i{?}CSJ`iZbk*_CKQ zK@J(b)oTvy+${7$f5>j1%VknXG%5Pbr8Ds4`llSlzjJsMv`K9P6MNsw<&#}K#}yKV zD7%P)C$8j;H>4a?@np!*Op3l(=gtq=B?msgEB<7_`{8{}(tVkqy0ENC(bu-^0ll-Y zgM;V9uao4f0gUcGN?5PoRfw7D z30AC?j0!aEg3_!sDrn5yS6)%Nc2iJ|jcnSv#g^O52%Ctj2wZ6sj}Ot@TZgXS6Xb!o zZ!Z$ioH%su8+0%$ zIyVns!c>42|0Av!dG2{wnD2GvyHKElj1?;w6dj($HPzjrk)xw4921q0RX?o{qaR1F2 zaNkYh5r-cjs>@<8Ui|v&s>OPiXH)d3SI@$sGV^e!ig=#eezI2o{qnEpVAYfkaAQaQ z8)Blou#}XP#Koo|Iuj;EZzIaIDw$XC&$}+ce~rZX952LT0*)KU=0VP*K&66z)H$RdyegnxA8~>u2~JBHxo0cmrXK6%27#gR*FuP*KOVjvfZQWiT}a( z-@OP2_SD+=v$9iQ{P!~;=Nj>%PuUF_Y?Zhm;B&xg^4v$Zd%+%^sKKOYbYwgC`SZk~ zEq}yu{v3JRdbI+^6=p!+8yTmuOzUE?e`0|5g+-MYcBUyxqb5b4JyS1KGF$8EQ}smA zEF}_;$4sT;#Gg5iHWE3Q6x}g51ya*OP*ctC(X=7m@=V1jSwF^OrV@S&%+EJ(8e#(F zkcit%C9>T!tp4jI*t4s~2CrQXxkvwVCbY{*oM-4cvc24>f&v@XL?hU`CR$9#f85nd z|0Nn&9-c%UH(RkLPS>;|bCE{FK2E<)hM<*}l|yx{*({n2z!Bq&qGw@?8A>`uuYBhne>iyHfU5S#Oit1%dRB}a`>H+zNu}tI*R4xvQ>fF) zNh(Fh%1yPC!o21sjiPt%+ySeJtF&YdNu%gl&n4Hm+1eqJLeWRbO4sGf|JRB=snSWI z=vca359;hCyrRp>%3$GwKLyqPn8{6eMJJn0Lv-d6TG8l=|Bo-eD8impfAoY_H0~J| zixpF`IAaN`XyW7=<~;A--B~P@<)@B>RrD)!=X%--*pD)TESs>3PFCZQ=wv0NqL(Zw z2AqlCoI*k>dRBlN!N%+4X{|Fe;9_M(yy~~ri$0vYcIl%3Y?(<+&~OTD`}XY zT?*yoZLqn8gt~Q*jbQ*+e^fQckWh+FxUJi^ky|S~ivIvint+H;DEL?|;TiP|FP(}2%BZn+b`4bsMy-MQx bI+gziC~?xb-3{$400000NkvXXu0mjfF$vk= delta 8048 zcmV-$ACKVSEAc)diBL{Q4GJ0x0000DNk~Le0001x000312nGNE0V`0?*^wbge~_R9 z00aO4009610RR91001Rr{yhKy9@|MoK~#7F?Oh9WRmHjf&q*MGKzK=jpn_Uy)!OR= z6x4#?gL-@0s@03D)wWu-RRr7K)ms;}tF`U*7GJcsORoqj;!>=ZL_&xl?>EE*NFY4( zB;lEm2YHb9oqs3$WbbqK>@)i@e|zsaXU|&6*?Z=nfByfQe`fZ)13+9iarn#PZoJ_J zO|qa7CYl_2J%f6I;bBib^;Ec5=sjRWBAQyr&5%T)Ac`8h>8 z#vcW=00slKm`MFG+NvtsQ?g-8a5| z4IDjsR5L8xliENcf1!~^GHR}cr%Zbnh|!%hrqi_0^rwPt1Zd>!J&dTOpVgvez%*5R zcJ5p`ocUK%BBRn^YKFd#n8oWQG$T-u^<&MbFvm$>(TvlC+6<%cIA+j69-#`GbwFg+ ztXbh{n|?p{U?y}2dqf!V@qb8sxFGc0bI-vSYu1<&l#4)Sf3piU2xVFLXK2>F8Ip#q zS&77$ojCYm#f1c-F$w<&pwXfK=FOV{2T{U55-?2bI}!cEo$Xm>CA(0#zN-2>8H4)S z%>ci9FkEQn_qX19i2*oTljCMr{su~DPWDms{6pADH1z^K41^nF>zLajq{)1*l{ zq3l7SEDP^`f0X?uUE;!8>{-9%qlwm+WfV%5Vqacf4n;*pn#Ema>u9mJ!{Kz+#NG!KwVuO3n>##NFXL^4I(?U3)v^?br&_# zS9$Hp&xiaydsKc_U#LAH7RE+P5Ju$X3=8zV@AUMacnM@U%XnrNDw&wvzaO)*Cr_S)8?L{encfVc zp|;HKc1ug(;HFKRE@%a~gULS`XcS-+h3? zdsbYilv!aS$F(X9^63-kjb8)&_*#JNJ}5Z?Z_@fq|d1P@NxCY zy8`_xyAG~;?G&sy7=3wGIE2N;#o=D2-=$La%!*oA*(=Cg^8DSa280;06nnF)7($6C z9wdP_m9#3n)Q>F1-Y$d2lqG@wXXX$U9Z^VpcG4yN5+m6`{$p3e;#sH zt6H9-^`0(EtDnb4griYbH^EwsKGk0zceqfQx+47^Y>g%B@c5H(W*(crej zUwnZ+`KP&^@vP_>HtM0NgQ2yRf8McVO_)Y!ILmkngF+e>h^Coc{$dMccHzGf^bCDd zfAhB6EU&qbCY+%xv$_EwnlKn{NFWx5R%yf)Xxp}JR+VRp&ur9p-E|k7tEpjPYK4gF z`XMWV>BTKAErkcZ|9w3YTfzc?z8%0>!#ajt5l$k#3sVPe z-@YB@JoAjE5@tOcZ+aHmf5uIRgvOJQN~|Z)**6m=^ArZ4yUCYxjRRlKGBEP55Je1E z)VcuwH_YH`H7|wmkk*YuTPH@)QOgl$84phk{X^W3wnCp z91W5luhRN5Y8cOee6m~BO{e+}8b4$l6rSC0NFJ8`<%Sp%V&&?9e~&);hSV9MmlW~18@Ph~;K@q>HbvxTu8 zOx}F+O*`0F;t^p%mblp*+0DvXRz+1w%bs5N-CtPf1u?>os;nntym)$zmK*mqfcYyU zLU=Xv4?ge!lo&kYe>Orm8$8q&^j|aSEXxnk!)y-0BmBJp4yvWDq|r(a>@=hB%^@x~kRCI~LPjWShR5XN4(%P0?9>Cpnb z0uCysu7hk<)f}@w{qc|HB65o5Ie_fi+hiABst?8L<}R4{e|PPDPFJP%gPcc4Mx<+J zGvCnA0H?@-9d@lzj}X>`hsuKPTy%!Y;@}zjT6k(Cg8`>?HlZ10WgEGwlD=wWKiE-W zY{`~g&HQ;{JqHdPkQ6i9#A9Uc&HRmjKMgg_oe?>(d-iBZ8>BM02pTIMhEa>)W)8PDhch7mGWrYf$<|aIp zQu{2&k)smf;hzqU;A6F!?`Ut2=$Lx8nP0N7Ap!u|LA{Uh4Y^|b0$=KyoedzAQ7&l*>~)BjT(88+31eNbL~55{$KvrF(s`e%Q03BPRpA4wNGnbd=1uiwF*8o+AJ~J9m!P4TUP7BSlQa%2`H?y9KRWu|iHu$Y1Uj zbkXo((A3lwfA+^0USPgt8inzq<2q>X)%kWK8NscH zZQQugh#a1!YIaqo8 zxUId&wQJXg5)kK^WDfw|C`AtN*DPJa%;sn;1Xi#)b|xy5|>siqzQ)y z-iJ9VMMg^!4xob^?}1f
lVkkeo2;sLZ_gPggJ{0awogI8u+Ufx% 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 - create: (BuildContext context) { - var lifecycleBloc = LifecycleBloc(); - lifecycleBloc.add(ListenerSetup()); - return lifecycleBloc; - }, - ), - BlocProvider( - create: (BuildContext context) => PushBloc(), - ), - BlocProvider( - create: (BuildContext context) => errorBloc, + _logManager.setup(logToFile: true, logLevel: Level.INFO).then((value) => runApp( + MultiBlocProvider( + providers: [ + BlocProvider( + create: (BuildContext context) { + var lifecycleBloc = LifecycleBloc(); + lifecycleBloc.add(ListenerSetup()); + return lifecycleBloc; + }, + ), + BlocProvider( + create: (BuildContext context) => PushBloc(), + ), + BlocProvider( + create: (BuildContext context) => errorBloc, + ), + BlocProvider( + create: (BuildContext context) => MainBloc(errorBloc), + ), + ], + child: CustomTheme( + initialThemeKey: ThemeKey.light, + child: OxCoiApp(), + ), ), - BlocProvider( - create: (BuildContext context) => MainBloc(errorBloc), - ), - ], - child: CustomTheme( - initialThemeKey: ThemeKey.light, - child: OxCoiApp(), - ), - ), - ); + )); } class OxCoiApp extends StatelessWidget { @@ -105,17 +103,17 @@ class OxCoiApp extends StatelessWidget { Widget build(BuildContext context) { var customTheme = CustomTheme.of(context); final themeData = ThemeData( - brightness: customTheme.brightness, - backgroundColor: customTheme.background, - scaffoldBackgroundColor: customTheme.background, - toggleableActiveColor: customTheme.accent, - accentColor: customTheme.accent, - primaryIconTheme: Theme.of(context).primaryIconTheme.copyWith( - color: customTheme.onSurface, - ), - primaryTextTheme: Theme.of(context).primaryTextTheme.apply( - bodyColor: customTheme.onSurface, - ), + brightness: customTheme.brightness, + backgroundColor: customTheme.background, + scaffoldBackgroundColor: customTheme.background, + toggleableActiveColor: customTheme.accent, + accentColor: customTheme.accent, + primaryIconTheme: Theme.of(context).primaryIconTheme.copyWith( + color: customTheme.onSurface, + ), + primaryTextTheme: Theme.of(context).primaryTextTheme.apply( + bodyColor: customTheme.onSurface, + ), ); return MaterialApp( diff --git a/lib/src/brandable/custom_theme.dart b/lib/src/brandable/custom_theme.dart index e5bc2c3d..7a11d8ac 100644 --- a/lib/src/brandable/custom_theme.dart +++ b/lib/src/brandable/custom_theme.dart @@ -52,6 +52,12 @@ enum ThemeKey { dark, } +extension ThemeKeyStrings on ThemeKey { + String get stringValue { + return describeEnum(this); + } +} + class CustomerThemes { static final BrandedTheme lightTheme = BrandedTheme( accent: const Color(0xFF0076FF), @@ -141,9 +147,9 @@ class CustomTheme extends StatefulWidget { } static ThemeKey getThemeKeyFor({@required String name}) { - if (name == describeEnum(ThemeKey.system)) { + if (name == ThemeKey.system.stringValue) { return ThemeKey.system; - } else if (name == describeEnum(ThemeKey.light)) { + } else if (name == ThemeKey.light.stringValue) { return ThemeKey.light; } else { return ThemeKey.dark; @@ -152,10 +158,7 @@ class CustomTheme extends StatefulWidget { static ThemeKey get systemThemeKey { final brightness = WidgetsBinding.instance.window.platformBrightness; - if (brightness == Brightness.light) { - return ThemeKey.light; - } - return ThemeKey.dark; + return brightness == Brightness.light ? ThemeKey.light : ThemeKey.dark; } } @@ -186,14 +189,14 @@ class CustomThemeState extends State with WidgetsBindingObserver { _checkSavedTheme(); } - void _checkSavedTheme() async { - var savedThemeKeyString = await Preference.themeKey; + Future _checkSavedTheme() async { + var savedThemeKeyString = await getPreference(preferenceApplicationTheme); ThemeKey savedThemeKey; if (savedThemeKeyString == null) { savedThemeKey = ThemeKey.system; - savedThemeKeyString = describeEnum(savedThemeKey); - Preference.themeKey = savedThemeKeyString; + savedThemeKeyString = savedThemeKey.stringValue; + await setPreference(preferenceApplicationTheme, savedThemeKeyString); } ThemeKey newThemeKey; @@ -204,24 +207,28 @@ class CustomThemeState extends State with WidgetsBindingObserver { newThemeKey = CustomTheme.getThemeKeyFor(name: savedThemeKeyString); } - changeTheme(themeKey: newThemeKey, preservePreference: true); + await changeTheme(themeKey: newThemeKey, preservePreference: true); } - void changeTheme({@required ThemeKey themeKey, bool preservePreference = false}) async { + Future changeTheme({@required ThemeKey themeKey, bool preservePreference = false}) async { setState(() { _actualThemeKey = themeKey; _theme = CustomerThemes.getThemeFromKey(themeKey); - }); - if (!preservePreference) { - Preference.themeKey = describeEnum(themeKey); - } + if (!preservePreference) { + setPreference(preferenceApplicationTheme, themeKey.stringValue); + } - SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( - statusBarColor: CustomerThemes.getThemeFromKey(themeKey).background, // Android only - statusBarIconBrightness: themeKey == ThemeKey.dark ? Brightness.light : Brightness.dark, // Android only - statusBarBrightness: themeKey == ThemeKey.dark ? Brightness.dark : Brightness.light // iOS only - )); + SystemUiOverlayStyle overlayStyle; + if (themeKey == ThemeKey.system) { + final platformBrightness = WidgetsBinding.instance.window.platformBrightness; + overlayStyle = platformBrightness == Brightness.light ? SystemUiOverlayStyle.dark : SystemUiOverlayStyle.light; + } else { + overlayStyle = themeKey == ThemeKey.dark ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark; + } + + SystemChrome.setSystemUIOverlayStyle(overlayStyle); + }); } @override diff --git a/lib/src/platform/preferences.dart b/lib/src/platform/preferences.dart index 2d4c726f..6a15c3cd 100644 --- a/lib/src/platform/preferences.dart +++ b/lib/src/platform/preferences.dart @@ -55,6 +55,7 @@ const preferenceNotificationsPushStatus = "preferenceNotificationsPushStatus"; const preferenceAppState = "preferenceAppState"; const preferenceInviteServiceUrl = "preferenceInviteServiceUrl"; const preferenceHasAuthenticationError = "preferenceHasAuthenticationError"; +const preferenceApplicationTheme = "preferenceApplicationTheme"; const preferenceNotificationsAuth = "preferenceNotificationsAuth"; // Unused const preferenceNotificationsP256dhPublic = "preferenceNotificationsP256dhPublic"; // Unused @@ -97,19 +98,3 @@ Future clearPreferences() async { SharedPreferences sharedPreferences = await getSharedPreferences(); await sharedPreferences.clear(); } - -class Preference { - - static const _themeKey = "themeKey"; - static Future get themeKey async => await value(forKey: _themeKey); - static set themeKey(String value) => set(value: value, forKey: _themeKey); - - static set({@required value, @required String forKey}) async { - await setPreference(forKey, value); - } - - static value({@required String forKey}) async { - return await getPreference(forKey); - } - -} \ No newline at end of file diff --git a/lib/src/settings/settings_appearance.dart b/lib/src/settings/settings_appearance.dart index f1914ebd..ee1e6a9a 100644 --- a/lib/src/settings/settings_appearance.dart +++ b/lib/src/settings/settings_appearance.dart @@ -160,7 +160,6 @@ class _AppearanceSelector extends StatelessWidget { children: [ Container( margin: EdgeInsets.only(left: dimension8dp, right: dimension8dp), - padding: EdgeInsets.all(dimension16dp), decoration: BoxDecoration( color: selectedTheme == themeKey ? CustomTheme.of(context).surface : CustomTheme.of(context).background, borderRadius: BorderRadius.all(Radius.circular(dimension8dp)), @@ -169,25 +168,30 @@ class _AppearanceSelector extends StatelessWidget { child: Column( children: [ Padding( - padding: EdgeInsets.only(bottom: dimension16dp), + padding: EdgeInsets.only(bottom: dimension4dp), child: Container( + margin: EdgeInsets.all(dimension8dp), decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(dimension4dp)), + borderRadius: BorderRadius.all(Radius.circular(dimension6dp)), border: Border.all(color: CustomTheme.of(context).onBackground.slightly()), ), child: Image( - image: AssetImage('assets/images/theme_coi_${describeEnum(themeKey)}.png'), + image: AssetImage('assets/images/theme_coi_${themeKey.stringValue}.png'), + width: 70.0, ), ), ), - Text( - themeItemData[themeKey], + Padding( + padding: EdgeInsets.only(bottom: dimension12dp), + child: Text( + themeItemData[themeKey], + ), ), ], ), ), Padding( - padding: EdgeInsets.only(bottom: dimension16dp), + padding: EdgeInsets.only(bottom: dimension8dp), child: Radio( value: themeKey, groupValue: selectedTheme, diff --git a/lib/src/settings/settings_appearance_bloc.dart b/lib/src/settings/settings_appearance_bloc.dart index 6315869a..31ad1e1e 100644 --- a/lib/src/settings/settings_appearance_bloc.dart +++ b/lib/src/settings/settings_appearance_bloc.dart @@ -52,7 +52,7 @@ class SettingsAppearanceBloc extends Bloc mapEventToState(SettingsAppearanceEvent event) async* { if (event is LoadAppearance) { - final themeKeyString = await Preference.themeKey; + final themeKeyString = await getPreference(preferenceApplicationTheme); final savedThemeKey = CustomTheme.getThemeKeyFor(name: themeKeyString); add(AppearanceLoaded(themeKey: savedThemeKey)); diff --git a/lib/src/ui/dimensions.dart b/lib/src/ui/dimensions.dart index c6b794dc..06fd7c5b 100644 --- a/lib/src/ui/dimensions.dart +++ b/lib/src/ui/dimensions.dart @@ -50,6 +50,7 @@ const textScaleDefault = 1.0; // Defaults const dimension2dp = 2.0; const dimension4dp = 4.0; +const dimension6dp = 6.0; const dimension8dp = 8.0; const dimension12dp = 12.0; const dimension16dp = 16.0; From d2d07761dc56caa4acde0b3937a78859b11bf7c3 Mon Sep 17 00:00:00 2001 From: Boehrsi Date: Wed, 8 Apr 2020 11:26:37 +0200 Subject: [PATCH 3/3] Review changes --- lib/src/brandable/custom_theme.dart | 3 +- lib/src/settings/settings_appearance.dart | 118 ++++++++++-------- .../settings/settings_appearance_bloc.dart | 5 +- .../settings_appearance_event_state.dart | 4 +- lib/src/ui/dimensions.dart | 4 +- 5 files changed, 71 insertions(+), 63 deletions(-) diff --git a/lib/src/brandable/custom_theme.dart b/lib/src/brandable/custom_theme.dart index 7a11d8ac..8421e90f 100644 --- a/lib/src/brandable/custom_theme.dart +++ b/lib/src/brandable/custom_theme.dart @@ -201,8 +201,7 @@ class CustomThemeState extends State with WidgetsBindingObserver { ThemeKey newThemeKey; if (savedThemeKey == ThemeKey.system) { - final platformBrightness = WidgetsBinding.instance.window.platformBrightness; - newThemeKey = platformBrightness == Brightness.light ? ThemeKey.light : ThemeKey.dark; + newThemeKey = CustomTheme.systemThemeKey; } else { newThemeKey = CustomTheme.getThemeKeyFor(name: savedThemeKeyString); } diff --git a/lib/src/settings/settings_appearance.dart b/lib/src/settings/settings_appearance.dart index ee1e6a9a..aa948e0c 100644 --- a/lib/src/settings/settings_appearance.dart +++ b/lib/src/settings/settings_appearance.dart @@ -57,6 +57,12 @@ import 'package:ox_coi/src/utils/vibration.dart'; import 'package:ox_coi/src/widgets/dynamic_appbar.dart'; import 'package:ox_coi/src/widgets/state_info.dart'; +final _themeItemData = { + ThemeKey.light: L10n.get(L.settingsAppearanceLightTitle), + ThemeKey.dark: L10n.get(L.settingsAppearanceDarkTitle), + ThemeKey.system: L10n.get(L.settingsAppearanceSystemTitle), +}; + class SettingsAppearance extends StatefulWidget { static get viewTitle => L10n.get(L.settingsAppearanceTitle); @@ -79,80 +85,82 @@ class _SettingsAppearanceState extends State { @override Widget build(BuildContext context) { - return BlocBuilder( - bloc: _settingsAppearanceBloc, - builder: (context, state) { - if (state is SettingsAppearanceStateInitial) { - return StateInfo(showLoading: true); - } else if (state is SettingsAppearanceStateLoaded) { - return _buildAppearanceSelector(selectedTheme: state.themeKey); - } else { - return Center( - child: AdaptiveIcon(icon: IconSource.error), - ); - } - }); - } - - Widget _buildAppearanceSelector({@required ThemeKey selectedTheme}) { return Scaffold( - appBar: DynamicAppBar( - title: SettingsAppearance.viewTitle, - leading: AppBarBackButton(context: context), - ), - body: _AppearanceSelector( - themeItemData: { - ThemeKey.light: L10n.get(L.settingsAppearanceLightTitle), - ThemeKey.dark: L10n.get(L.settingsAppearanceDarkTitle), - ThemeKey.system: L10n.get(L.settingsAppearanceSystemTitle), - }, - selectedTheme: selectedTheme, - onChanged: _appearanceChanged, - ) + appBar: DynamicAppBar( + title: SettingsAppearance.viewTitle, + leading: AppBarBackButton(context: context), + ), + body: BlocBuilder( + bloc: _settingsAppearanceBloc, + builder: (context, state) { + if (state is SettingsAppearanceStateInitial) { + return StateInfo(showLoading: true); + } else if (state is SettingsAppearanceStateLoaded) { + return _AppearanceSelector( + selectedTheme: state.themeKey, + onChanged: _appearanceChanged, + ); + } else { + return Center( + child: AdaptiveIcon(icon: IconSource.error), + ); + } + }), ); } void _appearanceChanged(ThemeKey theme) async { vibrateLight(); CustomTheme.instanceOf(context).changeTheme(themeKey: theme); - _settingsAppearanceBloc.add(AppearanceLoaded(themeKey: theme)); + _settingsAppearanceBloc.add(AppearanceChanged(themeKey: theme)); } } class _AppearanceSelector extends StatelessWidget { - final Map themeItemData; final ThemeKey selectedTheme; final ValueChanged onChanged; - const _AppearanceSelector({Key key, @required this.themeItemData, @required this.selectedTheme, @required this.onChanged}) : super(key: key); + const _AppearanceSelector({Key key, @required this.selectedTheme, @required this.onChanged}) : super(key: key); @override Widget build(BuildContext context) { - final systemTheme = themeItemData[CustomTheme.systemThemeKey]; - - return Container( - padding: EdgeInsets.all(dimension32dp), - color: CustomTheme.of(context).background, - child: Column( - children: [ - Container( - padding: EdgeInsets.only(bottom: dimension32dp), - child: Text( - L10n.getFormatted(L.settingsAppearanceDescritpion, [L10n.get(L.settingsAppearanceSystemTitle)]), - ) - ), - Row( - children: [ - for (var themeKey in themeItemData.keys) - _buildAppearanceSelectorItem(context, themeKey), - ], - ), - ], + return SingleChildScrollView( + child: Container( + padding: EdgeInsets.all(dimension32dp), + color: CustomTheme.of(context).background, + child: Column( + children: [ + Container( + padding: EdgeInsets.only(bottom: dimension32dp), + child: Text( + L10n.getFormatted(L.settingsAppearanceDescritpion, [L10n.get(L.settingsAppearanceSystemTitle)]), + )), + Row( + children: [ + for (var themeKey in _themeItemData.keys) + _AppearanceSelectorItem( + themeKey: themeKey, + onChanged: onChanged, + selectedTheme: selectedTheme, + ), + ], + ), + ], + ), ), ); } +} + +class _AppearanceSelectorItem extends StatelessWidget { + final ThemeKey themeKey; + final ValueChanged onChanged; + final ThemeKey selectedTheme; + + const _AppearanceSelectorItem({Key key, @required this.themeKey, @required this.onChanged, @required this.selectedTheme}) : super(key: key); - Widget _buildAppearanceSelectorItem(BuildContext context, ThemeKey themeKey) { + @override + Widget build(BuildContext context) { return Expanded( child: GestureDetector( onTap: () => onChanged(themeKey), @@ -172,7 +180,7 @@ class _AppearanceSelector extends StatelessWidget { child: Container( margin: EdgeInsets.all(dimension8dp), decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(dimension6dp)), + borderRadius: BorderRadius.all(Radius.circular(settingsAppearanceImageRadius)), border: Border.all(color: CustomTheme.of(context).onBackground.slightly()), ), child: Image( @@ -184,7 +192,7 @@ class _AppearanceSelector extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: dimension12dp), child: Text( - themeItemData[themeKey], + _themeItemData[themeKey], ), ), ], diff --git a/lib/src/settings/settings_appearance_bloc.dart b/lib/src/settings/settings_appearance_bloc.dart index 31ad1e1e..5dcd06e5 100644 --- a/lib/src/settings/settings_appearance_bloc.dart +++ b/lib/src/settings/settings_appearance_bloc.dart @@ -54,9 +54,8 @@ class SettingsAppearanceBloc extends Bloc