bin: size in drawer

This commit is contained in:
Thibault Deckers 2022-02-18 16:10:19 +09:00
parent 33fb1cdea0
commit 14e00d78b4
8 changed files with 30 additions and 6 deletions

View file

@ -109,6 +109,7 @@
"entryInfoActionEditTags": "Edit tags", "entryInfoActionEditTags": "Edit tags",
"entryInfoActionRemoveMetadata": "Remove metadata", "entryInfoActionRemoveMetadata": "Remove metadata",
"filterBinLabel": "Recycle bin",
"filterFavouriteLabel": "Favourite", "filterFavouriteLabel": "Favourite",
"filterLocationEmptyLabel": "Unlocated", "filterLocationEmptyLabel": "Unlocated",
"filterTagEmptyLabel": "Untagged", "filterTagEmptyLabel": "Untagged",

View file

@ -81,6 +81,7 @@
"entryInfoActionEditTags": "Modifier les libellés", "entryInfoActionEditTags": "Modifier les libellés",
"entryInfoActionRemoveMetadata": "Retirer les métadonnées", "entryInfoActionRemoveMetadata": "Retirer les métadonnées",
"filterBinLabel": "Corbeille",
"filterFavouriteLabel": "Favori", "filterFavouriteLabel": "Favori",
"filterLocationEmptyLabel": "Sans lieu", "filterLocationEmptyLabel": "Sans lieu",
"filterTagEmptyLabel": "Sans libellé", "filterTagEmptyLabel": "Sans libellé",

View file

@ -81,6 +81,7 @@
"entryInfoActionEditTags": "태그 수정", "entryInfoActionEditTags": "태그 수정",
"entryInfoActionRemoveMetadata": "메타데이터 삭제", "entryInfoActionRemoveMetadata": "메타데이터 삭제",
"filterBinLabel": "휴지통",
"filterFavouriteLabel": "즐겨찾기", "filterFavouriteLabel": "즐겨찾기",
"filterLocationEmptyLabel": "장소 없음", "filterLocationEmptyLabel": "장소 없음",
"filterTagEmptyLabel": "태그 없음", "filterTagEmptyLabel": "태그 없음",

View file

@ -25,7 +25,7 @@ class TrashFilter extends CollectionFilter {
String get universalLabel => type; String get universalLabel => type;
@override @override
String getLabel(BuildContext context) => context.l10n.binPageTitle; String getLabel(BuildContext context) => context.l10n.filterBinLabel;
@override @override
Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => Icon(AIcons.bin, size: size); Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => Icon(AIcons.bin, size: size);

View file

@ -29,7 +29,7 @@ mixin SizeAwareMixin {
if (free == null) return true; if (free == null) return true;
late int needed; late int needed;
int sumSize(sum, entry) => sum + entry.sizeBytes ?? 0; int sumSize(sum, entry) => sum + (entry.sizeBytes ?? 0);
switch (moveType) { switch (moveType) {
case MoveType.copy: case MoveType.copy:
case MoveType.export: case MoveType.export:

View file

@ -11,6 +11,7 @@ import 'package:aves/model/source/tag.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/utils/file_utils.dart';
import 'package:aves/widgets/about/about_page.dart'; import 'package:aves/widgets/about/about_page.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/extensions/media_query.dart';
@ -56,7 +57,7 @@ class AppDrawer extends StatelessWidget {
..._buildPageLinks(context), ..._buildPageLinks(context),
if (settings.enableBin) ...[ if (settings.enableBin) ...[
const Divider(), const Divider(),
binTile, binTile(context),
], ],
if (!kReleaseMode) ...[ if (!kReleaseMode) ...[
const Divider(), const Divider(),
@ -253,11 +254,15 @@ class AppDrawer extends StatelessWidget {
]; ];
} }
Widget get binTile { Widget binTile(BuildContext context) {
final source = context.read<CollectionSource>();
final trashSize = source.trashedEntries.fold<int>(0, (sum, entry) => sum + (entry.sizeBytes ?? 0));
const filter = TrashFilter.instance; const filter = TrashFilter.instance;
return CollectionNavTile( return CollectionNavTile(
leading: const DrawerFilterIcon(filter: filter), leading: const DrawerFilterIcon(filter: filter),
title: const DrawerFilterTitle(filter: filter), title: const DrawerFilterTitle(filter: filter),
trailing: Text(formatFileSize(context.l10n.localeName, trashSize, round: 0)),
filter: filter, filter: filter,
isSelected: () => currentCollection?.filters.contains(filter) ?? false, isSelected: () => currentCollection?.filters.contains(filter) ?? false,
); );

View file

@ -37,7 +37,20 @@ class CollectionNavTile extends StatelessWidget {
child: ListTile( child: ListTile(
leading: leading, leading: leading,
title: title, title: title,
trailing: trailing, trailing: trailing != null
? Builder(
builder: (context) {
final trailingColor = IconTheme.of(context).color!.withOpacity(.6);
return IconTheme.merge(
data: IconThemeData(color: trailingColor),
child: DefaultTextStyle.merge(
style: TextStyle(color: trailingColor),
child: trailing!,
),
);
},
)
: null,
dense: dense, dense: dense,
onTap: () => _goToCollection(context), onTap: () => _goToCollection(context),
selected: context.currentRouteName == CollectionPage.routeName && isSelected(), selected: context.currentRouteName == CollectionPage.routeName && isSelected(),
@ -84,7 +97,6 @@ class AlbumNavTile extends StatelessWidget {
? const Icon( ? const Icon(
AIcons.removableStorage, AIcons.removableStorage,
size: 16, size: 16,
color: Colors.grey,
) )
: null, : null,
filter: filter, filter: filter,

View file

@ -3,6 +3,7 @@
"timeDays", "timeDays",
"entryActionConvert", "entryActionConvert",
"entryActionRestore", "entryActionRestore",
"filterBinLabel",
"binEntriesConfirmationDialogMessage", "binEntriesConfirmationDialogMessage",
"collectionActionEmptyBin", "collectionActionEmptyBin",
"binPageTitle", "binPageTitle",
@ -13,6 +14,7 @@
"es": [ "es": [
"timeDays", "timeDays",
"entryActionRestore", "entryActionRestore",
"filterBinLabel",
"binEntriesConfirmationDialogMessage", "binEntriesConfirmationDialogMessage",
"collectionActionEmptyBin", "collectionActionEmptyBin",
"binPageTitle", "binPageTitle",
@ -24,6 +26,7 @@
"timeDays", "timeDays",
"entryActionConvert", "entryActionConvert",
"entryActionRestore", "entryActionRestore",
"filterBinLabel",
"binEntriesConfirmationDialogMessage", "binEntriesConfirmationDialogMessage",
"collectionActionEmptyBin", "collectionActionEmptyBin",
"binPageTitle", "binPageTitle",
@ -35,6 +38,7 @@
"timeDays", "timeDays",
"entryActionConvert", "entryActionConvert",
"entryActionRestore", "entryActionRestore",
"filterBinLabel",
"binEntriesConfirmationDialogMessage", "binEntriesConfirmationDialogMessage",
"collectionActionEmptyBin", "collectionActionEmptyBin",
"binPageTitle", "binPageTitle",