aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/adapter
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2015-07-18 18:19:13 -0700
committerScott Jackson <daneren2005@gmail.com>2015-07-18 18:19:13 -0700
commit569281e423b93cf67db2141b49f04103036d4db5 (patch)
treeaf0def4c718a3ae42841b45bbae0c24c936befed /app/src/main/java/github/daneren2005/dsub/adapter
parent32ab835977f1544dd299508f66861881528004be (diff)
downloaddsub-569281e423b93cf67db2141b49f04103036d4db5.tar.gz
dsub-569281e423b93cf67db2141b49f04103036d4db5.tar.bz2
dsub-569281e423b93cf67db2141b49f04103036d4db5.zip
Update action mode to support albums, color when selected
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/adapter')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java3
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java53
2 files changed, 36 insertions, 20 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java
index 0c699b89..a0008a73 100644
--- a/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/EntryGridAdapter.java
@@ -59,6 +59,7 @@ public class EntryGridAdapter extends SectionAdapter<Entry> {
showArtist = true;
}
}
+ checkable = true;
}
@Override
@@ -82,7 +83,7 @@ public class EntryGridAdapter extends SectionAdapter<Entry> {
albumView.setObject(entry, imageLoader);
} else if(viewType == VIEW_TYPE_SONG) {
SongView songView = (SongView) view;
- songView.setObject(entry, checkable && !entry.isVideo() && currentActionMode != null);
+ songView.setObject(entry, checkable && !entry.isVideo());
}
}
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
index 93c55985..9d577409 100644
--- a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
@@ -32,6 +32,7 @@ import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
+import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -52,8 +53,9 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
protected boolean singleSectionHeader;
protected OnItemClickedListener<T> onItemClickedListener;
protected List<T> selected = new ArrayList<>();
+ protected List<UpdateView> selectedViews = new ArrayList<>();
protected ActionMode currentActionMode;
- protected boolean checkable = true;
+ protected boolean checkable = false;
protected SectionAdapter() {}
public SectionAdapter(Context context, List<T> section) {
@@ -101,19 +103,23 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
public void onClick(View v) {
T item = holder.getItem();
updateView.onClick();
- if (updateView.isCheckable() && currentActionMode != null) {
- if (selected.contains(item)) {
- selected.remove(item);
- setChecked(updateView, false);
- } else {
- selected.add(item);
- setChecked(updateView, true);
- }
-
- if(selected.isEmpty()) {
- currentActionMode.finish();
- } else {
- currentActionMode.setTitle(context.getResources().getString(R.string.select_album_n_selected, selected.size()));
+ if (currentActionMode != null) {
+ if(updateView.isCheckable()) {
+ if (selected.contains(item)) {
+ selected.remove(item);
+ selectedViews.remove(updateView);
+ setChecked(updateView, false);
+ } else {
+ selected.add(item);
+ selectedViews.add(updateView);
+ setChecked(updateView, true);
+ }
+
+ if (selected.isEmpty()) {
+ currentActionMode.finish();
+ } else {
+ currentActionMode.setTitle(context.getResources().getString(R.string.select_album_n_selected, selected.size()));
+ }
}
} else if (onItemClickedListener != null) {
onItemClickedListener.onItemClicked(item);
@@ -149,7 +155,11 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
updateView.getChildAt(0).setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
- startActionMode(holder);
+ if(currentActionMode == null) {
+ startActionMode(holder);
+ } else {
+ updateView.getChildAt(0).performClick();
+ }
return true;
}
});
@@ -321,10 +331,12 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
if(singleSectionHeader) {
index++;
}
-
- this.notifyItemChanged(index);
}
selected.clear();
+
+ for(UpdateView updateView: selectedViews) {
+ updateView.setChecked(false);
+ }
}
public void removeItem(T item) {
@@ -369,9 +381,9 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
T item = holder.getItem();
selected.add(item);
+ selectedViews.add(updateView);
setChecked(updateView, true);
- notifyDataSetChanged();
mode.setTitle(context.getResources().getString(R.string.select_album_n_selected, selected.size()));
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
TypedValue typedValue = new TypedValue();
@@ -406,7 +418,10 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
public void onDestroyActionMode(ActionMode mode) {
currentActionMode = null;
selected.clear();
- notifyDataSetChanged();
+ for(UpdateView<T> updateView: selectedViews) {
+ updateView.setChecked(false);
+ }
+ selectedViews.clear();
Window window = ((SubsonicFragmentActivity) context).getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);