Use progressbar for showing the listening progress of an episode
This commit is contained in:
parent
ba0f294850
commit
98dec67b72
@ -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>
|
@ -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>
|
@ -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
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user