@@ -102,20 +102,18 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
102102 mListView .setOnItemLongClickListener (new AdapterView .OnItemLongClickListener () {
103103 @ Override
104104 public boolean onItemLongClick (AdapterView <?> parent , View view , int position , long id ) {
105- if (selectedPosition == position ) {
106- selectedPosition = - 1 ;
105+ if (mAdapter . isPositionSelected ( position ) ) {
106+ mAdapter . removeSelectedPosition ( position ) ;
107107 view .setBackgroundResource (0 );
108- restoreColorScheme ();
108+ if (mAdapter .selectedPositionsSize () == 0 )
109+ restoreColorScheme ();
109110 } else {
110- if (selectedView != null ) {
111- selectedView .setBackgroundResource (0 );
112- }
113- selectedView = view ;
114- selectedPosition = position ;
115- Log .d (TAG , "Position: " + selectedPosition );
116111 view .setBackgroundColor (ContextCompat .getColor (getActivity (), R .color .color_divider ));
112+ mAdapter .putSelectedPosition (position );
117113 changeColorScheme ();
118114 }
115+
116+
119117 return true ;
120118 }
121119 });
@@ -126,6 +124,23 @@ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, l
126124 */
127125 @ Override
128126 public void onItemClick (AdapterView <?> parent , View view , int position , long id ) {
127+ if (mAdapter .selectedPositionsSize () > 0 )
128+ {
129+ if (mAdapter .isPositionSelected (position )) {
130+ mAdapter .removeSelectedPosition (position );
131+ view .setBackgroundResource (0 );
132+ if (mAdapter .selectedPositionsSize () == 0 )
133+ restoreColorScheme ();
134+ }
135+ else {
136+ view .setBackgroundColor (ContextCompat .getColor (mToolkit , R .color .color_divider ));
137+ mAdapter .putSelectedPosition (position );
138+ Log .d (TAG , "Position: " + position );
139+ changeColorScheme ();
140+
141+ }
142+ return ;
143+ }
129144 SavedProject project = draftProjects .get (position );
130145 Template [] templates = Template .values ();
131146 for (int i = 0 ; i < templates .length ; i ++) {
@@ -262,6 +277,7 @@ public void onPrepareOptionsMenu(Menu menu) {
262277 /**
263278 * {@inheritDoc}
264279 */
280+
265281 @ Override
266282 public boolean onOptionsItemSelected (MenuItem item ) {
267283 int id = item .getItemId ();
@@ -281,11 +297,32 @@ public boolean onOptionsItemSelected(MenuItem item) {
281297 @ Override
282298 public void onClick (View v ) {
283299 dialogDelete .dismiss ();
284- deleteItem ( selectedPosition );
300+ deleteItems ( );
285301 restoreSelectedView ();
286302 }
287303 });
288304 break ;
305+
306+ case R .id .action_select_all :
307+ for (int i =0 ;i <mAdapter .getCount ();i ++) {
308+ if (!mAdapter .isPositionSelected (i ))
309+ {
310+ mListView .getChildAt (i ).setBackgroundColor (ContextCompat .getColor (mToolkit , R .color .color_divider ));
311+ mAdapter .putSelectedPosition (i );
312+ changeColorScheme ();
313+ }
314+ }
315+ break ;
316+
317+ case R .id .action_unselect_all :
318+ for (int i =0 ;i <mAdapter .getCount ();i ++)
319+ if (mAdapter .isPositionSelected (i )) {
320+ mListView .getChildAt (i ).setBackgroundColor (0 );
321+ mAdapter .removeSelectedPosition (i );
322+ }
323+ restoreColorScheme ();
324+ break ;
325+
289326 case R .id .action_delete_all :
290327
291328 final AlertDialog dialogDeleteAll = new AlertDialog .Builder (activity )
@@ -314,18 +351,24 @@ public void onClick(View v) {
314351 /**
315352 * @brief Removes selected project item
316353 */
317- private void deleteItem (int selectedPosition ) {
318- SavedProject project = draftProjects .get (selectedPosition );
319- File file = new File (project .getFile ().getPath ());
320- boolean deleted = file .delete ();
321- if (deleted ) {
322- draftProjects .remove (selectedPosition );
323- mAdapter .notifyDataSetChanged ();
324- setEmptyText ();
325- Toast .makeText (activity , getResources ().getString (R .string .draft_deleted ), Toast .LENGTH_SHORT ).show ();
326- } else {
327- Toast .makeText (activity , getResources ().getString (R .string .draft_deleted_failed ), Toast .LENGTH_SHORT ).show ();
354+ private void deleteItems () {
355+ ArrayList <Integer > selectedPositions = mAdapter .getSelectedPositions ();
356+ boolean deleted = false ;
357+ for (int selectedPosition : selectedPositions ) {
358+ SavedProject project = draftProjects .get (selectedPosition );
359+ File file = new File (project .getFile ().getPath ());
360+ deleted = file .delete ();
361+ if (deleted ) {
362+ draftProjects .remove (selectedPosition );
363+ mAdapter .removeSelectedPosition (selectedPosition );
364+ mAdapter .notifyDataSetChanged ();
365+ setEmptyText ();
366+ }
328367 }
368+ if (deleted )
369+ Toast .makeText (activity , "Project Successfully Deleted!" , Toast .LENGTH_SHORT ).show ();
370+ else
371+ Toast .makeText (activity , "Project Deletion Failed!" , Toast .LENGTH_SHORT ).show ();
329372 }
330373
331374 /**
@@ -352,9 +395,6 @@ private void deleteAllDrafts() {
352395 * @brief Removes selected color from the selected ListView item when switching from edit mode to normal mode
353396 */
354397 private void restoreSelectedView () {
355- if (selectedView != null ) {
356- selectedView .setBackgroundResource (0 );
357- }
358398 restoreColorScheme ();
359399 }
360400}
0 commit comments