summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java95
1 files changed, 13 insertions, 82 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
index 8df3e3968..0fb6a7e7a 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
@@ -2,7 +2,6 @@ package de.danoeh.antennapod.adapter;
import android.app.Activity;
import android.text.format.DateUtils;
-import android.text.format.Formatter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@@ -10,18 +9,13 @@ import android.widget.BaseAdapter;
import android.widget.Toast;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
-import de.danoeh.antennapod.core.service.download.DownloadRequestCreator;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
-import de.danoeh.antennapod.core.service.download.Downloader;
+import de.danoeh.antennapod.adapter.actionbutton.DownloadActionButton;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
-import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.DownloadErrorLabel;
import de.danoeh.antennapod.model.download.DownloadError;
-import de.danoeh.antennapod.model.download.DownloadStatus;
+import de.danoeh.antennapod.model.download.DownloadResult;
import de.danoeh.antennapod.model.feed.Feed;
-import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedMedia;
import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.view.viewholder.DownloadLogItemViewHolder;
@@ -36,24 +30,18 @@ public class DownloadLogAdapter extends BaseAdapter {
private static final String TAG = "DownloadLogAdapter";
private final Activity context;
- private List<DownloadStatus> downloadLog = new ArrayList<>();
- private List<Downloader> runningDownloads = new ArrayList<>();
+ private List<DownloadResult> downloadLog = new ArrayList<>();
public DownloadLogAdapter(Activity context) {
super();
this.context = context;
}
- public void setDownloadLog(List<DownloadStatus> downloadLog) {
+ public void setDownloadLog(List<DownloadResult> downloadLog) {
this.downloadLog = downloadLog;
notifyDataSetChanged();
}
- public void setRunningDownloads(List<Downloader> runningDownloads) {
- this.runningDownloads = runningDownloads;
- notifyDataSetChanged();
- }
-
@Override
public View getView(int position, View convertView, ViewGroup parent) {
DownloadLogItemViewHolder holder;
@@ -63,17 +51,11 @@ public class DownloadLogAdapter extends BaseAdapter {
} else {
holder = (DownloadLogItemViewHolder) convertView.getTag();
}
-
- Object item = getItem(position);
- if (item instanceof DownloadStatus) {
- bind(holder, (DownloadStatus) item, position);
- } else if (item instanceof Downloader) {
- bind(holder, (Downloader) item, position);
- }
+ bind(holder, getItem(position), position);
return holder.itemView;
}
- private void bind(DownloadLogItemViewHolder holder, DownloadStatus status, int position) {
+ private void bind(DownloadLogItemViewHolder holder, DownloadResult status, int position) {
String statusText = "";
if (status.getFeedfileType() == Feed.FEEDFILETYPE_FEED) {
statusText += context.getString(R.string.download_type_feed);
@@ -111,8 +93,7 @@ public class DownloadLogAdapter extends BaseAdapter {
holder.reason.setVisibility(View.VISIBLE);
holder.tapForDetails.setVisibility(View.VISIBLE);
- if (newerWasSuccessful(position - runningDownloads.size(),
- status.getFeedfileType(), status.getFeedfileId())) {
+ if (newerWasSuccessful(position, status.getFeedfileType(), status.getFeedfileId())) {
holder.secondaryActionButton.setVisibility(View.INVISIBLE);
holder.secondaryActionButton.setOnClickListener(null);
holder.secondaryActionButton.setTag(null);
@@ -138,8 +119,7 @@ public class DownloadLogAdapter extends BaseAdapter {
Log.e(TAG, "Could not find feed media for feed id: " + status.getFeedfileId());
return;
}
- DownloadServiceInterface.get()
- .download(context, true, DownloadRequestCreator.create(media).build());
+ new DownloadActionButton(media.getItem()).onClick(context);
((MainActivity) context).showSnackbarAbovePlayer(
R.string.status_downloading_label, Toast.LENGTH_SHORT);
});
@@ -148,56 +128,9 @@ public class DownloadLogAdapter extends BaseAdapter {
}
}
- private void bind(DownloadLogItemViewHolder holder, Downloader downloader, int position) {
- DownloadRequest request = downloader.getDownloadRequest();
- holder.title.setText(request.getTitle());
- holder.secondaryActionIcon.setImageResource(R.drawable.ic_cancel);
- holder.secondaryActionButton.setContentDescription(context.getString(R.string.cancel_download_label));
- holder.secondaryActionButton.setVisibility(View.VISIBLE);
- holder.secondaryActionButton.setTag(downloader);
- holder.secondaryActionButton.setOnClickListener(v -> {
- DownloadServiceInterface.get().cancel(context, request.getSource());
- if (request.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
- FeedMedia media = DBReader.getFeedMedia(request.getFeedfileId());
- FeedItem feedItem = media.getItem();
- feedItem.disableAutoDownload();
- DBWriter.setFeedItem(feedItem);
- }
- });
- holder.reason.setVisibility(View.GONE);
- holder.tapForDetails.setVisibility(View.GONE);
- holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.colorPrimary));
- holder.icon.setText("{fa-arrow-circle-down}");
- holder.icon.setContentDescription(context.getString(R.string.status_downloading_label));
-
- boolean percentageWasSet = false;
- String status = "";
- if (request.getFeedfileType() == Feed.FEEDFILETYPE_FEED) {
- status += context.getString(R.string.download_type_feed);
- } else if (request.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
- status += context.getString(R.string.download_type_media);
- }
- status += " ยท ";
- if (request.getSoFar() <= 0) {
- status += context.getString(R.string.download_pending);
- } else {
- status += Formatter.formatShortFileSize(context, request.getSoFar());
- if (request.getSize() != DownloadStatus.SIZE_UNKNOWN) {
- status += " / " + Formatter.formatShortFileSize(context, request.getSize());
- holder.secondaryActionProgress.setPercentage(
- 0.01f * Math.max(1, request.getProgressPercent()), request);
- percentageWasSet = true;
- }
- }
- if (!percentageWasSet) {
- holder.secondaryActionProgress.setPercentage(0, request);
- }
- holder.status.setText(status);
- }
-
private boolean newerWasSuccessful(int downloadStatusIndex, int feedTypeId, long id) {
for (int i = 0; i < downloadStatusIndex; i++) {
- DownloadStatus status = downloadLog.get(i);
+ DownloadResult status = downloadLog.get(i);
if (status.getFeedfileType() == feedTypeId && status.getFeedfileId() == id && status.isSuccessful()) {
return true;
}
@@ -207,15 +140,13 @@ public class DownloadLogAdapter extends BaseAdapter {
@Override
public int getCount() {
- return downloadLog.size() + runningDownloads.size();
+ return downloadLog.size();
}
@Override
- public Object getItem(int position) {
- if (position < runningDownloads.size()) {
- return runningDownloads.get(position);
- } else if (position - runningDownloads.size() < downloadLog.size()) {
- return downloadLog.get(position - runningDownloads.size());
+ public DownloadResult getItem(int position) {
+ if (position < downloadLog.size()) {
+ return downloadLog.get(position);
}
return null;
}