package com.o3dr.services.android.lib.gcs.follow;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
/**
* Created by fhuya on 11/5/14.
*/
public enum FollowType implements Parcelable {
LEASH("Leash"),
LEAD("Lead"),
RIGHT("Right"),
LEFT("Left"),
CIRCLE("Circle"),
ABOVE("Above") {
@Override
public boolean hasParam(String paramKey) {
return false;
}
},
GUIDED_SCAN("Guided Scan") {
@Override
public boolean hasParam(String paramKey) {
switch (paramKey) {
case EXTRA_FOLLOW_ROI_TARGET:
return true;
default:
return false;
}
}
},
LOOK_AT_ME("Look At Me") {
@Override
public boolean hasParam(String paramKey) {
return false;
}
},
SOLO_SHOT("Solo Follow Shot"){
@Override
public boolean hasParam(String paramKey){
return false;
}
};
public static final String EXTRA_FOLLOW_RADIUS = "extra_follow_radius";
public static final String EXTRA_FOLLOW_ROI_TARGET = "extra_follow_roi_target";
private final String typeLabel;
private FollowType(String typeLabel) {
this.typeLabel = typeLabel;
}
public boolean hasParam(String paramKey) {
switch (paramKey) {
case EXTRA_FOLLOW_RADIUS:
return true;
case EXTRA_FOLLOW_ROI_TARGET:
return false;
default:
return false;
}
}
public String getTypeLabel() {
return typeLabel;
}
@Override
public String toString() {
return getTypeLabel();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name());
}
public static List<FollowType> getFollowTypes(boolean includeAdvanced) {
List<FollowType> followTypes = new ArrayList<>();
followTypes.add(LEASH);
followTypes.add(LEAD);
followTypes.add(RIGHT);
followTypes.add(LEFT);
followTypes.add(CIRCLE);
followTypes.add(ABOVE);
followTypes.add(GUIDED_SCAN);
followTypes.add(LOOK_AT_ME);
return followTypes;
}
public static final Parcelable.Creator<FollowType> CREATOR = new Parcelable.Creator<FollowType>() {
public FollowType createFromParcel(Parcel source) {
return FollowType.valueOf(source.readString());
}
public FollowType[] newArray(int size) {
return new FollowType[size];
}
};
}