|
@@ -3,6 +3,7 @@ import 'dart:ui';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:implicitly_animated_reorderable_list/implicitly_animated_reorderable_list.dart';
|
|
|
import 'package:implicitly_animated_reorderable_list/transitions.dart';
|
|
|
+import 'package:logging/logging.dart';
|
|
|
import 'package:photos/core/configuration.dart';
|
|
|
import 'package:photos/core/event_bus.dart';
|
|
|
import 'package:photos/db/files_db.dart';
|
|
@@ -31,11 +32,14 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
|
|
|
final Set<String> _allFolders = Set<String>();
|
|
|
Set<String> _selectedFolders = Set<String>();
|
|
|
List<File> _latestFiles;
|
|
|
+ Map<String, int> _itemCount;
|
|
|
|
|
|
@override
|
|
|
void initState() {
|
|
|
_selectedFolders = Configuration.instance.getPathsToBackUp();
|
|
|
- FilesDB.instance.getLatestLocalFiles().then((files) {
|
|
|
+ FilesDB.instance.getLatestLocalFiles().then((files) async {
|
|
|
+ _itemCount = await FilesDB.instance.getFileCountInDeviceFolders();
|
|
|
+ Logger("BackupFolderSelectionPage").info(_itemCount);
|
|
|
setState(() {
|
|
|
_latestFiles = files;
|
|
|
for (final file in _latestFiles) {
|
|
@@ -189,7 +193,7 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- Padding _getFileItem(File file) {
|
|
|
+ Widget _getFileItem(File file) {
|
|
|
final isSelected = _selectedFolders.contains(file.deviceFolder);
|
|
|
return Padding(
|
|
|
padding: const EdgeInsets.only(bottom: 1, right: 4),
|
|
@@ -210,22 +214,40 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
|
|
|
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,
|
|
|
+ Row(
|
|
|
+ children: [
|
|
|
+ _getThumbnail(file),
|
|
|
+ Padding(padding: EdgeInsets.all(10)),
|
|
|
+ Container(
|
|
|
+ child: Column(
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
+ children: [
|
|
|
+ SizedBox(
|
|
|
+ width: 140,
|
|
|
+ child: Text(
|
|
|
+ file.deviceFolder,
|
|
|
+ style: TextStyle(
|
|
|
+ fontSize: 14,
|
|
|
+ height: 1.5,
|
|
|
+ ),
|
|
|
+ overflow: TextOverflow.fade,
|
|
|
+ ),
|
|
|
),
|
|
|
- ),
|
|
|
- ],
|
|
|
+ Padding(padding: EdgeInsets.all(2)),
|
|
|
+ Text(
|
|
|
+ _itemCount[file.deviceFolder].toString() +
|
|
|
+ " item" +
|
|
|
+ (_itemCount[file.deviceFolder] == 1 ? "" : "s"),
|
|
|
+ textAlign: TextAlign.left,
|
|
|
+ style: TextStyle(
|
|
|
+ fontSize: 12,
|
|
|
+ color: Colors.white.withOpacity(0.65),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
),
|
|
|
- ),
|
|
|
+ ],
|
|
|
),
|
|
|
Checkbox(
|
|
|
value: isSelected,
|