2023-05-04 10:06:00 +00:00
|
|
|
import "package:flutter/cupertino.dart";
|
2023-05-04 10:30:49 +00:00
|
|
|
import "package:intl/intl.dart";
|
2023-05-04 10:06:00 +00:00
|
|
|
import 'package:photos/core/constants.dart';
|
2023-05-04 10:19:47 +00:00
|
|
|
import "package:photos/generated/l10n.dart";
|
2023-05-04 10:06:00 +00:00
|
|
|
import "package:photos/theme/ente_theme.dart";
|
|
|
|
|
2023-05-31 19:38:01 +00:00
|
|
|
class GroupHeaderWidget extends StatelessWidget {
|
2023-05-04 10:06:00 +00:00
|
|
|
final int timestamp;
|
|
|
|
final int gridSize;
|
|
|
|
|
2023-05-31 19:38:01 +00:00
|
|
|
const GroupHeaderWidget({
|
2023-05-04 10:06:00 +00:00
|
|
|
super.key,
|
|
|
|
required this.timestamp,
|
|
|
|
required this.gridSize,
|
|
|
|
});
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
final colorScheme = getEnteColorScheme(context);
|
|
|
|
final textTheme = getEnteTextTheme(context);
|
|
|
|
final textStyle =
|
|
|
|
gridSize < photoGridSizeMax ? textTheme.body : textTheme.small;
|
|
|
|
final double horizontalPadding = gridSize < photoGridSizeMax ? 12.0 : 8.0;
|
|
|
|
final double verticalPadding = gridSize < photoGridSizeMax ? 12.0 : 14.0;
|
2023-05-04 10:30:49 +00:00
|
|
|
final String dayTitle = _getDayTitle(context, timestamp);
|
2023-05-04 10:06:00 +00:00
|
|
|
return Padding(
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: horizontalPadding,
|
|
|
|
vertical: verticalPadding,
|
|
|
|
),
|
|
|
|
child: Container(
|
|
|
|
alignment: Alignment.centerLeft,
|
|
|
|
child: Text(
|
2023-05-04 10:19:47 +00:00
|
|
|
dayTitle,
|
|
|
|
style: (dayTitle == S.of(context).dayToday)
|
2023-05-04 10:06:00 +00:00
|
|
|
? textStyle
|
|
|
|
: textStyle.copyWith(color: colorScheme.textMuted),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
2023-05-04 10:30:49 +00:00
|
|
|
|
|
|
|
String _getDayTitle(BuildContext context, int timestamp) {
|
|
|
|
final date = DateTime.fromMicrosecondsSinceEpoch(timestamp);
|
|
|
|
final now = DateTime.now();
|
|
|
|
|
|
|
|
if (date.year == now.year && date.month == now.month) {
|
|
|
|
if (date.day == now.day) {
|
|
|
|
return S.of(context).dayToday;
|
|
|
|
} else if (date.day == now.day - 1) {
|
|
|
|
return S.of(context).dayYesterday;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (date.year != DateTime.now().year) {
|
|
|
|
return DateFormat.yMMMEd(Localizations.localeOf(context).languageCode)
|
|
|
|
.format(date);
|
|
|
|
} else {
|
|
|
|
return DateFormat.MMMEd(Localizations.localeOf(context).languageCode)
|
|
|
|
.format(date);
|
|
|
|
}
|
|
|
|
}
|
2023-05-04 10:06:00 +00:00
|
|
|
}
|