summaryrefslogtreecommitdiff
path: root/model/src/main/java/de
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2024-03-17 20:25:44 +0100
committerGitHub <noreply@github.com>2024-03-17 20:25:44 +0100
commit2d77b1f11802da28cbcd87c9456bcc7ee3abf2a0 (patch)
tree7f54438ed59eee3272cd38dab79f8ebfe291e9e4 /model/src/main/java/de
parentb84a05bd4e2bf2d10b7791155cc0a7a0e5aa3dcf (diff)
downloadAntennaPod-2d77b1f11802da28cbcd87c9456bcc7ee3abf2a0.zip
Remove dependency from :ui:glide to :core module (#6998)
Diffstat (limited to 'model/src/main/java/de')
-rw-r--r--model/src/main/java/de/danoeh/antennapod/model/download/DownloadRequest.java227
1 files changed, 227 insertions, 0 deletions
diff --git a/model/src/main/java/de/danoeh/antennapod/model/download/DownloadRequest.java b/model/src/main/java/de/danoeh/antennapod/model/download/DownloadRequest.java
new file mode 100644
index 000000000..e9a0bb84b
--- /dev/null
+++ b/model/src/main/java/de/danoeh/antennapod/model/download/DownloadRequest.java
@@ -0,0 +1,227 @@
+package de.danoeh.antennapod.model.download;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+public class DownloadRequest implements Parcelable {
+ public static final String REQUEST_ARG_PAGE_NR = "page";
+
+ private final String destination;
+ private final String source;
+ private final String title;
+ private String username;
+ private String password;
+ private String lastModified;
+ private final long feedfileId;
+ private final int feedfileType;
+ private final Bundle arguments;
+
+ private int progressPercent;
+ private long soFar;
+ private long size;
+ private int statusMsg;
+ private boolean mediaEnqueued;
+ private boolean initiatedByUser;
+
+ public DownloadRequest(@NonNull String destination, @NonNull String source, @NonNull String title, long feedfileId,
+ int feedfileType, String username, String password,
+ Bundle arguments, boolean initiatedByUser) {
+ this(destination, source, title, feedfileId, feedfileType, null, username, password, false,
+ arguments, initiatedByUser);
+ }
+
+ private DownloadRequest(Parcel in) {
+ this(in.readString(), in.readString(), in.readString(), in.readLong(), in.readInt(), in.readString(),
+ nullIfEmpty(in.readString()), nullIfEmpty(in.readString()), in.readByte() > 0,
+ in.readBundle(), in.readByte() > 0);
+ }
+
+ public DownloadRequest(String destination, String source, String title, long feedfileId, int feedfileType,
+ String lastModified, String username, String password,
+ boolean mediaEnqueued, Bundle arguments, boolean initiatedByUser) {
+ this.destination = destination;
+ this.source = source;
+ this.title = title;
+ this.feedfileId = feedfileId;
+ this.feedfileType = feedfileType;
+ this.lastModified = lastModified;
+ this.username = username;
+ this.password = password;
+ this.mediaEnqueued = mediaEnqueued;
+ this.arguments = arguments;
+ this.initiatedByUser = initiatedByUser;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(destination);
+ dest.writeString(source);
+ dest.writeString(title);
+ dest.writeLong(feedfileId);
+ dest.writeInt(feedfileType);
+ dest.writeString(lastModified);
+ // in case of null username/password, still write an empty string
+ // (rather than skipping it). Otherwise, unmarshalling a collection
+ // of them from a Parcel (from an Intent extra to submit a request to DownloadService) will fail.
+ //
+ // see: https://stackoverflow.com/a/22926342
+ dest.writeString(nonNullString(username));
+ dest.writeString(nonNullString(password));
+ dest.writeByte((mediaEnqueued) ? (byte) 1 : 0);
+ dest.writeBundle(arguments);
+ dest.writeByte(initiatedByUser ? (byte) 1 : 0);
+ }
+
+ private static String nonNullString(String str) {
+ return str != null ? str : "";
+ }
+
+ private static String nullIfEmpty(String str) {
+ return TextUtils.isEmpty(str) ? null : str;
+ }
+
+ public static final Parcelable.Creator<DownloadRequest> CREATOR = new Parcelable.Creator<DownloadRequest>() {
+ public DownloadRequest createFromParcel(Parcel in) {
+ return new DownloadRequest(in);
+ }
+
+ public DownloadRequest[] newArray(int size) {
+ return new DownloadRequest[size];
+ }
+ };
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof DownloadRequest)) return false;
+
+ DownloadRequest that = (DownloadRequest) o;
+
+ if (lastModified != null ? !lastModified.equals(that.lastModified) : that.lastModified != null)
+ return false;
+ if (feedfileId != that.feedfileId) return false;
+ if (feedfileType != that.feedfileType) return false;
+ if (progressPercent != that.progressPercent) return false;
+ if (size != that.size) return false;
+ if (soFar != that.soFar) return false;
+ if (statusMsg != that.statusMsg) return false;
+ if (!destination.equals(that.destination)) return false;
+ if (password != null ? !password.equals(that.password) : that.password != null)
+ return false;
+ if (!source.equals(that.source)) return false;
+ if (title != null ? !title.equals(that.title) : that.title != null) return false;
+ if (username != null ? !username.equals(that.username) : that.username != null)
+ return false;
+ if (mediaEnqueued != that.mediaEnqueued) return false;
+ if (initiatedByUser != that.initiatedByUser) return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = destination.hashCode();
+ result = 31 * result + source.hashCode();
+ result = 31 * result + (title != null ? title.hashCode() : 0);
+ result = 31 * result + (username != null ? username.hashCode() : 0);
+ result = 31 * result + (password != null ? password.hashCode() : 0);
+ result = 31 * result + (lastModified != null ? lastModified.hashCode() : 0);
+ result = 31 * result + (int) (feedfileId ^ (feedfileId >>> 32));
+ result = 31 * result + feedfileType;
+ result = 31 * result + arguments.hashCode();
+ result = 31 * result + progressPercent;
+ result = 31 * result + (int) (soFar ^ (soFar >>> 32));
+ result = 31 * result + (int) (size ^ (size >>> 32));
+ result = 31 * result + statusMsg;
+ result = 31 * result + (mediaEnqueued ? 1 : 0);
+ return result;
+ }
+
+ public String getDestination() {
+ return destination;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public long getFeedfileId() {
+ return feedfileId;
+ }
+
+ public int getFeedfileType() {
+ return feedfileType;
+ }
+
+ public int getProgressPercent() {
+ return progressPercent;
+ }
+
+ public void setProgressPercent(int progressPercent) {
+ this.progressPercent = progressPercent;
+ }
+
+ public long getSoFar() {
+ return soFar;
+ }
+
+ public void setSoFar(long soFar) {
+ this.soFar = soFar;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+ public void setStatusMsg(int statusMsg) {
+ this.statusMsg = statusMsg;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public DownloadRequest setLastModified(@Nullable String lastModified) {
+ this.lastModified = lastModified;
+ return this;
+ }
+
+ @Nullable
+ public String getLastModified() {
+ return lastModified;
+ }
+
+ public Bundle getArguments() {
+ return arguments;
+ }
+}