Added option for file deletion
This commit is contained in:
		| @@ -9,6 +9,8 @@ import 'package:flutter/material.dart'; | ||||
| import 'package:jiffy/jiffy.dart'; | ||||
| import 'package:marianum_mobile/api/marianumcloud/webdav/queries/listFiles/cacheableFile.dart'; | ||||
| import 'package:marianum_mobile/screen/pages/files/files.dart'; | ||||
| import 'package:marianum_mobile/widget/confirmDialog.dart'; | ||||
| import 'package:marianum_mobile/widget/unimplementedDialog.dart'; | ||||
| import 'package:path_provider/path_provider.dart'; | ||||
|  | ||||
| import '../../../api/marianumcloud/webdav/webdavApi.dart'; | ||||
| @@ -16,7 +18,8 @@ import '../../../api/marianumcloud/webdav/webdavApi.dart'; | ||||
| class FileElement extends StatefulWidget { | ||||
|   final CacheableFile file; | ||||
|   final List<String> path; | ||||
|   const FileElement(this.file, this.path, {Key? key}) : super(key: key); | ||||
|   final void Function() refetch; | ||||
|   const FileElement(this.file, this.path, this.refetch, {Key? key}) : super(key: key); | ||||
|  | ||||
|   static Future<DownloaderCore> download(String remotePath, String name, Function(double) onProgress, Function(OpenResult) onDone) async { | ||||
|     Directory paths = await getApplicationDocumentsDirectory(); | ||||
| @@ -147,23 +150,36 @@ class _FileElementState extends State<FileElement> { | ||||
|         } | ||||
|       }, | ||||
|       onLongPress: () { | ||||
|         showModalBottomSheet<void>( | ||||
|           context: context, | ||||
|           builder: (context) { | ||||
|             return ListView( | ||||
|               children: [ | ||||
|                 ListTile( | ||||
|                   leading: const Icon(Icons.delete_outline), | ||||
|                   title: Text("'${widget.file.name}' Löschen"), | ||||
|                 ), | ||||
|                 const ListTile( | ||||
|                   leading: Icon(Icons.share_outlined), | ||||
|                   title: Text("Teilen"), | ||||
|                 ) | ||||
|               ], | ||||
|             ); | ||||
|           }, | ||||
|         ); | ||||
|         showDialog(context: context, builder: (context) { | ||||
|           return SimpleDialog( | ||||
|             children: [ | ||||
|               ListTile( | ||||
|                 leading: const Icon(Icons.delete_outline), | ||||
|                 title: const Text("Löschen"), | ||||
|                 onTap: () { | ||||
|                   Navigator.of(context).pop(); | ||||
|                   showDialog(context: context, builder: (context) => ConfirmDialog( | ||||
|                     title: "Element löschen?", | ||||
|                     content: "Das Element wird unwiederruflich gelöscht.", | ||||
|                     onConfirm: () { | ||||
|                       WebdavApi.webdav | ||||
|                           .then((value) => value.delete(widget.file.path)) | ||||
|                           .then((value) => widget.refetch()); | ||||
|                     } | ||||
|                   )); | ||||
|                 }, | ||||
|               ), | ||||
|               ListTile( | ||||
|                 leading: const Icon(Icons.share_outlined), | ||||
|                 title: const Text("Teilen"), | ||||
|                 onTap: () { | ||||
|                   Navigator.of(context).pop(); | ||||
|                   UnimplementedDialog.show(context); | ||||
|                 }, | ||||
|               ) | ||||
|             ], | ||||
|           ); | ||||
|         }); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
|   | ||||
| @@ -226,7 +226,7 @@ class _FilesState extends State<Files> { | ||||
|             itemCount: files.length, | ||||
|             itemBuilder: (context, index) { | ||||
|               CacheableFile file = files.toList()[index]; | ||||
|               return FileElement(file, widget.path); | ||||
|               return FileElement(file, widget.path, _query); | ||||
|             }, | ||||
|           ), | ||||
|         ) | ||||
|   | ||||
							
								
								
									
										29
									
								
								lib/widget/confirmDialog.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								lib/widget/confirmDialog.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| class ConfirmDialog extends StatelessWidget { | ||||
|   final String title; | ||||
|   final String content; | ||||
|   final IconData? icon; | ||||
|   final String confirmButton; | ||||
|   final String cancelButton; | ||||
|   final void Function() onConfirm; | ||||
|   const ConfirmDialog({Key? key, required this.title, this.content = "", this.icon, this.confirmButton = "Ok", this.cancelButton = "Abbrechen", required this.onConfirm}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return AlertDialog( | ||||
|       icon: icon != null ? Icon(icon) : null, | ||||
|       title: Text(title), | ||||
|       content: Text(content), | ||||
|       actions: [ | ||||
|         TextButton(onPressed: () { | ||||
|           Navigator.of(context).pop(); | ||||
|         }, child: Text(cancelButton)), | ||||
|         TextButton(onPressed: () { | ||||
|           onConfirm(); | ||||
|           Navigator.of(context).pop(); | ||||
|         }, child: Text(confirmButton)), | ||||
|       ], | ||||
|     ); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user