diff --git a/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java b/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java
index f6f0e17d..fec9d06f 100644
--- a/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java
+++ b/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java
@@ -7,7 +7,10 @@ import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AlertDialog;
+import android.view.ActionMode;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
@@ -35,7 +38,7 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
public class ItemsFragment extends android.support.v4.app.Fragment
- implements AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener {
+ implements AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener, ListView.MultiChoiceModeListener {
@BindView(R.id.items_list) ListView mListView;
@BindView(R.id.items_swipe_refresh) SwipeRefreshLayout mSwipeRefreshLayout;
@@ -44,6 +47,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
private String mPath;
private boolean mShowHidden;
+ private int mSelectedItemsCnt;
@Nullable
@Override
@@ -84,6 +88,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
final ItemsAdapter adapter = new ItemsAdapter(getContext(), mItems);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(this);
+ mListView.setMultiChoiceModeListener(this);
}
public void setListener(ItemInteractionListener listener) {
@@ -216,6 +221,48 @@ public class ItemsFragment extends android.support.v4.app.Fragment
return type + "/*";
}
+ @Override
+ public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
+ if (checked) {
+ mSelectedItemsCnt++;
+ } else {
+ mSelectedItemsCnt--;
+ }
+
+ if (mSelectedItemsCnt > 0) {
+ mode.setTitle(String.valueOf(mSelectedItemsCnt));
+ }
+
+ mode.invalidate();
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ mode.getMenuInflater().inflate(R.menu.cab, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ return false;
+ }
+
+ @Override
+ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.cab_delete:
+ mode.finish();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {
+ mSelectedItemsCnt = 0;
+ }
+
public interface ItemInteractionListener {
void itemClicked(String path);
}
diff --git a/app/src/main/res/drawable-v21/selector.xml b/app/src/main/res/drawable-v21/selector.xml
new file mode 100644
index 00000000..4d61c7b4
--- /dev/null
+++ b/app/src/main/res/drawable-v21/selector.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+
+
+
diff --git a/app/src/main/res/drawable/selector.xml b/app/src/main/res/drawable/selector.xml
new file mode 100644
index 00000000..1277703b
--- /dev/null
+++ b/app/src/main/res/drawable/selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/items_fragment.xml b/app/src/main/res/layout/items_fragment.xml
index 83f68238..32e65d4f 100644
--- a/app/src/main/res/layout/items_fragment.xml
+++ b/app/src/main/res/layout/items_fragment.xml
@@ -14,6 +14,7 @@
android:id="@+id/items_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:choiceMode="multipleChoiceModal"
android:clipToPadding="false"
android:paddingLeft="@dimen/activity_margin"/>
diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml
index afc3f13e..9c29b86b 100644
--- a/app/src/main/res/layout/list_item.xml
+++ b/app/src/main/res/layout/list_item.xml
@@ -4,6 +4,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:foreground="@drawable/selector"
android:paddingRight="@dimen/activity_margin">
+
diff --git a/app/src/main/res/mipmap-hdpi/delete.png b/app/src/main/res/mipmap-hdpi/delete.png
new file mode 100644
index 00000000..f3d2e18b
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/delete.png differ
diff --git a/app/src/main/res/mipmap-mdpi/delete.png b/app/src/main/res/mipmap-mdpi/delete.png
new file mode 100644
index 00000000..e66fba7e
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/delete.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/delete.png b/app/src/main/res/mipmap-xhdpi/delete.png
new file mode 100644
index 00000000..ca80a3b5
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/delete.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/delete.png b/app/src/main/res/mipmap-xxhdpi/delete.png
new file mode 100644
index 00000000..1595bbcc
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/delete.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/delete.png b/app/src/main/res/mipmap-xxxhdpi/delete.png
new file mode 100644
index 00000000..8d322aa9
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/delete.png differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index b95ecaad..68099771 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -5,4 +5,6 @@
@color/colorPrimary
#33000000
+ #08000000
+ #11000000
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c49a5f61..fa451f77 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,6 +7,7 @@
File
The name contains invalid characters
An unknown error occurred
+ Delete
About