aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/adapter
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2015-07-22 20:03:30 -0700
committerScott Jackson <daneren2005@gmail.com>2015-07-22 20:03:30 -0700
commitfbd1a68042dfc3601eaa0a9e37b3957bbdd51420 (patch)
tree3e96009d06e032ae266f5787dc6cf592b6ae504f /app/src/main/java/github/daneren2005/dsub/adapter
parent569281e423b93cf67db2141b49f04103036d4db5 (diff)
downloaddsub-fbd1a68042dfc3601eaa0a9e37b3957bbdd51420.tar.gz
dsub-fbd1a68042dfc3601eaa0a9e37b3957bbdd51420.tar.bz2
dsub-fbd1a68042dfc3601eaa0a9e37b3957bbdd51420.zip
Update details dialogs, remove play/cache/delete from more menus to keep context menus smaller
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/adapter')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/DetailsAdapter.java62
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java29
2 files changed, 85 insertions, 6 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/DetailsAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/DetailsAdapter.java
new file mode 100644
index 00000000..efafe27a
--- /dev/null
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/DetailsAdapter.java
@@ -0,0 +1,62 @@
+/*
+ This file is part of Subsonic.
+ Subsonic is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ Subsonic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
+ Copyright 2015 (C) Scott Jackson
+*/
+
+package github.daneren2005.dsub.adapter;
+
+import android.content.Context;
+import android.text.SpannableString;
+import android.text.method.LinkMovementMethod;
+import android.text.util.Linkify;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import java.util.List;
+
+import github.daneren2005.dsub.R;
+
+public class DetailsAdapter extends ArrayAdapter<String> {
+ private List<String> headers;
+ private List<String> details;
+
+ public DetailsAdapter(Context context, int layout, List<String> headers, List<String> details) {
+ super(context, layout, headers);
+
+ this.headers = headers;
+ this.details = details;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent){
+ View view;
+ if(convertView == null) {
+ view = LayoutInflater.from(getContext()).inflate(R.layout.details_item, null);
+ } else {
+ view = convertView;
+ }
+
+ TextView nameView = (TextView) view.findViewById(R.id.detail_name);
+ TextView detailsView = (TextView) view.findViewById(R.id.detail_value);
+
+ nameView.setText(headers.get(position));
+
+ detailsView.setText(details.get(position));
+ Linkify.addLinks(detailsView, Linkify.ALL);
+
+ return view;
+ }
+}
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 9d577409..3f6086d5 100644
--- a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
@@ -178,9 +178,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
if(sections.size() == 1 && !singleSectionHeader) {
T item = sections.get(0).get(position);
onBindViewHolder(holder, item, getItemViewType(position));
- if(updateView.isCheckable()) {
- setChecked(updateView, selected.contains(item));
- }
+ postBindView(updateView, item);
holder.setItem(item);
return;
}
@@ -199,9 +197,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
T item = section.get(position - subPosition - headerOffset);
onBindViewHolder(holder, item, getItemViewType(item));
- if(updateView.isCheckable()) {
- setChecked(updateView, selected.contains(item));
- }
+ postBindView(updateView, item);
holder.setItem(item);
return;
}
@@ -214,6 +210,27 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
}
}
+ private void postBindView(UpdateView updateView, T item) {
+ if(updateView.isCheckable()) {
+ setChecked(updateView, selected.contains(item));
+ }
+
+ View moreButton = updateView.findViewById(R.id.more_button);
+ if(moreButton == null) {
+ moreButton = updateView.findViewById(R.id.item_more);
+ }
+ if(moreButton != null) {
+ PopupMenu popup = new PopupMenu(context, moreButton);
+ Menu menu = popup.getMenu();
+ onItemClickedListener.onCreateContextMenu(popup.getMenu(), popup.getMenuInflater(), updateView, item);
+ if(menu.size() == 0) {
+ moreButton.setVisibility(View.GONE);
+ } else {
+ moreButton.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+
@Override
public int getItemCount() {
if(sections.size() == 1 && !singleSectionHeader) {