package cgeo.geocaching.maps;
import cgeo.geocaching.location.Geopoint;
import android.os.Parcel;
import android.os.Parcelable;
public class MapState implements Parcelable {
private final Geopoint center;
private final int zoomLevel;
private final boolean followMyLocation;
private final boolean showCircles;
private final String targetGeocode;
private final Geopoint lastNavTarget;
private final boolean liveEnabled;
private final boolean storedEnabled;
public MapState(final Geopoint center, final int zoomLevel, final boolean followMyLocation, final boolean showCircles, final String targetGeocode, final Geopoint lastNavTarget, final boolean liveEnabled, final boolean storedEnabled) {
this.center = center;
this.zoomLevel = zoomLevel;
this.followMyLocation = followMyLocation;
this.showCircles = showCircles;
this.targetGeocode = targetGeocode;
this.lastNavTarget = lastNavTarget;
this.liveEnabled = liveEnabled;
this.storedEnabled = storedEnabled;
}
public MapState(final Parcel in) {
center = in.readParcelable(Geopoint.class.getClassLoader());
zoomLevel = in.readInt();
followMyLocation = in.readInt() > 0;
showCircles = in.readInt() > 0;
targetGeocode = in.readString();
lastNavTarget = in.readParcelable(Geopoint.class.getClassLoader());
liveEnabled = in.readInt() > 0;
storedEnabled = in.readInt() > 0;
}
public Geopoint getCenter() {
return center;
}
public int getZoomLevel() {
return zoomLevel;
}
public boolean followsMyLocation() {
return followMyLocation;
}
public boolean showsCircles() {
return showCircles;
}
public String getTargetGeocode() {
return targetGeocode;
}
public Geopoint getLastNavTarget() {
return lastNavTarget;
}
public boolean isLiveEnabled() {
return liveEnabled;
}
public boolean isStoredEnabled() {
return storedEnabled;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(final Parcel dest, final int flags) {
dest.writeParcelable(center, 0);
dest.writeInt(zoomLevel);
dest.writeInt(followMyLocation ? 1 : 0);
dest.writeInt(showCircles ? 1 : 0);
dest.writeString(targetGeocode);
dest.writeParcelable(lastNavTarget, PARCELABLE_WRITE_RETURN_VALUE);
dest.writeInt(liveEnabled ? 1 : 0);
dest.writeInt(storedEnabled ? 1 : 0);
}
public static final Parcelable.Creator<MapState> CREATOR = new Parcelable.Creator<MapState>() {
@Override
public MapState createFromParcel(final Parcel in) {
return new MapState(in);
}
@Override
public MapState[] newArray(final int size) {
return new MapState[size];
}
};
}