From 8908813d5684e4f6dc21bdc6c979f32ec3e5c549 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Thu, 7 Dec 2023 11:20:15 +0100
Subject: [PATCH] Add username in settings page

---
 android/gradle.properties                     |  4 +-
 assets/translations/en.json                   |  1 +
 assets/translations/fr.json                   |  1 +
 .../metadata/android/en-US/changelogs/47.txt  |  1 +
 .../metadata/android/fr-FR/changelogs/47.txt  |  1 +
 lib/ui/screens/settings.dart                  | 22 +++++-----
 lib/ui/widgets/settings_form.dart             | 44 +++++++++++--------
 pubspec.yaml                                  |  2 +-
 8 files changed, 44 insertions(+), 32 deletions(-)
 create mode 100644 fastlane/metadata/android/en-US/changelogs/47.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/47.txt

diff --git a/android/gradle.properties b/android/gradle.properties
index 7d3ad5f..2c9d43c 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.46
-app.versionCode=46
+app.versionName=0.0.47
+app.versionCode=47
diff --git a/assets/translations/en.json b/assets/translations/en.json
index 39f4360..4ff99c8 100644
--- a/assets/translations/en.json
+++ b/assets/translations/en.json
@@ -26,6 +26,7 @@
   "top_artists_title": "Top artists ({daysCount} days)",
 
   "settings_title": "Settings",
+  "settings_title_global": "Global:",
   "settings_label_username": "Username: ",
   "settings_label_security_token": "Security token: ",
   "settings_title_days_count": "Days counts: ",
diff --git a/assets/translations/fr.json b/assets/translations/fr.json
index a6958bd..bbf6d69 100644
--- a/assets/translations/fr.json
+++ b/assets/translations/fr.json
@@ -26,6 +26,7 @@
   "top_artists_title": "Top artistes ({daysCount} jours)",
 
   "settings_title": "Paramètres",
+  "settings_title_global": "Généraux :",
   "settings_label_username": "Utilisateur : ",
   "settings_label_security_token": "Jeton de sécurité : ",
   "settings_title_days_count": "Nombre de jours : ",
diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt
new file mode 100644
index 0000000..6c2d828
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/47.txt
@@ -0,0 +1 @@
+Add "username" parameter.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/47.txt b/fastlane/metadata/android/fr-FR/changelogs/47.txt
new file mode 100644
index 0000000..8c8e28b
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/47.txt
@@ -0,0 +1 @@
+Ajout du paramètre "nom d'utilisateur".
diff --git a/lib/ui/screens/settings.dart b/lib/ui/screens/settings.dart
index f9eb4d6..79851e7 100644
--- a/lib/ui/screens/settings.dart
+++ b/lib/ui/screens/settings.dart
@@ -9,17 +9,17 @@ class ScreenSettings extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
-      crossAxisAlignment: CrossAxisAlignment.start,
-      mainAxisSize: MainAxisSize.max,
-      children: <Widget>[
-        SizedBox(height: 8),
-        AppTitle1(text: tr('settings_title')),
-        SizedBox(height: 8),
-        AppTitle2(text: tr('settings_title_days_count')),
-        SettingsForm(),
-      ],
+    return Material(
+      color: Theme.of(context).colorScheme.background,
+      child: ListView(
+        padding: const EdgeInsets.symmetric(horizontal: 4),
+        physics: const BouncingScrollPhysics(),
+        children: <Widget>[
+          SizedBox(height: 8),
+          AppTitle1(text: tr('settings_title')),
+          SettingsForm(),
+        ],
+      ),
     );
   }
 }
diff --git a/lib/ui/widgets/settings_form.dart b/lib/ui/widgets/settings_form.dart
index 4c981f2..aad22f5 100644
--- a/lib/ui/widgets/settings_form.dart
+++ b/lib/ui/widgets/settings_form.dart
@@ -1,9 +1,11 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:unicons/unicons.dart';
 
 import 'package:scrobbles/config/default_settings.dart';
 import 'package:scrobbles/cubit/settings_cubit.dart';
+import 'package:scrobbles/ui/widgets/app_titles.dart';
 
 class SettingsForm extends StatefulWidget {
   const SettingsForm({super.key});
@@ -81,25 +83,31 @@ class _SettingsFormState extends State<SettingsForm> {
       crossAxisAlignment: CrossAxisAlignment.start,
       mainAxisSize: MainAxisSize.max,
       children: <Widget>[
+        SizedBox(height: 8),
+        AppTitle2(text: tr('settings_title_global')),
+
         // Username
-        // Text('settings_label_username').tr(),
-        // TextFormField(
-        //   controller: usernameController,
-        //   decoration: InputDecoration(
-        //     border: UnderlineInputBorder(),
-        //   ),
-        // ),
-        // SizedBox(height: 16),
-
-        // Security token
-        // Text('settings_label_security_token').tr(),
-        // TextFormField(
-        //   controller: securityTokenController,
-        //   decoration: InputDecoration(
-        //     border: UnderlineInputBorder(),
-        //   ),
-        // ),
-        // SizedBox(height: 20),
+        Text('settings_label_username').tr(),
+        TextFormField(
+          controller: usernameController,
+          decoration: InputDecoration(
+            border: UnderlineInputBorder(),
+            suffixIcon: ElevatedButton(
+              style: ElevatedButton.styleFrom(
+                shape: new RoundedRectangleBorder(
+                  borderRadius: new BorderRadius.circular(6.0),
+                ),
+              ),
+              child: Icon(UniconsLine.save),
+              onPressed: () {
+                saveSettings();
+              },
+            ),
+          ),
+        ),
+
+        SizedBox(height: 8),
+        AppTitle2(text: tr('settings_title_days_count')),
 
         // Statistics (recent)
         Row(
diff --git a/pubspec.yaml b/pubspec.yaml
index 52dd805..6235665 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
 
 publish_to: 'none'
 
-version: 0.0.46+46
+version: 0.0.47+47
 
 environment:
   sdk: '^3.0.0'
-- 
GitLab