Bladeren bron

Reuse BackupFolderSelectionPage

vishnukvmd 4 jaren geleden
bovenliggende
commit
fcaa17624c

+ 4 - 6
lib/ui/backup_folder_selection_page.dart

@@ -13,8 +13,8 @@ class BackupFolderSelectionPage extends StatefulWidget {
   final String buttonText;
 
   const BackupFolderSelectionPage({
-    @required this.shouldSelectAll,
     @required this.buttonText,
+    this.shouldSelectAll = false,
     Key key,
   }) : super(key: key);
 
@@ -24,15 +24,14 @@ class BackupFolderSelectionPage extends StatefulWidget {
 }
 
 class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
+  final Set<String> _allFolders = Set<String>();
   Set<String> _backedupFolders = Set<String>();
   List<File> _latestFiles;
-  final _allFolders = Set<String>();
   bool _isSelectAll = false;
 
   @override
   void initState() {
     _backedupFolders = Configuration.instance.getPathsToBackUp();
-    _isSelectAll = widget.shouldSelectAll;
     FilesDB.instance.getLatestLocalFiles().then((files) {
       setState(() {
         _latestFiles = files;
@@ -74,14 +73,13 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
             padding: EdgeInsets.all(6),
           ),
           GestureDetector(
+              behavior: HitTestBehavior.translucent,
               child: Padding(
                 padding: const EdgeInsets.fromLTRB(6, 6, 64, 6),
                 child: Align(
                   alignment: Alignment.centerRight,
                   child: Text(
-                    _backedupFolders.length == _allFolders.length
-                        ? "unselect all"
-                        : "select all",
+                    _isSelectAll ? "unselect all" : "select all",
                     textAlign: TextAlign.right,
                     style: TextStyle(
                       fontSize: 12,

+ 0 - 190
lib/ui/backup_folder_selection_widget.dart

@@ -1,190 +0,0 @@
-import 'dart:io';
-
-import 'package:flutter/material.dart';
-import 'package:flutter/widgets.dart';
-import 'package:photos/core/configuration.dart';
-import 'package:photos/core/event_bus.dart';
-import 'package:photos/db/files_db.dart';
-import 'package:photos/events/backup_folders_updated_event.dart';
-import 'package:photos/models/file.dart';
-import 'package:photos/ui/common_elements.dart';
-import 'package:photos/ui/loading_widget.dart';
-import 'package:photos/ui/thumbnail_widget.dart';
-
-class BackupFolderSelectionWidget extends StatefulWidget {
-  final String buttonText;
-
-  const BackupFolderSelectionWidget(this.buttonText, {Key key})
-      : super(key: key);
-
-  @override
-  _BackupFolderSelectionWidgetState createState() =>
-      _BackupFolderSelectionWidgetState();
-}
-
-class _BackupFolderSelectionWidgetState
-    extends State<BackupFolderSelectionWidget> {
-  Set<String> _backedupFolders = Set<String>();
-
-  @override
-  void initState() {
-    _backedupFolders = Configuration.instance.getPathsToBackUp();
-    if (_backedupFolders.length == 0) {
-      if (Platform.isAndroid) {
-        _backedupFolders.add("Camera");
-      } else {
-        _backedupFolders.add("Recents");
-      }
-    }
-    super.initState();
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return Container(
-      child: Column(
-        mainAxisAlignment: MainAxisAlignment.center,
-        mainAxisSize: MainAxisSize.min,
-        children: [
-          Padding(
-            padding: EdgeInsets.all(4),
-          ),
-          Text(
-            "backed up folders",
-            style: TextStyle(fontSize: 20),
-          ),
-          Padding(
-            padding: EdgeInsets.all(12),
-          ),
-          _getFolderList(),
-          Padding(
-            padding: EdgeInsets.all(8),
-          ),
-          Container(
-            width: double.infinity,
-            height: 64,
-            padding: EdgeInsets.only(left: 20, right: 20),
-            child: button(
-              widget.buttonText,
-              fontSize: 18,
-              onPressed: _backedupFolders.length == 0
-                  ? null
-                  : () async {
-                      await Configuration.instance
-                          .setPathsToBackUp(_backedupFolders);
-                      Bus.instance.fire(BackupFoldersUpdatedEvent());
-                      Navigator.pop(context);
-                    },
-            ),
-          ),
-        ],
-      ),
-    );
-  }
-
-  Widget _getFolderList() {
-    return FutureBuilder<List<File>>(
-      future: FilesDB.instance.getLatestLocalFiles(),
-      builder: (context, snapshot) {
-        Widget child;
-        if (snapshot.hasData) {
-          snapshot.data.sort((first, second) {
-            return first.deviceFolder
-                .toLowerCase()
-                .compareTo(second.deviceFolder.toLowerCase());
-          });
-          final List<Widget> foldersWidget = [];
-          for (final file in snapshot.data) {
-            foldersWidget.add(
-              InkWell(
-                child: Container(
-                  color: _backedupFolders.contains(file.deviceFolder)
-                      ? Color.fromRGBO(16, 32, 32, 1.0)
-                      : null,
-                  padding: EdgeInsets.fromLTRB(24, 20, 24, 20),
-                  child: Row(
-                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
-                    children: [
-                      Container(
-                        child: Expanded(
-                          child: Row(
-                            children: [
-                              _getThumbnail(file),
-                              Padding(padding: EdgeInsets.all(10)),
-                              Expanded(
-                                child: Text(
-                                  file.deviceFolder,
-                                  style: TextStyle(fontSize: 16, height: 1.5),
-                                  overflow: TextOverflow.clip,
-                                ),
-                              ),
-                            ],
-                          ),
-                        ),
-                      ),
-                      Checkbox(
-                        value: _backedupFolders.contains(file.deviceFolder),
-                        onChanged: (value) {
-                          if (value) {
-                            _backedupFolders.add(file.deviceFolder);
-                          } else {
-                            _backedupFolders.remove(file.deviceFolder);
-                          }
-                          setState(() {});
-                        },
-                      ),
-                    ],
-                  ),
-                ),
-                onTap: () {
-                  final value = !_backedupFolders.contains(file.deviceFolder);
-                  if (value) {
-                    _backedupFolders.add(file.deviceFolder);
-                  } else {
-                    _backedupFolders.remove(file.deviceFolder);
-                  }
-                  setState(() {});
-                },
-              ),
-            );
-          }
-
-          final scrollController = ScrollController();
-          child = Scrollbar(
-            isAlwaysShown: true,
-            controller: scrollController,
-            child: SingleChildScrollView(
-              controller: scrollController,
-              child: Column(
-                crossAxisAlignment: CrossAxisAlignment.stretch,
-                children: foldersWidget,
-              ),
-            ),
-          );
-        } else {
-          child = loadWidget;
-        }
-        return Container(
-          height: 400,
-          width: 340,
-          child: child,
-        );
-      },
-    );
-  }
-
-  Widget _getThumbnail(File file) {
-    return ClipRRect(
-      borderRadius: BorderRadius.circular(4.0),
-      child: Container(
-        child: ThumbnailWidget(
-          file,
-          shouldShowSyncStatus: false,
-          key: Key("backup_selection_widget" + file.tag()),
-        ),
-        height: 50,
-        width: 50,
-      ),
-    );
-  }
-}

+ 8 - 17
lib/ui/gallery_footer_widget.dart

@@ -2,7 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:photo_manager/photo_manager.dart';
 import 'package:photos/services/local_sync_service.dart';
-import 'package:photos/ui/backup_folder_selection_widget.dart';
+import 'package:photos/ui/backup_folder_selection_page.dart';
+import 'package:photos/utils/navigation_util.dart';
 
 class GalleryFooterWidget extends StatelessWidget {
   const GalleryFooterWidget({Key key}) : super(key: key);
@@ -51,7 +52,12 @@ class GalleryFooterWidget extends StatelessWidget {
               if (LocalSyncService.instance.hasGrantedLimitedPermissions()) {
                 await PhotoManager.presentLimited();
               } else {
-                _showBackupFolderSelectionWidget(context);
+                routeToPage(
+                  context,
+                  BackupFolderSelectionPage(
+                    buttonText: "preserve",
+                  ),
+                );
               }
             },
           ),
@@ -59,19 +65,4 @@ class GalleryFooterWidget extends StatelessWidget {
       ],
     );
   }
-
-  void _showBackupFolderSelectionWidget(BuildContext context) {
-    showDialog(
-      context: context,
-      builder: (context) {
-        return AlertDialog(
-          content: const BackupFolderSelectionWidget("preserve"),
-          backgroundColor: Color.fromRGBO(8, 18, 18, 1),
-          insetPadding: const EdgeInsets.all(24),
-          contentPadding: const EdgeInsets.all(24),
-        );
-      },
-      barrierColor: Colors.black.withOpacity(0.85),
-    );
-  }
 }

+ 6 - 5
lib/ui/home_widget.dart

@@ -350,11 +350,12 @@ class _HomeWidgetState extends State<HomeWidget> {
                       PhotoManager.presentLimited();
                     } else {
                       routeToPage(
-                          context,
-                          BackupFolderSelectionPage(
-                            shouldSelectAll: true,
-                            buttonText: "start backup",
-                          ));
+                        context,
+                        BackupFolderSelectionPage(
+                          shouldSelectAll: true,
+                          buttonText: "start backup",
+                        ),
+                      );
                     }
                   },
                 ),

+ 6 - 12
lib/ui/settings/backup_section_widget.dart

@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/models/backup_status.dart';
 import 'package:photos/services/sync_service.dart';
-import 'package:photos/ui/backup_folder_selection_widget.dart';
+import 'package:photos/ui/backup_folder_selection_page.dart';
 import 'package:photos/ui/free_space_page.dart';
 import 'package:photos/ui/settings/settings_section_title.dart';
 import 'package:photos/ui/settings/settings_text_item.dart';
@@ -34,17 +34,11 @@ class BackupSectionWidgetState extends State<BackupSectionWidget> {
           GestureDetector(
             behavior: HitTestBehavior.translucent,
             onTap: () async {
-              showDialog(
-                context: context,
-                builder: (context) {
-                  return AlertDialog(
-                    content: const BackupFolderSelectionWidget("backup"),
-                    backgroundColor: Color.fromRGBO(8, 18, 18, 1),
-                    insetPadding: const EdgeInsets.all(24),
-                    contentPadding: const EdgeInsets.all(24),
-                  );
-                },
-                barrierColor: Colors.black.withOpacity(0.85),
+              routeToPage(
+                context,
+                BackupFolderSelectionPage(
+                  buttonText: "backup",
+                ),
               );
             },
             child: SettingsTextItem(