From 48c16a9e9b03c6aadff11f486fd2a06179046d56 Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Wed, 29 May 2024 21:55:16 +0800 Subject: [PATCH] Show date in viewer title --- app/lib/widget/viewer.dart | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/app/lib/widget/viewer.dart b/app/lib/widget/viewer.dart index 339e0df3..58f06c48 100644 --- a/app/lib/widget/viewer.dart +++ b/app/lib/widget/viewer.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:intl/intl.dart'; import 'package:kiwi/kiwi.dart'; import 'package:logging/logging.dart'; import 'package:nc_photos/account.dart'; @@ -41,6 +42,7 @@ import 'package:nc_photos/widget/viewer_detail_pane.dart'; import 'package:nc_photos/widget/viewer_mixin.dart'; import 'package:np_codegen/np_codegen.dart'; import 'package:np_common/or_null.dart'; +import 'package:np_platform_util/np_platform_util.dart'; part 'viewer.g.dart'; @@ -190,9 +192,18 @@ class _ViewerState extends State final index = _isViewerLoaded ? _viewerController.currentPage : widget.startIndex; final file = _streamFilesView[index]; + final isCentered = getRawPlatform() == NpPlatform.iOs; return AppBar( backgroundColor: Colors.transparent, elevation: 0, + title: _isDetailPaneActive + ? null + : _AppBarTitle( + file: file, + isCentered: isCentered, + ), + titleSpacing: 0, + centerTitle: isCentered, actions: [ if (!_isDetailPaneActive && _canOpenDetailPane()) ...[ (_pageStates[index]?.favoriteOverride ?? file.fdIsFavorite) == true @@ -921,3 +932,37 @@ class _PageState { bool isProcessingFavorite = false; bool? favoriteOverride; } + +class _AppBarTitle extends StatelessWidget { + const _AppBarTitle({ + required this.file, + required this.isCentered, + }); + + @override + Widget build(BuildContext context) { + final locale = Localizations.localeOf(context).languageCode; + final localTime = file.fdDateTime.toLocal(); + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + isCentered ? CrossAxisAlignment.center : CrossAxisAlignment.start, + children: [ + Text( + (localTime.year == DateTime.now().year + ? DateFormat.MMMd(locale) + : DateFormat.yMMMd(locale)) + .format(localTime), + style: Theme.of(context).textTheme.titleMedium, + ), + Text( + DateFormat.jm(locale).format(localTime), + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ); + } + + final FileDescriptor file; + final bool isCentered; +}