File details: Moved creation time's tile to a separate widget
This commit is contained in:
parent
6bcb6f0e84
commit
927a313c3b
|
@ -21,6 +21,7 @@ class InfoItemWidget extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
debugPrint("InfoItemWidget.build -------");
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import "package:exif/exif.dart";
|
||||
import "package:flutter/cupertino.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
|
||||
import "package:logging/logging.dart";
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:photo_manager/photo_manager.dart';
|
||||
|
@ -27,6 +26,7 @@ import "package:photos/ui/components/info_item_widget.dart";
|
|||
import 'package:photos/ui/components/title_bar_widget.dart';
|
||||
import "package:photos/ui/viewer/file/exif_info_dialog.dart";
|
||||
import 'package:photos/ui/viewer/file/file_caption_widget.dart';
|
||||
import "package:photos/ui/viewer/file_details/creation_time_item_widget.dart";
|
||||
import "package:photos/ui/viewer/gallery/collection_page.dart";
|
||||
import "package:photos/utils/date_time_util.dart";
|
||||
import "package:photos/utils/exif_util.dart";
|
||||
|
@ -120,26 +120,7 @@ class _FileDetailsWidgetState extends State<FileDetailsWidget> {
|
|||
? FileCaptionWidget(file: widget.file)
|
||||
: FileCaptionReadyOnly(caption: widget.file.caption!),
|
||||
),
|
||||
InfoItemWidget(
|
||||
key: const ValueKey("Creation time"),
|
||||
leadingIcon: Icons.calendar_today_outlined,
|
||||
title: getFullDate(
|
||||
DateTime.fromMicrosecondsSinceEpoch(file.creationTime!),
|
||||
),
|
||||
subtitleSection: Future.value([
|
||||
Text(
|
||||
getTimeIn12hrFormat(dateTime) + " " + dateTime.timeZoneName,
|
||||
style: subtitleTextTheme,
|
||||
),
|
||||
]),
|
||||
editOnTap: ((widget.file.ownerID == null ||
|
||||
widget.file.ownerID == _currentUserID) &&
|
||||
widget.file.uploadedFileID != null)
|
||||
? () {
|
||||
_showDateTimePicker(widget.file);
|
||||
}
|
||||
: null,
|
||||
),
|
||||
CreationTimeItem(file, _currentUserID),
|
||||
InfoItemWidget(
|
||||
key: const ValueKey("File name and info"),
|
||||
leadingIcon:
|
||||
|
@ -530,35 +511,4 @@ class _FileDetailsWidgetState extends State<FileDetailsWidget> {
|
|||
},
|
||||
);
|
||||
}
|
||||
|
||||
void _showDateTimePicker(File file) async {
|
||||
final dateResult = await DatePicker.showDatePicker(
|
||||
context,
|
||||
minTime: DateTime(1800, 1, 1),
|
||||
maxTime: DateTime.now(),
|
||||
currentTime: DateTime.fromMicrosecondsSinceEpoch(file.creationTime!),
|
||||
locale: LocaleType.en,
|
||||
theme: Theme.of(context).colorScheme.dateTimePickertheme,
|
||||
);
|
||||
if (dateResult == null) {
|
||||
return;
|
||||
}
|
||||
final dateWithTimeResult = await DatePicker.showTime12hPicker(
|
||||
context,
|
||||
showTitleActions: true,
|
||||
currentTime: dateResult,
|
||||
locale: LocaleType.en,
|
||||
theme: Theme.of(context).colorScheme.dateTimePickertheme,
|
||||
);
|
||||
if (dateWithTimeResult != null) {
|
||||
if (await editTime(
|
||||
context,
|
||||
List.of([widget.file]),
|
||||
dateWithTimeResult.microsecondsSinceEpoch,
|
||||
)) {
|
||||
widget.file.creationTime = dateWithTimeResult.microsecondsSinceEpoch;
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
76
lib/ui/viewer/file_details/creation_time_item_widget.dart
Normal file
76
lib/ui/viewer/file_details/creation_time_item_widget.dart
Normal file
|
@ -0,0 +1,76 @@
|
|||
import "package:flutter/material.dart";
|
||||
import "package:flutter_datetime_picker/flutter_datetime_picker.dart";
|
||||
import "package:photos/ente_theme_data.dart";
|
||||
import "package:photos/models/file.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/components/info_item_widget.dart";
|
||||
import "package:photos/utils/date_time_util.dart";
|
||||
import "package:photos/utils/magic_util.dart";
|
||||
|
||||
class CreationTimeItem extends StatefulWidget {
|
||||
final File file;
|
||||
final int currentUserID;
|
||||
const CreationTimeItem(this.file, this.currentUserID, {super.key});
|
||||
|
||||
@override
|
||||
State<CreationTimeItem> createState() => _CreationTimeItemState();
|
||||
}
|
||||
|
||||
class _CreationTimeItemState extends State<CreationTimeItem> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final dateTime =
|
||||
DateTime.fromMicrosecondsSinceEpoch(widget.file.creationTime!);
|
||||
return InfoItemWidget(
|
||||
key: const ValueKey("Creation time"),
|
||||
leadingIcon: Icons.calendar_today_outlined,
|
||||
title: getFullDate(
|
||||
DateTime.fromMicrosecondsSinceEpoch(widget.file.creationTime!),
|
||||
),
|
||||
subtitleSection: Future.value([
|
||||
Text(
|
||||
getTimeIn12hrFormat(dateTime) + " " + dateTime.timeZoneName,
|
||||
style: getEnteTextTheme(context).smallMuted,
|
||||
),
|
||||
]),
|
||||
editOnTap: ((widget.file.ownerID == null ||
|
||||
widget.file.ownerID == widget.currentUserID) &&
|
||||
widget.file.uploadedFileID != null)
|
||||
? () {
|
||||
_showDateTimePicker(widget.file);
|
||||
}
|
||||
: null,
|
||||
);
|
||||
}
|
||||
|
||||
void _showDateTimePicker(File file) async {
|
||||
final dateResult = await DatePicker.showDatePicker(
|
||||
context,
|
||||
minTime: DateTime(1800, 1, 1),
|
||||
maxTime: DateTime.now(),
|
||||
currentTime: DateTime.fromMicrosecondsSinceEpoch(file.creationTime!),
|
||||
locale: LocaleType.en,
|
||||
theme: Theme.of(context).colorScheme.dateTimePickertheme,
|
||||
);
|
||||
if (dateResult == null) {
|
||||
return;
|
||||
}
|
||||
final dateWithTimeResult = await DatePicker.showTime12hPicker(
|
||||
context,
|
||||
showTitleActions: true,
|
||||
currentTime: dateResult,
|
||||
locale: LocaleType.en,
|
||||
theme: Theme.of(context).colorScheme.dateTimePickertheme,
|
||||
);
|
||||
if (dateWithTimeResult != null) {
|
||||
if (await editTime(
|
||||
context,
|
||||
List.of([widget.file]),
|
||||
dateWithTimeResult.microsecondsSinceEpoch,
|
||||
)) {
|
||||
widget.file.creationTime = dateWithTimeResult.microsecondsSinceEpoch;
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue