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" : "发送",