From 75dc42e6da21fe421f4914ed1ddcb146335ef3ee Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Thu, 30 Apr 2020 21:59:57 +0300 Subject: [PATCH 1/4] CWA-205 | applied new design to restore button, restore options page and restore wallet options page; deleted base restore widget and image widget --- assets/images/2.0x/backup.png | Bin 0 -> 5087 bytes assets/images/2.0x/restore_keys.png | Bin 0 -> 5362 bytes assets/images/2.0x/restore_seed.png | Bin 0 -> 4989 bytes assets/images/2.0x/restore_wallet_image.png | Bin 0 -> 4204 bytes assets/images/3.0x/backup.png | Bin 0 -> 8528 bytes assets/images/3.0x/restore_keys.png | Bin 0 -> 8826 bytes assets/images/3.0x/restore_seed.png | Bin 0 -> 8826 bytes assets/images/3.0x/restore_wallet_image.png | Bin 0 -> 6930 bytes assets/images/backup.png | Bin 0 -> 2026 bytes assets/images/restore_keys.png | Bin 0 -> 2232 bytes assets/images/restore_seed.png | Bin 0 -> 2077 bytes assets/images/restore_wallet_image.png | Bin 0 -> 1747 bytes lib/src/screens/base_page.dart | 2 +- .../screens/restore/restore_options_page.dart | 64 ++++---- .../restore/restore_wallet_options_page.dart | 46 ++++-- .../restore/widgets/base_restore_widget.dart | 44 ------ .../screens/restore/widgets/image_widget.dart | 29 ---- .../restore/widgets/restore_button.dart | 140 +++++++----------- 18 files changed, 120 insertions(+), 205 deletions(-) create mode 100644 assets/images/2.0x/backup.png create mode 100644 assets/images/2.0x/restore_keys.png create mode 100644 assets/images/2.0x/restore_seed.png create mode 100644 assets/images/2.0x/restore_wallet_image.png create mode 100644 assets/images/3.0x/backup.png create mode 100644 assets/images/3.0x/restore_keys.png create mode 100644 assets/images/3.0x/restore_seed.png create mode 100644 assets/images/3.0x/restore_wallet_image.png create mode 100644 assets/images/backup.png create mode 100644 assets/images/restore_keys.png create mode 100644 assets/images/restore_seed.png create mode 100644 assets/images/restore_wallet_image.png delete mode 100644 lib/src/screens/restore/widgets/base_restore_widget.dart delete mode 100644 lib/src/screens/restore/widgets/image_widget.dart diff --git a/assets/images/2.0x/backup.png b/assets/images/2.0x/backup.png new file mode 100644 index 0000000000000000000000000000000000000000..044e494a9d318eb9d1720809fc551d8b09aebfdb GIT binary patch literal 5087 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 literal 0 HcmV?d00001 diff --git a/assets/images/3.0x/restore_seed.png b/assets/images/3.0x/restore_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..addaf2cd01cbf38c5b72fbd8e61d53e00eef4447 GIT binary patch literal 8826 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 literal 0 HcmV?d00001 diff --git a/assets/images/3.0x/restore_wallet_image.png b/assets/images/3.0x/restore_wallet_image.png new file mode 100644 index 0000000000000000000000000000000000000000..e96af878218265f78fa3176d16fb3fb79a794c79 GIT binary patch literal 6930 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 YA0<={g~(cn0000007*qoM6N<$f{oat^#A|> literal 0 HcmV?d00001 diff --git a/assets/images/backup.png b/assets/images/backup.png new file mode 100644 index 0000000000000000000000000000000000000000..e7948fba82e8f335c4419c66b94129844210c6d3 GIT binary patch literal 2026 zcmVRfRxszirk{r0g9V8mmE?Q8i>3*+tb~T@Ab?|yH+SRRaX3Jr>5t1PtVt{ z-+SNdl>!p|T}RHz7s$~m;e;T9a_lY%cZq%|B#|X4gv#zvc|A7?PnHMd@1ZF$CVQVU zJ>MMn^9$0CbN)TrF^(2)EEGCoL}c{0!3xIK@p9W)(Utzg&VN`+MUE%SpM9J44r8z) z!W~M<9}zqj1Op!9dY~F_jL90uk{AEm)`4_ zo_Z(Uod21g5f512d}gZ67PXE}j_MWrf+R(wN*ahtI#AQxb^~!X?a693I4F~rm4eRt zCXr~1ic6dQ(wJ`ZsLqSauW^9v2JAD3ViR2bVOyb{b-PSYNg^harMtSi-#2@`d*SYd zmkn>7c=oQT-uoPM`_R3T=?)|dt}!f%a>pM7*v~)?+b(Zw2AkmhzL-eTkJZ_95BEJO z27B^srW0p1o^`Bf@J~@5!)L`&3(_Z;)%LQB#f?}~Bt!6lm_+)qTLX};jz#SLV}IfS zvhH7^o5u8S_pw_W1L)Jx_#C0nWA|HdAc-&E_Mq}D_P|M|Ju4=W8{hQl;>@V7`3brM zfG)en0Qw|)A3}Ri)?}h~xSj6Pb*W?)_Bv>}ft$8{eMcOJxT7k0<*#~II$3mqdF-_> zJ<=5qNiM8{&4gM7q^q}TL2alHg;6zd!fly`+e_`VlldgbfvrlpRUATEAXnb|WazwAd2kMxj=D8SoOWp_YU>j+Ki!)v(kxo#}TzDDvB#9C{Xypcj zdv~xxM*SGH8JmHtIUAOR3(6)@O`8zPxT)>=m-Ni-m7sw|wXx+<<@tUo^cl~MZ!)N^ z=~C6^w(i*-H&A|SbRs%-AX?fc|DWnyu#6npy%hy(i+?s1r>QP9b&NA}&AG93cIW&m zHC$@9Nhr439BJFY5dzguVOc))cDjd&;`PT1XT$@N`BgomlzJbDeT``g-`H}gC_63p zu%)M_WLSFRN%_I(JLl_EN>DDf8X5S?^KKWo2o|IUCR)9`X?8&Y?TmUt88ct!}0#F=-V*tND@8(-e`)j+;J`__UTCGnrdO7B@Lv2`Pr967ji$ z50~N~JFwqjk=tqCT)uhbC|gxG(z11S1B*b^i_=iG@oj(J4S7IwZi=a;As&$M7UOui zjfnO6>=zfq|LH!6;A(2by5p$USd5Wf-{BLwh$qVzpHfmW)rDna6dx6SuHxXd_(!|_ z^ly{s$k-%kyMbJTl{>h|?Ca~5h)T{PvJuV40nL~t!Bj!8JDISSr~C3l=rv&GLNaFDnW%_YB; z0|by!MWn6M&~d5Nxcy?#VCz|Oy9mVYJJ*6U$6`U2UwyC80aZLFQHTc8Zp8l(G5ezH ziv=X+me4YGiQE-htRaEVX5e^HZVT4iv#Ij`bR3%nhXU%VBZ4^re}F8o(t0U8QU$?k zMQm#XYu5oTcGk}R?v?ESnPUg&L4My0BW<+W-In07*qo IM6N<$f;zC&>;M1& literal 0 HcmV?d00001 diff --git a/assets/images/restore_keys.png b/assets/images/restore_keys.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1d806916c0c86cd91fc9887c30b791f840528a GIT binary patch literal 2232 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 pckkMGYLsb~j2r!JqQifu`4=;@ S.current.restore_restore_wallet; @override - Color get backgroundColor => Palette.creamyGrey; + Color get backgroundColor => PaletteDark.historyPanel; - final _imageSeedKeys = Image.asset('assets/images/seedKeys.png'); - final _imageRestoreSeed = Image.asset('assets/images/restoreSeed.png'); + final imageSeedKeys = Image.asset('assets/images/restore_wallet_image.png'); + final imageBackup = Image.asset('assets/images/backup.png'); @override Widget body(BuildContext context) { - final isLargeScreen = MediaQuery.of(context).size.height > largeHeight; - - return BaseRestoreWidget( - firstRestoreButton: RestoreButton( - onPressed: () => - Navigator.pushNamed( - context, Routes.restoreWalletOptionsFromWelcome), - imageWidget: ImageWidget( - image: _imageSeedKeys, - aspectRatioImage: _aspectRatioImage, - isLargeScreen: isLargeScreen, + return Container( + padding: EdgeInsets.all(24), + child: SingleChildScrollView( + child: Column( + children: [ + RestoreButton( + onPressed: () => + Navigator.pushNamed( + context, Routes.restoreWalletOptionsFromWelcome), + image: imageSeedKeys, + title: S.of(context).restore_title_from_seed_keys, + description: S.of(context).restore_description_from_seed_keys + ), + Padding( + padding: EdgeInsets.only(top: 24), + child: RestoreButton( + onPressed: () {}, + image: imageBackup, + title: S.of(context).restore_title_from_backup, + description: S.of(context).restore_description_from_backup + ), + ) + ], ), - titleColor: Palette.lightViolet, - color: Palette.lightViolet, - title: S.of(context).restore_title_from_seed_keys, - description: S.of(context).restore_description_from_seed_keys, - textButton: S.of(context).restore_next, - ), - secondRestoreButton: RestoreButton( - onPressed: () {}, - imageWidget: ImageWidget( - image: _imageRestoreSeed, - aspectRatioImage: _aspectRatioImage, - isLargeScreen: isLargeScreen, - ), - titleColor: Palette.cakeGreen, - color: Palette.cakeGreen, - title: S.of(context).restore_title_from_backup, - description: S.of(context).restore_description_from_backup, - textButton: S.of(context).restore_next, - ), - isLargeScreen: isLargeScreen, + ) ); } } diff --git a/lib/src/screens/restore/restore_wallet_options_page.dart b/lib/src/screens/restore/restore_wallet_options_page.dart index 39ac97a4d..82cdc0165 100644 --- a/lib/src/screens/restore/restore_wallet_options_page.dart +++ b/lib/src/screens/restore/restore_wallet_options_page.dart @@ -3,31 +3,59 @@ import 'package:flutter/cupertino.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/screens/restore/widgets/restore_button.dart'; -import 'package:cake_wallet/src/screens/restore/widgets/image_widget.dart'; -import 'package:cake_wallet/src/screens/restore/widgets/base_restore_widget.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart'; import 'package:provider/provider.dart'; class RestoreWalletOptionsPage extends BasePage { - static const _aspectRatioImage = 2.086; @override String get title => S.current.restore_seed_keys_restore; @override - Color get backgroundColor => Palette.creamyGrey; + Color get backgroundColor => PaletteDark.historyPanel; - final _imageSeed = Image.asset('assets/images/seedIco.png'); - final _imageKeys = Image.asset('assets/images/keysIco.png'); + final imageSeed = Image.asset('assets/images/restore_seed.png'); + final imageKeys = Image.asset('assets/images/restore_keys.png'); @override Widget body(BuildContext context) { final seedLanguageStore = Provider.of(context); - final isLargeScreen = MediaQuery.of(context).size.height > largeHeight; - return BaseRestoreWidget( + return Container( + padding: EdgeInsets.all(24), + child: SingleChildScrollView( + child: Column( + children: [ + RestoreButton( + onPressed: () { + seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed); + Navigator.pushNamed(context, Routes.seedLanguage); + }, + image: imageSeed, + title: S.of(context).restore_title_from_seed, + description: S.of(context).restore_description_from_seed + ), + Padding( + padding: EdgeInsets.only(top: 24), + child: RestoreButton( + onPressed: () { + seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromKeys); + Navigator.pushNamed(context, Routes.seedLanguage); + }, + image: imageKeys, + title: S.of(context).restore_title_from_keys, + description: S.of(context).restore_description_from_keys + ), + ) + ], + ), + ) + ); + + + /*BaseRestoreWidget( firstRestoreButton: RestoreButton( onPressed: () { seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed); @@ -59,6 +87,6 @@ class RestoreWalletOptionsPage extends BasePage { textButton: S.of(context).restore_next, ), isLargeScreen: isLargeScreen, - ); + );*/ } } diff --git a/lib/src/screens/restore/widgets/base_restore_widget.dart b/lib/src/screens/restore/widgets/base_restore_widget.dart deleted file mode 100644 index 8e0b2f0dc..000000000 --- a/lib/src/screens/restore/widgets/base_restore_widget.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:flutter/material.dart'; - -const largeHeight = 700; - -class BaseRestoreWidget extends StatelessWidget { - BaseRestoreWidget({ - @required this.firstRestoreButton, - @required this.secondRestoreButton, - this.isLargeScreen = false - }); - - final Widget firstRestoreButton; - final Widget secondRestoreButton; - final bool isLargeScreen; - - @override - Widget build(BuildContext context) { - return Container( - padding: EdgeInsets.only( - left: 20.0, - right: 20.0, - ), - child: isLargeScreen - ? Column( - children: [ - Flexible( - child: firstRestoreButton - ), - Flexible( - child: secondRestoreButton - ) - ], - ) - : SingleChildScrollView( - child: Column( - children: [ - firstRestoreButton, - secondRestoreButton - ], - ), - ) - ); - } -} \ No newline at end of file diff --git a/lib/src/screens/restore/widgets/image_widget.dart b/lib/src/screens/restore/widgets/image_widget.dart deleted file mode 100644 index 016bd9ce8..000000000 --- a/lib/src/screens/restore/widgets/image_widget.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:flutter/material.dart'; - -class ImageWidget extends StatelessWidget { - ImageWidget({ - @required this.image, - @required this.aspectRatioImage, - this.isLargeScreen = false}); - - final Image image; - final double aspectRatioImage; - final bool isLargeScreen; - - @override - Widget build(BuildContext context) { - return isLargeScreen - ? Flexible( - child: Container( - child: AspectRatio( - aspectRatio: aspectRatioImage, - child: FittedBox( - fit: BoxFit.contain, - child: image, - ), - ), - ), - ) - : image; - } -} \ No newline at end of file diff --git a/lib/src/screens/restore/widgets/restore_button.dart b/lib/src/screens/restore/widgets/restore_button.dart index ffa73a2fb..0db7cab5f 100644 --- a/lib/src/screens/restore/widgets/restore_button.dart +++ b/lib/src/screens/restore/widgets/restore_button.dart @@ -1,101 +1,71 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/palette.dart'; -import 'package:auto_size_text/auto_size_text.dart'; class RestoreButton extends StatelessWidget { - const RestoreButton( - {@required this.onPressed, - @required this.imageWidget, - @required this.color, - @required this.titleColor, - this.title = '', - this.description = '', - this.textButton = ''}); + const RestoreButton({ + @required this.onPressed, + @required this.image, + @required this.title, + @required this.description}); final VoidCallback onPressed; - final Widget imageWidget; - final Color color; - final Color titleColor; + final Image image; final String title; final String description; - final String textButton; @override Widget build(BuildContext context) { - return Container( - margin: EdgeInsets.only(top: 20.0, bottom: 20.0), - decoration: BoxDecoration( - color: Theme.of(context).accentTextTheme.headline.backgroundColor, - borderRadius: BorderRadius.all(Radius.circular(20.0)), - boxShadow: [ - BoxShadow( - color: Palette.buttonShadow, - blurRadius: 10, - offset: Offset( - 0, - 12, + return GestureDetector( + onTap: onPressed, + child: Container( + width: double.infinity, + height: 140, + padding: EdgeInsets.all(24), + alignment: Alignment.topLeft, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(12)), + color: PaletteDark.menuList + ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + image, + Expanded( + child: Padding( + padding: EdgeInsets.only(left: 16), + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Colors.white + ), + ), + Padding( + padding: EdgeInsets.only(top: 5), + child: Text( + title, + style: TextStyle( + fontSize: 14, + color: PaletteDark.walletCardText + ), + ), + ) + ], + ), ), ) - ]), - child: InkWell( - onTap: onPressed, - borderRadius: BorderRadius.all(Radius.circular(20.0)), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - imageWidget, - Column( - children: [ - Padding( - padding: EdgeInsets.only(left: 20, right: 20), - child: AutoSizeText( - title, - textAlign: TextAlign.center, - style: TextStyle( - color: titleColor, - fontWeight: FontWeight.bold), - maxLines: 2, - ), - ), - Padding( - padding: EdgeInsets.only(left: 20, right: 20, top: 10), - child: AutoSizeText( - description, - textAlign: TextAlign.center, - style: TextStyle( - color: Theme.of(context).accentTextTheme.subhead.color, - ), - maxLines: 2, - ) - ) - ], - ), - SizedBox( - height: 20, - ), - Container( - height: 56.0, - decoration: BoxDecoration( - border: Border( - top: BorderSide( - color: Theme.of(context) - .accentTextTheme - .headline - .decorationColor, - width: 1.15)), - color: Colors.transparent, - ), - child: Center( - child: Text( - textButton, - style: TextStyle( - color: color, - fontSize: 16.0, - fontWeight: FontWeight.bold), - ), - )) - ], - )), + ], + ), + ), ); } } From dbddc20af350c1334fefc4a27d4217cd287fd40b Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Thu, 30 Apr 2020 22:28:16 +0300 Subject: [PATCH 2/4] CWA-205 | added background color to restore options page and restore wallet options page --- lib/src/screens/restore/restore_options_page.dart | 3 +++ lib/src/screens/restore/restore_wallet_options_page.dart | 3 +++ 2 files changed, 6 insertions(+) diff --git a/lib/src/screens/restore/restore_options_page.dart b/lib/src/screens/restore/restore_options_page.dart index 604a8a6b2..54aa045d9 100644 --- a/lib/src/screens/restore/restore_options_page.dart +++ b/lib/src/screens/restore/restore_options_page.dart @@ -20,7 +20,10 @@ class RestoreOptionsPage extends BasePage { @override Widget body(BuildContext context) { return Container( + width: double.infinity, + height: double.infinity, padding: EdgeInsets.all(24), + color: PaletteDark.historyPanel, child: SingleChildScrollView( child: Column( children: [ diff --git a/lib/src/screens/restore/restore_wallet_options_page.dart b/lib/src/screens/restore/restore_wallet_options_page.dart index 82cdc0165..15662005f 100644 --- a/lib/src/screens/restore/restore_wallet_options_page.dart +++ b/lib/src/screens/restore/restore_wallet_options_page.dart @@ -24,7 +24,10 @@ class RestoreWalletOptionsPage extends BasePage { final seedLanguageStore = Provider.of(context); return Container( + width: double.infinity, + height: double.infinity, padding: EdgeInsets.all(24), + color: PaletteDark.historyPanel, child: SingleChildScrollView( child: Column( children: [ From 3180ab65e145d7a7e0c1011491e02e23309cb764 Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Fri, 1 May 2020 18:57:22 +0300 Subject: [PATCH 3/4] CWA-205 | applied new design to restore_from_keys_page, restore_wallet_from_seed_page, restore_wallet_from_seed_details, seed_widget, blockchain_height_widget; created top_panel widget and restore_alert_dialog --- lib/generated/i18n.dart | 48 ++- lib/src/screens/accounts/account_page.dart | 5 +- lib/src/screens/exchange/exchange_page.dart | 5 +- .../exchange_trade/exchange_trade_page.dart | 5 +- .../screens/new_wallet/new_wallet_page.dart | 3 +- lib/src/screens/rescan/rescan_page.dart | 3 +- .../restore_wallet_from_keys_page.dart | 194 +++++++----- .../restore_wallet_from_seed_details.dart | 134 ++++---- .../restore_wallet_from_seed_page.dart | 11 +- .../restore/widgets/restore_alert_dialog.dart | 56 ++++ .../restore/widgets/restore_button.dart | 4 +- lib/src/screens/send/send_page.dart | 3 +- .../subaddress/new_subaddress_page.dart | 5 +- .../wallet_restoration_store.dart | 9 + lib/src/widgets/blockchain_height_widget.dart | 35 ++- lib/src/widgets/primary_button.dart | 34 ++- lib/src/widgets/seed_widget.dart | 288 +++++++++++------- lib/src/widgets/top_panel.dart | 26 ++ res/values/strings_de.arb | 2 + res/values/strings_en.arb | 4 +- res/values/strings_es.arb | 2 + res/values/strings_hi.arb | 2 + res/values/strings_ja.arb | 2 + res/values/strings_ko.arb | 2 + res/values/strings_nl.arb | 2 + res/values/strings_pl.arb | 2 + res/values/strings_pt.arb | 2 + res/values/strings_ru.arb | 2 + res/values/strings_uk.arb | 2 + res/values/strings_zh.arb | 2 + 30 files changed, 590 insertions(+), 304 deletions(-) create mode 100644 lib/src/screens/restore/widgets/restore_alert_dialog.dart create mode 100644 lib/src/widgets/top_panel.dart diff --git a/lib/generated/i18n.dart b/lib/generated/i18n.dart index 99ece7cc0..74e5c9f88 100644 --- a/lib/generated/i18n.dart +++ b/lib/generated/i18n.dart @@ -125,18 +125,20 @@ class S implements WidgetsLocalizations { String get remove_node_message => "Are you sure that you want to remove selected node?"; String get rescan => "Rescan"; String get reset => "Reset"; + String get restore_active_seed => "Active seed"; String get restore_address => "Address"; String get restore_description_from_backup => "You can restore the whole Cake Wallet app from your back-up file"; String get restore_description_from_keys => "Restore your wallet from generated keystrokes saved from your private keys"; String get restore_description_from_seed => "Restore your wallet from either the 25 word or 13 word combination code"; String get restore_description_from_seed_keys => "Get back your wallet from seed/keys that you've saved to secure place"; String get restore_from_seed_placeholder => "Please enter or paste your seed here"; + String get restore_new_seed => "New seed"; String get restore_next => "Next"; String get restore_recover => "Restore"; String get restore_restore_wallet => "Restore Wallet"; String get restore_seed_keys_restore => "Seed/Keys Restore"; String get restore_spend_key_private => "Spend key (private)"; - String get restore_title_from_backup => "Restore from a back-up file"; + String get restore_title_from_backup => "Restore from back-up"; String get restore_title_from_keys => "Restore from keys"; String get restore_title_from_seed => "Restore from seed"; String get restore_title_from_seed_keys => "Restore from seed/keys"; @@ -460,6 +462,8 @@ class $de extends S { @override String get transaction_priority_slow => "Schleppend"; @override + String get restore_new_seed => "Neuer Seed"; + @override String get add => "Hinzufügen"; @override String get remove_node => "Knoten entfernen"; @@ -670,6 +674,8 @@ class $de extends S { @override String get settings_fee_priority => "Gebührenpriorität"; @override + String get restore_active_seed => "Aktives Seed"; + @override String get settings_personal => "persönlich"; @override String get seed_title => "Seed"; @@ -1032,6 +1038,8 @@ class $hi extends S { @override String get transaction_priority_slow => "धीरे"; @override + String get restore_new_seed => "नया बीज"; + @override String get add => "जोड़ना"; @override String get remove_node => "नोड निकालें"; @@ -1242,6 +1250,8 @@ class $hi extends S { @override String get settings_fee_priority => "शुल्क प्राथमिकता"; @override + String get restore_active_seed => "सक्रिय बीज"; + @override String get settings_personal => "निजी"; @override String get seed_title => "बीज"; @@ -1604,6 +1614,8 @@ class $ru extends S { @override String get transaction_priority_slow => "Медленный"; @override + String get restore_new_seed => "Новая мнемоническая фраза"; + @override String get add => "Добавить"; @override String get remove_node => "Удалить ноду"; @@ -1814,6 +1826,8 @@ class $ru extends S { @override String get settings_fee_priority => "Приоритет транзакции"; @override + String get restore_active_seed => "Активная мнемоническая фраза"; + @override String get settings_personal => "Персональные"; @override String get seed_title => "Мнемоническая фраза"; @@ -2176,6 +2190,8 @@ class $ko extends S { @override String get transaction_priority_slow => "느린"; @override + String get restore_new_seed => "새로운 씨앗"; + @override String get add => "더하다"; @override String get remove_node => "노드 제거"; @@ -2386,6 +2402,8 @@ class $ko extends S { @override String get settings_fee_priority => "수수료 우선"; @override + String get restore_active_seed => "활성 종자"; + @override String get settings_personal => "개인적인"; @override String get seed_title => "씨"; @@ -2748,6 +2766,8 @@ class $pt extends S { @override String get transaction_priority_slow => "Lenta"; @override + String get restore_new_seed => "Nova semente"; + @override String get add => "Adicionar"; @override String get remove_node => "Remover nó"; @@ -2958,6 +2978,8 @@ class $pt extends S { @override String get settings_fee_priority => "Prioridade da taxa"; @override + String get restore_active_seed => "Semente ativa"; + @override String get settings_personal => "Pessoal"; @override String get seed_title => "Semente"; @@ -3320,6 +3342,8 @@ class $uk extends S { @override String get transaction_priority_slow => "Повільний"; @override + String get restore_new_seed => "Нова мнемонічна фраза"; + @override String get add => "Добавити"; @override String get remove_node => "Видалити вузол"; @@ -3530,6 +3554,8 @@ class $uk extends S { @override String get settings_fee_priority => "Пріоритет транзакції"; @override + String get restore_active_seed => "Активна мнемонічна фраза"; + @override String get settings_personal => "Персональні"; @override String get seed_title => "Мнемонічна фраза"; @@ -3892,6 +3918,8 @@ class $ja extends S { @override String get transaction_priority_slow => "スロー"; @override + String get restore_new_seed => "新しい種"; + @override String get add => "加える"; @override String get remove_node => "ノードを削除"; @@ -4102,6 +4130,8 @@ class $ja extends S { @override String get settings_fee_priority => "料金優先"; @override + String get restore_active_seed => "アクティブシード"; + @override String get settings_personal => "パーソナル"; @override String get seed_title => "シード"; @@ -4468,6 +4498,8 @@ class $pl extends S { @override String get transaction_priority_slow => "Powolny"; @override + String get restore_new_seed => "Nowe nasienie"; + @override String get add => "Dodaj"; @override String get remove_node => "Usuń węzeł"; @@ -4678,6 +4710,8 @@ class $pl extends S { @override String get settings_fee_priority => "Priorytet opłaty"; @override + String get restore_active_seed => "Aktywne nasiona"; + @override String get settings_personal => "Osobisty"; @override String get seed_title => "Ziarno"; @@ -5040,6 +5074,8 @@ class $es extends S { @override String get transaction_priority_slow => "Lento"; @override + String get restore_new_seed => "Nueva semilla"; + @override String get add => "Añadir"; @override String get remove_node => "Eliminar nodo"; @@ -5250,6 +5286,8 @@ class $es extends S { @override String get settings_fee_priority => "Prioridad de tasa"; @override + String get restore_active_seed => "Semilla activa"; + @override String get settings_personal => "Personal"; @override String get seed_title => "Semilla"; @@ -5612,6 +5650,8 @@ class $nl extends S { @override String get transaction_priority_slow => "Langzaam"; @override + String get restore_new_seed => "Nieuw zaad"; + @override String get add => "Toevoegen"; @override String get remove_node => "Knoop verwijderen"; @@ -5822,6 +5862,8 @@ class $nl extends S { @override String get settings_fee_priority => "Tariefprioriteit"; @override + String get restore_active_seed => "Actief zaad"; + @override String get settings_personal => "Persoonlijk"; @override String get seed_title => "Zaad"; @@ -6184,6 +6226,8 @@ class $zh extends S { @override String get transaction_priority_slow => "慢"; @override + String get restore_new_seed => "新種子"; + @override String get add => "加"; @override String get remove_node => "删除节点"; @@ -6394,6 +6438,8 @@ class $zh extends S { @override String get settings_fee_priority => "费用优先"; @override + String get restore_active_seed => "活性種子"; + @override String get settings_personal => "个人"; @override String get seed_title => "种子"; diff --git a/lib/src/screens/accounts/account_page.dart b/lib/src/screens/accounts/account_page.dart index d02bfb479..4c4011aa9 100644 --- a/lib/src/screens/accounts/account_page.dart +++ b/lib/src/screens/accounts/account_page.dart @@ -98,10 +98,7 @@ class AccountFormState extends State { .primaryTextTheme .button .backgroundColor, - borderColor: Theme.of(context) - .primaryTextTheme - .button - .decorationColor, + textColor: Theme.of(context).primaryTextTheme.button.color, isLoading: accountListStore.isAccountCreating, )) ], diff --git a/lib/src/screens/exchange/exchange_page.dart b/lib/src/screens/exchange/exchange_page.dart index 5cf90b2f8..b297c02e5 100644 --- a/lib/src/screens/exchange/exchange_page.dart +++ b/lib/src/screens/exchange/exchange_page.dart @@ -255,10 +255,7 @@ class ExchangeFormState extends State { .primaryTextTheme .button .backgroundColor, - borderColor: Theme.of(context) - .primaryTextTheme - .button - .decorationColor, + textColor: Theme.of(context).primaryTextTheme.button.color, isLoading: exchangeStore.tradeState is TradeIsCreating, )), Observer(builder: (_) { diff --git a/lib/src/screens/exchange_trade/exchange_trade_page.dart b/lib/src/screens/exchange_trade/exchange_trade_page.dart index def6238a3..418b4e7d9 100644 --- a/lib/src/screens/exchange_trade/exchange_trade_page.dart +++ b/lib/src/screens/exchange_trade/exchange_trade_page.dart @@ -315,10 +315,7 @@ class ExchangeTradeState extends State { .primaryTextTheme .button .backgroundColor, - borderColor: Theme.of(context) - .primaryTextTheme - .button - .decorationColor), + textColor: Theme.of(context).primaryTextTheme.button.color), ) : Offstage()), ); diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 87c995b43..2309fa248 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -126,8 +126,7 @@ class _WalletNameFormState extends State { }, text: S.of(context).continue_text, color: Theme.of(context).primaryTextTheme.button.backgroundColor, - borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor, + textColor: Theme.of(context).primaryTextTheme.button.color, isLoading: walletCreationStore.state is WalletIsCreating, ); }, diff --git a/lib/src/screens/rescan/rescan_page.dart b/lib/src/screens/rescan/rescan_page.dart index a17614df1..2caf2d7b4 100644 --- a/lib/src/screens/rescan/rescan_page.dart +++ b/lib/src/screens/rescan/rescan_page.dart @@ -33,8 +33,7 @@ class RescanPage extends BasePage { }, color: Theme.of(context).primaryTextTheme.button.backgroundColor, - borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor)) + textColor: Theme.of(context).primaryTextTheme.button.color)) ]), ); } diff --git a/lib/src/screens/restore/restore_wallet_from_keys_page.dart b/lib/src/screens/restore/restore_wallet_from_keys_page.dart index 7c09c2d24..8c6ecbffc 100644 --- a/lib/src/screens/restore/restore_wallet_from_keys_page.dart +++ b/lib/src/screens/restore/restore_wallet_from_keys_page.dart @@ -16,6 +16,7 @@ import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart'; import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart'; +import 'package:cake_wallet/src/screens/restore/widgets/restore_alert_dialog.dart'; class RestoreWalletFromKeysPage extends BasePage { RestoreWalletFromKeysPage( @@ -30,6 +31,9 @@ class RestoreWalletFromKeysPage extends BasePage { @override String get title => S.current.restore_title_from_keys; + @override + Color get backgroundColor => PaletteDark.historyPanel; + @override Widget body(BuildContext context) => RestoreFromKeysFrom(); } @@ -47,11 +51,36 @@ class _RestoreFromKeysFromState extends State { final _viewKeyController = TextEditingController(); final _spendKeyController = TextEditingController(); + @override + void dispose() { + _nameController.dispose(); + _addressController.dispose(); + _viewKeyController.dispose(); + _spendKeyController.dispose(); + super.dispose(); + } + + void onHandleControllers(WalletRestorationStore walletRestorationStore) { + if (_nameController.text.isNotEmpty && + _addressController.text.isNotEmpty && + _viewKeyController.text.isNotEmpty && + _spendKeyController.text.isNotEmpty) { + walletRestorationStore.setDisabledState(false); + } else { + walletRestorationStore.setDisabledState(true); + } + } + @override Widget build(BuildContext context) { final walletRestorationStore = Provider.of(context); final seedLanguageStore = Provider.of(context); + _nameController.addListener(() {onHandleControllers(walletRestorationStore);}); + _addressController.addListener(() {onHandleControllers(walletRestorationStore);}); + _viewKeyController.addListener(() {onHandleControllers(walletRestorationStore);}); + _spendKeyController.addListener(() {onHandleControllers(walletRestorationStore);}); + reaction((_) => walletRestorationStore.state, (WalletRestorationState state) { if (state is WalletRestoredSuccessfully) { Navigator.of(context).popUntil((route) => route.isFirst); @@ -62,48 +91,49 @@ class _RestoreFromKeysFromState extends State { showDialog( context: context, builder: (BuildContext context) { - return AlertDialog( - content: Text(state.error), - actions: [ - FlatButton( - child: Text(S.of(context).ok), - onPressed: () => Navigator.of(context).pop(), - ), - ], + return RestoreAlertDialog( + restoreTitle: S.current.restore_title_from_keys, + restoreContent: state.error, + restoreButtonText: S.of(context).ok, + restoreButtonAction: () => Navigator.of(context).pop(), ); }); }); } }); - return ScrollableWithBottomSection( - contentPadding: EdgeInsets.only(left: 20.0, right: 20.0, bottom: 20.0), - content: Form( - key: _formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(left: 13, right: 13), - child: Column(children: [ - Row( - children: [ - Flexible( - child: Container( + return Container( + color: PaletteDark.historyPanel, + padding: EdgeInsets.only(left: 24, right: 24), + child: ScrollableWithBottomSection( + contentPadding: EdgeInsets.only(bottom: 24.0), + content: Form( + key: _formKey, + child: Column(children: [ + Row( + children: [ + Flexible( + child: Container( padding: EdgeInsets.only(top: 20.0), child: TextFormField( - style: TextStyle(fontSize: 14.0), + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), controller: _nameController, decoration: InputDecoration( - hintStyle: - TextStyle(color: Theme.of(context).hintColor), + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), hintText: S.of(context).restore_wallet_name, focusedBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Palette.cakeGreen, width: 2.0)), + color: PaletteDark.menuList, + width: 1.0)), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).focusColor, + color: PaletteDark.menuList, width: 1.0))), validator: (value) { walletRestorationStore.validateWalletName(value); @@ -111,28 +141,34 @@ class _RestoreFromKeysFromState extends State { }, ), )) - ], - ), - Row( - children: [ - Flexible( - child: Container( + ], + ), + Row( + children: [ + Flexible( + child: Container( padding: EdgeInsets.only(top: 20.0), child: TextFormField( - style: TextStyle(fontSize: 14.0), + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), controller: _addressController, keyboardType: TextInputType.multiline, maxLines: null, decoration: InputDecoration( - hintStyle: - TextStyle(color: Theme.of(context).hintColor), + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), hintText: S.of(context).restore_address, focusedBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Palette.cakeGreen, width: 2.0)), + color: PaletteDark.menuList, + width: 1.0)), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).focusColor, + color: PaletteDark.menuList, width: 1.0))), validator: (value) { walletRestorationStore.validateAddress(value); @@ -140,26 +176,32 @@ class _RestoreFromKeysFromState extends State { }, ), )) - ], - ), - Row( - children: [ - Flexible( - child: Container( + ], + ), + Row( + children: [ + Flexible( + child: Container( padding: EdgeInsets.only(top: 20.0), child: TextFormField( - style: TextStyle(fontSize: 14.0), + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), controller: _viewKeyController, decoration: InputDecoration( - hintStyle: - TextStyle(color: Theme.of(context).hintColor), + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), hintText: S.of(context).restore_view_key_private, focusedBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Palette.cakeGreen, width: 2.0)), + color: PaletteDark.menuList, + width: 1.0)), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).focusColor, + color: PaletteDark.menuList, width: 1.0))), validator: (value) { walletRestorationStore.validateKeys(value); @@ -167,26 +209,32 @@ class _RestoreFromKeysFromState extends State { }, ), )) - ], - ), - Row( - children: [ - Flexible( - child: Container( + ], + ), + Row( + children: [ + Flexible( + child: Container( padding: EdgeInsets.only(top: 20.0), child: TextFormField( - style: TextStyle(fontSize: 14.0), + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), controller: _spendKeyController, decoration: InputDecoration( - hintStyle: - TextStyle(color: Theme.of(context).hintColor), + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), hintText: S.of(context).restore_spend_key_private, focusedBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Palette.cakeGreen, width: 2.0)), + color: PaletteDark.menuList, + width: 1.0)), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).focusColor, + color: PaletteDark.menuList, width: 1.0))), validator: (value) { walletRestorationStore.validateKeys(value); @@ -194,16 +242,14 @@ class _RestoreFromKeysFromState extends State { }, ), )) - ], - ), - BlockchainHeightWidget(key: _blockchainHeightKey), - ]), - ) - ], + ], + ), + BlockchainHeightWidget(key: _blockchainHeightKey), + ]), ), - ), - bottomSection: Observer(builder: (_) { - return LoadingPrimaryButton( + bottomSectionPadding: EdgeInsets.only(bottom: 24), + bottomSection: Observer(builder: (_) { + return LoadingPrimaryButton( onPressed: () { if (_formKey.currentState.validate()) { walletRestorationStore.restoreFromKeys( @@ -216,10 +262,12 @@ class _RestoreFromKeysFromState extends State { } }, text: S.of(context).restore_recover, - color: Theme.of(context).primaryTextTheme.button.backgroundColor, - borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor); - }), + color: Colors.green, + textColor: Colors.white, + isDisabled: walletRestorationStore.disabledState, + ); + }), + ), ); } } diff --git a/lib/src/screens/restore/restore_wallet_from_seed_details.dart b/lib/src/screens/restore/restore_wallet_from_seed_details.dart index 635cad300..76214f45e 100644 --- a/lib/src/screens/restore/restore_wallet_from_seed_details.dart +++ b/lib/src/screens/restore/restore_wallet_from_seed_details.dart @@ -11,11 +11,15 @@ import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart'; import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/palette.dart'; +import 'package:cake_wallet/src/screens/restore/widgets/restore_alert_dialog.dart'; class RestoreWalletFromSeedDetailsPage extends BasePage { @override String get title => S.current.restore_wallet_restore_description; + @override + Color get backgroundColor => PaletteDark.historyPanel; + @override Widget body(BuildContext context) => RestoreFromSeedDetailsForm(); } @@ -32,10 +36,24 @@ class _RestoreFromSeedDetailsFormState final _blockchainHeightKey = GlobalKey(); final _nameController = TextEditingController(); + @override + void dispose() { + _nameController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { final walletRestorationStore = Provider.of(context); + _nameController.addListener(() { + if (_nameController.text.isNotEmpty) { + walletRestorationStore.setDisabledState(false); + } else { + walletRestorationStore.setDisabledState(true); + } + }); + reaction((_) => walletRestorationStore.state, (WalletRestorationState state) { if (state is WalletRestoredSuccessfully) { Navigator.of(context).popUntil((route) => route.isFirst); @@ -46,68 +64,66 @@ class _RestoreFromSeedDetailsFormState showDialog( context: context, builder: (BuildContext context) { - return AlertDialog( - content: Text(state.error), - actions: [ - FlatButton( - child: Text(S.of(context).ok), - onPressed: () => Navigator.of(context).pop(), - ), - ], + return RestoreAlertDialog( + restoreTitle: S.current.restore_wallet_restore_description, + restoreContent: state.error, + restoreButtonText: S.of(context).ok, + restoreButtonAction: () => Navigator.of(context).pop(), ); }); }); } }); - return ScrollableWithBottomSection( - contentPadding: EdgeInsets.only(left: 20.0, right: 20.0, bottom: 20.0), - content: Form( - key: _formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(left: 13, right: 13), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - children: [ - Flexible( - child: Container( - padding: EdgeInsets.only(top: 20.0), - child: TextFormField( - style: TextStyle(fontSize: 14.0), - controller: _nameController, - decoration: InputDecoration( - hintStyle: TextStyle( - color: Theme.of(context).hintColor), - hintText: S.of(context).restore_wallet_name, - focusedBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: Palette.cakeGreen, - width: 2.0)), - enabledBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context).focusColor, - width: 1.0))), - validator: (value) { - walletRestorationStore - .validateWalletName(value); - return walletRestorationStore.errorMessage; - }, + return Container( + color: PaletteDark.historyPanel, + padding: EdgeInsets.only(left: 24, right: 24), + child: ScrollableWithBottomSection( + contentPadding: EdgeInsets.only(bottom: 24.0), + content: Form( + key: _formKey, + child: Column( + children: [ + Row( + children: [ + Flexible( + child: Container( + padding: EdgeInsets.only(top: 20.0), + child: TextFormField( + style: TextStyle( + fontSize: 16.0, + color: Colors.white ), - )) - ], - ), - BlockchainHeightWidget(key: _blockchainHeightKey), - ])) - ], + controller: _nameController, + decoration: InputDecoration( + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), + hintText: S.of(context).restore_wallet_name, + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: PaletteDark.menuList, + width: 1.0)), + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: PaletteDark.menuList, + width: 1.0))), + validator: (value) { + walletRestorationStore + .validateWalletName(value); + return walletRestorationStore.errorMessage; + }, + ), + )) + ], + ), + BlockchainHeightWidget(key: _blockchainHeightKey), + ]), ), - ), - bottomSection: Observer(builder: (_) { - return LoadingPrimaryButton( + bottomSectionPadding: EdgeInsets.only(bottom: 24), + bottomSection: Observer(builder: (_) { + return LoadingPrimaryButton( onPressed: () { if (_formKey.currentState.validate()) { walletRestorationStore.restoreFromSeed( @@ -117,10 +133,12 @@ class _RestoreFromSeedDetailsFormState }, isLoading: walletRestorationStore.state is WalletIsRestoring, text: S.of(context).restore_recover, - color: Theme.of(context).primaryTextTheme.button.backgroundColor, - borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor); - }), + color: Colors.green, + textColor: Colors.white, + isDisabled: walletRestorationStore.disabledState, + ); + }), + ), ); } } diff --git a/lib/src/screens/restore/restore_wallet_from_seed_page.dart b/lib/src/screens/restore/restore_wallet_from_seed_page.dart index f4b6fd94b..75ff36d10 100644 --- a/lib/src/screens/restore/restore_wallet_from_seed_page.dart +++ b/lib/src/screens/restore/restore_wallet_from_seed_page.dart @@ -11,6 +11,7 @@ import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/stores/wallet_restoration/wallet_restoration_store.dart'; import 'package:cake_wallet/src/widgets/seed_widget.dart'; import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart'; +import 'package:cake_wallet/palette.dart'; class RestoreWalletFromSeedPage extends BasePage { RestoreWalletFromSeedPage( @@ -27,13 +28,7 @@ class RestoreWalletFromSeedPage extends BasePage { String get title => S.current.restore_title_from_seed; @override - Widget trailing(BuildContext context) => SizedBox( - width: 80, - height: 20, - child: FlatButton( - child: Text(S.of(context).clear), - padding: EdgeInsets.all(0), - onPressed: () => formKey?.currentState?.clear())); + Color get backgroundColor => PaletteDark.menuList; @override Widget body(BuildContext context) => RestoreFromSeedForm(key: formKey); @@ -59,7 +54,7 @@ class _RestoreFromSeedFormState extends State { onTap: () => SystemChannels.textInput.invokeMethod('TextInput.hide'), child: Container( - padding: EdgeInsets.only(left: 20.0, right: 20.0), + color: PaletteDark.historyPanel, child: SeedWidget( key: _seedKey, onMnemoticChange: (seed) => walletRestorationStore.setSeed(seed), diff --git a/lib/src/screens/restore/widgets/restore_alert_dialog.dart b/lib/src/screens/restore/widgets/restore_alert_dialog.dart new file mode 100644 index 000000000..1f41163a0 --- /dev/null +++ b/lib/src/screens/restore/widgets/restore_alert_dialog.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:cake_wallet/src/widgets/base_alert_dialog.dart'; + +class RestoreAlertDialog extends BaseAlertDialog { + RestoreAlertDialog({ + @required this.restoreTitle, + @required this.restoreContent, + @required this.restoreButtonText, + @required this.restoreButtonAction, + }); + + final String restoreTitle; + final String restoreContent; + final String restoreButtonText; + final VoidCallback restoreButtonAction; + + @override + String get titleText => restoreTitle; + + @override + String get contentText => restoreContent; + + @override + Widget actionButtons(BuildContext context) { + return Container( + width: 300, + height: 52, + padding: EdgeInsets.only(left: 12, right: 12), + decoration: BoxDecoration( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(24), + bottomRight: Radius.circular(24) + ), + color: Colors.white + ), + child: ButtonTheme( + minWidth: double.infinity, + child: FlatButton( + onPressed: restoreButtonAction, + highlightColor: Colors.transparent, + splashColor: Colors.transparent, + child: Text( + restoreButtonText, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 15, + fontWeight: FontWeight.w600, + color: Colors.blue, + decoration: TextDecoration.none, + ), + )), + ), + ); + } + +} \ No newline at end of file diff --git a/lib/src/screens/restore/widgets/restore_button.dart b/lib/src/screens/restore/widgets/restore_button.dart index 0db7cab5f..b73505f1c 100644 --- a/lib/src/screens/restore/widgets/restore_button.dart +++ b/lib/src/screens/restore/widgets/restore_button.dart @@ -20,7 +20,7 @@ class RestoreButton extends StatelessWidget { onTap: onPressed, child: Container( width: double.infinity, - height: 140, + height: 150, padding: EdgeInsets.all(24), alignment: Alignment.topLeft, decoration: BoxDecoration( @@ -52,7 +52,7 @@ class RestoreButton extends StatelessWidget { Padding( padding: EdgeInsets.only(top: 5), child: Text( - title, + description, style: TextStyle( fontSize: 14, color: PaletteDark.walletCardText diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart index 07394e97d..a4e4fb056 100644 --- a/lib/src/screens/send/send_page.dart +++ b/lib/src/screens/send/send_page.dart @@ -436,8 +436,7 @@ class SendFormState extends State { : null, text: S.of(context).send, color: Theme.of(context).accentTextTheme.button.backgroundColor, - borderColor: - Theme.of(context).accentTextTheme.button.decorationColor, + textColor: Theme.of(context).primaryTextTheme.button.color, isLoading: sendStore.state is CreatingTransaction || sendStore.state is TransactionCommiting); })); diff --git a/lib/src/screens/subaddress/new_subaddress_page.dart b/lib/src/screens/subaddress/new_subaddress_page.dart index 421ec767c..58d774568 100644 --- a/lib/src/screens/subaddress/new_subaddress_page.dart +++ b/lib/src/screens/subaddress/new_subaddress_page.dart @@ -89,10 +89,7 @@ class NewSubaddressFormState extends State { .accentTextTheme .button .backgroundColor, - borderColor: Theme.of(context) - .accentTextTheme - .button - .decorationColor, + textColor: Theme.of(context).primaryTextTheme.button.color, isLoading: subaddressCreationStore.state is SubaddressIsCreating), )) diff --git a/lib/src/stores/wallet_restoration/wallet_restoration_store.dart b/lib/src/stores/wallet_restoration/wallet_restoration_store.dart index 51b3a1135..3f8351f5e 100644 --- a/lib/src/stores/wallet_restoration/wallet_restoration_store.dart +++ b/lib/src/stores/wallet_restoration/wallet_restoration_store.dart @@ -20,6 +20,7 @@ abstract class WalleRestorationStoreBase with Store { @required this.walletListService, @required this.sharedPreferences}) { state = WalletRestorationStateInitial(); + disabledState = true; } final AuthenticationStore authStore; @@ -38,6 +39,9 @@ abstract class WalleRestorationStoreBase with Store { @observable List seed; + @observable + bool disabledState; + @action Future restoreFromSeed({String name, String seed, int restoreHeight}) async { state = WalletRestorationStateInitial(); @@ -109,6 +113,11 @@ abstract class WalleRestorationStoreBase with Store { return seed.fold('', (acc, item) => acc + ' ' + item.toString()); } + @action + void setDisabledState(bool isDisable) { + disabledState = isDisable; + } + void validateWalletName(String value) { const pattern = '^[a-zA-Z0-9_]{1,15}\$'; final regExp = RegExp(pattern); diff --git a/lib/src/widgets/blockchain_height_widget.dart b/lib/src/widgets/blockchain_height_widget.dart index fcd4cfead..b4d28674b 100644 --- a/lib/src/widgets/blockchain_height_widget.dart +++ b/lib/src/widgets/blockchain_height_widget.dart @@ -37,19 +37,27 @@ class BlockchainHeightState extends State { child: Container( padding: EdgeInsets.only(top: 20.0, bottom: 10.0), child: TextFormField( - style: TextStyle(fontSize: 14.0), + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), controller: restoreHeightController, keyboardType: TextInputType.numberWithOptions( signed: false, decimal: false), decoration: InputDecoration( - hintStyle: TextStyle(color: Theme.of(context).hintColor), + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), hintText: S.of(context).widgets_restore_from_blockheight, focusedBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Palette.cakeGreen, width: 2.0)), + color: PaletteDark.menuList, + width: 1.0)), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).focusColor, width: 1.0))), + color: PaletteDark.menuList, + width: 1.0))), ), )) ], @@ -61,7 +69,7 @@ class BlockchainHeightState extends State { style: TextStyle( fontSize: 16.0, fontWeight: FontWeight.bold, - color: Theme.of(context).primaryTextTheme.title.color), + color: Colors.white), ), ), Row( @@ -72,18 +80,23 @@ class BlockchainHeightState extends State { onTap: () => _selectDate(context), child: IgnorePointer( child: TextFormField( - style: TextStyle(fontSize: 14.0), + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), decoration: InputDecoration( - hintStyle: - TextStyle(color: Theme.of(context).hintColor), + hintStyle: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), hintText: S.of(context).widgets_restore_from_date, focusedBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Palette.cakeGreen, - width: 2.0)), + color: PaletteDark.menuList, + width: 1.0)), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).focusColor, + color: PaletteDark.menuList, width: 1.0))), controller: dateController, validator: (value) { diff --git a/lib/src/widgets/primary_button.dart b/lib/src/widgets/primary_button.dart index fa309d5d0..1fe8d11eb 100644 --- a/lib/src/widgets/primary_button.dart +++ b/lib/src/widgets/primary_button.dart @@ -27,15 +27,17 @@ class PrimaryButton extends StatelessWidget { onPressed: isDisabled ? (onDisabledPressed != null ? onDisabledPressed : null) : onPressed, - color: isDisabled ? Colors.transparent : color, + color: isDisabled ? color.withOpacity(0.5) : color, + disabledColor: color.withOpacity(0.5), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(26.0)), child: Text(text, + textAlign: TextAlign.center, style: TextStyle( fontSize: 15.0, fontWeight: FontWeight.w600, color: isDisabled - ? Palette.darkGrey + ? Colors.grey.withOpacity(0.5) : textColor)), )); } @@ -44,15 +46,15 @@ class PrimaryButton extends StatelessWidget { class LoadingPrimaryButton extends StatelessWidget { const LoadingPrimaryButton( {@required this.onPressed, - @required this.text, - @required this.color, - @required this.borderColor, - this.isDisabled = false, - this.isLoading = false}); + @required this.text, + @required this.color, + @required this.textColor, + this.isDisabled = false, + this.isLoading = false}); final VoidCallback onPressed; final Color color; - final Color borderColor; + final Color textColor; final bool isLoading; final bool isDisabled; final String text; @@ -61,19 +63,23 @@ class LoadingPrimaryButton extends StatelessWidget { Widget build(BuildContext context) { return ButtonTheme( minWidth: double.infinity, - height: 56.0, + height: 52.0, child: FlatButton( onPressed: (isLoading || isDisabled) ? null : onPressed, color: color, + disabledColor: color.withOpacity(0.5), shape: RoundedRectangleBorder( - side: BorderSide(color: borderColor), - borderRadius: BorderRadius.circular(10.0)), + borderRadius: BorderRadius.circular(26.0)), child: isLoading ? CupertinoActivityIndicator(animating: true) : Text(text, - style: TextStyle( - fontSize: 16.0, - color: Theme.of(context).primaryTextTheme.button.color)), + style: TextStyle( + fontSize: 15.0, + fontWeight: FontWeight.w600, + color: isDisabled + ? Colors.grey.withOpacity(0.5) + : textColor + )), )); } } diff --git a/lib/src/widgets/seed_widget.dart b/lib/src/widgets/seed_widget.dart index b9aaa09dd..ec33d7ede 100644 --- a/lib/src/widgets/seed_widget.dart +++ b/lib/src/widgets/seed_widget.dart @@ -13,6 +13,7 @@ import 'package:cake_wallet/src/domain/monero/mnemonics/russian.dart'; import 'package:cake_wallet/src/domain/monero/mnemonics/spanish.dart'; import 'package:cake_wallet/src/domain/common/mnemotic_item.dart'; import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/src/widgets/top_panel.dart'; class SeedWidget extends StatefulWidget { SeedWidget({Key key, this.onMnemoticChange, this.onFinish, this.seedLanguage}) : super(key: key) { @@ -235,127 +236,186 @@ class SeedWidgetState extends State { child: Column(children: [ Flexible( fit: FlexFit.tight, - flex: 6, - child: SingleChildScrollView( - child: Wrap( - children: items.map((item) { - final isValid = item.isCorrect(); - final isSelected = selectedItem == item; - - return InkWell( - onTap: () => onMnemoticTap(item), - child: Container( - decoration: BoxDecoration( - color: isValid ? Colors.transparent : Palette.red), - margin: EdgeInsets.only(right: 7, bottom: 8), - child: Text( - item.toString(), + flex: 1, + child: TopPanel( + height: null, + color: PaletteDark.menuList, + widget: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + S.of(context).restore_active_seed, style: TextStyle( - color: - isValid ? Palette.blueGrey : Palette.lightGrey, - fontSize: 18, - fontWeight: - isSelected ? FontWeight.w900 : FontWeight.w400, - decoration: isSelected - ? TextDecoration.underline - : TextDecoration.none), - )), - ); - }).toList()), - )), + fontSize: 14, + color: PaletteDark.walletCardText + ), + ), + Padding( + padding: EdgeInsets.only(top: 5), + child: Wrap( + children: items.map((item) { + final isValid = item.isCorrect(); + final isSelected = selectedItem == item; + + return InkWell( + onTap: () => onMnemoticTap(item), + child: Container( + decoration: BoxDecoration( + color: isValid ? Colors.transparent : Palette.red), + margin: EdgeInsets.only(right: 7, bottom: 8), + child: Text( + item.toString(), + style: TextStyle( + color: + isValid ? Colors.white : Palette.lightGrey, + fontSize: 16, + fontWeight: + isSelected ? FontWeight.w900 : FontWeight.w400, + decoration: isSelected + ? TextDecoration.underline + : TextDecoration.none), + )), + ); + }).toList(),) + ) + ], + ), + ) + ) + ), Flexible( fit: FlexFit.tight, - flex: 8, - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + flex: 2, + child: Padding( + padding: EdgeInsets.only(left: 24, top: 48, right: 24, bottom: 24), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - Column(children: [ - TextFormField( - key: _seedTextFieldKey, - onFieldSubmitted: (text) => isCurrentMnemoticValid - ? saveCurrentMnemoticToItems() - : null, - style: TextStyle(fontSize: 14.0), - controller: _seedController, - textInputAction: TextInputAction.done, - decoration: InputDecoration( - suffixIcon: GestureDetector( - behavior: HitTestBehavior.opaque, - child: ConstrainedBox( - constraints: BoxConstraints(maxWidth: 145), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - '${items.length}/${SeedWidgetState.maxLength}', - style: TextStyle( - color: Colors.grey, fontSize: 12)), - SizedBox(width: 10), - InkWell( - onTap: () async => - Clipboard.getData('text/plain').then( - (clipboard) => - replaceText(clipboard.text)), - child: Container( - height: 35, - padding: EdgeInsets.all(7), - decoration: BoxDecoration( - color: - Palette.wildDarkBlueWithOpacity, - borderRadius: - BorderRadius.circular(10.0)), - child: Text(S.of(context).paste)), - ) - ], - ), + Text( + S.of(context).restore_new_seed, + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.white + ), + ), + Padding( + padding: EdgeInsets.only(top: 24), + child: TextFormField( + key: _seedTextFieldKey, + onFieldSubmitted: (text) => isCurrentMnemoticValid + ? saveCurrentMnemoticToItems() + : null, + style: TextStyle( + fontSize: 16.0, + color: Colors.white + ), + controller: _seedController, + textInputAction: TextInputAction.done, + decoration: InputDecoration( + suffixIcon: GestureDetector( + behavior: HitTestBehavior.opaque, + child: ConstrainedBox( + constraints: BoxConstraints(maxWidth: 145), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + '${items.length}/${SeedWidgetState.maxLength}', + style: TextStyle( + color: PaletteDark.walletCardText, + fontSize: 14)), + SizedBox(width: 10), + InkWell( + onTap: () async => + Clipboard.getData('text/plain').then( + (clipboard) => + replaceText(clipboard.text)), + child: Container( + height: 35, + padding: EdgeInsets.all(7), + decoration: BoxDecoration( + color: + PaletteDark.menuList, + borderRadius: + BorderRadius.circular(10.0)), + child: Text( + S.of(context).paste, + style: TextStyle( + color: Colors.white + ), + )), + ) + ], ), ), - hintStyle: - TextStyle(color: Theme.of(context).hintColor), - hintText: S.of(context).restore_from_seed_placeholder, - errorText: _errorMessage, - focusedBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: Palette.cakeGreen, width: 2.0)), - enabledBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context).focusColor, - width: 1.0))), - enableInteractiveSelection: false, + ), + hintStyle: + TextStyle( + color: PaletteDark.walletCardText, + fontSize: 16 + ), + hintText: S.of(context).restore_from_seed_placeholder, + errorText: _errorMessage, + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: PaletteDark.menuList, width: 1.0)), + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: PaletteDark.menuList, + width: 1.0))), + enableInteractiveSelection: false, + ), + ) + ]), + ) + ), + Padding( + padding: EdgeInsets.only(left: 24, right: 24, bottom: 24), + child: Row( + children: [ + Flexible( + child: Padding( + padding: EdgeInsets.only(right: 8), + child: PrimaryButton( + onPressed: clear, + text: S.of(context).clear, + color: Colors.red, + textColor: Colors.white, + isDisabled: items.isEmpty, ), - ]), - Padding( - padding: EdgeInsets.only(bottom: 20), - child: (selectedItem == null && items.length == maxLength) - ? PrimaryButton( - text: S.of(context).restore_next, - isDisabled: !isSeedValid(), - onPressed: () => widget.onFinish != null - ? widget.onFinish() - : null, - color: Theme.of(context) - .primaryTextTheme - .button - .backgroundColor, - textColor: Theme.of(context) - .primaryTextTheme - .button - .color) - : PrimaryButton( - text: selectedItem != null - ? S.of(context).save - : S.of(context).add_new_word, - onPressed: () => isCurrentMnemoticValid - ? saveCurrentMnemoticToItems() - : null, - onDisabledPressed: () => showErrorIfExist(), - isDisabled: !isCurrentMnemoticValid, - color: PaletteDark.darkThemeBlueButton, - textColor: Theme.of(context) - .primaryTextTheme - .button - .color)) - ])) + ) + ), + Flexible( + child: Padding( + padding: EdgeInsets.only(left: 8), + child: (selectedItem == null && items.length == maxLength) + ? PrimaryButton( + text: S.of(context).restore_next, + isDisabled: !isSeedValid(), + onPressed: () => widget.onFinish != null + ? widget.onFinish() + : null, + color: Colors.green, + textColor: Colors.white) + : PrimaryButton( + text: selectedItem != null + ? S.of(context).save + : S.of(context).add_new_word, + onPressed: () => isCurrentMnemoticValid + ? saveCurrentMnemoticToItems() + : null, + onDisabledPressed: () => showErrorIfExist(), + isDisabled: !isCurrentMnemoticValid, + color: Colors.green, + textColor: Colors.white), + ), + ) + ], + )) ]), ); } diff --git a/lib/src/widgets/top_panel.dart b/lib/src/widgets/top_panel.dart new file mode 100644 index 000000000..c175b26c9 --- /dev/null +++ b/lib/src/widgets/top_panel.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; + +class TopPanel extends StatelessWidget { + TopPanel({@required this.height, @required this.color, @required this.widget}); + + final double height; + final Color color; + final Widget widget; + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + height: height ?? double.infinity, + padding: EdgeInsets.all(24), + decoration: BoxDecoration( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(24), + bottomRight: Radius.circular(24) + ), + color: color + ), + child: widget, + ); + } +} \ No newline at end of file diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index a7e82893f..8053145a7 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Schlüssel ausgeben (geheim)", "restore_recover" : "Genesen", "restore_wallet_restore_description" : "Beschreibung zur Wiederherstellung der Brieftasche", + "restore_new_seed" : "Neuer Seed", + "restore_active_seed" : "Aktives Seed", "seed_title" : "Seed", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 5681dc513..eb55c5960 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -137,7 +137,7 @@ "restore_title_from_seed_keys" : "Restore from seed/keys", "restore_description_from_seed_keys" : "Get back your wallet from seed/keys that you've saved to secure place", "restore_next" : "Next", - "restore_title_from_backup" : "Restore from a back-up file", + "restore_title_from_backup" : "Restore from back-up", "restore_description_from_backup" : "You can restore the whole Cake Wallet app from your back-up file", "restore_seed_keys_restore" : "Seed/Keys Restore", "restore_title_from_seed" : "Restore from seed", @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Spend key (private)", "restore_recover" : "Restore", "restore_wallet_restore_description" : "Wallet restore description", + "restore_new_seed" : "New seed", + "restore_active_seed" : "Active seed", "seed_title" : "Seed", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 260df0433..3307a0471 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Spend clave (privado)", "restore_recover" : "Recuperar", "restore_wallet_restore_description" : "Restaurar billetera", + "restore_new_seed" : "Nueva semilla", + "restore_active_seed" : "Semilla activa", "seed_title" : "Semilla", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 85b6f080e..e98446238 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "कुंजी खर्च करें (निजीe)", "restore_recover" : "वसूली", "restore_wallet_restore_description" : "बटुआ विवरण पुनर्स्थापित करें", + "restore_new_seed" : "नया बीज", + "restore_active_seed" : "सक्रिय बीज", "seed_title" : "बीज", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index a291e6a12..a6f4141f3 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "キーを使う (プライベート)", "restore_recover" : "回復します", "restore_wallet_restore_description" : "ウォレットの復元", + "restore_new_seed" : "新しい種", + "restore_active_seed" : "アクティブシード", "seed_title" : "シード", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 50acfcbb1..09f6e5a7e 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "지출 키 (은밀한)", "restore_recover" : "다시 덮다", "restore_wallet_restore_description" : "월렛 복원 설명", + "restore_new_seed" : "새로운 씨앗", + "restore_active_seed" : "활성 종자", "seed_title" : "씨", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 0268e8a0e..d46d04caf 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Sleutel uitgeven (privaat)", "restore_recover" : "Herstellen", "restore_wallet_restore_description" : "Portemonnee-herstelbeschrijving", + "restore_new_seed" : "Nieuw zaad", + "restore_active_seed" : "Actief zaad", "seed_title" : "Zaad", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index dec019a07..0bd026a5c 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Wydaj klucz (prywatny)", "restore_recover" : "Wyzdrowieć", "restore_wallet_restore_description" : "Opis przywracania portfela", + "restore_new_seed" : "Nowe nasienie", + "restore_active_seed" : "Aktywne nasiona", "seed_title" : "Ziarno", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index fe855e87f..e309fda53 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Chave de gastos (privada)", "restore_recover" : "Restaurar", "restore_wallet_restore_description" : "Restauração da carteira", + "restore_new_seed" : "Nova semente", + "restore_active_seed" : "Semente ativa", "seed_title" : "Semente", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 5692f7421..95f25bf50 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Приватный ключ траты", "restore_recover" : "Восстановить", "restore_wallet_restore_description" : "Описание восстановления кошелька", + "restore_new_seed" : "Новая мнемоническая фраза", + "restore_active_seed" : "Активная мнемоническая фраза", "seed_title" : "Мнемоническая фраза", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index e44a993f7..f34a61d94 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "Приватний ключ витрати", "restore_recover" : "Відновити", "restore_wallet_restore_description" : "Опис відновлюваного гаманця", + "restore_new_seed" : "Нова мнемонічна фраза", + "restore_active_seed" : "Активна мнемонічна фраза", "seed_title" : "Мнемонічна фраза", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 06a428fce..db2edaf57 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -150,6 +150,8 @@ "restore_spend_key_private" : "支出金钥 (私人的)", "restore_recover" : "恢复", "restore_wallet_restore_description" : "钱包还原说明", + "restore_new_seed" : "新種子", + "restore_active_seed" : "活性種子", "seed_title" : "种子", From 4215ac2425f5246885c813933c86aa5a44ecc6c6 Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Fri, 1 May 2020 21:36:48 +0300 Subject: [PATCH 4/4] CWA-205 | applied new design to seed_language_page --- assets/images/china.png | Bin 0 -> 582 bytes assets/images/germany.png | Bin 0 -> 576 bytes assets/images/holland.png | Bin 0 -> 596 bytes assets/images/india.png | Bin 0 -> 683 bytes assets/images/japan.png | Bin 0 -> 570 bytes assets/images/poland.png | Bin 0 -> 538 bytes assets/images/portugal.png | Bin 0 -> 773 bytes assets/images/russia.png | Bin 0 -> 557 bytes assets/images/select_arrow.png | Bin 0 -> 290 bytes assets/images/south_korea.png | Bin 0 -> 680 bytes assets/images/spain.png | Bin 0 -> 518 bytes assets/images/usa.png | Bin 0 -> 838 bytes assets/images/wallet_name.png | Bin 0 -> 50280 bytes lib/generated/i18n.dart | 47 +++- .../new_wallet/widgets/select_button.dart | 66 +++++ .../restore/restore_wallet_options_page.dart | 35 --- .../seed_language/seed_language_page.dart | 113 +++++--- .../widgets/seed_language_picker.dart | 249 +++++++++++++++--- res/values/strings_de.arb | 3 +- res/values/strings_en.arb | 3 +- res/values/strings_es.arb | 3 +- res/values/strings_hi.arb | 3 +- res/values/strings_ja.arb | 3 +- res/values/strings_ko.arb | 3 +- res/values/strings_nl.arb | 3 +- res/values/strings_pl.arb | 3 +- res/values/strings_pt.arb | 3 +- res/values/strings_ru.arb | 3 +- res/values/strings_uk.arb | 3 +- res/values/strings_zh.arb | 3 +- 30 files changed, 419 insertions(+), 127 deletions(-) create mode 100644 assets/images/china.png create mode 100644 assets/images/germany.png create mode 100644 assets/images/holland.png create mode 100644 assets/images/india.png create mode 100644 assets/images/japan.png create mode 100644 assets/images/poland.png create mode 100644 assets/images/portugal.png create mode 100644 assets/images/russia.png create mode 100644 assets/images/select_arrow.png create mode 100644 assets/images/south_korea.png create mode 100644 assets/images/spain.png create mode 100644 assets/images/usa.png create mode 100644 assets/images/wallet_name.png create mode 100644 lib/src/screens/new_wallet/widgets/select_button.dart diff --git a/assets/images/china.png b/assets/images/china.png new file mode 100644 index 0000000000000000000000000000000000000000..0771ff1e07effc44dffd64d6ebca28b5e45267ef GIT binary patch literal 582 zcmV-M0=fN(P)xt80WRCnH7hL4$kV0-BRF{ z8*gl;5P`<)gJT2k17Ck6b4wz~&L5F?&g%>NPk>#wv8Ee3{`SvC?Z1uh8cWRQg@QSm1UQsnm)%z zX8G!z1ZX6Q&Q)6Rus;bEXIqwpFXz`x8ua-6@_2XY{5glok9esfUL3q2y@E0kX?zh# zuI6$vEy+`|Fl8w)!1UxvQP{%=G;x2)Y9J4vjxZINT%j}#Ir2KH(WD*ak0i0(P~sCPWb3$8YUu5Dwdaf?%SU4>~cw U;{cWMU;qFB07*qoM6N<$g1!9u#Q*>R literal 0 HcmV?d00001 diff --git a/assets/images/germany.png b/assets/images/germany.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc720303e39d1bab5f4db8fb5842a01a0ddd2d0 GIT binary patch literal 576 zcmV-G0>AxXNW4H!a7>?|c>|O;2uE&xgBq0s5{LT6 zp+&er)NJhCVK$+u>)359<#+Jd-+I2C8EcJ@gU8smeMCfUA%xGdY4jvX0x4yPh@{Tyl-emw{>vY61X2ksOc?~K&xa)6QujIXfE#l`A7f_U`0q} zj~(@&y#6^{7#f@x=RFkjT^_DZ8pk^;q`}jJtK&tb>6hKTug5fRKP)tiZ{|h>k+u1} zyY=d-mtHSC#5ZSqU97+%2+s#~-JF@k<1mreL1nXbDx>ei?Ke@B&HD$c$iIfJ5`qo@ O0000Q>Trqeiz^Sp6;V}?>!$OM;*)3PlbauPGk|ml$N1< zkwhNCp-+IjE@M03>0?OTcbj z@IJeLfY+-X{4M-Uz&HY;Vb+7_M~Ih8-(Nhp`M0kIiimTFD42Bhg>rd~dcB@(0#;E( zLZr|fxvIJbii&93j;S&fIEom{wKW{G6wt>pi8ReuKo3PF@~b2`_exJ+et7$H7#Hd? zXI#D!@jm}-dEO<n7s1X3<}hDnzcuxFf)hm zw(dRQB-Hi&X}~!82kT!tw`jMUwTI*TQ~#mLomaMeA8#(6K4JbCL`Dh=6Mrv=y^Bj{ iS|9zvrr(nFpU`jkT)~5{XNYA00000^SIT?N<2J(gJ4Y^`sNQoU= zh8Wpe8rf9m=eI(*_1(l76!`&YzzlJ2G@lX^lX-q=a-i|&uMSq5+sKURxOsgXH?EB* zY&aM2JE2P8Y)ay=GBeQ+6$7va_NCNiTsu3pJ>*=ZU9Aq4WiP7&7+ z#31jUzxjbXxeHxutM9k*;&C=%>v*98Lc=j~+$gbjUV3<(6tFdD^X|+ne{6>a&3%NSC$?J1bNc%rK2ah2Vf;<9{$rw&_$ z3~bj|x44SZqqvQAwXcz8y&~^u^(3&!r=Y(bKqobRzkC>BqQQ$1V3B8O%_kdPHs zVRA3DIj2RGo-~f`lK~FIU`~)H>KDMc$yo#*uoiOzOVhMQME<@*anbHQ_YX>26>ly! R@X`PP002ovPDHLkV1g1%DUARC literal 0 HcmV?d00001 diff --git a/assets/images/japan.png b/assets/images/japan.png new file mode 100644 index 0000000000000000000000000000000000000000..2295c0dfad26a26eb8dad0a34344df8a0d891238 GIT binary patch literal 570 zcmV-A0>%A_P)Z{vJV@bc1z{M*&2>AIaTRb81S7G&_(LQR#t|CR3>eE493fS0{>qU* z6=f_zE>7vdp}_b%Cd9$rbt9mHCK4@N+JWO?9Xp+F|8}?X@HClh%j3(+YyxgnnHko@ zI>K68e3N6~`%S`FRTfg*g?ddG2oJv@Jvn&`r_-*T%gy3`-*>9fb+CW;O8@`>07*qo IM6N<$g7azjO#lD@ literal 0 HcmV?d00001 diff --git a/assets/images/poland.png b/assets/images/poland.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8f2e16308b842b6f6b550ff4f6c96d77261f2a GIT binary patch literal 538 zcmV+#0_FXQP)N;SG2;LG%Q|35+M8o#juZUFs+l*v;Sp@ulK=VU>kwHAKHNU3_E05 z7UXid7U$iDk~o@Y$bqATsBz=E&RVvxMH*~bqBcK;5XyQ?NKQSHvX4r+AwcKW cbvHid9~P+2E{Frh!2kdN07*qoM6N<$f?T@fApigX literal 0 HcmV?d00001 diff --git a/assets/images/portugal.png b/assets/images/portugal.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f1a4917e145e0a963b61b9970fb70ce49a57dc GIT binary patch literal 773 zcmV+g1N!`lP);?FrNi2nh!j1rsh_grg_m=1oo}dTIH%iIE$S z5Ca-bjK=(wy-TJS3 zxc!wkr1^Y7GEI=K#{jm7c_J|NVtA*$wB2!g^inH9MA%?|gXKfp>niLb2^Is}!CEn_ zaR?AE;blJ^ln#U7q9BtNjbHB=*byjUa)KX_mjNG2mOOs{k82%|i-4UY7rG>@Uyb$w z+Y*C&<4x_Y1t5s}mGN<5QMtwlR%T$F;T=p(;-%%p6V1D%Cm*V zxr7IcPXp4L?ofeVL%ws18hP^3Jv{mkH9xDczF`zCKGO9I%h40AP z?4h8x+su>cc`U4El--g@>DWt}49s$VSOA|=9_6&xzTZ>^a1&Prp?$xehZE{8y%sA|I!s<+oJ5I2rpKCjLOkUtsFoC@JC=XYp zai-=o?4>!Fm2)!3{$gq56zqh@l}F%5$9+n_0 zIQhIzi+0Z@t-jC+xPtkXf*j9)~uh200000NkvXXu0mjf D=c!zi literal 0 HcmV?d00001 diff --git a/assets/images/russia.png b/assets/images/russia.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4752cb7e128c4e0cd8a360bc4301053dee447d GIT binary patch literal 557 zcmV+|0@D47P);{zYwzdc;`yp)NKWVx%llkqm(?Q@N%d)~4<738HOqjY@+Au_bQd3cs{EDh(y>gKU zEFrdQvBF*nz!(7MA`_Vk#)cD&9k7hpZhc{c5{5N!u2D*FtZLQp1PYi8oWe9AiT+q1bl&?i=QqDlh8@opeRvvl`ADT)P>orlRUOaPnpw);mMVpza52q@%N00LchS%<(t2fiiHD8CGXr}afNsm_ zHn&JQiq#^q8Ac}%M2xyzqQi#V2VIWbm&6S649qGzIVBvJu}R9=F;Hsb;VC5|#uSve zzrLKkvCV*GBBYWY*%R+@^Rbi`EtJPMeTn_<=*ynp+fQzjO6qsmcZ%N*50VH_99EWf v-e_n8XRl-OZi|F=c8i~{&)Fz3ZD-yWzwWYv!g1)K00000NkvXXu0mjf2_Ns7 literal 0 HcmV?d00001 diff --git a/assets/images/select_arrow.png b/assets/images/select_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..31499de54b0c5b40546937b616532242556b0baf GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^{2``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{&r6n$B+ufr588y9&+Ge4Y;q#Y`~-(aPh(c zHUq{B7cMB>`l1o!(io6&f~|*v*J)uAiyOz^*dE)4TDL#P)aTASug=V&+23CmXc`>w zXleJkopVktwXi*J|5)PjJTLAJ?v;(qs=E)@KG^)m>$sdncz)R7rIO2~R5o5a(6W^6 zUf1^57rWzjeUubD9&>g^S)4M%`@Kg6(w=RU44P^D#%aa}5jCBID%TX;{}e}>?qmy< iVX!y37Tr|;oO_phV$eRb!Wlp>FnGH9xvX-?^2V2~7VCl`4y%NS&yf9ktz!)TmPnL(>tKq#I1InXOEyTbfF+!hrWyum_c; zTTP_4L#qH=G6d&+7hhsK=O}s7Vf)^DzxVF+-62S0^ZDE~4CB4;`>*)(Igf1Mn(*-0 zH%O&Y`?_4Afo%yP_W0GL>kZ&$9Bjm3ZHD!40E1;$tJN3IX=;IRFl=W!ol?16rsZ;Z zEe$b<<(vk`eu@AYwhadYs?{px^Z7(5=8DCljKMo{c&~S{Rq)F_Tr3v9umnI5*z5JE zP$-aPSyZdlBEWjRE}yRJQmIsuz;3rIF$`W8L3ev90o4J5bvhk7J^V|@?sxgUX1}C6 z)?*1lQ3Xq<)6&nJU3Ayy;j1y5&HPHGBHw>IpZ%ZoG&2719DLllj1A|4CHUun&b1aX zboTGr7U}HKkAdt|W1gXd!PGK!c9QJN-c9m+-FQLuH&3)aXCp_IggkWU=^XaveM&NW z^Ffkp0^lS(18uchEwUc2k@GfpCBu1_W8Xa~AB|2u!IL|zpSFTQi(%Ou{y!%7;OL?= zz{0W_4u=;sKHJ;Sp~?DzuuZ@qXeDmw%W<4Y3+Nt&ZQG{tcpMhCXPV}^JSo8q(^p4N z1&2i&-Vzi>3<|@KC%TK=JUHMG=V&zYIXEs@KQ4a6AQs=8+fW=4tKQ)KY|<@^SJvh( zKWc%&^5xA#m$!71;WGG;$z%qR0!h&U_%%iU0z4iQp8v*|>psI4@w_vCmvQt|up)Q> O0000ugK~#7Ft(8qq z!ax+q|8J(H;zxoT-I?)gXB2Osi7Pkg3Dg_N38*KK8z3jJCT`pr4er3I2e5lLxKbkW zd<`Jb0s+Er(oEmS{QD;JQ9>V{jY)mMIbq^Ghplu1wjqQK0Rz7D-d5lj`;DcjWNF&Uf=%SdBtkeOg!!;vXdfa&2YDE4FS z#t$YWQ23>rz9F7Kl-LtN?IGNhQO2&41KKGU74286XwX?)u!gZ9xXrG`>w&qfed_bJ zt;rhsa&VT&UA?Vb^azHO%tnq$xovx%XP_~BXUP?o-wyn2r_cxwX7iMYauP6>h|Tf9 zGhG$2GZFK;oir#r6xN_jQm%guOO90M7a-yLI#ApV{Mcgt0iD`;yVgy*&;S4c07*qo IM6N<$g2t`kDF6Tf literal 0 HcmV?d00001 diff --git a/assets/images/usa.png b/assets/images/usa.png new file mode 100644 index 0000000000000000000000000000000000000000..d67d3e2b4cf6479dcef805315e9a9a12b437ae47 GIT binary patch literal 838 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 "Wallet restore description"; String get save => "Save"; String get saved_the_trade_id => "I've saved the trade ID"; + String get seed_choose => "Choose seed language"; String get seed_language_chinese => "Chinese"; - String get seed_language_choose => "Please choose seed language"; + String get seed_language_choose => "Please choose seed language:"; String get seed_language_dutch => "Dutch"; String get seed_language_english => "English"; String get seed_language_german => "German"; @@ -398,7 +399,7 @@ class $de extends S { @override String get restore_title_from_keys => "Wiederherstellen von Schlüsseln"; @override - String get seed_language_choose => "Bitte wählen Sie die Ausgangssprache"; + String get seed_language_choose => "Bitte wählen Sie die Ausgangssprache:"; @override String get wallet_keys => "Wallet schlüssel"; @override @@ -648,6 +649,8 @@ class $de extends S { @override String get change_currency => "Währung ändern"; @override + String get seed_choose => "Wählen Sie die Ausgangssprache"; + @override String get transaction_details_amount => "Menge"; @override String get widgets_address => "Adresse"; @@ -974,7 +977,7 @@ class $hi extends S { @override String get restore_title_from_keys => "कुंजी से पुनर्स्थापित करें"; @override - String get seed_language_choose => "कृपया बीज भाषा चुनें"; + String get seed_language_choose => "कृपया बीज भाषा चुनें:"; @override String get wallet_keys => "बटुआ की"; @override @@ -1224,6 +1227,8 @@ class $hi extends S { @override String get change_currency => "मुद्रा परिवर्तन करें"; @override + String get seed_choose => "बीज भाषा चुनें"; + @override String get transaction_details_amount => "रकम"; @override String get widgets_address => "पता"; @@ -1550,7 +1555,7 @@ class $ru extends S { @override String get restore_title_from_keys => "Восстановить с помощью ключей"; @override - String get seed_language_choose => "Пожалуйста, выберите язык мнемонической фразы"; + String get seed_language_choose => "Пожалуйста, выберите язык мнемонической фразы:"; @override String get wallet_keys => "Ключи кошелька"; @override @@ -1800,6 +1805,8 @@ class $ru extends S { @override String get change_currency => "Изменить валюту"; @override + String get seed_choose => "Выберите язык мнемонической фразы"; + @override String get transaction_details_amount => "Сумма"; @override String get widgets_address => "Адрес"; @@ -2126,7 +2133,7 @@ class $ko extends S { @override String get restore_title_from_keys => "키에서 복원"; @override - String get seed_language_choose => "종자 언어를 선택하십시오"; + String get seed_language_choose => "종자 언어를 선택하십시오:"; @override String get wallet_keys => "지갑 키"; @override @@ -2376,6 +2383,8 @@ class $ko extends S { @override String get change_currency => "통화 변경"; @override + String get seed_choose => "시드 언어를 선택하십시오"; + @override String get transaction_details_amount => "양"; @override String get widgets_address => "주소"; @@ -2702,7 +2711,7 @@ class $pt extends S { @override String get restore_title_from_keys => "Restaurar a partir de chaves"; @override - String get seed_language_choose => "Por favor, escolha o idioma da semente"; + String get seed_language_choose => "Por favor, escolha o idioma da semente:"; @override String get wallet_keys => "Chaves da carteira"; @override @@ -2952,6 +2961,8 @@ class $pt extends S { @override String get change_currency => "Alterar moeda"; @override + String get seed_choose => "Escolha o idioma da semente"; + @override String get transaction_details_amount => "Quantia"; @override String get widgets_address => "Endereço"; @@ -3278,7 +3289,7 @@ class $uk extends S { @override String get restore_title_from_keys => "Відновити за допомогою ключів"; @override - String get seed_language_choose => "Будь ласка, виберіть мову мнемонічної фрази"; + String get seed_language_choose => "Будь ласка, виберіть мову мнемонічної фрази:"; @override String get wallet_keys => "Ключі гаманця"; @override @@ -3528,6 +3539,8 @@ class $uk extends S { @override String get change_currency => "Змінити валюту"; @override + String get seed_choose => "Виберіть мову мнемонічної фрази"; + @override String get transaction_details_amount => "Сума"; @override String get widgets_address => "Адреса"; @@ -3854,7 +3867,7 @@ class $ja extends S { @override String get restore_title_from_keys => "キーから復元する"; @override - String get seed_language_choose => "シード言語を選択してください"; + String get seed_language_choose => "シード言語を選択してください:"; @override String get wallet_keys => "ウォレットキー"; @override @@ -4104,6 +4117,8 @@ class $ja extends S { @override String get change_currency => "通貨を変更する"; @override + String get seed_choose => "シード言語を選択してください"; + @override String get transaction_details_amount => "量"; @override String get widgets_address => "住所"; @@ -4434,7 +4449,7 @@ class $pl extends S { @override String get restore_title_from_keys => "Przywróć z kluczy"; @override - String get seed_language_choose => "Proszę wybrać język początkowy"; + String get seed_language_choose => "Proszę wybrać język początkowy:"; @override String get wallet_keys => "Klucze portfela"; @override @@ -4684,6 +4699,8 @@ class $pl extends S { @override String get change_currency => "Change Currency"; @override + String get seed_choose => "Wybierz język początkowy"; + @override String get transaction_details_amount => "Ilość"; @override String get widgets_address => "Adres"; @@ -5010,7 +5027,7 @@ class $es extends S { @override String get restore_title_from_keys => "De las claves"; @override - String get seed_language_choose => "Por favor elija el idioma semilla"; + String get seed_language_choose => "Por favor elija el idioma semilla:"; @override String get wallet_keys => "Billetera clave"; @override @@ -5260,6 +5277,8 @@ class $es extends S { @override String get change_currency => "Cambiar moneda"; @override + String get seed_choose => "Elige el idioma semilla"; + @override String get transaction_details_amount => "Cantidad"; @override String get widgets_address => "Dirección"; @@ -5586,7 +5605,7 @@ class $nl extends S { @override String get restore_title_from_keys => "Herstel van sleutels"; @override - String get seed_language_choose => "Kies een starttaal"; + String get seed_language_choose => "Kies een starttaal:"; @override String get wallet_keys => "Portemonnee sleutels"; @override @@ -5836,6 +5855,8 @@ class $nl extends S { @override String get change_currency => "Verander valuta"; @override + String get seed_choose => "Kies een starttaal"; + @override String get transaction_details_amount => "Bedrag"; @override String get widgets_address => "Adres"; @@ -6162,7 +6183,7 @@ class $zh extends S { @override String get restore_title_from_keys => "从密钥还原"; @override - String get seed_language_choose => "請選擇種子語言"; + String get seed_language_choose => "請選擇種子語言:"; @override String get wallet_keys => "钱包钥匙"; @override @@ -6412,6 +6433,8 @@ class $zh extends S { @override String get change_currency => "更改币种"; @override + String get seed_choose => "選擇種子語言"; + @override String get transaction_details_amount => "量"; @override String get widgets_address => "地址"; diff --git a/lib/src/screens/new_wallet/widgets/select_button.dart b/lib/src/screens/new_wallet/widgets/select_button.dart new file mode 100644 index 000000000..7ef2b7132 --- /dev/null +++ b/lib/src/screens/new_wallet/widgets/select_button.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; + +class SelectButton extends StatelessWidget { + SelectButton({ + @required this.image, + @required this.text, + @required this.color, + @required this.textColor, + @required this.onTap, + }); + + final Image image; + final String text; + final Color color; + final Color textColor; + final VoidCallback onTap; + + final selectArrowImage = Image.asset('assets/images/select_arrow.png'); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Container( + width: double.infinity, + height: 60, + padding: EdgeInsets.only(left: 30, right: 30), + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(30)), + color: color + ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + image != null + ? image + : Offstage(), + Padding( + padding: image != null + ? EdgeInsets.only(left: 15) + : EdgeInsets.only(left: 0), + child: Text( + text, + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + color: textColor + ), + ), + ) + ], + ), + selectArrowImage + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/src/screens/restore/restore_wallet_options_page.dart b/lib/src/screens/restore/restore_wallet_options_page.dart index 15662005f..061dc1f23 100644 --- a/lib/src/screens/restore/restore_wallet_options_page.dart +++ b/lib/src/screens/restore/restore_wallet_options_page.dart @@ -56,40 +56,5 @@ class RestoreWalletOptionsPage extends BasePage { ), ) ); - - - /*BaseRestoreWidget( - firstRestoreButton: RestoreButton( - onPressed: () { - seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed); - Navigator.pushNamed(context, Routes.seedLanguage); - }, - imageWidget: ImageWidget( - image: _imageSeed, - aspectRatioImage: _aspectRatioImage, - isLargeScreen: isLargeScreen), - titleColor: Palette.lightViolet, - color: Palette.lightViolet, - title: S.of(context).restore_title_from_seed, - description: S.of(context).restore_description_from_seed, - textButton: S.of(context).restore_next, - ), - secondRestoreButton: RestoreButton( - onPressed: () { - seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromKeys); - Navigator.pushNamed(context, Routes.seedLanguage); - }, - imageWidget: ImageWidget( - image: _imageKeys, - aspectRatioImage: _aspectRatioImage, - isLargeScreen: isLargeScreen), - titleColor: Palette.cakeGreen, - color: Palette.cakeGreen, - title: S.of(context).restore_title_from_keys, - description: S.of(context).restore_description_from_keys, - textButton: S.of(context).restore_next, - ), - isLargeScreen: isLargeScreen, - );*/ } } diff --git a/lib/src/screens/seed_language/seed_language_page.dart b/lib/src/screens/seed_language/seed_language_page.dart index c63cc812c..9f1ebb506 100644 --- a/lib/src/screens/seed_language/seed_language_page.dart +++ b/lib/src/screens/seed_language/seed_language_page.dart @@ -1,52 +1,99 @@ +import 'package:provider/provider.dart'; +import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; -import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart'; -import 'package:provider/provider.dart'; +import 'package:cake_wallet/src/widgets/primary_button.dart'; +import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; +import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart'; +import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart'; +import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart'; class SeedLanguage extends BasePage { - final imageSeed = Image.asset('assets/images/seedIco.png'); + @override + Color get backgroundColor => PaletteDark.historyPanel; @override - Widget body(BuildContext context) { + Widget body(BuildContext context) => SeedLanguageForm(); +} + +class SeedLanguageForm extends StatefulWidget { + @override + SeedLanguageFormState createState() => SeedLanguageFormState(); +} + +class SeedLanguageFormState extends State { + static const aspectRatioImage = 1.22; + final walletNameImage = Image.asset('assets/images/wallet_name.png'); + + @override + Widget build(BuildContext context) { final seedLanguageStore = Provider.of(context); + final List seedLocales = [ + S.current.seed_language_english, + S.current.seed_language_chinese, + S.current.seed_language_dutch, + S.current.seed_language_german, + S.current.seed_language_japanese, + S.current.seed_language_portuguese, + S.current.seed_language_russian, + S.current.seed_language_spanish + ]; + return Container( - padding: EdgeInsets.all(20.0), - child: Column( - children: [ - Expanded( - child: Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - imageSeed, - Text( + color: PaletteDark.historyPanel, + padding: EdgeInsets.only(top: 24), + child: ScrollableWithBottomSection( + contentPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24), + content: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: AspectRatio( + aspectRatio: aspectRatioImage, + child: FittedBox(child: walletNameImage, fit: BoxFit.fill)), + ), + Padding(padding: EdgeInsets.only(top: 40), + child: Text( S.of(context).seed_language_choose, textAlign: TextAlign.center, - style: TextStyle(fontSize: 16.0), + style: TextStyle( + fontSize: 16.0, + fontWeight: FontWeight.w600, + color: Colors.white + ), ), - SizedBox( - height: 20.0, + ), + Padding(padding: EdgeInsets.only(top: 24), + child: Observer( + builder: (_) => SelectButton( + image: null, + text: seedLocales[seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage)], + color: PaletteDark.menuList, + textColor: Colors.white, + onTap: () async => await showDialog( + context: context, + builder: (BuildContext context) => SeedLanguagePicker() + ) + ) ), - SeedLanguagePicker(), - ], - ), - ), - ), - PrimaryButton( - onPressed: () => - Navigator.of(context).popAndPushNamed(seedLanguageStore.currentRoute), - text: S.of(context).seed_language_next, - color: - Theme.of(context).primaryTextTheme.button.backgroundColor, - textColor: - Theme.of(context).primaryTextTheme.button.color), - ], - ), + ) + ]), + bottomSectionPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24), + bottomSection: Observer( + builder: (context) { + return PrimaryButton( + onPressed: () => + Navigator.of(context).popAndPushNamed(seedLanguageStore.currentRoute), + text: S.of(context).seed_language_next, + color: Colors.green, + textColor: Colors.white); + }, + )), ); } } diff --git a/lib/src/screens/seed_language/widgets/seed_language_picker.dart b/lib/src/screens/seed_language/widgets/seed_language_picker.dart index 6d077637d..5c934f9d5 100644 --- a/lib/src/screens/seed_language/widgets/seed_language_picker.dart +++ b/lib/src/screens/seed_language/widgets/seed_language_picker.dart @@ -1,55 +1,234 @@ +import 'dart:ui'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/palette.dart'; -import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:provider/provider.dart'; import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart'; -import 'package:cake_wallet/src/widgets/present_picker.dart'; import 'package:cake_wallet/generated/i18n.dart'; -class SeedLanguagePicker extends StatelessWidget { - List seedLocales = [ - S.current.seed_language_english, - S.current.seed_language_chinese, - S.current.seed_language_dutch, - S.current.seed_language_german, - S.current.seed_language_japanese, - S.current.seed_language_portuguese, - S.current.seed_language_russian, - S.current.seed_language_spanish - ]; +List flagImages = [ + Image.asset('assets/images/usa.png'), + Image.asset('assets/images/china.png'), + Image.asset('assets/images/holland.png'), + Image.asset('assets/images/germany.png'), + Image.asset('assets/images/japan.png'), + Image.asset('assets/images/portugal.png'), + Image.asset('assets/images/russia.png'), + Image.asset('assets/images/spain.png'), +]; + +List languageCodes = [ + 'Eng', + 'Chi', + 'Ned', + 'Ger', + 'Jap', + 'Por', + 'Rus', + 'Esp', +]; + +enum Places {topLeft, topRight, bottomLeft, bottomRight, inside} + +class SeedLanguagePicker extends StatefulWidget { + @override + SeedLanguagePickerState createState() => SeedLanguagePickerState(); +} + +class SeedLanguagePickerState extends State { @override Widget build(BuildContext context) { final seedLanguageStore = Provider.of(context); - return Observer( - builder: (_) => InkWell( - onTap: () => _setSeedLanguage(context), + return GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Container( + color: Colors.transparent, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0), child: Container( - padding: EdgeInsets.all(8.0), - //width: double.infinity, - decoration: BoxDecoration( - border: Border.all( - color: Theme.of(context).dividerTheme.color - ), - borderRadius: BorderRadius.circular(8.0) - ), - child: Text(seedLocales[seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage)], - textAlign: TextAlign.center, - style: TextStyle(fontSize: 16.0, color: Palette.lightBlue), + decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + padding: EdgeInsets.only(left: 24, right: 24), + child: Text( + S.of(context).seed_choose, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + decoration: TextDecoration.none, + color: Colors.white + ), + ), + ), + Padding( + padding: EdgeInsets.only(top: 24), + child: GestureDetector( + onTap: () => null, + child: Container( + height: 300, + width: 300, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(14)), + color: PaletteDark.walletCardSubAddressField + ), + child: GridView.count( + shrinkWrap: true, + crossAxisCount: 3, + childAspectRatio: 1, + physics: const NeverScrollableScrollPhysics(), + crossAxisSpacing: 1, + mainAxisSpacing: 1, + children: List.generate(9, (index) { + + if (index == 8) { + + return gridTile( + isCurrent: false, + place: Places.bottomRight, + image: null, + text: '', + onTap: null); + + } else { + + final code = languageCodes[index]; + final flag = flagImages[index]; + final isCurrent = index == seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage); + + if (index == 0) { + return gridTile( + isCurrent: isCurrent, + place: Places.topLeft, + image: flag, + text: code, + onTap: () { + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]); + Navigator.of(context).pop(); + } + ); + } + + if (index == 2) { + return gridTile( + isCurrent: isCurrent, + place: Places.topRight, + image: flag, + text: code, + onTap: () { + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]); + Navigator.of(context).pop(); + } + ); + } + + if (index == 6) { + return gridTile( + isCurrent: isCurrent, + place: Places.bottomLeft, + image: flag, + text: code, + onTap: () { + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]); + Navigator.of(context).pop(); + } + ); + } + + return gridTile( + isCurrent: isCurrent, + place: Places.inside, + image: flag, + text: code, + onTap: () { + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]); + Navigator.of(context).pop(); + } + ); + } + }), + ), + ), + ), + ) + ], + ), ), ), - )); + ), + ), + ); } - Future _setSeedLanguage(BuildContext context) async { - final seedLanguageStore = Provider.of(context); - String selectedSeedLanguage = - await presentPicker(context, seedLocales); + Widget gridTile({ + @required bool isCurrent, + @required Places place, + @required Image image, + @required String text, + @required VoidCallback onTap}) { - if (selectedSeedLanguage != null) { - selectedSeedLanguage = seedLanguages[seedLocales.indexOf(selectedSeedLanguage)]; - seedLanguageStore.setSelectedSeedLanguage(selectedSeedLanguage); + BorderRadius borderRadius; + final color = isCurrent ? PaletteDark.historyPanel : PaletteDark.menuList; + final textColor = isCurrent ? Colors.blue : Colors.white; + + switch (place) { + case Places.topLeft: + borderRadius = BorderRadius.only(topLeft: Radius.circular(14)); + break; + case Places.topRight: + borderRadius = BorderRadius.only(topRight: Radius.circular(14)); + break; + case Places.bottomLeft: + borderRadius = BorderRadius.only(bottomLeft: Radius.circular(14)); + break; + case Places.bottomRight: + borderRadius = BorderRadius.only(bottomRight: Radius.circular(14)); + break; + case Places.inside: + borderRadius = BorderRadius.all(Radius.circular(0)); + break; } + + return GestureDetector( + onTap: onTap, + child: Container( + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + borderRadius: borderRadius, + color: color + ), + child: Center( + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + image != null + ? image + : Offstage(), + Padding( + padding: image != null + ? EdgeInsets.only(left: 10) + : EdgeInsets.only(left: 0), + child: Text( + text, + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + decoration: TextDecoration.none, + color: textColor + ), + ), + ) + ], + ), + ), + ) + ); } } \ No newline at end of file diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 8053145a7..3b03e14ef 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -159,7 +159,8 @@ "copy" : "Kopieren", - "seed_language_choose" : "Bitte wählen Sie die Ausgangssprache", + "seed_language_choose" : "Bitte wählen Sie die Ausgangssprache:", + "seed_choose" : "Wählen Sie die Ausgangssprache", "seed_language_next" : "Nächster", "seed_language_english" : "Englisch", "seed_language_chinese" : "Chinesisch", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index eb55c5960..3f3fc7906 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -159,7 +159,8 @@ "copy" : "Copy", - "seed_language_choose" : "Please choose seed language", + "seed_language_choose" : "Please choose seed language:", + "seed_choose" : "Choose seed language", "seed_language_next" : "Next", "seed_language_english" : "English", "seed_language_chinese" : "Chinese", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 3307a0471..2481c5fa9 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -159,7 +159,8 @@ "copy" : "Dupdo", - "seed_language_choose" : "Por favor elija el idioma semilla", + "seed_language_choose" : "Por favor elija el idioma semilla:", + "seed_choose" : "Elige el idioma semilla", "seed_language_next" : "Próximo", "seed_language_english" : "Inglés", "seed_language_chinese" : "Chino", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index e98446238..04ffd90ab 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -159,7 +159,8 @@ "copy" : "प्रतिलिपि", - "seed_language_choose" : "कृपया बीज भाषा चुनें", + "seed_language_choose" : "कृपया बीज भाषा चुनें:", + "seed_choose" : "बीज भाषा चुनें", "seed_language_next" : "आगामी", "seed_language_english" : "अंग्रेज़ी", "seed_language_chinese" : "चीनी", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index a6f4141f3..4cd38f727 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -159,7 +159,8 @@ "copy" : "コピー", - "seed_language_choose" : "シード言語を選択してください", + "seed_language_choose" : "シード言語を選択してください:", + "seed_choose" : "シード言語を選択してください", "seed_language_next" : "次", "seed_language_english" : "英語", "seed_language_chinese" : "中国語", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 09f6e5a7e..3b1d2abb7 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -159,7 +159,8 @@ "copy" : "부", - "seed_language_choose" : "종자 언어를 선택하십시오", + "seed_language_choose" : "종자 언어를 선택하십시오:", + "seed_choose" : "시드 언어를 선택하십시오", "seed_language_next" : "다음 것", "seed_language_english" : "영어", "seed_language_chinese" : "중국말", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index d46d04caf..39f588ec9 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -159,7 +159,8 @@ "copy" : "Kopiëren", - "seed_language_choose" : "Kies een starttaal", + "seed_language_choose" : "Kies een starttaal:", + "seed_choose" : "Kies een starttaal", "seed_language_next" : "Volgende", "seed_language_english" : "Engels", "seed_language_chinese" : "Chinese", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 0bd026a5c..e7573c595 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -159,7 +159,8 @@ "copy" : "Kopiuj", - "seed_language_choose" : "Proszę wybrać język początkowy", + "seed_language_choose" : "Proszę wybrać język początkowy:", + "seed_choose" : "Wybierz język początkowy", "seed_language_next" : "Kolejny", "seed_language_english" : "Angielski", "seed_language_chinese" : "Chiński", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index e309fda53..a7db17289 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -159,7 +159,8 @@ "copy" : "Copiar", - "seed_language_choose" : "Por favor, escolha o idioma da semente", + "seed_language_choose" : "Por favor, escolha o idioma da semente:", + "seed_choose" : "Escolha o idioma da semente", "seed_language_next" : "Próximo", "seed_language_english" : "Inglesa", "seed_language_chinese" : "Chinesa", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 95f25bf50..e7536a771 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -159,7 +159,8 @@ "copy" : "Скопировать", - "seed_language_choose" : "Пожалуйста, выберите язык мнемонической фразы", + "seed_language_choose" : "Пожалуйста, выберите язык мнемонической фразы:", + "seed_choose" : "Выберите язык мнемонической фразы", "seed_language_next" : "Продолжить", "seed_language_english" : "Английский", "seed_language_chinese" : "Китайский", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index f34a61d94..ebf9d64fe 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -159,7 +159,8 @@ "copy" : "Скопіювати", - "seed_language_choose" : "Будь ласка, виберіть мову мнемонічної фрази", + "seed_language_choose" : "Будь ласка, виберіть мову мнемонічної фрази:", + "seed_choose" : "Виберіть мову мнемонічної фрази", "seed_language_next" : "Продовжити", "seed_language_english" : "Англійська", "seed_language_chinese" : "Китайська", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index db2edaf57..bb996f60f 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -159,7 +159,8 @@ "copy" : "复制", - "seed_language_choose" : "請選擇種子語言", + "seed_language_choose" : "請選擇種子語言:", + "seed_choose" : "選擇種子語言", "seed_language_next" : "下一个", "seed_language_english" : "英語", "seed_language_chinese" : "中文",