diff --git a/assets/resources/application/cs.xml b/assets/resources/application/cs.xml
index 6ef802b2a..bec853217 100644
--- a/assets/resources/application/cs.xml
+++ b/assets/resources/application/cs.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/assets/resources/application/de.xml b/assets/resources/application/de.xml
index 950647658..3e7ac0648 100644
--- a/assets/resources/application/de.xml
+++ b/assets/resources/application/de.xml
@@ -160,7 +160,7 @@
-
+
diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml
index 4e4cafa00..1fb978e04 100644
--- a/assets/resources/application/en.xml
+++ b/assets/resources/application/en.xml
@@ -158,7 +158,7 @@
-
+
diff --git a/assets/resources/application/fr.xml b/assets/resources/application/fr.xml
index 55cdf510b..8eec3b7fa 100644
--- a/assets/resources/application/fr.xml
+++ b/assets/resources/application/fr.xml
@@ -162,7 +162,7 @@
-
+
diff --git a/assets/resources/application/hu.xml b/assets/resources/application/hu.xml
index bf9b74819..0bd210456 100644
--- a/assets/resources/application/hu.xml
+++ b/assets/resources/application/hu.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/assets/resources/application/it.xml b/assets/resources/application/it.xml
index 32dfefee2..a650d9c2b 100644
--- a/assets/resources/application/it.xml
+++ b/assets/resources/application/it.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/assets/resources/application/nl.xml b/assets/resources/application/nl.xml
index 6e7bb8de7..ad6459ffc 100644
--- a/assets/resources/application/nl.xml
+++ b/assets/resources/application/nl.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/assets/resources/application/ru.xml b/assets/resources/application/ru.xml
index c913f9d18..fd9dda42c 100644
--- a/assets/resources/application/ru.xml
+++ b/assets/resources/application/ru.xml
@@ -158,7 +158,7 @@
-
+
diff --git a/assets/resources/application/uk.xml b/assets/resources/application/uk.xml
index 0f58326a5..0472bfed9 100644
--- a/assets/resources/application/uk.xml
+++ b/assets/resources/application/uk.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/assets/resources/application/vi.xml b/assets/resources/application/vi.xml
index 9b416e521..c85ffe8ab 100644
--- a/assets/resources/application/vi.xml
+++ b/assets/resources/application/vi.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/assets/resources/application/zh.xml b/assets/resources/application/zh.xml
index 6a7668742..d67bc2f58 100644
--- a/assets/resources/application/zh.xml
+++ b/assets/resources/application/zh.xml
@@ -159,7 +159,7 @@
-
+
diff --git a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
index 42ad66519..947c52685 100644
--- a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
+++ b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
@@ -190,6 +190,7 @@ public final class FBReaderApp extends ZLApplication {
if (Model != null) {
BookModel.Label label = Model.getLabel(id);
if (label != null) {
+ addInvisibleBookmark();
if (label.ModelId == null) {
BookTextView.gotoPosition(label.ParagraphIndex, 0, 0);
} else {
@@ -291,7 +292,7 @@ public final class FBReaderApp extends ZLApplication {
static enum CancelActionType {
previousBook,
- gotoPosition,
+ returnTo,
close
}
@@ -308,6 +309,15 @@ public final class FBReaderApp extends ZLApplication {
}
}
+ private static class BookmarkDescription extends CancelActionDescription {
+ final Bookmark Bookmark;
+
+ BookmarkDescription(Bookmark b) {
+ super(CancelActionType.returnTo, b.getText());
+ Bookmark = b;
+ }
+ }
+
private final ArrayList myCancelActionsList =
new ArrayList();
@@ -319,15 +329,11 @@ public final class FBReaderApp extends ZLApplication {
CancelActionType.previousBook, previousBook.getTitle()
));
}
- myCancelActionsList.add(new CancelActionDescription(
- CancelActionType.gotoPosition, "this is a summary"
- ));
- myCancelActionsList.add(new CancelActionDescription(
- CancelActionType.gotoPosition, "this is a summary"
- ));
- myCancelActionsList.add(new CancelActionDescription(
- CancelActionType.gotoPosition, "this is a summary"
- ));
+ if (Model.Book != null) {
+ for (Bookmark bookmark : Bookmark.invisibleBookmarks(Model.Book)) {
+ myCancelActionsList.add(new BookmarkDescription(bookmark));
+ }
+ }
myCancelActionsList.add(new CancelActionDescription(
CancelActionType.close, null
));
@@ -344,14 +350,33 @@ public final class FBReaderApp extends ZLApplication {
case previousBook:
openBook(Library.getPreviousBook(), null);
break;
- case gotoPosition:
+ case returnTo:
+ {
+ final Bookmark b = ((BookmarkDescription)description).Bookmark;
+ b.delete();
+ addInvisibleBookmark();
+ gotoBookmark(b);
break;
+ }
case close:
closeWindow();
break;
}
}
+ public void addInvisibleBookmark() {
+ if (Model.Book != null) {
+ final Bookmark b = addBookmark(6, false);
+ if (b != null) {
+ b.save();
+ final List bookmarks = Bookmark.invisibleBookmarks(Model.Book);
+ for (int i = 3; i < bookmarks.size(); ++i) {
+ bookmarks.get(i).delete();
+ }
+ }
+ }
+ }
+
public Bookmark addBookmark(int maxLength, boolean visible) {
final FBView view = getTextView();
final ZLTextWordCursor cursor = view.getStartCursor();
diff --git a/src/org/geometerplus/fbreader/library/Bookmark.java b/src/org/geometerplus/fbreader/library/Bookmark.java
index 37a31dae5..b8e9d28b2 100644
--- a/src/org/geometerplus/fbreader/library/Bookmark.java
+++ b/src/org/geometerplus/fbreader/library/Bookmark.java
@@ -33,6 +33,12 @@ public final class Bookmark extends ZLTextFixedPosition {
return BooksDatabase.Instance().loadAllVisibleBookmarks();
}
+ public static List invisibleBookmarks(Book book) {
+ final List list = BooksDatabase.Instance().loadBookmarks(book.getId(), false);
+ Collections.sort(list, new ByTimeComparator());
+ return list;
+ }
+
private long myId;
private final long myBookId;
private final String myBookTitle;
@@ -152,7 +158,7 @@ public final class Bookmark extends ZLTextFixedPosition {
}
}
- public static String createBookmarkText(ZLTextWordCursor cursor, int maxWords) {
+ private static String createBookmarkText(ZLTextWordCursor cursor, int maxWords) {
cursor = new ZLTextWordCursor(cursor);
final StringBuilder builder = new StringBuilder();