From 23f878b962b05d0f47c6423a5f2aa81049e90bdc Mon Sep 17 00:00:00 2001 From: ashilkn Date: Wed, 15 Mar 2023 16:17:12 +0530 Subject: [PATCH] Created InfoItem for locationTags in file details --- lib/ui/viewer/file/file_details_widget.dart | 7 +++ .../file_details/location_tags_widget.dart | 54 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 lib/ui/viewer/file_details/location_tags_widget.dart diff --git a/lib/ui/viewer/file/file_details_widget.dart b/lib/ui/viewer/file/file_details_widget.dart index 12c9a4b58..041698694 100644 --- a/lib/ui/viewer/file/file_details_widget.dart +++ b/lib/ui/viewer/file/file_details_widget.dart @@ -16,6 +16,7 @@ import 'package:photos/ui/viewer/file_details/backed_up_time_item_widget.dart'; import "package:photos/ui/viewer/file_details/creation_time_item_widget.dart"; import 'package:photos/ui/viewer/file_details/exif_item_widgets.dart'; import "package:photos/ui/viewer/file_details/file_properties_item_widget.dart"; +import "package:photos/ui/viewer/file_details/location_tags_widget.dart"; import "package:photos/ui/viewer/file_details/objects_item_widget.dart"; import "package:photos/utils/exif_util.dart"; @@ -125,6 +126,12 @@ class _FileDetailsWidgetState extends State { }, ), ); + if (FeatureFlagService.instance.isInternalUserOrDebugBuild()) { + fileDetailsTiles.addAll([ + LocationTagsWidget(widget.file), + const FileDetailsDivider(), + ]); + } if (_isImage) { fileDetailsTiles.addAll([ ValueListenableBuilder( diff --git a/lib/ui/viewer/file_details/location_tags_widget.dart b/lib/ui/viewer/file_details/location_tags_widget.dart new file mode 100644 index 000000000..d26ae0bf4 --- /dev/null +++ b/lib/ui/viewer/file_details/location_tags_widget.dart @@ -0,0 +1,54 @@ +import "dart:async"; + +import "package:flutter/material.dart"; +import "package:photos/models/file.dart"; +import "package:photos/services/location_service.dart"; +import "package:photos/ui/components/buttons/chip_button_widget.dart"; +import "package:photos/ui/components/buttons/inline_button_widget.dart"; +import "package:photos/ui/components/info_item_widget.dart"; + +class LocationTagsWidget extends StatefulWidget { + final File file; + const LocationTagsWidget(this.file, {super.key}); + + @override + State createState() => _LocationTagsWidgetState(); +} + +class _LocationTagsWidgetState extends State { + String title = "Add location"; + IconData leadingIcon = Icons.add_location_alt_outlined; + bool hasChipButtons = false; + late final Future> locationTagChips; + @override + void initState() { + locationTagChips = _getLocationTags(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return InfoItemWidget( + leadingIcon: Icons.add_location_alt_outlined, + title: "Add location", + subtitleSection: locationTagChips, + hasChipButtons: hasChipButtons, + ); + } + + Future> _getLocationTags() async { + final locationTags = + LocationService.instance.getLocationsByFileID(widget.file.generatedID!); + if (locationTags.isEmpty) { + return [ + InlineButtonWidget("Group nearby photos", () {}), + ]; + } + setState(() { + title = "Location"; + leadingIcon = Icons.pin_drop_outlined; + hasChipButtons = true; + }); + return locationTags.map((e) => ChipButtonWidget(e)).toList(); + } +}