summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout/external_itemlist_item.xml29
-rw-r--r--res/layout/feeditemlist_item.xml30
-rw-r--r--src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java49
-rw-r--r--src/de/danoeh/antennapod/adapter/InternalFeedItemlistAdapter.java52
4 files changed, 88 insertions, 72 deletions
diff --git a/res/layout/external_itemlist_item.xml b/res/layout/external_itemlist_item.xml
index c8a039925..6f2405abc 100644
--- a/res/layout/external_itemlist_item.xml
+++ b/res/layout/external_itemlist_item.xml
@@ -32,8 +32,8 @@
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="8dp"
- android:layout_marginTop="8dp"
android:layout_marginRight="4dp"
+ android:layout_marginTop="8dp"
android:layout_toLeftOf="@id/butAction"
android:layout_toRightOf="@id/imgvFeedimage"
android:ellipsize="end"
@@ -81,6 +81,16 @@
android:layout_marginTop="4dp"
android:layout_toLeftOf="@id/butAction" />
+ <ProgressBar
+ android:id="@+id/pbar_episode_progress"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/txtvFeedname"
+ android:layout_marginTop="4dp"
+ android:layout_toLeftOf="@id/imgvDownloadStatus"
+ android:layout_toRightOf="@id/txtvLenSize" />
+
<ImageView
android:id="@+id/statusPlaying"
android:layout_width="@dimen/status_indicator_width"
@@ -93,21 +103,4 @@
android:padding="2dp"
android:src="@drawable/av_play_dark" />
- <TextView
- android:id="@+id/statusInProgress"
- android:layout_width="wrap_content"
- android:layout_height="18dp"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_margin="8dp"
- android:background="@color/status_progress"
- android:gravity="center"
- android:minWidth="@dimen/status_indicator_width"
- android:paddingLeft="2dp"
- android:paddingRight="2dp"
- android:textAlignment="center"
- android:textColor="@color/white"
- android:textSize="@dimen/text_size_micro"
- android:textStyle="bold" />
-
</RelativeLayout> \ No newline at end of file
diff --git a/res/layout/feeditemlist_item.xml b/res/layout/feeditemlist_item.xml
index 2cc7ee703..4fbddbbac 100644
--- a/res/layout/feeditemlist_item.xml
+++ b/res/layout/feeditemlist_item.xml
@@ -87,6 +87,19 @@
android:textColor="?android:attr/textColorTertiary"
android:textSize="@dimen/text_size_micro" />
+ <ProgressBar
+ android:id="@+id/pbar_episode_progress"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/txtvPublished"
+ android:layout_marginBottom="4dp"
+ android:layout_marginLeft="4dp"
+ android:layout_marginRight="4dp"
+ android:layout_marginTop="2dp"
+ android:layout_toLeftOf="@id/imgvType"
+ android:layout_toRightOf="@id/txtvLenSize" />
+
<ImageButton
android:id="@id/butAction"
android:layout_width="48dp"
@@ -131,21 +144,4 @@
android:padding="2dp"
android:src="@drawable/av_play_dark" />
- <TextView
- android:id="@+id/statusInProgress"
- android:layout_width="wrap_content"
- android:layout_height="18dp"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_margin="8dp"
- android:background="@color/status_progress"
- android:gravity="center"
- android:minWidth="@dimen/status_indicator_width"
- android:paddingLeft="2dp"
- android:paddingRight="2dp"
- android:textAlignment="center"
- android:textColor="@color/white"
- android:textSize="@dimen/text_size_micro"
- android:textStyle="bold" />
-
</RelativeLayout> \ No newline at end of file
diff --git a/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java
index 64eec8a38..30fcc2fd8 100644
--- a/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java
@@ -9,6 +9,7 @@ import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.ImageLoader;
@@ -89,8 +90,8 @@ public class ExternalEpisodesListAdapter extends BaseExpandableListAdapter {
.findViewById(R.id.butAction);
holder.statusPlaying = (View) convertView
.findViewById(R.id.statusPlaying);
- holder.statusInProgress = (TextView) convertView
- .findViewById(R.id.statusInProgress);
+ holder.episodeProgress = (ProgressBar) convertView
+ .findViewById(R.id.pbar_episode_progress);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
@@ -98,36 +99,53 @@ public class ExternalEpisodesListAdapter extends BaseExpandableListAdapter {
holder.title.setText(item.getTitle());
holder.feedTitle.setText(item.getFeed().getTitle());
+ FeedItem.State state = item.getState();
if (groupPosition == GROUP_POS_QUEUE) {
- FeedItem.State state = item.getState();
switch (state) {
case PLAYING:
holder.statusPlaying.setVisibility(View.VISIBLE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.VISIBLE);
break;
case IN_PROGRESS:
holder.statusPlaying.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.VISIBLE);
- holder.statusInProgress.setText(Converter
- .getDurationStringLong(item.getMedia().getPosition()));
+ holder.episodeProgress.setVisibility(View.VISIBLE);
break;
case NEW:
holder.statusPlaying.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.GONE);
break;
default:
holder.statusPlaying.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.GONE);
break;
}
} else {
holder.statusPlaying.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.GONE);
}
FeedMedia media = item.getMedia();
if (media != null) {
+
+ if (state == FeedItem.State.PLAYING
+ || state == FeedItem.State.IN_PROGRESS) {
+ if (media.getDuration() > 0) {
+ holder.episodeProgress.setProgress((int) (((double) media
+ .getPosition()) / media.getDuration() * 100));
+ holder.lenSize.setText(Converter
+ .getDurationStringLong(media.getDuration()
+ - media.getPosition()));
+ }
+ } else if (!media.isDownloaded()) {
+ holder.lenSize.setText(context.getString(R.string.size_prefix)
+ + Converter.byteToString(media.getSize()));
+ } else {
+ holder.lenSize.setText(context
+ .getString(R.string.length_prefix)
+ + Converter.getDurationStringLong(media.getDuration()));
+ }
+
TypedArray drawables = context.obtainStyledAttributes(new int[] {
R.attr.av_download, R.attr.navigation_refresh });
holder.lenSize.setVisibility(View.VISIBLE);
@@ -137,20 +155,15 @@ public class ExternalEpisodesListAdapter extends BaseExpandableListAdapter {
holder.downloadStatus.setImageDrawable(drawables
.getDrawable(1));
} else {
- holder.downloadStatus.setVisibility(View.GONE);
+ holder.downloadStatus.setVisibility(View.INVISIBLE);
}
- holder.lenSize.setText(context.getString(R.string.size_prefix)
- + Converter.byteToString(media.getSize()));
} else {
holder.downloadStatus.setVisibility(View.VISIBLE);
holder.downloadStatus
.setImageDrawable(drawables.getDrawable(0));
- holder.lenSize.setText(context
- .getString(R.string.length_prefix)
- + Converter.getDurationStringLong(media.getDuration()));
}
} else {
- holder.downloadStatus.setVisibility(View.GONE);
+ holder.downloadStatus.setVisibility(View.INVISIBLE);
holder.lenSize.setVisibility(View.INVISIBLE);
}
@@ -182,7 +195,7 @@ public class ExternalEpisodesListAdapter extends BaseExpandableListAdapter {
ImageView feedImage;
ImageButton butAction;
View statusPlaying;
- TextView statusInProgress;
+ ProgressBar episodeProgress;
}
@Override
diff --git a/src/de/danoeh/antennapod/adapter/InternalFeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/InternalFeedItemlistAdapter.java
index c8d41b10e..7b898385e 100644
--- a/src/de/danoeh/antennapod/adapter/InternalFeedItemlistAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/InternalFeedItemlistAdapter.java
@@ -12,10 +12,12 @@ import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.ImageButton;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
+import de.danoeh.antennapod.feed.FeedMedia;
import de.danoeh.antennapod.feed.MediaType;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.Converter;
@@ -72,8 +74,8 @@ public class InternalFeedItemlistAdapter extends DefaultFeedItemlistAdapter {
.findViewById(R.id.statusPlaying);
holder.statusUnread = (View) convertView
.findViewById(R.id.statusUnread);
- holder.statusInProgress = (TextView) convertView
- .findViewById(R.id.statusInProgress);
+ holder.episodeProgress = (ProgressBar) convertView
+ .findViewById(R.id.pbar_episode_progress);
convertView.setTag(holder);
} else {
@@ -99,24 +101,22 @@ public class InternalFeedItemlistAdapter extends DefaultFeedItemlistAdapter {
case PLAYING:
holder.statusPlaying.setVisibility(View.VISIBLE);
holder.statusUnread.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.VISIBLE);
break;
case IN_PROGRESS:
holder.statusPlaying.setVisibility(View.GONE);
holder.statusUnread.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.VISIBLE);
- holder.statusInProgress.setText(Converter
- .getDurationStringLong(item.getMedia().getPosition()));
+ holder.episodeProgress.setVisibility(View.VISIBLE);
break;
case NEW:
holder.statusPlaying.setVisibility(View.GONE);
holder.statusUnread.setVisibility(View.VISIBLE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.GONE);
break;
default:
holder.statusPlaying.setVisibility(View.GONE);
holder.statusUnread.setVisibility(View.GONE);
- holder.statusInProgress.setVisibility(View.GONE);
+ holder.episodeProgress.setVisibility(View.GONE);
break;
}
@@ -126,13 +126,36 @@ public class InternalFeedItemlistAdapter extends DefaultFeedItemlistAdapter {
System.currentTimeMillis(), DateFormat.MEDIUM,
DateFormat.SHORT));
- if (item.getMedia() == null) {
+ FeedMedia media = item.getMedia();
+ if (media == null) {
holder.downloaded.setVisibility(View.GONE);
holder.downloading.setVisibility(View.GONE);
holder.inPlaylist.setVisibility(View.GONE);
holder.type.setVisibility(View.GONE);
holder.lenSize.setVisibility(View.GONE);
} else {
+
+ if (state == FeedItem.State.PLAYING
+ || state == FeedItem.State.IN_PROGRESS) {
+ if (media.getDuration() > 0) {
+ holder.episodeProgress
+ .setProgress((int) (((double) media
+ .getPosition()) / media.getDuration() * 100));
+ holder.lenSize.setText(Converter
+ .getDurationStringLong(media.getDuration()
+ - media.getPosition()));
+ }
+ } else if (!media.isDownloaded()) {
+ holder.lenSize.setText(getContext().getString(
+ R.string.size_prefix)
+ + Converter.byteToString(media.getSize()));
+ } else {
+ holder.lenSize.setText(getContext().getString(
+ R.string.length_prefix)
+ + Converter.getDurationStringLong(media
+ .getDuration()));
+ }
+
holder.lenSize.setVisibility(View.VISIBLE);
if (FeedManager.getInstance().isInQueue(item)) {
holder.inPlaylist.setVisibility(View.VISIBLE);
@@ -140,17 +163,8 @@ public class InternalFeedItemlistAdapter extends DefaultFeedItemlistAdapter {
holder.inPlaylist.setVisibility(View.GONE);
}
if (item.getMedia().isDownloaded()) {
- holder.lenSize.setText(convertView.getResources()
- .getString(R.string.length_prefix)
- + Converter.getDurationStringLong(item.getMedia()
- .getDuration()));
holder.downloaded.setVisibility(View.VISIBLE);
} else {
- holder.lenSize
- .setText(convertView.getResources().getString(
- R.string.size_prefix)
- + Converter.byteToString(item.getMedia()
- .getSize()));
holder.downloaded.setVisibility(View.GONE);
}
@@ -200,7 +214,7 @@ public class InternalFeedItemlistAdapter extends DefaultFeedItemlistAdapter {
ImageButton butAction;
View statusUnread;
View statusPlaying;
- TextView statusInProgress;
+ ProgressBar episodeProgress;
}
public int getSelectedItemIndex() {