diff options
Diffstat (limited to 'News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/ListView/PodcastArrayAdapter.java')
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/ListView/PodcastArrayAdapter.java | 92 |
1 files changed, 82 insertions, 10 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/ListView/PodcastArrayAdapter.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/ListView/PodcastArrayAdapter.java index 0e0c2fea..5c073094 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/ListView/PodcastArrayAdapter.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/ListView/PodcastArrayAdapter.java @@ -5,40 +5,46 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.FrameLayout; +import android.widget.ProgressBar; import android.widget.TextView; +import android.widget.Toast; import butterknife.ButterKnife; import butterknife.InjectView; import de.greenrobot.event.EventBus; import de.luhmer.owncloudnewsreader.R; import de.luhmer.owncloudnewsreader.events.podcast.AudioPodcastClicked; -import de.luhmer.owncloudnewsreader.model.AudioPodcastItem; +import de.luhmer.owncloudnewsreader.events.podcast.StartDownloadPodcast; +import de.luhmer.owncloudnewsreader.helper.JavaYoutubeDownloader; +import de.luhmer.owncloudnewsreader.model.PodcastItem; /** * Created by David on 21.06.2014. */ -public class PodcastArrayAdapter extends ArrayAdapter<AudioPodcastItem> { +public class PodcastArrayAdapter extends ArrayAdapter<PodcastItem> { LayoutInflater inflater; EventBus eventBus; - public PodcastArrayAdapter(Context context, AudioPodcastItem[] values) { - super(context, R.layout.podcast_audio_row, values); + public PodcastArrayAdapter(Context context, PodcastItem[] values) { + super(context, R.layout.podcast_row, values); inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); eventBus = EventBus.getDefault(); + //eventBus.register(this); } @Override public View getView(final int position, View view, ViewGroup parent) { - ViewHolder holder; + final ViewHolder holder; if (view != null) { holder = (ViewHolder) view.getTag(); } else { - view = inflater.inflate(R.layout.podcast_audio_row, parent, false); + view = inflater.inflate(R.layout.podcast_row, parent, false); holder = new ViewHolder(view); view.setTag(holder); } - AudioPodcastItem podcastItem = getItem(position); + final PodcastItem podcastItem = getItem(position); holder.tvTitle.setText(podcastItem.title); holder.tvBody.setText(podcastItem.mimeType); @@ -46,19 +52,85 @@ public class PodcastArrayAdapter extends ArrayAdapter<AudioPodcastItem> { view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - AudioPodcastClicked audioPodcastClicked = new AudioPodcastClicked(); - audioPodcastClicked.position = position; - eventBus.post(audioPodcastClicked); + playPodcast(position); } }); + + holder.flDownloadPodcast.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + holder.flDownloadPodcast.setVisibility(View.GONE); + + Toast.makeText(getContext(), "Starting download.. Please wait", Toast.LENGTH_SHORT).show(); + + eventBus.post(new StartDownloadPodcast() {{ podcast = podcastItem; }}); + } + }); + + holder.flPlayPodcast.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + playPodcast(position); + } + }); + + + holder.pbDownloadPodcast.setProgress(podcastItem.downloadProgress); + if(podcastItem.downloadProgress >= 0) + holder.tvDownloadPodcastProgress.setText(podcastItem.downloadProgress + "%"); + else + holder.tvDownloadPodcastProgress.setText(null); + + + if(podcastItem.link.contains(JavaYoutubeDownloader.host)) { + if(podcastItem.downloadProgress == PodcastItem.DOWNLOAD_NOT_STARTED) { + holder.flPlayPodcast.setVisibility(View.GONE);//Youtube Videos can't be streamed + holder.flDownloadPodcast.setVisibility(View.VISIBLE); + } else { + holder.flPlayPodcast.setVisibility(View.VISIBLE); + holder.flDownloadPodcast.setVisibility(View.GONE); + } + } else if(podcastItem.downloadProgress == PodcastItem.DOWNLOAD_NOT_STARTED) { + holder.flDownloadPodcast.setVisibility(View.VISIBLE); + } else { + holder.flDownloadPodcast.setVisibility(View.GONE); + } + + /* + File podcastFile = new File(PodcastDownloadService.getUrlToPodcastFile(getContext(), podcastItem.link, true)); + File podcastFileCache = new File(PodcastDownloadService.getUrlToPodcastFile(getContext(), podcastItem.link, true) + ".download"); + if(podcastFile.exists()) { + holder.flDownloadPodcast.setVisibility(View.GONE); + } + else if(podcastFileCache.exists()) { + holder.flDownloadPodcast.setVisibility(View.GONE); + } + else + holder.flDownloadPodcast.setVisibility(View.VISIBLE); + */ + return view; } + private void playPodcast(int position) { + AudioPodcastClicked audioPodcastClicked = new AudioPodcastClicked(); + audioPodcastClicked.position = position; + eventBus.post(audioPodcastClicked); + } + + + static class ViewHolder { @InjectView(R.id.tv_title) TextView tvTitle; @InjectView(R.id.tv_body) TextView tvBody; + @InjectView(R.id.fl_downloadPodcastWrapper) FrameLayout flDownloadPodcast; + @InjectView(R.id.fl_PlayPodcastWrapper) FrameLayout flPlayPodcast; + @InjectView(R.id.pbDownloadPodcast) ProgressBar pbDownloadPodcast; + @InjectView(R.id.tvDownloadPodcastProgress) TextView tvDownloadPodcastProgress; + + public ViewHolder(View view) { ButterKnife.inject(this, view); |