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",
"entryInfoActionRemoveMetadata": "Remove metadata",
"filterBinLabel": "Recycle bin",
"filterFavouriteLabel": "Favourite",
"filterLocationEmptyLabel": "Unlocated",
"filterTagEmptyLabel": "Untagged",

View file

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

View file

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

View file

@ -25,7 +25,7 @@ class TrashFilter extends CollectionFilter {
String get universalLabel => type;
@override
String getLabel(BuildContext context) => context.l10n.binPageTitle;
String getLabel(BuildContext context) => context.l10n.filterBinLabel;
@override
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;
late int needed;
int sumSize(sum, entry) => sum + entry.sizeBytes ?? 0;
int sumSize(sum, entry) => sum + (entry.sizeBytes ?? 0);
switch (moveType) {
case MoveType.copy:
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/icons.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/common/extensions/build_context.dart';
import 'package:aves/widgets/common/extensions/media_query.dart';
@ -56,7 +57,7 @@ class AppDrawer extends StatelessWidget {
..._buildPageLinks(context),
if (settings.enableBin) ...[
const Divider(),
binTile,
binTile(context),
],
if (!kReleaseMode) ...[
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;
return CollectionNavTile(
leading: const DrawerFilterIcon(filter: filter),
title: const DrawerFilterTitle(filter: filter),
trailing: Text(formatFileSize(context.l10n.localeName, trashSize, round: 0)),
filter: filter,
isSelected: () => currentCollection?.filters.contains(filter) ?? false,
);

View file

@ -37,7 +37,20 @@ class CollectionNavTile extends StatelessWidget {
child: ListTile(
leading: leading,
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,
onTap: () => _goToCollection(context),
selected: context.currentRouteName == CollectionPage.routeName && isSelected(),
@ -84,7 +97,6 @@ class AlbumNavTile extends StatelessWidget {
? const Icon(
AIcons.removableStorage,
size: 16,
color: Colors.grey,
)
: null,
filter: filter,

View file

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