@@ -95,19 +95,12 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
9595 }
9696
9797 void _onEditSelection () async {
98- showDialog (context: context,
99- builder: (BuildContext context) {
100- return EditImageSelectionDialog (
98+ Navigator .of (context).push (
99+ MaterialPageRoute (builder: (_) => EditImagesPage (
101100 catId: int .parse (widget.category),
102101 images: _selectedItems.values.toList (),
103- );
104- }
105- ).whenComplete (() {
106- setState (() {
107- _selectedItems.clear ();
108- _isEditMode = false ;
109- });
110- });
102+ ))
103+ );
111104 }
112105 void _onDownloadSelection () async {
113106 if (await confirmDownloadDialog (context,
@@ -205,6 +198,7 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
205198 }
206199 }
207200 void _onDeleteSelection () async {
201+ print (_imageDeletionMode ());
208202 if (await confirmDeleteDialog (context,
209203 content: appStrings (context).deleteImageCount_title (_selectedItems.length),
210204 )) {
@@ -227,6 +221,38 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
227221 }
228222 }
229223
224+ void _onSelectAll () {
225+ setState (() {
226+ if (_selectedItems.length == imageList.length) {
227+ _selectedItems.clear ();
228+ } else {
229+ imageList.forEach ((image) {
230+ _selectedItems.putIfAbsent (image['id' ], () => image);
231+ });
232+ }
233+ });
234+ }
235+
236+ int _imageDeletionMode () {
237+ int nbUnique = 0 ;
238+ _selectedItems.values.forEach ((image) {
239+ print (image["categories" ]);
240+ if (image["categories" ].length == 1 ) nbUnique++ ;
241+ });
242+ if (nbUnique == 0 ) {
243+ print (appStrings (context).deleteCategory_allImages (_selectedItems.length));
244+ print (appStrings (context).removeSingleImage_title);
245+ return 0 ;
246+ }
247+ if (nbUnique == _selectedItems.length) {
248+ print (appStrings (context).deleteCategory_allImages (_selectedItems.length));
249+ return 1 ;
250+ }
251+ print (appStrings (context).deleteCategory_allImages (_selectedItems.length));
252+ print (appStrings (context).removeSingleImage_title);
253+ return 2 ;
254+ }
255+
230256 handleAlbumSnapshot (AsyncSnapshot albumSnapshot, int nbImages) {
231257 if (albumSnapshot.data['stat' ] == 'fail' ) {
232258 return Center (child: Text (appStrings (context).categoryMainEmtpy));
@@ -251,6 +277,7 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
251277 Widget build (BuildContext context) {
252278 return Scaffold (
253279 resizeToAvoidBottomInset: true ,
280+ extendBody: true ,
254281 body: createListeners (
255282 NestedScrollView (
256283 controller: _controller,
@@ -287,13 +314,18 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
287314 Text ("${_selectedPhotos ()}" , overflow: TextOverflow .fade, softWrap: true ) :
288315 Text (widget.title),
289316 actions: [
317+ _isEditMode ? IconButton (
318+ onPressed: _onSelectAll,
319+ icon: _selectedItems.length == imageList.length ?
320+ Icon (Icons .check_circle) : Icon (Icons .circle_outlined),
321+ ) : SizedBox (),
290322 _isEditMode ? IconButton (
291323 onPressed: closeEditMode,
292324 icon: Icon (Icons .cancel),
293325 ) : widget.isAdmin? IconButton (
294326 onPressed: openEditMode,
295327 icon: Icon (Icons .touch_app_rounded),
296- ) : Container (),
328+ ) : SizedBox (),
297329 ],
298330 );
299331 }
@@ -414,7 +446,7 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
414446 builder: (context) => UploadGalleryViewPage (imageData: mediaList, category: widget.category)
415447 )).whenComplete (() {
416448 setState (() {
417- API .uploader.createDio ();
449+ // API.uploader.createDio();
418450 print ('After upload' ); // refresh
419451 });
420452 });
@@ -442,7 +474,7 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
442474 builder: (context) => UploadGalleryViewPage (imageData: mediaList, category: widget.category)
443475 )).whenComplete (() {
444476 setState (() {
445- API .uploader.createDio ();
477+ // API.uploader.createDio();
446478 print ('After upload' ); // refresh
447479 });
448480 });
@@ -481,9 +513,13 @@ class _CategoryViewPageState extends State<CategoryViewPage> with SingleTickerPr
481513 physics: NeverScrollableScrollPhysics (),
482514 itemBuilder: (BuildContext context, int index) {
483515 var album = albums[index];
484- return AlbumListItem (album, isAdmin: widget.isAdmin, onClose: () {
485- setState (() {});
486- });
516+ return AlbumListItem (album,
517+ isAdmin: widget.isAdmin,
518+ onClose: () {
519+ setState (() {});
520+ },
521+ onOpen: closeEditMode,
522+ );
487523 },
488524 ) : Center (),
489525 imageList.length > 0 ?
0 commit comments