From 97e0c8cef73064d121dcb38ab904e8d5d8ba5cdd Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Fri, 9 Jun 2023 21:25:23 +0200 Subject: backup function --- lib/config/defaults.dart | 2 +- lib/main.dart | 12 +++---- lib/pages/developer_page.dart | 76 +++++++++++++++++++++++++++++++++++++++++- lib/pages/navigation_page.dart | 6 ++-- 4 files changed, 84 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/config/defaults.dart b/lib/config/defaults.dart index 1f62666..f371111 100644 --- a/lib/config/defaults.dart +++ b/lib/config/defaults.dart @@ -1,4 +1,4 @@ -String program_version = '0.15 [19/04/2023]'; +String program_version = '1.0 [09/06/2023]'; bool debug_mode = false; class ShiftType { diff --git a/lib/main.dart b/lib/main.dart index ca99946..909b5f1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -28,16 +28,14 @@ import 'package:here_sdk/core.engine.dart'; import 'package:here_sdk/core.errors.dart'; import 'package:here_sdk/mapview.dart'; -Future main() async { +void main() { _initializeHERESDK(); WidgetsFlutterBinding.ensureInitialized(); - await SystemChrome.setPreferredOrientations( - [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); - configureNotifications(); - runZonedGuarded(() { + SystemChrome.setPreferredOrientations( + [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]) + .then((value) { + configureNotifications(); runApp(const MyApp()); - }, (error, stack) { - // tja.. }); } diff --git a/lib/pages/developer_page.dart b/lib/pages/developer_page.dart index daf0838..2b1b54c 100644 --- a/lib/pages/developer_page.dart +++ b/lib/pages/developer_page.dart @@ -1,6 +1,10 @@ import 'dart:io'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_archive/flutter_archive.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:training_planner/config/defaults.dart'; import 'package:training_planner/events/RefreshWeekEvent.dart'; import 'package:training_planner/main.dart'; @@ -69,6 +73,74 @@ class _DeveloperPageState extends State { }); } + Future getDownloadPath() async { + Directory? directory; + try { + if (Platform.isIOS) { + directory = await getApplicationDocumentsDirectory(); + } else { + directory = Directory('/storage/emulated/0/Download'); + // Put file in global download folder, if for an unknown reason it didn't exist, we fallback + // ignore: avoid_slow_async_io + if (!await directory.exists()) + directory = await getExternalStorageDirectory(); + } + } catch (err, stack) { + print("Cannot get download folder path"); + } + return directory?.path; + } + + File _createZipFile(String fileName) { + final zipFilePath = fileName; + final zipFile = File(zipFilePath); + + if (zipFile.existsSync()) { + print("Deleting existing zip file: ${zipFile.path}"); + zipFile.deleteSync(); + } + return zipFile; + } + + _exportLocalFiles() async { + List result = []; + Directory dir = await getApplicationDocumentsDirectory(); + var list = dir.listSync(); + for (var item in list) { + if (item.path.endsWith('.json')) { + result.add(item.path); + } + } + + if (await Permission.storage.request().isGranted) { + String? path = await getDownloadPath(); + if (path != null) { + path += '/backup.zip'; + var zip = _createZipFile(path); + + int onProgressCallCount1 = 0; + try { + await ZipFile.createFromDirectory( + sourceDir: await getApplicationDocumentsDirectory(), + zipFile: zip, + recurseSubDirs: false, + includeBaseDirectory: false, + onZipping: (fileName, isDirectory, progress) { + ++onProgressCallCount1; + print('Zip #1:'); + print('progress: ${progress.toStringAsFixed(1)}%'); + print('name: $fileName'); + print('isDirectory: $isDirectory'); + return ZipFileOperation.includeItem; + }, + ); + } on PlatformException catch (e) { + print(e); + } + } + } + } + @override Widget build(BuildContext context) { return Scaffold( @@ -86,7 +158,9 @@ class _DeveloperPageState extends State { Text('Bestanden: ' + file_count.toString()), ElevatedButton( onPressed: _toggleDebugMode, - child: Text('Test Modus: ' + debug_mode.toString())) + child: Text('Test Modus: ' + debug_mode.toString())), + ElevatedButton( + onPressed: _exportLocalFiles, child: Text('Export')) /* TextButton( onPressed: () { diff --git a/lib/pages/navigation_page.dart b/lib/pages/navigation_page.dart index 9cf7277..9fcc9ae 100644 --- a/lib/pages/navigation_page.dart +++ b/lib/pages/navigation_page.dart @@ -67,7 +67,7 @@ class _NavigationPageState extends State { initState() { super.initState(); - SystemChrome.setEnabledSystemUIOverlays([]); + SystemChrome.setPreferredOrientations([]); Wakelock.enable(); AutoOrientation.portraitDownMode(); @@ -251,8 +251,8 @@ class _NavigationPageState extends State { taskLoadedEvent?.cancel(); Wakelock.disable(); AutoOrientation.portraitUpMode(); - SystemChrome.setEnabledSystemUIOverlays( - [SystemUiOverlay.top, SystemUiOverlay.bottom]); + SystemChrome.setPreferredOrientations( + [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); super.dispose(); } } -- cgit v1.2.3-70-g09d2