diff --git a/android/app/build.gradle b/android/app/build.gradle index 6ddf713..7e54f2f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -42,42 +42,14 @@ android { productFlavors { - autobonus_en { - applicationId 'com.dinect.autobonus' - buildConfigField "String", "locale", "\"en\"" - buildConfigField "String", "flavor", "\"autobonus\"" - buildConfigField "int", "currency", "643" - } - - autobonus_ru { + autobonus { applicationId 'com.dinect.autobonus' buildConfigField "String", "locale", "\"ru\"" buildConfigField "String", "flavor", "\"autobonus\"" buildConfigField "int", "currency", "643" } - autobonus_ua { - applicationId 'com.dinect.autobonus' - buildConfigField "String", "locale", "\"ua\"" - buildConfigField "String", "flavor", "\"autobonus\"" - buildConfigField "int", "currency", "643" - } - - pip_en { - applicationId 'com.dinect.pip' - buildConfigField "String", "locale", "\"en\"" - buildConfigField "String", "flavor", "\"pip\"" - buildConfigField "int", "currency", "980" - } - - pip_ru { - applicationId 'com.dinect.pip' - buildConfigField "String", "locale", "\"ru\"" - buildConfigField "String", "flavor", "\"pip\"" - buildConfigField "int", "currency", "980" - } - - pip_ua { + pip { applicationId 'com.dinect.pip' buildConfigField "String", "locale", "\"ua\"" buildConfigField "String", "flavor", "\"pip\"" @@ -90,20 +62,11 @@ android { main.jniLibs.srcDir 'jniLibs' - pip_ua { + pip { res.srcDirs = ['src/pip/res'] manifest.srcFile 'src/pip/AndroidManifest.xml' } - pip_ru { - res.srcDirs = ['src/pip/res'] - manifest.srcFile 'src/pip/AndroidManifest.xml' - } - - pip_en { - res.srcDirs = ['src/pip/res'] - manifest.srcFile 'src/pip/AndroidManifest.xml' - } } } diff --git a/assets/check.png b/assets/check.png new file mode 100644 index 0000000..58ac030 Binary files /dev/null and b/assets/check.png differ diff --git a/lib/base_state.dart b/lib/base/base_state.dart similarity index 100% rename from lib/base_state.dart rename to lib/base/base_state.dart diff --git a/lib/base/settings_base_state.dart b/lib/base/settings_base_state.dart new file mode 100644 index 0000000..c196fdb --- /dev/null +++ b/lib/base/settings_base_state.dart @@ -0,0 +1,46 @@ +import 'package:checker/base/base_state.dart'; +import 'package:checker/consts.dart'; +import 'package:checker/strings.dart'; +import 'package:flutter/material.dart'; + +abstract class SettingsBaseState extends BaseState { + + @override + Widget getScreenContent() { + + List widgets = new List(); + + for (String option in getOptions()) { + widgets.add(getItem(option)); + } + + return new ListView(children: widgets); + } + + List getOptions(); + + @override + List getMenuButtons() { + return null; + } + + Widget getItem(String option) { + return new Container( + height: 56.0, + child: (new FlatButton(onPressed: null, + child: new Row(children: [ + new Expanded(child: new Text(option)), + getCheckMark()])))); + } + + Widget getCheckMark() { + return new Image.asset(check_png, + width: 28.0, + height: 28.0); + } + + @override + String getTitle() { + return StringsLocalization.settings(); + } +} \ No newline at end of file diff --git a/lib/common.dart b/lib/common.dart index 413099c..d1d238b 100644 --- a/lib/common.dart +++ b/lib/common.dart @@ -137,8 +137,8 @@ getCurrencyTitle(int code) { getLocaleTitle(String code) { switch(code) { - case 'ru': return StringsLocalization.russian(); - case 'en': return StringsLocalization.english(); - case 'ua': return StringsLocalization.ukrainian(); + case 'ru': return languages[0]; + case 'en': return languages[1]; + case 'ua': return languages[2]; } } \ No newline at end of file diff --git a/lib/consts.dart b/lib/consts.dart index 313b78c..79f3f2e 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -11,15 +11,12 @@ const String logout_png = 'assets/logout.png'; const String help_png = 'assets/help.png'; const String settings_png = 'assets/settings.png'; const String settings_arrow_png = 'assets/settings_arrow.png'; - +const String check_png = 'assets/check.png'; const String activate_token_bg_png = 'assets/activate_token_message_background.png'; const String active_token_bg_png = 'assets/active_token_message_background.png'; - const String expansion_icon_png = 'assets/faq_expansion_icon.png'; - const String powered_by_dinect_splash_png = 'assets/powered_by_dinect_splash.png'; const String powered_by_dinect_png = 'assets/powered_by_dinect.png'; - const String splash_text_png = 'assets/splash_text.png'; const Color greyTextColor = const Color(0xffa5a5a5); @@ -35,3 +32,10 @@ const Color inputFieldBackground = const Color(0xffefefef); const double verticalMargin = 28.0; const double buttonHeight = 48.0; const double iconHeight = 20.0; + +List languages = const [ + 'Русский', + 'English', + 'Український', + 'Español' +]; \ No newline at end of file diff --git a/lib/i18n/messages_en.dart b/lib/i18n/messages_en.dart index f198955..e649e25 100644 --- a/lib/i18n/messages_en.dart +++ b/lib/i18n/messages_en.dart @@ -40,13 +40,10 @@ class MessageLookup extends MessageLookupByLibrary { "user_name" : MessageLookupByLibrary.simpleMessage("User name"), "yes" : MessageLookupByLibrary.simpleMessage("Yes"), "settings" : MessageLookupByLibrary.simpleMessage("Settings"), - "help " : MessageLookupByLibrary.simpleMessage("FAQ"), - "logout" : MessageLookupByLibrary.simpleMessage("Logout"), + "help" : MessageLookupByLibrary.simpleMessage("Help"), + "logout" : MessageLookupByLibrary.simpleMessage("Exit"), "currency" : MessageLookupByLibrary.simpleMessage("Currency"), - "locale" : MessageLookupByLibrary.simpleMessage("Locale"), - "russian" : MessageLookupByLibrary.simpleMessage("Russian"), - "english" : MessageLookupByLibrary.simpleMessage("English"), - "ukrainian" : MessageLookupByLibrary.simpleMessage("Ukrainian"), + "locale" : MessageLookupByLibrary.simpleMessage("Language"), "rubles" : MessageLookupByLibrary.simpleMessage("Ruble"), "dollars" : MessageLookupByLibrary.simpleMessage("Dollar"), "hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna") diff --git a/lib/i18n/messages_es.dart b/lib/i18n/messages_es.dart index f6b8f47..2d2c411 100644 --- a/lib/i18n/messages_es.dart +++ b/lib/i18n/messages_es.dart @@ -39,12 +39,11 @@ class MessageLookup extends MessageLookupByLibrary { "update_activ_status" : MessageLookupByLibrary.simpleMessage("Actualizar la condición de activación"), "user_name" : MessageLookupByLibrary.simpleMessage("Un nombre de usario"), "yes" : MessageLookupByLibrary.simpleMessage("Si"), - "logout" : MessageLookupByLibrary.simpleMessage("Logout"), - "currency" : MessageLookupByLibrary.simpleMessage("Currency"), - "locale" : MessageLookupByLibrary.simpleMessage("Locale"), - "russian" : MessageLookupByLibrary.simpleMessage("Russian"), - "english" : MessageLookupByLibrary.simpleMessage("English"), - "ukrainian" : MessageLookupByLibrary.simpleMessage("Ukrainian"), + "settings" : MessageLookupByLibrary.simpleMessage("Las configuraciones"), + "help" : MessageLookupByLibrary.simpleMessage("La Ayuda"), + "logout" : MessageLookupByLibrary.simpleMessage("Salir"), + "currency" : MessageLookupByLibrary.simpleMessage("La Moneda"), + "locale" : MessageLookupByLibrary.simpleMessage("La lengua"), "rubles" : MessageLookupByLibrary.simpleMessage("Ruble"), "dollars" : MessageLookupByLibrary.simpleMessage("Dollar"), "hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna") diff --git a/lib/i18n/messages_ru.dart b/lib/i18n/messages_ru.dart index 10b0b0c..0e6ab1f 100644 --- a/lib/i18n/messages_ru.dart +++ b/lib/i18n/messages_ru.dart @@ -40,13 +40,10 @@ class MessageLookup extends MessageLookupByLibrary { "user_name" : MessageLookupByLibrary.simpleMessage("ФИО"), "yes" : MessageLookupByLibrary.simpleMessage("Да"), "settings" : MessageLookupByLibrary.simpleMessage("Настройки"), - "help " : MessageLookupByLibrary.simpleMessage("Справка"), + "help" : MessageLookupByLibrary.simpleMessage("Справка"), "logout" : MessageLookupByLibrary.simpleMessage("Выход"), "currency" : MessageLookupByLibrary.simpleMessage("Валюта"), "locale" : MessageLookupByLibrary.simpleMessage("Язык"), - "russian" : MessageLookupByLibrary.simpleMessage("Русский"), - "english" : MessageLookupByLibrary.simpleMessage("Английский"), - "ukrainian" : MessageLookupByLibrary.simpleMessage("Украинский"), "rubles" : MessageLookupByLibrary.simpleMessage("Рубль"), "dollars" : MessageLookupByLibrary.simpleMessage("Доллар"), "hryvna" : MessageLookupByLibrary.simpleMessage("Гривна") diff --git a/lib/i18n/messages_ua.dart b/lib/i18n/messages_ua.dart index 9baa6bf..0c50c7f 100644 --- a/lib/i18n/messages_ua.dart +++ b/lib/i18n/messages_ua.dart @@ -39,12 +39,11 @@ class MessageLookup extends MessageLookupByLibrary { "update_activ_status" : MessageLookupByLibrary.simpleMessage("Оновити статус активації"), "user_name" : MessageLookupByLibrary.simpleMessage("ПІБ"), "yes" : MessageLookupByLibrary.simpleMessage("Так"), - "logout" : MessageLookupByLibrary.simpleMessage("Logout"), - "currency" : MessageLookupByLibrary.simpleMessage("Currency"), - "locale" : MessageLookupByLibrary.simpleMessage("Locale"), - "russian" : MessageLookupByLibrary.simpleMessage("Russian"), - "english" : MessageLookupByLibrary.simpleMessage("English"), - "ukrainian" : MessageLookupByLibrary.simpleMessage("Ukrainian"), + "help" : MessageLookupByLibrary.simpleMessage("Допомога"), + "settings" : MessageLookupByLibrary.simpleMessage("Налаштування"), + "logout" : MessageLookupByLibrary.simpleMessage("Вихід"), + "currency" : MessageLookupByLibrary.simpleMessage("Валюта"), + "locale" : MessageLookupByLibrary.simpleMessage("Мова"), "rubles" : MessageLookupByLibrary.simpleMessage("Ruble"), "dollars" : MessageLookupByLibrary.simpleMessage("Dollar"), "hryvna" : MessageLookupByLibrary.simpleMessage("Hryvna") diff --git a/lib/screens/currencies.dart b/lib/screens/currencies.dart new file mode 100644 index 0000000..9280650 --- /dev/null +++ b/lib/screens/currencies.dart @@ -0,0 +1,27 @@ +import 'package:checker/base/settings_base_state.dart'; +import 'package:flutter/material.dart'; +import 'package:checker/consts.dart'; +import 'package:checker/strings.dart'; +import 'package:checker/base/base_state.dart'; + +class CurrenciesScreen extends StatefulWidget { + @override State createState() => new _CurrenciesState(); +} + +class _CurrenciesState extends SettingsBaseState { + + @override + List getOptions() { + + String ruble = StringsLocalization.ruble(); + String dollar = StringsLocalization.dollar(); + String hryvna = StringsLocalization.hryvna(); + + return [ruble, dollar, hryvna]; + } + + @override + String getTitle() { + return StringsLocalization.settings(); + } +} \ No newline at end of file diff --git a/lib/screens/faq.dart b/lib/screens/faq.dart index b6457b6..9b3c78c 100644 --- a/lib/screens/faq.dart +++ b/lib/screens/faq.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:checker/base_state.dart'; +import 'package:checker/base/base_state.dart'; import 'package:checker/consts.dart'; import 'package:checker/common.dart'; diff --git a/lib/screens/finish_registration.dart b/lib/screens/finish_registration.dart index 5956f37..9a65dab 100644 --- a/lib/screens/finish_registration.dart +++ b/lib/screens/finish_registration.dart @@ -5,7 +5,7 @@ import 'dart:convert'; // Пакет для обработки json с отве import 'package:checker/common.dart'; import 'package:checker/consts.dart'; import 'package:checker/network.dart'; -import 'package:checker/base_state.dart'; +import 'package:checker/base/base_state.dart'; import 'package:checker/strings.dart'; class FinishRegistrationScreen extends StatefulWidget { diff --git a/lib/screens/languages.dart b/lib/screens/languages.dart new file mode 100644 index 0000000..1ec61b6 --- /dev/null +++ b/lib/screens/languages.dart @@ -0,0 +1,21 @@ +import 'package:checker/base/settings_base_state.dart'; +import 'package:flutter/material.dart'; +import 'package:checker/consts.dart'; +import 'package:checker/strings.dart'; + +class LanguagesScreen extends StatefulWidget { + @override State createState() => new _LanguagesState(); +} + +class _LanguagesState extends SettingsBaseState { + + @override + List getOptions() { + return languages; + } + + @override + String getTitle() { + return StringsLocalization.locale(); + } +} \ No newline at end of file diff --git a/lib/screens/purchase.dart b/lib/screens/purchase.dart index 1022563..d465493 100644 --- a/lib/screens/purchase.dart +++ b/lib/screens/purchase.dart @@ -8,7 +8,7 @@ import 'package:checker/strings.dart'; import 'package:checker/common.dart'; import 'package:checker/consts.dart'; import 'package:checker/network.dart'; -import 'package:checker/base_state.dart'; +import 'package:checker/base/base_state.dart'; import 'package:checker/screens/purchase_success.dart'; /// Экран проведения покупки. diff --git a/lib/screens/purchase_success.dart b/lib/screens/purchase_success.dart index 40ea706..0365e5b 100644 --- a/lib/screens/purchase_success.dart +++ b/lib/screens/purchase_success.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:checker/common.dart'; import 'package:checker/consts.dart'; import 'package:checker/strings.dart'; -import 'package:checker/base_state.dart'; +import 'package:checker/base/base_state.dart'; /// Экран проведения покупки. class PurchaseSuccessScreen extends StatefulWidget { diff --git a/lib/screens/registration.dart b/lib/screens/registration.dart index 0f19ff6..3d5bbd3 100644 --- a/lib/screens/registration.dart +++ b/lib/screens/registration.dart @@ -5,7 +5,7 @@ import 'dart:convert'; // Пакет для обработки json с отве import 'package:checker/common.dart'; import 'package:checker/consts.dart'; import 'package:checker/network.dart'; -import 'package:checker/base_state.dart'; +import 'package:checker/base/base_state.dart'; import 'package:checker/strings.dart'; /// Экран регистрации магазина и кассы. diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index edc01f5..36dc2d8 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -1,15 +1,10 @@ +import 'package:checker/screens/currencies.dart'; +import 'package:checker/screens/languages.dart'; import 'package:flutter/material.dart'; -import 'package:http/http.dart'; -import 'dart:convert'; -import 'dart:async'; import 'package:checker/common.dart'; -import 'package:checker/network.dart'; import 'package:checker/consts.dart'; -import 'package:checker/db.dart'; import 'package:checker/strings.dart'; -import 'package:checker/base_state.dart'; -import 'package:checker/screens/registration.dart'; -import 'package:checker/screens/finish_registration.dart'; +import 'package:checker/base/base_state.dart'; class SettingsScreen extends StatefulWidget { @override State createState() => new _SettingsState(); @@ -63,18 +58,23 @@ class _SettingsState extends BaseState { Widget getSettingsItem(MenuItem item) { return new Container( - margin: const EdgeInsets.all(16.0), - child: new Row(children: [ - new Expanded(child: new Text(item.title)), - new Text(item.selectedValue), - getArrow()]) - ); + height: 56.0, + child: (new FlatButton(onPressed: () => onPressed(menuItems.indexOf(item)), + child: new Row(children: [ + new Expanded(child: new Container(child: new Text(item.title))), + new Text(item.selectedValue), + getArrow()])))); + } + + void onPressed(int position) { + switch (position) { + case 0 : return pushRoute(context, new LanguagesScreen()); + case 1 : return pushRoute(context, new CurrenciesScreen()); + } } Widget getArrow() { - return new Image.asset(settings_arrow_png, - width: 28.0, - height: 28.0); + return new Image.asset(settings_arrow_png); } @override diff --git a/lib/screens/splash.dart b/lib/screens/splash.dart index 2109f9a..d116cdd 100644 --- a/lib/screens/splash.dart +++ b/lib/screens/splash.dart @@ -9,7 +9,7 @@ import 'package:checker/network.dart'; import 'package:checker/consts.dart'; import 'package:checker/resources.dart'; import 'package:checker/db.dart'; -import 'package:checker/base_state.dart'; +import 'package:checker/base/base_state.dart'; import 'package:checker/screens/registration.dart'; import 'package:checker/screens/finish_registration.dart'; @@ -27,6 +27,7 @@ class _SplashScreenState extends BaseState { helper.getSettings().then((info) { if (info == null) { platform.invokeMethod('getLocale').then((locale) { + Intl.defaultLocale = locale; platform.invokeMethod('getCurrency').then((currency) { helper.createAppInfo(locale, currency).then((_) { showNext(); diff --git a/lib/strings.dart b/lib/strings.dart index c8fd75f..f4a5dc5 100644 --- a/lib/strings.dart +++ b/lib/strings.dart @@ -40,16 +40,11 @@ class StringsLocalization { static String buyer() => Intl.message('buyer', name: 'buyer', locale: Intl.defaultLocale); static String idNotFound() => Intl.message('ID_not_found', name: 'ID_not_found', locale: Intl.defaultLocale); static String settings() => Intl.message('settings', name: 'settings', locale: Intl.defaultLocale); - static String help() => Intl.message('help ', name: 'help ', locale: Intl.defaultLocale); + static String help() => Intl.message('help', name: 'help', locale: Intl.defaultLocale); static String logout() => Intl.message('logout', name: 'logout', locale: Intl.defaultLocale); static String currency() => Intl.message('currency', name: 'currency', locale: Intl.defaultLocale); static String locale() => Intl.message('locale', name: 'locale', locale: Intl.defaultLocale); - // Языки - static String russian() => Intl.message('russian', name: 'russian', locale: Intl.defaultLocale); - static String english() => Intl.message('english', name: 'english', locale: Intl.defaultLocale); - static String ukrainian() => Intl.message('ukrainian', name: 'ukrainian', locale: Intl.defaultLocale); - // Валюты static String ruble() => Intl.message('rubles', name: 'rubles', locale: Intl.defaultLocale); static String dollar() => Intl.message('dollars', name: 'dollars', locale: Intl.defaultLocale); diff --git a/pubspec.yaml b/pubspec.yaml index 6a5929c..0411abd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,6 +35,7 @@ flutter: - assets/settings.png - assets/settings_arrow.png - assets/help.png + - assets/check.png - assets/logout.png - assets/activate_token_message_background.png - assets/active_token_message_background.png