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",
|
"entryInfoActionEditTags": "Edit tags",
|
||||||
"entryInfoActionRemoveMetadata": "Remove metadata",
|
"entryInfoActionRemoveMetadata": "Remove metadata",
|
||||||
|
|
||||||
|
"filterBinLabel": "Recycle bin",
|
||||||
"filterFavouriteLabel": "Favourite",
|
"filterFavouriteLabel": "Favourite",
|
||||||
"filterLocationEmptyLabel": "Unlocated",
|
"filterLocationEmptyLabel": "Unlocated",
|
||||||
"filterTagEmptyLabel": "Untagged",
|
"filterTagEmptyLabel": "Untagged",
|
||||||
|
|
|
@ -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é",
|
||||||
|
|
|
@ -81,6 +81,7 @@
|
||||||
"entryInfoActionEditTags": "태그 수정",
|
"entryInfoActionEditTags": "태그 수정",
|
||||||
"entryInfoActionRemoveMetadata": "메타데이터 삭제",
|
"entryInfoActionRemoveMetadata": "메타데이터 삭제",
|
||||||
|
|
||||||
|
"filterBinLabel": "휴지통",
|
||||||
"filterFavouriteLabel": "즐겨찾기",
|
"filterFavouriteLabel": "즐겨찾기",
|
||||||
"filterLocationEmptyLabel": "장소 없음",
|
"filterLocationEmptyLabel": "장소 없음",
|
||||||
"filterTagEmptyLabel": "태그 없음",
|
"filterTagEmptyLabel": "태그 없음",
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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,
|
||||||
);
|
);
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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",
|
||||||
|
|
Loading…
Reference in a new issue