ente/lib/ui/location_search_results_page.dart

72 lines
1.9 KiB
Dart
Raw Normal View History

2020-06-03 14:11:34 +00:00
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
2020-06-03 16:06:49 +00:00
import 'package:photos/models/location.dart';
2020-06-19 23:03:26 +00:00
import 'package:photos/models/file.dart';
import 'package:photos/models/selected_files.dart';
2020-06-03 14:11:34 +00:00
import 'package:photos/ui/gallery.dart';
2020-06-03 16:06:49 +00:00
class ViewPort {
final Location northEast;
final Location southWest;
ViewPort(this.northEast, this.southWest);
2020-06-06 21:12:49 +00:00
@override
String toString() => 'ViewPort(northEast: $northEast, southWest: $southWest)';
2020-06-03 16:06:49 +00:00
}
2020-06-03 14:11:34 +00:00
class LocationSearchResultsPage extends StatefulWidget {
2020-06-03 16:06:49 +00:00
final ViewPort viewPort;
2020-06-03 14:11:34 +00:00
final String name;
2020-06-03 16:06:49 +00:00
LocationSearchResultsPage(this.viewPort, this.name, {Key key})
2020-06-03 14:11:34 +00:00
: super(key: key);
@override
_LocationSearchResultsPageState createState() =>
_LocationSearchResultsPageState();
}
class _LocationSearchResultsPageState extends State<LocationSearchResultsPage> {
final _selectedFiles = SelectedFiles();
2020-06-03 14:11:34 +00:00
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.name),
),
body: Container(
child: Gallery(
tagPrefix: "location_search",
selectedFiles: _selectedFiles,
),
2020-06-03 14:11:34 +00:00
),
);
}
List<File> _getResult() {
2021-04-21 13:09:18 +00:00
List<File> files = [];
2020-06-03 14:11:34 +00:00
final args = Map<String, dynamic>();
2020-06-19 23:03:26 +00:00
args['files'] = files;
2020-06-03 16:06:49 +00:00
args['viewPort'] = widget.viewPort;
return _filterPhotos(args);
2020-06-03 14:11:34 +00:00
}
2020-06-19 23:03:26 +00:00
static List<File> _filterPhotos(Map<String, dynamic> args) {
List<File> files = args['files'];
2020-06-03 16:06:49 +00:00
ViewPort viewPort = args['viewPort'];
2021-09-05 09:27:07 +00:00
final result = <File>[];
2020-06-19 23:03:26 +00:00
for (final file in files) {
if (file.location != null &&
viewPort.northEast.latitude > file.location.latitude &&
viewPort.southWest.latitude < file.location.latitude &&
viewPort.northEast.longitude > file.location.longitude &&
viewPort.southWest.longitude < file.location.longitude) {
result.add(file);
2020-06-03 16:06:49 +00:00
} else {}
2020-06-03 14:11:34 +00:00
}
return result;
}
}