From 8c0a5bc98b6c654c6fc5cbdf30ccafa56e9f8c6d Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Sat, 21 Oct 2023 21:17:28 +0200 Subject: [PATCH] Added settings config --- lib/l10n/app_en.arb | 4 ++- lib/l10n/app_es.arb | 4 ++- lib/providers/app_config_provider.dart | 23 +++++++++++++ lib/screens/home/top_items.dart | 6 ++++ .../general_settings/general_settings.dart | 22 +++++++++++++ lib/services/db/database.dart | 33 ++++++++++++++++--- 6 files changed, 86 insertions(+), 6 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index b9c7b1e..451e4e1 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -665,5 +665,7 @@ "discardChangesDescription": "Are you sure you want to discard the changes?", "others": "Others", "showChart": "Show chart", - "hideChart": "Hide chart" + "hideChart": "Hide chart", + "showTopItemsChart": "Show top items chart", + "showTopItemsChartDescription": "Shows by default the ring chart on the top items sections. Only affects to the mobile view." } \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index fe13bcd..4276b7b 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -665,5 +665,7 @@ "discardChangesDescription": "¿Estás seguro de que deseas descartar los cambios realizados?", "others": "Otros", "showChart": "Mostrar gráfico", - "hideChart": "Ocultar gráfico" + "hideChart": "Ocultar gráfico", + "showTopItemsChart": "Mostrar gráfico en top de items", + "showTopItemsChartDescription": "Muestra por defecto el gráfico de anillo en las secciones de top de items. Sólo afecta a la vista móvil." } \ No newline at end of file diff --git a/lib/providers/app_config_provider.dart b/lib/providers/app_config_provider.dart index 3522edc..16e855f 100644 --- a/lib/providers/app_config_provider.dart +++ b/lib/providers/app_config_provider.dart @@ -52,6 +52,8 @@ class AppConfigProvider with ChangeNotifier { int _combinedChartHome = 0; + int _showTopItemsChart = 0; + String? _doNotRememberVersion; GitHubRelease? _appUpdatesAvailable; @@ -168,6 +170,10 @@ class AppConfigProvider with ChangeNotifier { return _hideServerAddress == 1 ? true : false; } + bool get showTopItemsChart { + return _showTopItemsChart == 1 ? true : false; + } + void setDbInstance(Database db) { _dbInstance = db; } @@ -402,6 +408,22 @@ class AppConfigProvider with ChangeNotifier { } } + Future setShowTopItemsChart(bool value) async { + final updated = await updateConfigQuery( + db: _dbInstance!, + column: 'showTopItemsChart', + value: value == true ? 1 : 0 + ); + if (updated == true) { + _showTopItemsChart = value == true ? 1 : 0; + notifyListeners(); + return true; + } + else { + return false; + } + } + Future setDoNotRememberVersion(String value) async { final updated = await updateConfigQuery( @@ -424,6 +446,7 @@ class AppConfigProvider with ChangeNotifier { _showIpLogs = dbData['showIpLogs'] ?? 0; _combinedChartHome = dbData['combinedChart'] ?? 0; _hideServerAddress = dbData['hideServerAddress']; + _showTopItemsChart = dbData['showTopItemsChart']; if (dbData['homeTopItemsOrder'] != null) { try { _homeTopItemsOrder = List.from( diff --git a/lib/screens/home/top_items.dart b/lib/screens/home/top_items.dart index 9cacd68..24dd6db 100644 --- a/lib/screens/home/top_items.dart +++ b/lib/screens/home/top_items.dart @@ -46,6 +46,12 @@ class _TopItemsState extends State { Colors.grey ]; + @override + void initState() { + _showChart = Provider.of(context, listen: false).showTopItemsChart; + super.initState(); + } + @override Widget build(BuildContext context) { final statusProvider = Provider.of(context); diff --git a/lib/screens/settings/general_settings/general_settings.dart b/lib/screens/settings/general_settings/general_settings.dart index c5ba7cb..9ead014 100644 --- a/lib/screens/settings/general_settings/general_settings.dart +++ b/lib/screens/settings/general_settings/general_settings.dart @@ -191,6 +191,28 @@ class _GeneralSettingsState extends State { builder: (context) => const ReorderableTopItemsHome() )), ), + CustomListTile( + icon: Icons.donut_large_rounded, + title: AppLocalizations.of(context)!.showTopItemsChart, + subtitle: AppLocalizations.of(context)!.showTopItemsChartDescription, + trailing: Switch( + value: appConfigProvider.showTopItemsChart, + onChanged: (value) => updateSettings( + newStatus: value, + function: appConfigProvider.setShowTopItemsChart + ), + ), + onTap: () => updateSettings( + newStatus: !appConfigProvider.showTopItemsChart, + function: appConfigProvider.setShowTopItemsChart + ), + padding: const EdgeInsets.only( + top: 10, + bottom: 10, + left: 16, + right: 10 + ) + ), SectionLabel(label: AppLocalizations.of(context)!.logs), CustomListTile( icon: Icons.timer_rounded, diff --git a/lib/services/db/database.dart b/lib/services/db/database.dart index 5fed50f..7d8cf13 100644 --- a/lib/services/db/database.dart +++ b/lib/services/db/database.dart @@ -116,9 +116,20 @@ Future> loadDb(bool acceptsDynamicTheme) async { }); } + Future upgradeDbToV10(Database db) async { + await db.execute("ALTER TABLE appConfig ADD COLUMN showTopItemsChart NUMERIC"); + await db.execute("UPDATE appConfig SET showTopItemsChart = 1"); + + await db.transaction((txn) async{ + await txn.rawQuery( + 'SELECT * FROM appConfig', + ); + }); + } + Database db = await openDatabase( 'adguard_home_manager.db', - version: 9, + version: 10, onCreate: (Database db, int version) async { await db.execute( """ @@ -154,7 +165,8 @@ Future> loadDb(bool acceptsDynamicTheme) async { combinedChart NUMERIC, doNotRememberVersion TEXT, hideServerAddress NUMERIC, - homeTopItemsOrder TEXT + homeTopItemsOrder TEXT, + showTopItemsChart NUMERIC ) """ ); @@ -173,7 +185,8 @@ Future> loadDb(bool acceptsDynamicTheme) async { showIpLogs, combinedChart, hideServerAddress, - homeTopItemsOrder + homeTopItemsOrder, + showTopItemsChart ) VALUES ( 0, @@ -186,7 +199,8 @@ Future> loadDb(bool acceptsDynamicTheme) async { 0, 0, 0, - '$homeTopItemsDefaultOrderString' + '$homeTopItemsDefaultOrderString', + 1 ) """ ); @@ -201,6 +215,7 @@ Future> loadDb(bool acceptsDynamicTheme) async { await upgradeDbToV7(db); await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 2) { await upgradeDbToV3(db); @@ -210,6 +225,7 @@ Future> loadDb(bool acceptsDynamicTheme) async { await upgradeDbToV7(db); await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 3) { await upgradeDbToV4(db); @@ -218,6 +234,7 @@ Future> loadDb(bool acceptsDynamicTheme) async { await upgradeDbToV7(db); await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 4) { await upgradeDbToV5(db); @@ -225,24 +242,32 @@ Future> loadDb(bool acceptsDynamicTheme) async { await upgradeDbToV7(db); await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 5) { await upgradeDbToV6(db); await upgradeDbToV7(db); await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 6) { await upgradeDbToV7(db); await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 7) { await upgradeDbToV8(db); await upgradeDbToV9(db); + await upgradeDbToV10(db); } if (oldVersion == 8) { await upgradeDbToV9(db); + await upgradeDbToV10(db); + } + if (oldVersion == 9) { + await upgradeDbToV10(db); } }, onOpen: (Database db) async {