diff options
| author | 2017-08-23 23:47:44 -0500 | |
|---|---|---|
| committer | 2017-08-23 23:47:44 -0500 | |
| commit | b2357e58e3dcbba77797cc07dd3dec2349ccff1d (patch) | |
| tree | 2d97b3190e3f044a7897b9ebae96cd365bba8596 /app/src/main/java/com/wireguard/config/Interface.java | |
| parent | Config/Interface/Peer: Fix some missed change notifications (diff) | |
| download | wireguard-android-b2357e58e3dcbba77797cc07dd3dec2349ccff1d.tar.xz wireguard-android-b2357e58e3dcbba77797cc07dd3dec2349ccff1d.zip | |
Config/Interface/Peer: Make Parcelable
This allows saving the editor state across restarts.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/config/Interface.java')
| -rw-r--r-- | app/src/main/java/com/wireguard/config/Interface.java | 46 |
1 files changed, 44 insertions, 2 deletions
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<Interface>, Observable { +public class Interface extends BaseObservable + implements Copyable<Interface>, Observable, Parcelable { + public static final Parcelable.Creator<Interface> CREATOR + = new Parcelable.Creator<Interface>() { + @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<Interface>, 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<Interface>, 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<Interface>, 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); + } } |
