diff --git a/mobile/lib/ui/viewer/file/file_icons_widget.dart b/mobile/lib/ui/viewer/file/file_icons_widget.dart index 1d22a5c46..8bcd2fafb 100644 --- a/mobile/lib/ui/viewer/file/file_icons_widget.dart +++ b/mobile/lib/ui/viewer/file/file_icons_widget.dart @@ -5,9 +5,11 @@ import 'package:flutter/material.dart'; import 'package:photos/ente_theme_data.dart'; import "package:photos/generated/l10n.dart"; import "package:photos/models/api/collection/user.dart"; +import "package:photos/models/file/file.dart"; import 'package:photos/models/file/trash_file.dart'; import 'package:photos/theme/colors.dart'; import 'package:photos/ui/sharing/user_avator_widget.dart'; +import "package:photos/utils/data_util.dart"; class ThumbnailPlaceHolder extends StatelessWidget { const ThumbnailPlaceHolder({Key? key}) : super(key: key); @@ -143,15 +145,38 @@ class OwnerAvatarOverlayIcon extends StatelessWidget { class TrashedFileOverlayText extends StatelessWidget { final TrashFile file; - const TrashedFileOverlayText(this.file, {Key? key}) : super(key: key); - @override Widget build(BuildContext context) { final int daysLeft = ((file.deleteBy - DateTime.now().microsecondsSinceEpoch) / Duration.microsecondsPerDay) .ceil(); + final text = S.of(context).trashDaysLeft(daysLeft); + return FileOverlayText(text); + } +} + +class FileSizeOverlayText extends StatelessWidget { + final EnteFile file; + const FileSizeOverlayText(this.file, {Key? key}) : super(key: key); + @override + Widget build(BuildContext context) { + if (file.fileSize == null) { + return const SizedBox.shrink(); + } + final text = convertBytesToReadableFormat(file.fileSize!); + return FileOverlayText(text); + } +} + +class FileOverlayText extends StatelessWidget { + final String text; + + const FileOverlayText(this.text, {Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { return Container( decoration: BoxDecoration( gradient: LinearGradient( @@ -163,7 +188,7 @@ class TrashedFileOverlayText extends StatelessWidget { alignment: Alignment.bottomCenter, padding: const EdgeInsets.only(bottom: 5), child: Text( - S.of(context).trashDaysLeft(daysLeft), + text, style: Theme.of(context) .textTheme .titleSmall! diff --git a/mobile/lib/ui/viewer/file/thumbnail_widget.dart b/mobile/lib/ui/viewer/file/thumbnail_widget.dart index 499981e71..48055c961 100644 --- a/mobile/lib/ui/viewer/file/thumbnail_widget.dart +++ b/mobile/lib/ui/viewer/file/thumbnail_widget.dart @@ -18,6 +18,8 @@ import 'package:photos/models/file/trash_file.dart'; import 'package:photos/services/collections_service.dart'; import 'package:photos/services/favorites_service.dart'; import 'package:photos/ui/viewer/file/file_icons_widget.dart'; +import "package:photos/ui/viewer/gallery/component/group/type.dart"; +import "package:photos/ui/viewer/gallery/state/gallery_context_state.dart"; import 'package:photos/utils/file_util.dart'; import 'package:photos/utils/thumbnail_util.dart'; @@ -178,6 +180,8 @@ class _ThumbnailWidgetState extends State { if (widget.file.isTrash) { viewChildren.add(TrashedFileOverlayText(widget.file as TrashFile)); + } else if (GalleryContextState.of(context)?.type == GroupType.size) { + viewChildren.add(FileSizeOverlayText(widget.file)); } // todo: Move this icon overlay to the collection widget. if (widget.shouldShowArchiveStatus) {