Adding seed languages for France and Italy for Monero New-Wallet and Monero Restore-Wallet

RafiaChy committed Jan 17, 2022 at 21:46 UTC f3eca2be1cb5de3999c546020bbca8b10a81fb66
21 files changed +121 -87
assets/images/france.png
Binary files /dev/null and b/assets/images/france.png differ
assets/images/italy.png
Binary files /dev/null and b/assets/images/italy.png differ
cw_monero/lib/pending_monero_transaction.dart
+1
@@ -3,6 +3,7 @@ import 'package:cw_monero/api/transaction_history.dart'
3 as monero_transaction_history;
4 import 'package:cw_core/crypto_currency.dart';
5 import 'package:cake_wallet/core/amount_converter.dart';
6 +
7 import 'package:cw_core/pending_transaction.dart';
8
9 class DoubleSpendException implements Exception {
lib/src/screens/new_wallet/new_wallet_page.dart
+9 -5
@@ -24,15 +24,17 @@ class NewWalletPage extends BasePage {
24 final walletNameImage = Image.asset('assets/images/wallet_name.png');
25
26 final walletNameLightImage =
27 - Image.asset('assets/images/wallet_name_light.png');
27 + Image.asset('assets/images/wallet_name_light.png');
28
29 @override
30 String get title => S.current.new_wallet;
31
32 @override
33 - Widget body(BuildContext context) => WalletNameForm(_walletNewVM,
33 + Widget body(BuildContext context) => WalletNameForm(
34 + _walletNewVM,
35 currentTheme.type == ThemeType.dark
35 - ? walletNameImage : walletNameLightImage);
36 + ? walletNameImage
37 + : walletNameLightImage);
38 }
39
40 class WalletNameForm extends StatefulWidget {
@@ -60,7 +62,8 @@ class _WalletNameFormState extends State<WalletNameForm> {
62 _stateReaction ??=
63 reaction((_) => _walletNewVM.state, (ExecutionState state) {
64 if (state is ExecutedSuccessfullyState) {
63 - Navigator.of(context).pushNamed(Routes.preSeed, arguments: _walletNewVM.type);
65 + Navigator.of(context)
66 + .pushNamed(Routes.preSeed, arguments: _walletNewVM.type);
67 }
68
69 if (state is FailureState) {
@@ -92,7 +95,8 @@ class _WalletNameFormState extends State<WalletNameForm> {
95 padding: EdgeInsets.only(left: 12, right: 12),
96 child: AspectRatio(
97 aspectRatio: aspectRatioImage,
95 - child: FittedBox(child: widget.walletImage, fit: BoxFit.fill)),
98 + child:
99 + FittedBox(child: widget.walletImage, fit: BoxFit.fill)),
100 ),
101 Padding(
102 padding: EdgeInsets.only(top: 24),
lib/src/screens/seed_language/widgets/seed_language_picker.dart
+77 -79
@@ -15,6 +15,8 @@ List<Image> flagImages = [
15 Image.asset('assets/images/portugal.png'),
16 Image.asset('assets/images/russia.png'),
17 Image.asset('assets/images/spain.png'),
18 + Image.asset('assets/images/france.png'),
19 + Image.asset('assets/images/italy.png'),
20 ];
21
22 const List<String> languageCodes = [
@@ -26,6 +28,8 @@ const List<String> languageCodes = [
28 'Por',
29 'Rus',
30 'Esp',
31 + 'Fre',
32 + 'Ita',
33 ];
34
35 const defaultSeedLanguage = 'English';
@@ -38,7 +42,9 @@ const List<String> seedLanguages = [
42 'Japanese',
43 'Portuguese',
44 'Russian',
41 - 'Spanish'
45 + 'Spanish',
46 + 'French',
47 + 'Italian',
48 ];
49
50 enum Places { topLeft, topRight, bottomLeft, bottomRight, inside }
@@ -64,86 +70,80 @@ class SeedLanguagePickerState extends State<SeedLanguagePicker> {
70 Widget build(BuildContext context) {
71 return AlertBackground(
72 child: Stack(
67 - alignment: Alignment.center,
73 + alignment: Alignment.center,
74 + children: <Widget>[
75 + Column(
76 + mainAxisSize: MainAxisSize.min,
77 children: <Widget>[
69 - Column(
70 - mainAxisSize: MainAxisSize.min,
71 - children: <Widget>[
72 - Container(
73 - padding: EdgeInsets.only(left: 24, right: 24),
74 - child: Text(
75 - S.of(context).seed_choose,
76 - textAlign: TextAlign.center,
77 - style: TextStyle(
78 - fontSize: 18,
79 - fontWeight: FontWeight.bold,
80 - fontFamily: 'Lato',
81 - decoration: TextDecoration.none,
82 - color: Colors.white
83 - ),
78 + Container(
79 + padding: EdgeInsets.only(left: 24, right: 24),
80 + child: Text(
81 + S.of(context).seed_choose,
82 + textAlign: TextAlign.center,
83 + style: TextStyle(
84 + fontSize: 18,
85 + fontWeight: FontWeight.bold,
86 + fontFamily: 'Lato',
87 + decoration: TextDecoration.none,
88 + color: Colors.white),
89 + ),
90 + ),
91 + Padding(
92 + padding: EdgeInsets.only(top: 24),
93 + child: ClipRRect(
94 + borderRadius: BorderRadius.all(Radius.circular(14)),
95 + child: Container(
96 + height: 300,
97 + width: 300,
98 + color:
99 + Theme.of(context).accentTextTheme.title.backgroundColor,
100 + child: GridView.count(
101 + padding: EdgeInsets.all(0),
102 + shrinkWrap: true,
103 + crossAxisCount: 3,
104 + childAspectRatio: 4 / 3,
105 + physics: const NeverScrollableScrollPhysics(),
106 + crossAxisSpacing: 1,
107 + mainAxisSpacing: 1,
108 + children: List.generate(11, (index) {
109 + if (index == 10) {
110 + return gridTile(
111 + isCurrent: false,
112 + image: null,
113 + text: '',
114 + onTap: null);
115 + }
116 +
117 + final code = languageCodes[index];
118 + final flag = flagImages[index];
119 + final isCurrent =
120 + index == seedLanguages.indexOf(selected);
121 +
122 + return gridTile(
123 + isCurrent: isCurrent,
124 + image: flag,
125 + text: code,
126 + onTap: () {
127 + selected = seedLanguages[index];
128 + Navigator.of(context).pop(selected);
129 + });
130 + }),
131 ),
132 ),
86 - Padding(
87 - padding: EdgeInsets.only(top: 24),
88 - child: ClipRRect(
89 - borderRadius: BorderRadius.all(Radius.circular(14)),
90 - child: Container(
91 - height: 300,
92 - width: 300,
93 - color: Theme.of(context).accentTextTheme.title.backgroundColor,
94 - child: GridView.count(
95 - padding: EdgeInsets.all(0),
96 - shrinkWrap: true,
97 - crossAxisCount: 3,
98 - childAspectRatio: 1,
99 - physics: const NeverScrollableScrollPhysics(),
100 - crossAxisSpacing: 1,
101 - mainAxisSpacing: 1,
102 - children: List.generate(9, (index) {
103 -
104 - if (index == 8) {
105 -
106 - return gridTile(
107 - isCurrent: false,
108 - image: null,
109 - text: '',
110 - onTap: null);
111 -
112 - }
113 -
114 - final code = languageCodes[index];
115 - final flag = flagImages[index];
116 - final isCurrent =
117 - index == seedLanguages.indexOf(selected);
118 -
119 - return gridTile(
120 - isCurrent: isCurrent,
121 - image: flag,
122 - text: code,
123 - onTap: () {
124 - selected = seedLanguages[index];
125 - Navigator.of(context).pop(selected);
126 - }
127 - );
128 - }),
129 - ),
130 - ),
131 - ),
132 - )
133 - ],
134 - ),
135 - AlertCloseButton(image: closeButton)
133 + ),
134 + )
135 ],
137 - )
138 - );
136 + ),
137 + AlertCloseButton(image: closeButton)
138 + ],
139 + ));
140 }
141
141 - Widget gridTile({
142 - @required bool isCurrent,
143 - @required Image image,
144 - @required String text,
145 - @required VoidCallback onTap}) {
146 -
142 + Widget gridTile(
143 + {@required bool isCurrent,
144 + @required Image image,
145 + @required String text,
146 + @required VoidCallback onTap}) {
147 final color = isCurrent
148 ? Theme.of(context).textTheme.body2.color
149 : Theme.of(context).accentTextTheme.title.color;
@@ -174,14 +174,12 @@ class SeedLanguagePickerState extends State<SeedLanguagePicker> {
174 fontWeight: FontWeight.w600,
175 fontFamily: 'Lato',
176 decoration: TextDecoration.none,
177 - color: textColor
178 - ),
177 + color: textColor),
178 ),
179 )
180 ],
181 ),
182 ),
184 - )
185 - );
183 + ));
184 }
185 }
lib/src/widgets/seed_language_selector.dart
+3 -1
@@ -25,7 +25,9 @@ class SeedLanguageSelectorState extends State<SeedLanguageSelector> {
25 S.current.seed_language_japanese,
26 S.current.seed_language_portuguese,
27 S.current.seed_language_russian,
28 - S.current.seed_language_spanish
28 + S.current.seed_language_spanish,
29 + S.current.seed_language_french,
30 + S.current.seed_language_italian,
31 ];
32 String selected;
33 final _pickerKey = GlobalKey<SeedLanguagePickerState>();
lib/utils/language_list.dart
+3 -1
@@ -7,4 +7,6 @@ class LanguageList {
7 static const portuguese = 'Portuguese';
8 static const russian = 'Russian';
9 static const spanish = 'Spanish';
10 -}
\ No newline at end of file
10 + // static const french = 'French';
11 + // static const italian = 'Italian';
12 +}
res/values/strings_de.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Portugiesisch",
196 "seed_language_russian" : "Russisch",
197 "seed_language_spanish" : "Spanisch",
198 + "seed_language_french": "Französisch",
199 + "seed_language_italian": "Italiana/Italiano",
200
201
202 "send_title" : "Senden",
res/values/strings_en.arb
+2
@@ -196,6 +196,8 @@
196 "seed_language_portuguese" : "Portuguese",
197 "seed_language_russian" : "Russian",
198 "seed_language_spanish" : "Spanish",
199 + "seed_language_french": "French",
200 + "seed_language_italian": "Italian",
201
202
203 "send_title" : "Send",
res/values/strings_es.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Portugués",
196 "seed_language_russian" : "Ruso",
197 "seed_language_spanish" : "Español",
198 + "seed_language_french": "Francesa/Francés",
199 + "seed_language_italian": "Italiana/Italiano",
200
201
202 "send_title" : "Enviar",
res/values/strings_hi.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "पुर्तगाली",
196 "seed_language_russian" : "रूसी",
197 "seed_language_spanish" : "स्पेनिश",
198 + "seed_language_french": "फ्रेंच",
199 + "seed_language_italian": "इतालवी",
200
201
202 "send_title" : "संदेश",
res/values/strings_hr.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Portugalski",
196 "seed_language_russian" : "Ruski",
197 "seed_language_spanish" : "Španjolski",
198 + "seed_language_french": "Francuski",
199 + "seed_language_italian": "Talijanski",
200
201
202 "send_title" : "Pošalji",
res/values/strings_it.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Portoghese",
196 "seed_language_russian" : "Russo",
197 "seed_language_spanish" : "Spagnolo",
198 + "seed_language_french": "Francese",
199 + "seed_language_italian": "Italiana/Italiano",
200
201
202 "send_title" : "Invia",
res/values/strings_ja.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "ポルトガル語",
196 "seed_language_russian" : "ロシア",
197 "seed_language_spanish" : "スペイン語",
198 + "seed_language_french": "フランス語",
199 + "seed_language_italian": "イタリア語",
200
201
202 "send_title" : "を送信",
res/values/strings_ko.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "포르투갈 인",
196 "seed_language_russian" : "러시아인",
197 "seed_language_spanish" : "스페인의",
198 + "seed_language_french": "프랑스 국민",
199 + "seed_language_italian": "이탈리아 사람",
200
201
202 "send_title" : "보내다",
res/values/strings_nl.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Portugees",
196 "seed_language_russian" : "Russisch",
197 "seed_language_spanish" : "Spaans",
198 + "seed_language_french": "Frans",
199 + "seed_language_italian": "Italiaans",
200
201
202 "send_title" : "Stuur",
res/values/strings_pl.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Portugalski",
196 "seed_language_russian" : "Rosyjski",
197 "seed_language_spanish" : "Hiszpański",
198 + "seed_language_french": "Francuski",
199 + "seed_language_italian": "Włoski",
200
201
202 "send_title" : "Wyślij",
res/values/strings_pt.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Português",
196 "seed_language_russian" : "Russa",
197 "seed_language_spanish" : "Espanhola",
198 + "seed_language_french": "Francesa/Francês",
199 + "seed_language_italian": "Italiana/Italiano",
200
201
202 "send_title" : "Enviar",
res/values/strings_ru.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "Португальский",
196 "seed_language_russian" : "Русский",
197 "seed_language_spanish" : "Испанский",
198 + "seed_language_french": "Французский",
199 + "seed_language_italian": "итальянский",
200
201
202 "send_title" : "Отправить",
res/values/strings_uk.arb
+2 -1
@@ -195,7 +195,8 @@
195 "seed_language_portuguese" : "Португальська",
196 "seed_language_russian" : "Російська",
197 "seed_language_spanish" : "Іспанська",
198 -
198 + "seed_language_french": "французький",
199 + "seed_language_italian": "італійська",
200
201 "send_title" : "Відправити",
202 "send_your_wallet" : "Ваш гаманець",
res/values/strings_zh.arb
+2
@@ -195,6 +195,8 @@
195 "seed_language_portuguese" : "葡萄牙文",
196 "seed_language_russian" : "俄文",
197 "seed_language_spanish" : "西班牙文",
198 + "seed_language_french": "法语",
199 + "seed_language_italian": "意大利语",
200
201
202 "send_title" : "发送",