From 9c47a3b90c084c819985faa07d916aea31aa3bb6 Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Sun, 24 Jul 2016 14:20:33 +0200 Subject: [PATCH] make filebrowserstart use draggablerow --- res/layout/draggable_row.xml | 7 ++++ res/layout/filebrowser_content.xml | 13 ++++---- .../android/vanilla/DraggableRow.java | 33 +++++++++++++++++-- .../vanilla/FilebrowserStartAdapter.java | 32 ++++++++---------- .../android/vanilla/PlaylistAdapter.java | 2 +- .../android/vanilla/ShowQueueAdapter.java | 2 +- 6 files changed, 60 insertions(+), 29 deletions(-) diff --git a/res/layout/draggable_row.xml b/res/layout/draggable_row.xml index 926cb7b6..12f6f576 100644 --- a/res/layout/draggable_row.xml +++ b/res/layout/draggable_row.xml @@ -52,6 +52,13 @@ along with this program. If not, see . android:layout_marginLeft="@dimen/text_padding" android:layout_weight="1" /> + + - + diff --git a/src/ch/blinkenlights/android/vanilla/DraggableRow.java b/src/ch/blinkenlights/android/vanilla/DraggableRow.java index 80f8a91f..037c3123 100644 --- a/src/ch/blinkenlights/android/vanilla/DraggableRow.java +++ b/src/ch/blinkenlights/android/vanilla/DraggableRow.java @@ -46,7 +46,8 @@ public class DraggableRow extends LinearLayout implements Checkable { * Layout types for use with setupLayout */ public static final int LAYOUT_CHECKBOXES = 1; - public static final int LAYOUT_COVERVIEW = 2; + public static final int LAYOUT_DRAGGABLE = 2; + public static final int LAYOUT_LISTVIEW = 3; public DraggableRow(Context context, AttributeSet attrs) { @@ -76,10 +77,14 @@ public class DraggableRow extends LinearLayout implements Checkable { mCheckBox.setVisibility(View.VISIBLE); showDragger(true); break; - case LAYOUT_COVERVIEW: + case LAYOUT_DRAGGABLE: mCoverView.setVisibility(View.VISIBLE); showDragger(true); break; + case LAYOUT_LISTVIEW: + mCoverView.setVisibility(View.VISIBLE); + mDragger.setImageResource(R.drawable.arrow); + break; default: break; // do not care } @@ -103,6 +108,30 @@ public class DraggableRow extends LinearLayout implements Checkable { setChecked(!mChecked); } + /** + * Only make interesting parts clickable + */ + @Override + public void setOnClickListener(View.OnClickListener listener) { + mTextView.setOnClickListener(listener); + mCoverView.setOnClickListener(listener); + mDragger.setOnClickListener(listener); + } + + /** + * We glue tags to the text view to make getTag() simpler and consistent + * with the on click listener interception + */ + @Override + public void setTag(Object tag) { + mTextView.setTag(tag); + } + + @Override + public Object getTag() { + return mTextView.getTag(); + } + /** * Marks a row as highlighted * @param state Enable or disable highlighting diff --git a/src/ch/blinkenlights/android/vanilla/FilebrowserStartAdapter.java b/src/ch/blinkenlights/android/vanilla/FilebrowserStartAdapter.java index e4b4aa9b..d6bc60f9 100644 --- a/src/ch/blinkenlights/android/vanilla/FilebrowserStartAdapter.java +++ b/src/ch/blinkenlights/android/vanilla/FilebrowserStartAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2015 Adrian Ulrich + * Copyright (C) 2013-2016 Adrian Ulrich * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,36 +47,32 @@ public class FilebrowserStartAdapter @Override public View getView(int pos, View convertView, ViewGroup parent) { - View view; + DraggableRow row; ViewHolder holder; if (convertView == null) { - view = mInflater.inflate(R.layout.library_row_expandable, null); + row = (DraggableRow)mInflater.inflate(R.layout.draggable_row, null); + row.setupLayout(DraggableRow.LAYOUT_LISTVIEW); + + row.getCoverView().setImageDrawable(mFolderIcon); + row.setOnClickListener(this); + holder = new ViewHolder(); - holder.text = (TextView)view.findViewById(R.id.text); - holder.divider = view.findViewById(R.id.divider); - holder.cover = (LazyCoverView)view.findViewById(R.id.cover); - - holder.arrow = (ImageView)view.findViewById(R.id.arrow); - - holder.cover.setImageDrawable(mFolderIcon); - holder.text.setOnClickListener(this); - holder.cover.setVisibility(View.VISIBLE); - view.setTag(holder); + row.setTag(holder); } else { - view = convertView; - holder = (ViewHolder)view.getTag(); + row = (DraggableRow)convertView; + holder = (ViewHolder)row.getTag(); } String label = getItem(pos); holder.id = pos; - holder.text.setText(label); - return view; + row.getTextView().setText(label); + return row; } @Override public void onClick(View view) { - ViewHolder holder = (ViewHolder)((View)view.getParent()).getTag(); + ViewHolder holder = (ViewHolder)view.getTag(); mActivity.onDirectoryClicked((int)holder.id); } diff --git a/src/ch/blinkenlights/android/vanilla/PlaylistAdapter.java b/src/ch/blinkenlights/android/vanilla/PlaylistAdapter.java index 9214ff83..7a4b7988 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaylistAdapter.java +++ b/src/ch/blinkenlights/android/vanilla/PlaylistAdapter.java @@ -108,7 +108,7 @@ public class PlaylistAdapter extends CursorAdapter implements Handler.Callback { public void bindView(View view, Context context, Cursor cursor) { DraggableRow dview = (DraggableRow)view; - dview.setupLayout(DraggableRow.LAYOUT_COVERVIEW); + dview.setupLayout(DraggableRow.LAYOUT_DRAGGABLE); dview.showDragger(mEditable); TextView textView = dview.getTextView(); diff --git a/src/ch/blinkenlights/android/vanilla/ShowQueueAdapter.java b/src/ch/blinkenlights/android/vanilla/ShowQueueAdapter.java index f2f3ad00..7d8b671a 100644 --- a/src/ch/blinkenlights/android/vanilla/ShowQueueAdapter.java +++ b/src/ch/blinkenlights/android/vanilla/ShowQueueAdapter.java @@ -64,7 +64,7 @@ public class ShowQueueAdapter } else { LayoutInflater inflater = ((Activity)mContext).getLayoutInflater(); row = (DraggableRow)inflater.inflate(mResource, parent, false); - row.setupLayout(DraggableRow.LAYOUT_COVERVIEW); + row.setupLayout(DraggableRow.LAYOUT_DRAGGABLE); } Song song = getItem(position);