diff --git a/ChangeLog b/ChangeLog
index ac55ba4bc..8360dc582 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
* Periodical update of custom links information has been added
* Epub rendering issues (like unexpected paragraph ends) were fixed
* Multi-body fb2 file processing has been fixed
+* 'Cancel menu' preferences section
===== 0.99.13 (Feb 13, 2011) =====
* Fixed book/position forgetting bug
diff --git a/assets/resources/application/cs.xml b/assets/resources/application/cs.xml
index 7a7f4d190..8f5576179 100644
--- a/assets/resources/application/cs.xml
+++ b/assets/resources/application/cs.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/de.xml b/assets/resources/application/de.xml
index 2a27a143a..b08d1d6b0 100644
--- a/assets/resources/application/de.xml
+++ b/assets/resources/application/de.xml
@@ -528,6 +528,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml
index 5b880a09c..6d21621e9 100644
--- a/assets/resources/application/en.xml
+++ b/assets/resources/application/en.xml
@@ -530,6 +530,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/fr.xml b/assets/resources/application/fr.xml
index d3a53d408..0f5f8e554 100644
--- a/assets/resources/application/fr.xml
+++ b/assets/resources/application/fr.xml
@@ -530,6 +530,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/gl.xml b/assets/resources/application/gl.xml
index 9692dba8d..1a1db4e09 100644
--- a/assets/resources/application/gl.xml
+++ b/assets/resources/application/gl.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/hu.xml b/assets/resources/application/hu.xml
index 2728284d9..ad9d1ba77 100644
--- a/assets/resources/application/hu.xml
+++ b/assets/resources/application/hu.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/it.xml b/assets/resources/application/it.xml
index 1a886d7d4..0d35a1943 100644
--- a/assets/resources/application/it.xml
+++ b/assets/resources/application/it.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/nl.xml b/assets/resources/application/nl.xml
index eb64c7c63..25606ca63 100644
--- a/assets/resources/application/nl.xml
+++ b/assets/resources/application/nl.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/ru.xml b/assets/resources/application/ru.xml
index e6e5b7b36..ef5d32faf 100644
--- a/assets/resources/application/ru.xml
+++ b/assets/resources/application/ru.xml
@@ -526,6 +526,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/th.xml b/assets/resources/application/th.xml
index 315cbb2e2..10eb5275f 100644
--- a/assets/resources/application/th.xml
+++ b/assets/resources/application/th.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/uk.xml b/assets/resources/application/uk.xml
index 69b79ffa3..f139ce139 100644
--- a/assets/resources/application/uk.xml
+++ b/assets/resources/application/uk.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/vi.xml b/assets/resources/application/vi.xml
index aaa724007..4702a964e 100644
--- a/assets/resources/application/vi.xml
+++ b/assets/resources/application/vi.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/resources/application/zh.xml b/assets/resources/application/zh.xml
index f58b8e38f..379205977 100644
--- a/assets/resources/application/zh.xml
+++ b/assets/resources/application/zh.xml
@@ -527,6 +527,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java
index 6c8187818..32860b299 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java
@@ -237,11 +237,17 @@ class NetworkBookActions extends NetworkTreeActions {
}
static boolean runActionStatic(Activity activity, NetworkBookTree tree, int actionCode) {
- final NetworkBookItem book = tree.Book;
switch (actionCode) {
case SHOW_BOOK_ACTIVITY_ITEM_ID:
Util.openTree(activity, tree);
return true;
+ default:
+ return runActionStatic(activity, tree.Book, actionCode);
+ }
+ }
+
+ static boolean runActionStatic(Activity activity, NetworkBookItem book, int actionCode) {
+ switch (actionCode) {
case DOWNLOAD_BOOK_ITEM_ID:
doDownloadBook(activity, book, false);
return true;
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java
index cc1b6841f..072a965b0 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java
@@ -48,7 +48,7 @@ import org.geometerplus.fbreader.network.NetworkBookItem;
import org.geometerplus.fbreader.network.tree.NetworkBookTree;
public class NetworkBookInfoActivity extends Activity implements NetworkView.EventListener {
- private NetworkBookTree myTree;
+ private NetworkBookItem myBook;
private View myMainView;
private final ZLResource myResource = ZLResource.resource("networkBookView");
@@ -58,6 +58,15 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ myMainView = getLayoutInflater().inflate(R.layout.network_book, null, false);
+ setContentView(myMainView);
+ myMainView.setOnCreateContextMenuListener(this);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
if (!NetworkView.Instance().isInitialized()) {
if (NetworkInitializer.Instance == null) {
new NetworkInitializer(this);
@@ -65,32 +74,30 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
} else {
NetworkInitializer.Instance.setActivity(this);
}
- return;
}
- final NetworkTree tree = Util.getTreeFromIntent(getIntent());
- if (!(tree instanceof NetworkBookTree)) {
- finish();
- return;
+ if (myBook == null) {
+ final NetworkTree tree = Util.getTreeFromIntent(getIntent());
+ if (!(tree instanceof NetworkBookTree)) {
+ finish();
+ return;
+ }
+ myBook = ((NetworkBookTree)tree).Book;
+
+ myConnection = new BookDownloaderServiceConnection();
+ bindService(
+ new Intent(getApplicationContext(), BookDownloaderService.class),
+ myConnection,
+ BIND_AUTO_CREATE
+ );
+
+ setTitle(myBook.Title);
+
+ setupDescription();
+ setupInfo();
+ setupCover();
+ setupButtons();
}
- myTree = (NetworkBookTree)tree;
-
- myConnection = new BookDownloaderServiceConnection();
- bindService(
- new Intent(getApplicationContext(), BookDownloaderService.class),
- myConnection,
- BIND_AUTO_CREATE
- );
-
- setTitle(myTree.Book.Title);
- myMainView = getLayoutInflater().inflate(R.layout.network_book, null, false);
- setContentView(myMainView);
- myMainView.setOnCreateContextMenuListener(this);
-
- setupDescription();
- setupInfo();
- setupCover();
- setupButtons();
}
View getMainView() {
@@ -119,19 +126,19 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
- NetworkView.Instance().getTopUpActions().buildContextMenu(this, menu, myTree.Book.Link);
+ NetworkView.Instance().getTopUpActions().buildContextMenu(this, menu, myBook.Link);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
- RefillAccountActions.runAction(this, myTree.Book.Link, item.getItemId());
+ RefillAccountActions.runAction(this, myBook.Link, item.getItemId());
return true;
}
private final void setupDescription() {
setTextFromResource(R.id.network_book_description_title, "description");
- String description = myTree.Book.Summary;
+ String description = myBook.Summary;
if (description == null) {
description = myResource.getResource("noDescription").getValue();
}
@@ -150,8 +157,6 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
}
private void setupInfo() {
- final NetworkBookItem book = myTree.Book;
-
setTextFromResource(R.id.network_book_info_title, "bookInfo");
setPairLabelTextFromResource(R.id.network_book_title, "title");
@@ -161,12 +166,12 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
setPairLabelTextFromResource(R.id.network_book_tags, "tags");
setPairLabelTextFromResource(R.id.network_book_catalog, "catalog");
- setPairValueText(R.id.network_book_title, book.Title);
+ setPairValueText(R.id.network_book_title, myBook.Title);
- if (book.Authors.size() > 0) {
+ if (myBook.Authors.size() > 0) {
findViewById(R.id.network_book_authors).setVisibility(View.VISIBLE);
final StringBuilder authorsText = new StringBuilder();
- for (NetworkBookItem.AuthorData author : book.Authors) {
+ for (NetworkBookItem.AuthorData author : myBook.Authors) {
if (authorsText.length() > 0) {
authorsText.append(", ");
}
@@ -177,11 +182,11 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
findViewById(R.id.network_book_authors).setVisibility(View.GONE);
}
- if (book.SeriesTitle != null) {
+ if (myBook.SeriesTitle != null) {
findViewById(R.id.network_book_series_title).setVisibility(View.VISIBLE);
- setPairValueText(R.id.network_book_series_title, book.SeriesTitle);
- if (book.IndexInSeries > 0) {
- setPairValueText(R.id.network_book_series_index, String.valueOf(book.IndexInSeries));
+ setPairValueText(R.id.network_book_series_title, myBook.SeriesTitle);
+ if (myBook.IndexInSeries > 0) {
+ setPairValueText(R.id.network_book_series_index, String.valueOf(myBook.IndexInSeries));
findViewById(R.id.network_book_series_index).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.network_book_series_index).setVisibility(View.GONE);
@@ -191,10 +196,10 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
findViewById(R.id.network_book_series_index).setVisibility(View.GONE);
}
- if (book.Tags.size() > 0) {
+ if (myBook.Tags.size() > 0) {
findViewById(R.id.network_book_tags).setVisibility(View.VISIBLE);
final StringBuilder tagsText = new StringBuilder();
- for (String tag : book.Tags) {
+ for (String tag : myBook.Tags) {
if (tagsText.length() > 0) {
tagsText.append(", ");
}
@@ -205,7 +210,7 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
findViewById(R.id.network_book_tags).setVisibility(View.GONE);
}
- setPairValueText(R.id.network_book_catalog, book.Link.getTitle());
+ setPairValueText(R.id.network_book_catalog, myBook.Link.getTitle());
}
private final void setupCover() {
@@ -218,7 +223,7 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
final int maxHeight = metrics.heightPixels * 2 / 3;
final int maxWidth = maxHeight * 2 / 3;
Bitmap coverBitmap = null;
- final ZLImage cover = NetworkTree.createCover(myTree.Book);
+ final ZLImage cover = NetworkTree.createCover(myBook);
if (cover != null) {
ZLAndroidImageData data = null;
final ZLAndroidImageManager mgr = (ZLAndroidImageManager)ZLAndroidImageManager.Instance();
@@ -262,7 +267,7 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
R.id.network_book_button2,
R.id.network_book_button3,
};
- final Set actions = NetworkBookActions.getContextMenuActions(myTree.Book, myConnection);
+ final Set actions = NetworkBookActions.getContextMenuActions(myBook, myConnection);
final boolean skipSecondButton =
actions.size() < buttons.length &&
@@ -289,7 +294,7 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
button.setVisibility(View.VISIBLE);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
- NetworkBookActions.runActionStatic(NetworkBookInfoActivity.this, myTree, a.Id);
+ NetworkBookActions.runActionStatic(NetworkBookInfoActivity.this, myBook, a.Id);
NetworkBookInfoActivity.this.updateView();
}
});
diff --git a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
index ffdc32fd5..0ba5d2850 100644
--- a/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
+++ b/src/org/geometerplus/android/fbreader/preferences/PreferenceActivity.java
@@ -378,5 +378,9 @@ public class PreferenceActivity extends ZLPreferenceActivity {
"navigateOverAllWords"
));
dictionaryScreen.addOption(fbReader.DictionaryTappingActionOption, "tappingAction");
+
+ final Screen cancelMenuScreen = createPreferenceScreen("cancelMenu");
+ cancelMenuScreen.addOption(fbReader.ShowPreviousBookInCancelMenuOption, "previousBook");
+ cancelMenuScreen.addOption(fbReader.ShowPositionsInCancelMenuOption, "positions");
}
}
diff --git a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
index 56d40117c..f1a7f8f5d 100644
--- a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
+++ b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java
@@ -89,6 +89,11 @@ public final class FBReaderApp extends ZLApplication {
final ZLStringOption ColorProfileOption =
new ZLStringOption("Options", "ColorProfile", ColorProfile.DAY);
+ public final ZLBooleanOption ShowPreviousBookInCancelMenuOption =
+ new ZLBooleanOption("CancelMenu", "previousBook", false);
+ public final ZLBooleanOption ShowPositionsInCancelMenuOption =
+ new ZLBooleanOption("CancelMenu", "positions", true);
+
private final ZLKeyBindings myBindings = new ZLKeyBindings("Keys");
public final FBView BookTextView;
@@ -324,15 +329,19 @@ public final class FBReaderApp extends ZLApplication {
public List getCancelActionsList() {
myCancelActionsList.clear();
- final Book previousBook = Library.getPreviousBook();
- if (previousBook != null) {
- myCancelActionsList.add(new CancelActionDescription(
- CancelActionType.previousBook, previousBook.getTitle()
- ));
+ if (ShowPreviousBookInCancelMenuOption.getValue()) {
+ final Book previousBook = Library.getPreviousBook();
+ if (previousBook != null) {
+ myCancelActionsList.add(new CancelActionDescription(
+ CancelActionType.previousBook, previousBook.getTitle()
+ ));
+ }
}
- if (Model != null && Model.Book != null) {
- for (Bookmark bookmark : Bookmark.invisibleBookmarks(Model.Book)) {
- myCancelActionsList.add(new BookmarkDescription(bookmark));
+ if (ShowPositionsInCancelMenuOption.getValue()) {
+ if (Model != null && Model.Book != null) {
+ for (Bookmark bookmark : Bookmark.invisibleBookmarks(Model.Book)) {
+ myCancelActionsList.add(new BookmarkDescription(bookmark));
+ }
}
}
myCancelActionsList.add(new CancelActionDescription(
diff --git a/src/org/geometerplus/fbreader/network/NetworkLibrary.java b/src/org/geometerplus/fbreader/network/NetworkLibrary.java
index 8a0f18373..019e02893 100644
--- a/src/org/geometerplus/fbreader/network/NetworkLibrary.java
+++ b/src/org/geometerplus/fbreader/network/NetworkLibrary.java
@@ -408,6 +408,9 @@ public class NetworkLibrary {
}
public NetworkTree getTreeByKey(NetworkTree.Key key) {
+ if (key == null) {
+ return null;
+ }
if (key.Parent == null) {
return key.equals(myRootTree.getUniqueKey()) ? myRootTree : null;
}
diff --git a/src/org/geometerplus/fbreader/network/authentication/litres/LitResBookshelfItem.java b/src/org/geometerplus/fbreader/network/authentication/litres/LitResBookshelfItem.java
index 935c20481..0a0b202aa 100644
--- a/src/org/geometerplus/fbreader/network/authentication/litres/LitResBookshelfItem.java
+++ b/src/org/geometerplus/fbreader/network/authentication/litres/LitResBookshelfItem.java
@@ -174,7 +174,7 @@ public class LitResBookshelfItem extends NetworkCatalogItem {
listener.onNewItem(Link, item);
}
} else {
- listener.onNewItem(Link, new ByDateCatalogItem(this, children));
+ //listener.onNewItem(Link, new ByDateCatalogItem(this, children));
listener.onNewItem(Link, new ByAuthorCatalogItem(this, children));
listener.onNewItem(Link, new ByTitleCatalogItem(this, children));
final BySeriesCatalogItem bySeries = new BySeriesCatalogItem(this, children);