123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import 'package:flutter/material.dart';
- import 'package:photos/core/configuration.dart';
- import 'package:photos/core/event_bus.dart';
- import 'package:photos/db/files_db.dart';
- import 'package:photos/ente_theme_data.dart';
- import 'package:photos/events/backup_folders_updated_event.dart';
- import 'package:photos/events/files_updated_event.dart';
- import 'package:photos/events/local_photos_updated_event.dart';
- import 'package:photos/models/device_folder.dart';
- import 'package:photos/models/gallery_type.dart';
- import 'package:photos/models/selected_files.dart';
- import 'package:photos/ui/viewer/gallery/gallery.dart';
- import 'package:photos/ui/viewer/gallery/gallery_app_bar_widget.dart';
- import 'package:photos/ui/viewer/gallery/gallery_overlay_widget.dart';
- class DeviceFolderPage extends StatelessWidget {
- final DeviceFolder folder;
- final _selectedFiles = SelectedFiles();
- DeviceFolderPage(this.folder, {Key key}) : super(key: key);
- @override
- Widget build(Object context) {
- final gallery = Gallery(
- asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
- return FilesDB.instance.getFilesInPath(
- folder.path,
- creationStartTime,
- creationEndTime,
- limit: limit,
- asc: asc,
- );
- },
- reloadEvent: Bus.instance.on<LocalPhotosUpdatedEvent>(),
- removalEventTypes: const {
- EventType.deletedFromDevice,
- EventType.deletedFromEverywhere,
- },
- tagPrefix: "device_folder:" + folder.path,
- selectedFiles: _selectedFiles,
- header: Configuration.instance.hasConfiguredAccount()
- ? _getHeaderWidget()
- : Container(),
- initialFiles: [folder.thumbnail],
- footer: const SizedBox(height: 32),
- );
- return Scaffold(
- appBar: PreferredSize(
- preferredSize: const Size.fromHeight(50.0),
- child: GalleryAppBarWidget(
- GalleryType.localFolder,
- folder.name,
- _selectedFiles,
- path: folder.thumbnail.deviceFolder,
- ),
- ),
- body: Stack(
- alignment: Alignment.bottomCenter,
- children: [
- gallery,
- GalleryOverlayWidget(
- GalleryType.localFolder,
- _selectedFiles,
- )
- ],
- ),
- );
- }
- Widget _getHeaderWidget() {
- return BackupConfigurationHeaderWidget(folder.path);
- }
- }
- class BackupConfigurationHeaderWidget extends StatefulWidget {
- final String path;
- const BackupConfigurationHeaderWidget(this.path, {Key key}) : super(key: key);
- @override
- State<BackupConfigurationHeaderWidget> createState() =>
- _BackupConfigurationHeaderWidgetState();
- }
- class _BackupConfigurationHeaderWidgetState
- extends State<BackupConfigurationHeaderWidget> {
- @override
- Widget build(BuildContext context) {
- final isBackedUp =
- Configuration.instance.getPathsToBackUp().contains(widget.path);
- return Container(
- padding: const EdgeInsets.only(left: 20, right: 12, top: 4, bottom: 4),
- margin: const EdgeInsets.only(bottom: 12),
- color: Theme.of(context).colorScheme.backupEnabledBgColor,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- isBackedUp
- ? const Text("Backup enabled")
- : Text(
- "Backup disabled",
- style: TextStyle(
- color: Theme.of(context)
- .colorScheme
- .defaultTextColor
- .withOpacity(0.7),
- ),
- ),
- Switch(
- value: isBackedUp,
- onChanged: (value) async {
- final current = Configuration.instance.getPathsToBackUp();
- if (value) {
- current.add(widget.path);
- } else {
- current.remove(widget.path);
- }
- await Configuration.instance.setPathsToBackUp(current);
- setState(() {});
- Bus.instance.fire(BackupFoldersUpdatedEvent());
- },
- ),
- ],
- ),
- );
- }
- }
|