Skip to content

Commit 7e3f924

Browse files
authored
Merge pull request #295 from BuildmLearn/backpress-fix
FIXED #255, Backpress should deselect any selected item if any
2 parents beda489 + f4d1567 commit 7e3f924

File tree

3 files changed

+76
-18
lines changed

3 files changed

+76
-18
lines changed

source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/DraftsFragment.java

+26-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.support.v7.app.AlertDialog;
1212
import android.support.v7.app.AppCompatActivity;
1313
import android.util.Log;
14+
import android.view.KeyEvent;
1415
import android.view.LayoutInflater;
1516
import android.view.Menu;
1617
import android.view.MenuItem;
@@ -117,6 +118,21 @@ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, l
117118
return true;
118119
}
119120
});
121+
122+
getView().setFocusableInTouchMode(true);
123+
getView().requestFocus();
124+
getView().setOnKeyListener(new View.OnKeyListener() {
125+
@Override
126+
public boolean onKey(View v, int keyCode, KeyEvent event) {
127+
if (keyCode == KeyEvent.KEYCODE_BACK) {
128+
if (mAdapter.selectedPositionsSize() > 0) {
129+
unselectAll();
130+
return true;
131+
}
132+
}
133+
return false;
134+
}
135+
});
120136
}
121137

122138
/**
@@ -316,12 +332,7 @@ public void onClick(View v) {
316332
break;
317333

318334
case R.id.action_unselect_all:
319-
for(int i=0;i<mAdapter.getCount();i++)
320-
if(mAdapter.isPositionSelected(i)) {
321-
mListView.getChildAt(i).setBackgroundColor(0);
322-
mAdapter.removeSelectedPosition(i);
323-
}
324-
restoreColorScheme();
335+
unselectAll();
325336
break;
326337

327338
case R.id.action_delete_all:
@@ -349,6 +360,15 @@ public void onClick(View v) {
349360
return super.onOptionsItemSelected(item);
350361
}
351362

363+
private void unselectAll() {
364+
for (int i = 0; i < mAdapter.getCount(); i++)
365+
if (mAdapter.isPositionSelected(i)) {
366+
mListView.getChildAt(i).setBackgroundColor(0);
367+
mAdapter.removeSelectedPosition(i);
368+
}
369+
restoreColorScheme();
370+
}
371+
352372
/**
353373
* @brief Removes selected project item
354374
*/

source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/LoadApkFragment.java

+25-6
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,21 @@ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, l
147147
return true;
148148
}
149149
});
150+
151+
getView().setFocusableInTouchMode(true);
152+
getView().requestFocus();
153+
getView().setOnKeyListener(new View.OnKeyListener() {
154+
@Override
155+
public boolean onKey(View v, int keyCode, KeyEvent event) {
156+
if (keyCode == KeyEvent.KEYCODE_BACK) {
157+
if (mAdapter.selectedPositionsSize() > 0) {
158+
unselectAll();
159+
return true;
160+
}
161+
}
162+
return false;
163+
}
164+
});
150165
}
151166

152167
/**
@@ -409,12 +424,7 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
409424
break;
410425

411426
case R.id.action_unselect_all:
412-
for(int i=0;i<mAdapter.getCount();i++)
413-
if(mAdapter.isPositionSelected(i)) {
414-
mListView.getChildAt(i).setBackgroundColor(0);
415-
mAdapter.removeSelectedPosition(i);
416-
}
417-
restoreColorScheme();
427+
unselectAll();
418428
break;
419429

420430
default: //do nothing
@@ -423,6 +433,15 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
423433
return super.onOptionsItemSelected(item);
424434
}
425435

436+
public void unselectAll() {
437+
for (int i = 0; i < mAdapter.getCount(); i++)
438+
if (mAdapter.isPositionSelected(i)) {
439+
mListView.getChildAt(i).setBackgroundColor(0);
440+
mAdapter.removeSelectedPosition(i);
441+
}
442+
restoreColorScheme();
443+
}
444+
426445
/**
427446
* @brief Removes selected apk item
428447
*/

source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/LoadProjectFragment.java

+25-6
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,21 @@ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, l
162162
return true;
163163
}
164164
});
165+
166+
getView().setFocusableInTouchMode(true);
167+
getView().requestFocus();
168+
getView().setOnKeyListener(new View.OnKeyListener() {
169+
@Override
170+
public boolean onKey(View v, int keyCode, KeyEvent event) {
171+
if (keyCode == KeyEvent.KEYCODE_BACK) {
172+
if (mAdapter.selectedPositionsSize() > 0) {
173+
unselectAll();
174+
return true;
175+
}
176+
}
177+
return false;
178+
}
179+
});
165180
}
166181

167182
/**
@@ -449,12 +464,7 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
449464
break;
450465

451466
case R.id.action_unselect_all:
452-
for(int i=0;i<mAdapter.getCount();i++)
453-
if(mAdapter.isPositionSelected(i)) {
454-
mListView.getChildAt(i).setBackgroundColor(0);
455-
mAdapter.removeSelectedPosition(i);
456-
}
457-
restoreColorScheme();
467+
unselectAll();
458468
break;
459469

460470
default: //do nothing
@@ -463,6 +473,15 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
463473
return super.onOptionsItemSelected(item);
464474
}
465475

476+
private void unselectAll() {
477+
for (int i = 0; i < mAdapter.getCount(); i++)
478+
if (mAdapter.isPositionSelected(i)) {
479+
mListView.getChildAt(i).setBackgroundColor(0);
480+
mAdapter.removeSelectedPosition(i);
481+
}
482+
restoreColorScheme();
483+
}
484+
466485
/**
467486
* @brief Removes selected project item
468487
*/

0 commit comments

Comments
 (0)