package org.ebookdroid.common.settings.books;
import org.ebookdroid.core.PageIndex;
import org.emdev.utils.CompareUtils;
import org.json.JSONException;
import org.json.JSONObject;
public class Bookmark implements Comparable<Bookmark> {
public boolean service;
public String name;
public PageIndex page;
public float offsetX;
public float offsetY;
public Bookmark(final String name, final PageIndex page, final float offsetX, final float offsetY) {
this(false, name, page, offsetX, offsetY);
}
public Bookmark(final boolean service, final String name, final PageIndex page, final float offsetX,
final float offsetY) {
this.service = service;
this.name = name;
this.page = page;
this.offsetX = offsetX;
this.offsetY = offsetY;
}
public Bookmark(final JSONObject obj) throws JSONException {
this.service = false;
this.name = obj.getString("name");
this.page = new PageIndex(obj.getJSONObject("page"));
this.offsetX = (float) obj.getDouble("offsetX");
this.offsetY = (float) obj.getDouble("offsetY");
}
public JSONObject toJSON() throws JSONException {
final JSONObject obj = new JSONObject();
obj.put("name", name);
obj.put("page", page.toJSON());
obj.put("offsetX", offsetX);
obj.put("offsetY", offsetY);
return obj;
}
public int getActualIndex(final boolean splittingEnabled) {
if (page.docIndex == page.viewIndex) {
return page.docIndex;
}
return splittingEnabled ? page.viewIndex : page.docIndex;
}
@Override
public String toString() {
return name;
}
@Override
public int compareTo(final Bookmark that) {
if (that == null) {
return -1;
}
int res = CompareUtils.compare(this.page.docIndex, that.page.docIndex);
if (res == 0) {
res = CompareUtils.compare(this.page.viewIndex, that.page.viewIndex);
if (res == 0) {
res = CompareUtils.compare(this.offsetY, that.offsetY);
if (res == 0) {
res = CompareUtils.compare(this.offsetX, that.offsetX);
}
}
}
return res;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Bookmark))
return false;
return compareTo((Bookmark)obj) == 0;
}
}