@@ -105,20 +105,18 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
105
105
mListView .setOnItemLongClickListener (new AdapterView .OnItemLongClickListener () {
106
106
@ Override
107
107
public boolean onItemLongClick (AdapterView <?> parent , View view , int position , long id ) {
108
- if (selectedPosition == position ) {
109
- selectedPosition = - 1 ;
108
+ if (mAdapter . isPositionSelected ( position ) ) {
109
+ mAdapter . removeSelectedPosition ( position ) ;
110
110
view .setBackgroundResource (0 );
111
- restoreColorScheme ();
111
+ if (mAdapter .selectedPositionsSize () == 0 )
112
+ restoreColorScheme ();
112
113
} else {
113
- if (selectedView != null ) {
114
- selectedView .setBackgroundResource (0 );
115
- }
116
- selectedView = view ;
117
- selectedPosition = position ;
118
- Log .d (TAG , "Position: " + selectedPosition );
119
114
view .setBackgroundColor (ContextCompat .getColor (getActivity (), R .color .color_divider ));
115
+ mAdapter .putSelectedPosition (position );
120
116
changeColorScheme ();
121
117
}
118
+
119
+
122
120
return true ;
123
121
}
124
122
});
@@ -129,6 +127,23 @@ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, l
129
127
*/
130
128
@ Override
131
129
public void onItemClick (AdapterView <?> parent , View view , int position , long id ) {
130
+ if (mAdapter .selectedPositionsSize () > 0 )
131
+ {
132
+ if (mAdapter .isPositionSelected (position )) {
133
+ mAdapter .removeSelectedPosition (position );
134
+ view .setBackgroundResource (0 );
135
+ if (mAdapter .selectedPositionsSize () == 0 )
136
+ restoreColorScheme ();
137
+ }
138
+ else {
139
+ view .setBackgroundColor (ContextCompat .getColor (mToolkit , R .color .color_divider ));
140
+ mAdapter .putSelectedPosition (position );
141
+ Log .d (TAG , "Position: " + position );
142
+ changeColorScheme ();
143
+
144
+ }
145
+ return ;
146
+ }
132
147
SavedProject project = draftProjects .get (position );
133
148
Template [] templates = Template .values ();
134
149
for (int i = 0 ; i < templates .length ; i ++) {
@@ -271,6 +286,7 @@ public void onPrepareOptionsMenu(Menu menu) {
271
286
/**
272
287
* {@inheritDoc}
273
288
*/
289
+
274
290
@ Override
275
291
public boolean onOptionsItemSelected (MenuItem item ) {
276
292
int id = item .getItemId ();
@@ -280,21 +296,45 @@ public boolean onOptionsItemSelected(MenuItem item) {
280
296
281
297
final MaterialDialog dialogDelete = new MaterialDialog .Builder (activity )
282
298
.title (R .string .dialog_delete_title )
283
- .content (R .string .dialog_delete_msg )
284
299
.positiveText (R .string .dialog_yes )
285
300
.negativeText (R .string .dialog_no )
286
301
.build ();
302
+ if (mAdapter .selectedPositionsSize ()==1 )
303
+ dialogDelete .setContent (R .string .dialog_delete_msg );
304
+ else
305
+ dialogDelete .setContent (R .string .dialog_delete_multiple );
287
306
288
307
dialogDelete .getActionButton (DialogAction .POSITIVE ).setOnClickListener (new View .OnClickListener () {
289
308
@ Override
290
309
public void onClick (View v ) {
291
310
dialogDelete .dismiss ();
292
- deleteItem ( selectedPosition );
311
+ deleteItems ( );
293
312
restoreSelectedView ();
294
313
}
295
314
});
296
315
dialogDelete .show ();
297
316
break ;
317
+
318
+ case R .id .action_select_all :
319
+ for (int i =0 ;i <mAdapter .getCount ();i ++) {
320
+ if (!mAdapter .isPositionSelected (i ))
321
+ {
322
+ mListView .getChildAt (i ).setBackgroundColor (ContextCompat .getColor (mToolkit , R .color .color_divider ));
323
+ mAdapter .putSelectedPosition (i );
324
+ changeColorScheme ();
325
+ }
326
+ }
327
+ break ;
328
+
329
+ case R .id .action_unselect_all :
330
+ for (int i =0 ;i <mAdapter .getCount ();i ++)
331
+ if (mAdapter .isPositionSelected (i )) {
332
+ mListView .getChildAt (i ).setBackgroundColor (0 );
333
+ mAdapter .removeSelectedPosition (i );
334
+ }
335
+ restoreColorScheme ();
336
+ break ;
337
+
298
338
case R .id .action_delete_all :
299
339
300
340
final MaterialDialog dialogDeleteAll = new MaterialDialog .Builder (activity )
@@ -323,18 +363,24 @@ public void onClick(View v) {
323
363
/**
324
364
* @brief Removes selected project item
325
365
*/
326
- private void deleteItem (int selectedPosition ) {
327
- SavedProject project = draftProjects .get (selectedPosition );
328
- File file = new File (project .getFile ().getPath ());
329
- boolean deleted = file .delete ();
330
- if (deleted ) {
331
- draftProjects .remove (selectedPosition );
332
- mAdapter .notifyDataSetChanged ();
333
- setEmptyText ();
334
- Toast .makeText (activity , getResources ().getString (R .string .draft_deleted ), Toast .LENGTH_SHORT ).show ();
335
- } else {
336
- Toast .makeText (activity , getResources ().getString (R .string .draft_deleted_failed ), Toast .LENGTH_SHORT ).show ();
366
+ private void deleteItems () {
367
+ ArrayList <Integer > selectedPositions = mAdapter .getSelectedPositions ();
368
+ boolean deleted = false ;
369
+ for (int selectedPosition : selectedPositions ) {
370
+ SavedProject project = draftProjects .get (selectedPosition );
371
+ File file = new File (project .getFile ().getPath ());
372
+ deleted = file .delete ();
373
+ if (deleted ) {
374
+ draftProjects .remove (selectedPosition );
375
+ mAdapter .removeSelectedPosition (selectedPosition );
376
+ mAdapter .notifyDataSetChanged ();
377
+ setEmptyText ();
378
+ }
337
379
}
380
+ if (deleted )
381
+ Toast .makeText (activity , "Project Successfully Deleted!" , Toast .LENGTH_SHORT ).show ();
382
+ else
383
+ Toast .makeText (activity , "Project Deletion Failed!" , Toast .LENGTH_SHORT ).show ();
338
384
}
339
385
340
386
/**
@@ -361,9 +407,6 @@ private void deleteAllDrafts() {
361
407
* @brief Removes selected color from the selected ListView item when switching from edit mode to normal mode
362
408
*/
363
409
private void restoreSelectedView () {
364
- if (selectedView != null ) {
365
- selectedView .setBackgroundResource (0 );
366
- }
367
410
restoreColorScheme ();
368
411
}
369
412
}
0 commit comments