From b2357e58e3dcbba77797cc07dd3dec2349ccff1d Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Wed, 23 Aug 2017 23:47:44 -0500 Subject: Config/Interface/Peer: Make Parcelable This allows saving the editor state across restarts. Signed-off-by: Jason A. Donenfeld --- .../main/java/com/wireguard/config/Interface.java | 46 +++++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to 'app/src/main/java/com/wireguard/config/Interface.java') diff --git a/app/src/main/java/com/wireguard/config/Interface.java b/app/src/main/java/com/wireguard/config/Interface.java index a4ea4b81..b291844a 100644 --- a/app/src/main/java/com/wireguard/config/Interface.java +++ b/app/src/main/java/com/wireguard/config/Interface.java @@ -3,16 +3,32 @@ package com.wireguard.config; import android.databinding.BaseObservable; import android.databinding.Bindable; import android.databinding.Observable; +import android.os.Parcel; +import android.os.Parcelable; import com.wireguard.android.BR; -import com.wireguard.crypto.Keypair; import com.wireguard.crypto.KeyEncoding; +import com.wireguard.crypto.Keypair; /** * Represents the configuration for a WireGuard interface (an [Interface] block). */ -public class Interface extends BaseObservable implements Copyable, Observable { +public class Interface extends BaseObservable + implements Copyable, Observable, Parcelable { + public static final Parcelable.Creator CREATOR + = new Parcelable.Creator() { + @Override + public Interface createFromParcel(final Parcel in) { + return new Interface(in); + } + + @Override + public Interface[] newArray(final int size) { + return new Interface[size]; + } + }; + private String address; private String dns; private String listenPort; @@ -20,6 +36,18 @@ public class Interface extends BaseObservable implements Copyable, Ob private String mtu; private String privateKey; + public Interface() { + // Do nothing. + } + + protected Interface(final Parcel in) { + address = in.readString(); + dns = in.readString(); + listenPort = in.readString(); + mtu = in.readString(); + setPrivateKey(in.readString()); + } + @Override public Interface copy() { final Interface copy = new Interface(); @@ -45,6 +73,11 @@ public class Interface extends BaseObservable implements Copyable, Ob notifyChange(); } + @Override + public int describeContents() { + return 0; + } + public void generateKeypair() { keypair = new Keypair(); privateKey = keypair.getPrivateKey(); @@ -158,4 +191,13 @@ public class Interface extends BaseObservable implements Copyable, Ob sb.append(Attribute.PRIVATE_KEY.composeWith(privateKey)); return sb.toString(); } + + @Override + public void writeToParcel(final Parcel dest, final int flags) { + dest.writeString(address); + dest.writeString(dns); + dest.writeString(listenPort); + dest.writeString(mtu); + dest.writeString(privateKey); + } } -- cgit v1.3-18-gd494