diff --git a/android/gradle.properties b/android/gradle.properties index 4d8dcd2635bb8701e212029096d53cf5dc060e45..62205f40150696555e74bed7fbf2f63d6f99f49b 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.40 -app.versionCode=40 +app.versionName=0.0.41 +app.versionCode=41 diff --git a/assets/translations/en.json b/assets/translations/en.json index d9a54c42bc93dabb289af72c895dfa06f6cfffdd..3c3161ddd6fdce8e232a174f94291efbdcacd95f 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -27,9 +27,8 @@ "settings_title": "Settings", "settings_label_username": "Username: ", "settings_label_security_token": "Security token: ", - "settings_label_counts_by_day_days_count": "Counts by day: ", - "settings_label_counts_by_hour_days_count": "Counts by hour: ", "settings_label_discoveries_days_count": "Discoveries: ", + "settings_label_distribution_days_count": "Distributions : ", "settings_label_statistics_recent_days_count": "Recent statistics: ", "settings_label_timeline_days_count": "Timeline: ", "settings_label_top_artists_days_count": "Top Artists: ", diff --git a/assets/translations/fr.json b/assets/translations/fr.json index c2c257dd8b3ef1c2cba8cde4225194b9509d5449..7870ef831dea5485266e868ecb1552f28bf71c89 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -27,9 +27,8 @@ "settings_title": "Paramètres", "settings_label_username": "Utilisateur : ", "settings_label_security_token": "Jeton de sécurité : ", - "settings_label_counts_by_day_days_count": "Répartition par heure : ", - "settings_label_counts_by_hour_days_count": "Répartition par jour : ", "settings_label_discoveries_days_count": "Découvertes : ", + "settings_label_distribution_days_count": "Répartitions : ", "settings_label_statistics_recent_days_count": "Statistiques récentes : ", "settings_label_timeline_days_count": "Timeline : ", "settings_label_top_artists_days_count": "Top Artistes : ", diff --git a/fastlane/metadata/android/en-US/changelogs/41.txt b/fastlane/metadata/android/en-US/changelogs/41.txt new file mode 100644 index 0000000000000000000000000000000000000000..3b52d6529c53dcc852e14f2284e0c767e756cf2f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/41.txt @@ -0,0 +1 @@ +Merge settings for distribution charts. diff --git a/fastlane/metadata/android/fr-FR/changelogs/41.txt b/fastlane/metadata/android/fr-FR/changelogs/41.txt new file mode 100644 index 0000000000000000000000000000000000000000..3afab5bbc82e28ca16e023e0634eedd777251ff4 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/41.txt @@ -0,0 +1 @@ +Fusion des paramètres pour les graphiques de répartition. diff --git a/lib/config/default_settings.dart b/lib/config/default_settings.dart index c90ec49030da99d4cb50c1a871ed3725c02ab49f..e56460587678ed53759c14cc68e3a8ebd899e3b3 100644 --- a/lib/config/default_settings.dart +++ b/lib/config/default_settings.dart @@ -7,9 +7,8 @@ class DefaultSettings { 60, 90, ]; - static const int defaultCountsByDayDaysCount = 21; - static const int defaultCountsByHourDaysCount = 21; static const int defaultDiscoveriesDaysCount = 14; + static const int defaultDistributionDaysCount = 21; static const int defaultStatisticsRecentDaysCount = 21; static const int defaultTimelineDaysCount = 14; static const int defaultTopArtistsDaysCount = 14; diff --git a/lib/cubit/settings_cubit.dart b/lib/cubit/settings_cubit.dart index e471dd2719594910f3e44e9f23c727a37c2e8c61..5b4374aa2b8ea5ec3450d8409b7d2ee2eb9b0fec 100644 --- a/lib/cubit/settings_cubit.dart +++ b/lib/cubit/settings_cubit.dart @@ -17,18 +17,14 @@ class SettingsCubit extends HydratedCubit<SettingsState> { return state.securityToken ?? ''; } - int getCountsByDayDaysCount() { - return state.countsByDayDaysCount ?? DefaultSettings.defaultCountsByDayDaysCount; - } - - int getCountsByHourDaysCount() { - return state.countsByHourDaysCount ?? DefaultSettings.defaultCountsByHourDaysCount; - } - int getDiscoveriesDaysCount() { return state.discoveriesDaysCount ?? DefaultSettings.defaultDiscoveriesDaysCount; } + int getDistributionDaysCount() { + return state.distributionDaysCount ?? DefaultSettings.defaultDistributionDaysCount; + } + int getStatisticsRecentDaysCount() { return state.statisticsRecentDaysCount ?? DefaultSettings.defaultStatisticsRecentDaysCount; } @@ -44,9 +40,8 @@ class SettingsCubit extends HydratedCubit<SettingsState> { void setValues({ String? username, String? securityToken, - int? countsByDayDaysCount, - int? countsByHourDaysCount, int? discoveriesDaysCount, + int? distributionDaysCount, int? statisticsRecentDaysCount, int? timelineDaysCount, int? topArtistsDaysCount, @@ -54,9 +49,8 @@ class SettingsCubit extends HydratedCubit<SettingsState> { emit(SettingsState( username: username ?? state.username, securityToken: securityToken ?? state.securityToken, - countsByDayDaysCount: countsByDayDaysCount ?? state.countsByDayDaysCount, - countsByHourDaysCount: countsByHourDaysCount ?? state.countsByHourDaysCount, discoveriesDaysCount: discoveriesDaysCount ?? state.discoveriesDaysCount, + distributionDaysCount: distributionDaysCount ?? state.distributionDaysCount, statisticsRecentDaysCount: statisticsRecentDaysCount ?? state.statisticsRecentDaysCount, timelineDaysCount: timelineDaysCount ?? state.timelineDaysCount, topArtistsDaysCount: topArtistsDaysCount ?? state.topArtistsDaysCount, @@ -67,9 +61,8 @@ class SettingsCubit extends HydratedCubit<SettingsState> { SettingsState? fromJson(Map<String, dynamic> json) { String username = json['username'] as String; String securityToken = json['securityToken'] as String; - int countsByDayDaysCount = json['countsByDayDaysCount'] as int; - int countsByHourDaysCount = json['countsByHourDaysCount'] as int; int discoveriesDaysCount = json['discoveriesDaysCount'] as int; + int distributionDaysCount = json['distributionDaysCount'] as int; int statisticsRecentDaysCount = json['statisticsRecentDaysCount'] as int; int timelineDaysCount = json['timelineDaysCount'] as int; int topArtistsDaysCount = json['topArtistsDaysCount'] as int; @@ -77,9 +70,8 @@ class SettingsCubit extends HydratedCubit<SettingsState> { return SettingsState( username: username, securityToken: securityToken, - countsByDayDaysCount: countsByDayDaysCount, - countsByHourDaysCount: countsByHourDaysCount, discoveriesDaysCount: discoveriesDaysCount, + distributionDaysCount: distributionDaysCount, statisticsRecentDaysCount: statisticsRecentDaysCount, timelineDaysCount: timelineDaysCount, topArtistsDaysCount: topArtistsDaysCount, @@ -91,12 +83,10 @@ class SettingsCubit extends HydratedCubit<SettingsState> { return <String, dynamic>{ 'username': state.username ?? '', 'securityToken': state.securityToken ?? '', - 'countsByDayDaysCount': - state.countsByDayDaysCount ?? DefaultSettings.defaultCountsByDayDaysCount, - 'countsByHourDaysCount': - state.countsByHourDaysCount ?? DefaultSettings.defaultCountsByHourDaysCount, 'discoveriesDaysCount': state.discoveriesDaysCount ?? DefaultSettings.defaultDiscoveriesDaysCount, + 'distributionDaysCount': + state.distributionDaysCount ?? DefaultSettings.defaultDistributionDaysCount, 'statisticsRecentDaysCount': state.statisticsRecentDaysCount ?? DefaultSettings.defaultStatisticsRecentDaysCount, 'timelineDaysCount': state.timelineDaysCount ?? DefaultSettings.defaultTimelineDaysCount, diff --git a/lib/cubit/settings_state.dart b/lib/cubit/settings_state.dart index 848b348dbdbef27575eab768dcb31518b3b6b3ce..46d965ebf1aa732b6bc6dff235c0451a8f95ba00 100644 --- a/lib/cubit/settings_state.dart +++ b/lib/cubit/settings_state.dart @@ -5,9 +5,8 @@ class SettingsState extends Equatable { const SettingsState({ this.username, this.securityToken, - this.countsByDayDaysCount, - this.countsByHourDaysCount, this.discoveriesDaysCount, + this.distributionDaysCount, this.statisticsRecentDaysCount, this.timelineDaysCount, this.topArtistsDaysCount, @@ -15,9 +14,8 @@ class SettingsState extends Equatable { final String? username; final String? securityToken; - final int? countsByDayDaysCount; - final int? countsByHourDaysCount; final int? discoveriesDaysCount; + final int? distributionDaysCount; final int? statisticsRecentDaysCount; final int? timelineDaysCount; final int? topArtistsDaysCount; @@ -26,9 +24,8 @@ class SettingsState extends Equatable { List<dynamic> get props => <dynamic>[ username, securityToken, - countsByDayDaysCount, - countsByHourDaysCount, discoveriesDaysCount, + distributionDaysCount, statisticsRecentDaysCount, timelineDaysCount, topArtistsDaysCount, @@ -37,9 +34,8 @@ class SettingsState extends Equatable { Map<String, dynamic> get values => <String, dynamic>{ 'username': username, 'securityToken': securityToken, - 'countsByDayDaysCount': countsByDayDaysCount, - 'countsByHourDaysCount': countsByHourDaysCount, 'discoveriesDaysCount': discoveriesDaysCount, + 'distributionDaysCount': distributionDaysCount, 'statisticsRecentDaysCount': statisticsRecentDaysCount, 'timelineDaysCount': timelineDaysCount, 'topArtistsDaysCount': topArtistsDaysCount, diff --git a/lib/ui/widgets/cards/counts_by_day.dart b/lib/ui/widgets/cards/counts_by_day.dart index 5db1b6962cca0ac87ea21ecb573d3908107bd5ea..f31a516d5fa4f978f7cb6fedd832149f4d5b63f0 100644 --- a/lib/ui/widgets/cards/counts_by_day.dart +++ b/lib/ui/widgets/cards/counts_by_day.dart @@ -17,7 +17,7 @@ class CardCountsByDay extends StatelessWidget { Widget build(BuildContext context) { SettingsCubit settings = BlocProvider.of<SettingsCubit>(context); - final int daysCount = settings.getCountsByDayDaysCount(); + final int daysCount = settings.getDistributionDaysCount(); return BlocBuilder<DataCountsByDayCubit, DataCountsByDayState>( builder: (BuildContext context, DataCountsByDayState state) { diff --git a/lib/ui/widgets/cards/counts_by_hour.dart b/lib/ui/widgets/cards/counts_by_hour.dart index 3421747a89d9832bec2b18f51927278bb9a5ae44..7618d3d394896f8b61f12f4c6630a54525b7b67f 100644 --- a/lib/ui/widgets/cards/counts_by_hour.dart +++ b/lib/ui/widgets/cards/counts_by_hour.dart @@ -17,7 +17,7 @@ class CardCountsByHour extends StatelessWidget { Widget build(BuildContext context) { SettingsCubit settings = BlocProvider.of<SettingsCubit>(context); - final int daysCount = settings.getCountsByHourDaysCount(); + final int daysCount = settings.getDistributionDaysCount(); return BlocBuilder<DataCountsByHourCubit, DataCountsByHourState>( builder: (BuildContext context, DataCountsByHourState state) { diff --git a/lib/ui/widgets/settings_form.dart b/lib/ui/widgets/settings_form.dart index 3ea62666615dc57c8aad45a571a0cdaedd2c1395..bb5f621a0b98a63277d699dd0302c315f95fccb5 100644 --- a/lib/ui/widgets/settings_form.dart +++ b/lib/ui/widgets/settings_form.dart @@ -17,16 +17,14 @@ class _SettingsFormState extends State<SettingsForm> { final usernameController = TextEditingController(); final securityTokenController = TextEditingController(); - int countsByDayDaysCount = DefaultSettings.defaultCountsByDayDaysCount; - int countsByHourDaysCount = DefaultSettings.defaultCountsByHourDaysCount; int discoveriesDaysCount = DefaultSettings.defaultDiscoveriesDaysCount; + int distributionDaysCount = DefaultSettings.defaultDistributionDaysCount; int statisticsRecentDaysCount = DefaultSettings.defaultStatisticsRecentDaysCount; int timelineDaysCount = DefaultSettings.defaultTimelineDaysCount; int topArtistsDaysCount = DefaultSettings.defaultTopArtistsDaysCount; - List<bool> _selectedCountsByDayDaysCount = []; - List<bool> _selectedCountsByHourDaysCount = []; List<bool> _selectedDiscoveriesDaysCount = []; + List<bool> _selectedDistributionDaysCount = []; List<bool> _selectedStatisticsRecentDaysCount = []; List<bool> _selectedTimelineDaysCount = []; List<bool> _selectedTopArtistsDaysCount = []; @@ -38,19 +36,16 @@ class _SettingsFormState extends State<SettingsForm> { usernameController.text = settings.getUsername(); securityTokenController.text = settings.getSecurityToken(); - countsByDayDaysCount = settings.getCountsByDayDaysCount(); - countsByHourDaysCount = settings.getCountsByHourDaysCount(); discoveriesDaysCount = settings.getDiscoveriesDaysCount(); + distributionDaysCount = settings.getDistributionDaysCount(); statisticsRecentDaysCount = settings.getStatisticsRecentDaysCount(); timelineDaysCount = settings.getTimelineDaysCount(); topArtistsDaysCount = settings.getTopArtistsDaysCount(); - _selectedCountsByDayDaysCount = - DefaultSettings.allowedValues.map((e) => (e == countsByDayDaysCount)).toList(); - _selectedCountsByHourDaysCount = - DefaultSettings.allowedValues.map((e) => (e == countsByHourDaysCount)).toList(); _selectedDiscoveriesDaysCount = DefaultSettings.allowedValues.map((e) => (e == discoveriesDaysCount)).toList(); + _selectedDistributionDaysCount = + DefaultSettings.allowedValues.map((e) => (e == distributionDaysCount)).toList(); _selectedStatisticsRecentDaysCount = DefaultSettings.allowedValues.map((e) => (e == statisticsRecentDaysCount)).toList(); _selectedTimelineDaysCount = @@ -74,9 +69,8 @@ class _SettingsFormState extends State<SettingsForm> { BlocProvider.of<SettingsCubit>(context).setValues( username: usernameController.text, securityToken: securityTokenController.text, - countsByDayDaysCount: countsByDayDaysCount, - countsByHourDaysCount: countsByHourDaysCount, discoveriesDaysCount: discoveriesDaysCount, + distributionDaysCount: distributionDaysCount, statisticsRecentDaysCount: statisticsRecentDaysCount, timelineDaysCount: timelineDaysCount, topArtistsDaysCount: topArtistsDaysCount, @@ -108,70 +102,47 @@ class _SettingsFormState extends State<SettingsForm> { // ), // SizedBox(height: 20), - // Counts by day - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text('settings_label_counts_by_day_days_count').tr(), - ToggleButtons( - onPressed: (int index) { - setState(() { - countsByDayDaysCount = DefaultSettings.allowedValues[index]; - for (int i = 0; i < _selectedCountsByDayDaysCount.length; i++) { - _selectedCountsByDayDaysCount[i] = i == index; - } - }); - }, - borderRadius: const BorderRadius.all(Radius.circular(8)), - constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), - isSelected: _selectedCountsByDayDaysCount, - children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(), - ), - ], - ), - - // Counts by hour + // Discoveries Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text('settings_label_counts_by_hour_days_count').tr(), + Text('settings_label_discoveries_days_count').tr(), ToggleButtons( onPressed: (int index) { setState(() { - countsByHourDaysCount = DefaultSettings.allowedValues[index]; - for (int i = 0; i < _selectedCountsByHourDaysCount.length; i++) { - _selectedCountsByHourDaysCount[i] = i == index; + discoveriesDaysCount = DefaultSettings.allowedValues[index]; + for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) { + _selectedDiscoveriesDaysCount[i] = i == index; } }); }, borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), - isSelected: _selectedCountsByHourDaysCount, + isSelected: _selectedDiscoveriesDaysCount, children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(), ), ], ), - // Discoveries + // Distribution by day/hour + heatmap Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text('settings_label_discoveries_days_count').tr(), + Text('settings_label_distribution_days_count').tr(), ToggleButtons( onPressed: (int index) { setState(() { - discoveriesDaysCount = DefaultSettings.allowedValues[index]; - for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) { - _selectedDiscoveriesDaysCount[i] = i == index; + distributionDaysCount = DefaultSettings.allowedValues[index]; + for (int i = 0; i < _selectedDistributionDaysCount.length; i++) { + _selectedDistributionDaysCount[i] = i == index; } }); }, borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), - isSelected: _selectedDiscoveriesDaysCount, + isSelected: _selectedDistributionDaysCount, children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(), ), ], diff --git a/pubspec.yaml b/pubspec.yaml index a0731a7a9c55a867e0161e81c8ea697847593f7e..8af3ab653348dc325ed678895f8b7d517e76f93a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Display scrobbles data and charts publish_to: 'none' -version: 0.0.40+40 +version: 0.0.41+41 environment: sdk: '^3.0.0'