bin: size in drawer
This commit is contained in:
parent
33fb1cdea0
commit
14e00d78b4
8 changed files with 30 additions and 6 deletions
|
@ -109,6 +109,7 @@
|
|||
"entryInfoActionEditTags": "Edit tags",
|
||||
"entryInfoActionRemoveMetadata": "Remove metadata",
|
||||
|
||||
"filterBinLabel": "Recycle bin",
|
||||
"filterFavouriteLabel": "Favourite",
|
||||
"filterLocationEmptyLabel": "Unlocated",
|
||||
"filterTagEmptyLabel": "Untagged",
|
||||
|
|
|
@ -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é",
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
"entryInfoActionEditTags": "태그 수정",
|
||||
"entryInfoActionRemoveMetadata": "메타데이터 삭제",
|
||||
|
||||
"filterBinLabel": "휴지통",
|
||||
"filterFavouriteLabel": "즐겨찾기",
|
||||
"filterLocationEmptyLabel": "장소 없음",
|
||||
"filterTagEmptyLabel": "태그 없음",
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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,
|
||||
);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in a new issue