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);