summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout/new_episodes_listitem.xml216
-rw-r--r--res/values-v19/colors.xml5
-rw-r--r--res/values/dimens.xml1
-rw-r--r--src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java51
-rw-r--r--src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java6
5 files changed, 160 insertions, 119 deletions
diff --git a/res/layout/new_episodes_listitem.xml b/res/layout/new_episodes_listitem.xml
index 108501133..721b88071 100644
--- a/res/layout/new_episodes_listitem.xml
+++ b/res/layout/new_episodes_listitem.xml
@@ -1,114 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:orientation="horizontal"
+ android:layout_height="match_parent">
- <ImageView
- android:id="@+id/imgvImage"
- android:contentDescription="@string/cover_label"
- android:layout_width="@dimen/thumbnail_length_itemlist"
- android:layout_height="@dimen/thumbnail_length_itemlist"
- android:layout_alignParentLeft="true"
- android:scaleType="centerCrop"/>
+ <RelativeLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:layout_marginRight="16dp">
- <ImageView
- android:id="@+id/statusPlaying"
- android:contentDescription="@string/status_playing_label"
- android:layout_width="@dimen/status_indicator_width"
- android:layout_height="18dp"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_margin="8dp"
- android:background="@color/status_playing"
- android:gravity="center"
- android:padding="2dp"
- android:src="@drawable/av_play_dark"/>
+ <ImageView
+ android:id="@+id/imgvImage"
+ android:contentDescription="@string/cover_label"
+ android:layout_width="@dimen/thumbnail_length_itemlist"
+ android:layout_height="@dimen/thumbnail_length_itemlist"
+ android:layout_alignParentLeft="true"
+ android:scaleType="centerCrop"/>
- <TextView
- android:id="@+id/txtvPublished"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@id/imgvImage"
- android:layout_toLeftOf="@id/statusPlaying"
- android:ellipsize="end"
- android:maxLines="1"
- android:textColor="?android:attr/textColorTertiary"
- android:textSize="@dimen/text_size_micro"/>
+ <ImageView
+ android:id="@+id/statusPlaying"
+ android:contentDescription="@string/status_playing_label"
+ android:layout_width="@dimen/status_indicator_width"
+ android:layout_height="18dp"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_marginBottom="8dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginLeft="8dp"
+ android:background="@color/status_playing"
+ android:gravity="center"
+ android:padding="2dp"
+ android:src="@drawable/av_play_dark"/>
- <TextView
- android:id="@+id/txtvTitle"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_below="@id/txtvPublished"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="4dp"
- android:layout_marginTop="2dp"
- android:layout_toRightOf="@id/imgvImage"
- android:layout_toLeftOf="@id/statusPlaying"
- android:ellipsize="end"
- android:lines="2"
- android:textColor="?android:attr/textColorPrimary"
- android:textSize="@dimen/text_size_small"/>
+ <TextView
+ android:id="@+id/txtvPublished"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="8dp"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/imgvImage"
+ android:layout_toLeftOf="@id/statusPlaying"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:textColor="?android:attr/textColorTertiary"
+ android:textSize="@dimen/text_size_micro"/>
- <LinearLayout
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_toRightOf="@id/imgvImage"
- android:orientation="vertical">
+ <TextView
+ android:id="@+id/txtvTitle"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/txtvPublished"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="4dp"
+ android:layout_marginTop="2dp"
+ android:layout_toRightOf="@id/imgvImage"
+ android:layout_toLeftOf="@id/statusPlaying"
+ android:ellipsize="end"
+ android:lines="2"
+ android:textColor="?android:attr/textColorPrimary"
+ android:textSize="@dimen/text_size_small"/>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_toRightOf="@id/imgvImage"
+ android:orientation="vertical">
- <RelativeLayout
- android:id="@+id/bottom_bar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ <RelativeLayout
+ android:id="@+id/bottom_bar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
- <ImageView
- android:id="@+id/imgvDownloadStatus"
- android:layout_width="@dimen/enc_icons_size"
- android:layout_height="@dimen/enc_icons_size"
- android:layout_alignParentRight="true"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_marginBottom="8dp"
- tools:ignore="ContentDescription"/>
+ <ImageView
+ android:id="@id/imgvInPlaylist"
+ android:contentDescription="@string/in_queue_label"
+ android:layout_width="@dimen/enc_icons_size"
+ android:layout_height="@dimen/enc_icons_size"
+ android:layout_alignParentRight="true"
+ android:src="?attr/stat_playlist"/>
- <ImageView
- android:id="@id/imgvInPlaylist"
- android:contentDescription="@string/in_queue_label"
- android:layout_width="@dimen/enc_icons_size"
- android:layout_height="@dimen/enc_icons_size"
- android:layout_toLeftOf="@+id/imgvDownloadStatus"
- android:src="?attr/stat_playlist"/>
+ <ProgressBar
+ android:id="@+id/pbar_download_progress"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:max="100"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_toLeftOf="@id/imgvInPlaylist"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="8dp"
+ android:layout_alignParentLeft="true"/>
- <ProgressBar
- android:id="@+id/pbar_download_progress"
- style="?android:attr/progressBarStyleHorizontal"
- android:max="100"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_toLeftOf="@id/imgvInPlaylist"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_alignParentLeft="true"/>
+ <TextView
+ android:id="@+id/txtvDuration"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_toLeftOf="@id/imgvInPlaylist"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="8dp"
+ android:layout_alignParentLeft="true"
+ android:textColor="?android:attr/textColorTertiary"
+ android:textSize="@dimen/text_size_micro"/>
+ </RelativeLayout>
+ </LinearLayout>
+ </RelativeLayout>
- <TextView
- android:id="@+id/txtvDuration"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_toLeftOf="@id/imgvDownloadStatus"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_alignParentLeft="true"
- android:textColor="?android:attr/textColorTertiary"
- android:textSize="@dimen/text_size_micro"/>
- </RelativeLayout>
- </LinearLayout>
+ <View
+ android:layout_width="1dp"
+ android:layout_height="match_parent"
+ android:background="@drawable/vertical_divider"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"/>
+ <ImageButton
+ android:id="@+id/butSecondaryAction"
+ android:focusable="false"
+ android:clickable="false"
+ android:focusableInTouchMode="false"
+ android:layout_width="@dimen/listview_secondary_button_width"
+ android:layout_height="match_parent"
+ android:background="?attr/borderless_button"
+ tools:ignore="ContentDescription"/>
-</RelativeLayout> \ No newline at end of file
+</LinearLayout> \ No newline at end of file
diff --git a/res/values-v19/colors.xml b/res/values-v19/colors.xml
new file mode 100644
index 000000000..16c065d75
--- /dev/null
+++ b/res/values-v19/colors.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="selection_background_color_dark">#484B4D</color>
+ <color name="selection_background_color_light">#E3E3E3</color>
+</resources> \ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b42aae327..f059f9814 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -15,4 +15,5 @@
<dimen name="thumbnail_length_itemlist">80dp</dimen>
<dimen name="thumbnail_length_onlinefeedview">110dp</dimen>
<dimen name="thumbnail_length_navlist">42dp</dimen>
+ <dimen name="listview_secondary_button_width">48dp</dimen>
</resources> \ No newline at end of file
diff --git a/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java
index 105d4c3ca..4d4a2494e 100644
--- a/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java
@@ -6,10 +6,7 @@ import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.TextView;
+import android.widget.*;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.ImageLoader;
import de.danoeh.antennapod.feed.FeedItem;
@@ -35,8 +32,8 @@ public class NewEpisodesListAdapter extends BaseAdapter {
this.context = context;
this.itemAccess = itemAccess;
drawables = context.obtainStyledAttributes(new int[]{
- R.attr.navigation_accept, R.attr.navigation_refresh, R.attr.av_download});
- labels = new int[]{R.string.status_downloaded_label, R.string.status_downloading_label, R.string.status_not_downloaded_label};
+ R.attr.av_play, R.attr.navigation_cancel, R.attr.av_download});
+ labels = new int[]{R.string.play_label, R.string.cancel_download_label, R.string.download_label};
}
@Override
@@ -113,8 +110,8 @@ public class NewEpisodesListAdapter extends BaseAdapter {
holder.title = (TextView) convertView.findViewById(R.id.txtvTitle);
holder.pubDate = (TextView) convertView
.findViewById(R.id.txtvPublished);
- holder.downloadStatus = (ImageView) convertView
- .findViewById(R.id.imgvDownloadStatus);
+ holder.butSecondary = (ImageButton) convertView
+ .findViewById(R.id.butSecondaryAction);
holder.queueStatus = (ImageView) convertView
.findViewById(R.id.imgvInPlaylist);
holder.statusPlaying = (ImageView) convertView
@@ -159,27 +156,27 @@ public class NewEpisodesListAdapter extends BaseAdapter {
if (!media.isDownloaded()) {
if (isDownloadingMedia) {
// item is being downloaded
- holder.downloadStatus.setVisibility(View.VISIBLE);
- holder.downloadStatus.setImageDrawable(drawables
+ holder.butSecondary.setVisibility(View.VISIBLE);
+ holder.butSecondary.setImageDrawable(drawables
.getDrawable(1));
- holder.downloadStatus.setContentDescription(context.getString(labels[1]));
+ holder.butSecondary.setContentDescription(context.getString(labels[1]));
holder.downloadProgress.setProgress(itemAccess.getItemDownloadProgressPercent(item));
} else {
// item is not downloaded and not being downloaded
- holder.downloadStatus.setVisibility(View.VISIBLE);
- holder.downloadStatus.setImageDrawable(drawables.getDrawable(2));
- holder.downloadStatus.setContentDescription(context.getString(labels[2]));
+ holder.butSecondary.setVisibility(View.VISIBLE);
+ holder.butSecondary.setImageDrawable(drawables.getDrawable(2));
+ holder.butSecondary.setContentDescription(context.getString(labels[2]));
}
} else {
// item is not being downloaded
- holder.downloadStatus.setVisibility(View.VISIBLE);
- holder.downloadStatus
+ holder.butSecondary.setVisibility(View.VISIBLE);
+ holder.butSecondary
.setImageDrawable(drawables.getDrawable(0));
- holder.downloadStatus.setContentDescription(context.getString(labels[0]));
+ holder.butSecondary.setContentDescription(context.getString(labels[0]));
}
} else {
- holder.downloadStatus.setVisibility(View.INVISIBLE);
+ holder.butSecondary.setVisibility(View.INVISIBLE);
}
if (itemAccess.isInQueue(item)) {
@@ -188,6 +185,12 @@ public class NewEpisodesListAdapter extends BaseAdapter {
holder.queueStatus.setVisibility(View.INVISIBLE);
}
+ holder.butSecondary.setFocusable(false);
+ holder.butSecondary.setTag(item);
+ holder.butSecondary.setOnClickListener(secondaryActionListener);
+
+
+
ImageLoader.getInstance().loadThumbnailBitmap(
item,
holder.imageView,
@@ -197,16 +200,24 @@ public class NewEpisodesListAdapter extends BaseAdapter {
return convertView;
}
+ private View.OnClickListener secondaryActionListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ FeedItem item = (FeedItem) v.getTag();
+ itemAccess.onFeedItemSecondaryAction(item);
+ }
+ };
+
static class Holder {
TextView title;
TextView pubDate;
- ImageView downloadStatus;
ImageView queueStatus;
ImageView imageView;
ImageView statusPlaying;
ProgressBar downloadProgress;
TextView txtvDuration;
+ ImageButton butSecondary;
}
public interface ItemAccess {
@@ -221,5 +232,7 @@ public class NewEpisodesListAdapter extends BaseAdapter {
int getItemDownloadProgressPercent(FeedItem item);
boolean isInQueue(FeedItem item);
+
+ void onFeedItemSecondaryAction(FeedItem item);
}
}
diff --git a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
index 8250e20d3..aa3f9ab65 100644
--- a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
+++ b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
@@ -6,6 +6,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -193,6 +194,11 @@ public class NewEpisodesFragment extends Fragment {
}
}
+ @Override
+ public void onFeedItemSecondaryAction(FeedItem item) {
+ Log.i(TAG, item.getTitle());
+ }
+
};