Made email provider parcelable

This commit is contained in:
M66B
2021-06-25 20:49:55 +02:00
parent fd442635ba
commit 79653a83ee
2 changed files with 68 additions and 4 deletions

View File

@@ -21,6 +21,8 @@ package eu.faircode.email;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import androidx.annotation.NonNull;
@@ -32,7 +34,6 @@ import org.xmlpull.v1.XmlPullParserFactory;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -51,7 +52,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
public class EmailProvider implements Serializable {
public class EmailProvider implements Parcelable {
public String id;
public String name;
public String description;
@@ -676,6 +677,69 @@ public class EmailProvider implements Serializable {
EntityLog.log(context, "smtp=" + smtp.host + ":" + smtp.port + ":" + smtp.starttls);
}
protected EmailProvider(Parcel in) {
if (in.readInt() == 0)
imap = null;
else {
imap = new Server();
imap.host = in.readString();
imap.port = in.readInt();
imap.starttls = (in.readInt() != 0);
}
if (in.readInt() == 0)
smtp = null;
else {
smtp = new Server();
smtp.host = in.readString();
smtp.port = in.readInt();
smtp.starttls = (in.readInt() != 0);
}
appPassword = (in.readInt() != 0);
link = in.readString();
String doc = in.readString();
documentation = (doc == null ? null : new StringBuilder(doc));
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(imap == null ? 0 : 1);
if (imap != null) {
dest.writeString(imap.host);
dest.writeInt(imap.port);
dest.writeInt(imap.starttls ? 1 : 0);
}
dest.writeInt(smtp == null ? 0 : 1);
if (smtp != null) {
dest.writeString(smtp.host);
dest.writeInt(smtp.port);
dest.writeInt(smtp.starttls ? 1 : 0);
}
dest.writeInt(appPassword ? 1 : 0);
dest.writeString(link);
dest.writeString(documentation == null ? null : documentation.toString());
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<EmailProvider> CREATOR = new Creator<EmailProvider>() {
@Override
public EmailProvider createFromParcel(Parcel in) {
return new EmailProvider(in);
}
@Override
public EmailProvider[] newArray(int size) {
return new EmailProvider[size];
}
};
@NonNull
@Override
public String toString() {