diff options
author | Scott Jackson <daneren2005@gmail.com> | 2015-07-22 20:03:30 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2015-07-22 20:03:30 -0700 |
commit | fbd1a68042dfc3601eaa0a9e37b3957bbdd51420 (patch) | |
tree | 3e96009d06e032ae266f5787dc6cf592b6ae504f /app/src/main/java/github/daneren2005/dsub/adapter | |
parent | 569281e423b93cf67db2141b49f04103036d4db5 (diff) | |
download | dsub-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.java | 62 | ||||
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java | 29 |
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) { |