瀏覽代碼

trash: add footer with information about days on thumbnail widget

Neeraj Gupta 3 年之前
父節點
當前提交
5e2fb4dc80
共有 4 個文件被更改,包括 40 次插入35 次删除
  1. 6 0
      lib/db/trash_db.dart
  2. 5 10
      lib/ui/fading_bottom_bar.dart
  3. 1 0
      lib/ui/thumbnail_widget.dart
  4. 28 25
      lib/ui/trash_page.dart

+ 6 - 0
lib/db/trash_db.dart

@@ -106,6 +106,12 @@ class TrashDB {
     await db.delete(tableName);
     await db.delete(tableName);
   }
   }
 
 
+  Future<bool> isEmpty() async {
+    final db = await instance.database;
+    var rows = await db.query(tableName, limit: 1);
+    return rows == null || rows.isEmpty;
+  }
+
   Future<void> insertMultiple(List<TrashFile> trashFiles) async {
   Future<void> insertMultiple(List<TrashFile> trashFiles) async {
     final startTime = DateTime.now();
     final startTime = DateTime.now();
     final db = await instance.database;
     final db = await instance.database;

+ 5 - 10
lib/ui/fading_bottom_bar.dart

@@ -9,14 +9,11 @@ import 'package:photos/models/file_type.dart';
 import 'package:photos/models/magic_metadata.dart';
 import 'package:photos/models/magic_metadata.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/models/trash_file.dart';
 import 'package:photos/models/trash_file.dart';
+import 'package:photos/ui/create_collection_page.dart';
 import 'package:photos/ui/file_info_dialog.dart';
 import 'package:photos/ui/file_info_dialog.dart';
 import 'package:photos/utils/archive_util.dart';
 import 'package:photos/utils/archive_util.dart';
 import 'package:photos/utils/delete_file_util.dart';
 import 'package:photos/utils/delete_file_util.dart';
 import 'package:photos/utils/share_util.dart';
 import 'package:photos/utils/share_util.dart';
-import 'package:photos/utils/toast_util.dart';
-
-import 'common/dialogs.dart';
-import 'create_collection_page.dart';
 
 
 class FadingBottomBar extends StatefulWidget {
 class FadingBottomBar extends StatefulWidget {
   final File file;
   final File file;
@@ -108,11 +105,10 @@ class FadingBottomBarState extends State<FadingBottomBar> {
             child: Padding(
             child: Padding(
               padding: const EdgeInsets.only(top: 12, bottom: 12),
               padding: const EdgeInsets.only(top: 12, bottom: 12),
               child: IconButton(
               child: IconButton(
-                icon: Icon(
-                  Platform.isAndroid
-                      ? (isArchived
-                          ? Icons.unarchive_outlined
-                          : Icons.archive_outlined)
+                icon: Icon(Platform.isAndroid
+                    ? (isArchived
+                        ? Icons.unarchive_outlined
+                        : Icons.archive_outlined)
                     : (isArchived
                     : (isArchived
                         ? CupertinoIcons.archivebox_fill
                         ? CupertinoIcons.archivebox_fill
                         : CupertinoIcons.archivebox)),
                         : CupertinoIcons.archivebox)),
@@ -182,7 +178,6 @@ class FadingBottomBarState extends State<FadingBottomBar> {
           child: IconButton(
           child: IconButton(
             icon: Icon(Icons.restore_outlined),
             icon: Icon(Icons.restore_outlined),
             onPressed: () {
             onPressed: () {
-              showToast("coming soon");
               final _selectedFiles = SelectedFiles();
               final _selectedFiles = SelectedFiles();
               _selectedFiles.toggleSelection(widget.file);
               _selectedFiles.toggleSelection(widget.file);
               Navigator.push(
               Navigator.push(

+ 1 - 0
lib/ui/thumbnail_widget.dart

@@ -43,6 +43,7 @@ Widget getFileInfoContainer(File file) {
     return Container(
     return Container(
       child: Text(daysLeft(file.deleteBy)),
       child: Text(daysLeft(file.deleteBy)),
       alignment: Alignment.bottomCenter,
       alignment: Alignment.bottomCenter,
+      padding: EdgeInsets.fromLTRB(0, 0, 0, 5),
     );
     );
   }
   }
   return emptyContainer;
   return emptyContainer;

+ 28 - 25
lib/ui/trash_page.dart

@@ -4,7 +4,6 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/trash_db.dart';
 import 'package:photos/db/trash_db.dart';
-import 'package:photos/events/collection_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/models/selected_files.dart';
 import 'package:photos/models/selected_files.dart';
 
 
@@ -25,31 +24,35 @@ class TrashPage extends StatelessWidget {
   @override
   @override
   Widget build(Object context) {
   Widget build(Object context) {
     final gallery = Gallery(
     final gallery = Gallery(
-      asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
-        return TrashDB.instance.getTrashedFiles(
-            creationStartTime, creationEndTime,
-            limit: limit, asc: asc);
-      },
-      reloadEvent: Bus.instance.on<FilesUpdatedEvent>().where(
-            (event) =>
-        event.updatedFiles.firstWhere(
-                (element) => element.uploadedFileID != null,
-            orElse: () => null) !=
-            null,
-      ),
-      forceReloadEvents: [
-        Bus.instance.on<FilesUpdatedEvent>().where(
+        asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
+          return TrashDB.instance.getTrashedFiles(
+              creationStartTime, creationEndTime,
+              limit: limit, asc: asc);
+        },
+        reloadEvent: Bus.instance.on<FilesUpdatedEvent>().where(
               (event) =>
               (event) =>
-          event.updatedFiles.firstWhere(
-                  (element) => element.uploadedFileID != null,
-              orElse: () => null) !=
-              null,
-        ),
-      ],
-      tagPrefix: tagPrefix,
-      selectedFiles: _selectedFiles,
-      initialFiles: null,
-    );
+                  event.updatedFiles.firstWhere(
+                      (element) => element.uploadedFileID != null,
+                      orElse: () => null) !=
+                  null,
+            ),
+        forceReloadEvents: [
+          Bus.instance.on<FilesUpdatedEvent>().where(
+                (event) =>
+                    event.updatedFiles.firstWhere(
+                        (element) => element.uploadedFileID != null,
+                        orElse: () => null) !=
+                    null,
+              ),
+        ],
+        tagPrefix: tagPrefix,
+        selectedFiles: _selectedFiles,
+        initialFiles: null,
+        footer: Padding(
+          padding: EdgeInsets.all(15),
+          child: Text(
+              'memories shows the number the days after which they will be permanently deleted.'),
+        ));
     return Scaffold(
     return Scaffold(
       body: Stack(children: [
       body: Stack(children: [
         Padding(
         Padding(