From de0b72d0cda18a852623e3c659e4dd1dc616f0df Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Fri, 15 Oct 2010 21:25:16 +0100 Subject: [PATCH] LibraryTabActivity has no references to FBReader.Instance() --- .../android/fbreader/BookSearchActivity.java | 7 ++-- .../android/fbreader/FBReader.java | 1 + .../android/fbreader/LibraryTabActivity.java | 33 ++++++++++--------- .../fbreader/fbreader/FBReader.java | 2 -- .../fbreader/fbreader/ShowLibraryAction.java | 10 +++++- .../dialogs/ZLAndroidDialogManager.java | 10 +++++- 6 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/org/geometerplus/android/fbreader/BookSearchActivity.java b/src/org/geometerplus/android/fbreader/BookSearchActivity.java index 1e5025470..a70e4814e 100644 --- a/src/org/geometerplus/android/fbreader/BookSearchActivity.java +++ b/src/org/geometerplus/android/fbreader/BookSearchActivity.java @@ -21,7 +21,6 @@ package org.geometerplus.android.fbreader; import android.app.Activity; -import org.geometerplus.fbreader.fbreader.FBReader; import org.geometerplus.fbreader.library.*; public class BookSearchActivity extends SearchActivity { @@ -48,9 +47,9 @@ public class BookSearchActivity extends SearchActivity { @Override boolean runSearch(final String pattern) { - final FBReader fbreader = (FBReader)FBReader.Instance(); - fbreader.BookSearchPatternOption.setValue(pattern); - myTree = LibraryTabActivity.Instance.library().searchBooks(pattern); + final LibraryTabActivity parentActivity = LibraryTabActivity.Instance; + parentActivity.BookSearchPatternOption.setValue(pattern); + myTree = parentActivity.library().searchBooks(pattern); return myTree.hasChildren(); } diff --git a/src/org/geometerplus/android/fbreader/FBReader.java b/src/org/geometerplus/android/fbreader/FBReader.java index 741f9165d..b7f05e57a 100644 --- a/src/org/geometerplus/android/fbreader/FBReader.java +++ b/src/org/geometerplus/android/fbreader/FBReader.java @@ -83,6 +83,7 @@ public final class FBReader extends ZLAndroidActivity { private static TextSearchButtonPanel myTextSearchPanel; private static NavigationButtonPanel myNavigatePanel; + @Override protected String fileNameForEmptyUri() { return Library.getHelpFile().getPath(); } diff --git a/src/org/geometerplus/android/fbreader/LibraryTabActivity.java b/src/org/geometerplus/android/fbreader/LibraryTabActivity.java index 9b4bfe4d3..23f331292 100644 --- a/src/org/geometerplus/android/fbreader/LibraryTabActivity.java +++ b/src/org/geometerplus/android/fbreader/LibraryTabActivity.java @@ -36,17 +36,19 @@ import org.geometerplus.zlibrary.core.options.ZLStringOption; import org.geometerplus.zlibrary.core.resources.ZLResource; import org.geometerplus.zlibrary.core.filesystem.ZLFile; -import org.geometerplus.fbreader.fbreader.FBReader; -import org.geometerplus.fbreader.bookmodel.BookModel; import org.geometerplus.fbreader.library.*; import org.geometerplus.fbreader.tree.FBTree; public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuItemClickListener { + public static final String CURRENT_BOOK_PATH_KEY = "LibraryCurrentBookPath"; + static LibraryTabActivity Instance; + final ZLStringOption BookSearchPatternOption = new ZLStringOption("BookSearch", "Pattern", ""); final ZLStringOption mySelectedTabOption = new ZLStringOption("TabActivity", "SelectedTab", ""); + private final ZLResource myResource = ZLResource.resource("libraryView"); - private Book myCurrentBook; + private String myCurrentBookPath; private Library myLibrary; @@ -61,11 +63,6 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt return (ListView)findViewById(viewId); } - private void setCurrentBook() { - final BookModel model = ((FBReader)FBReader.Instance()).Model; - myCurrentBook = (model != null) ? model.Book : null; - } - private void createDefaultTabs() { new LibraryAdapter(createTab("byAuthor", R.id.by_author, R.drawable.ic_tab_library_author), myLibrary.byAuthor(), Type.TREE); new LibraryAdapter(createTab("byTag", R.id.by_tag, R.drawable.ic_tab_library_tag), myLibrary.byTag(), Type.TREE); @@ -73,6 +70,12 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt findViewById(R.id.search_results).setVisibility(View.GONE); } + private boolean isSelectedItem(FBTree tree) { + return + (tree instanceof BookTree) && + ((BookTree)tree).Book.File.getPath().equals(myCurrentBookPath); + } + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -85,7 +88,8 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt myLibrary.clear(); myLibrary.synchronize(); - setCurrentBook(); + final Intent intent = getIntent(); + myCurrentBookPath = intent.getStringExtra(CURRENT_BOOK_PATH_KEY); requestWindowFeature(Window.FEATURE_NO_TITLE); setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); @@ -153,8 +157,7 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt @Override public boolean onSearchRequested() { - final FBReader fbreader = (FBReader)FBReader.Instance(); - startSearch(fbreader.BookSearchPatternOption.getValue(), true, null, false); + startSearch(BookSearchPatternOption.getValue(), true, null, false); return true; } @@ -192,11 +195,11 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt } private ZLTree findFirstSelectedItem() { - if (myCurrentBook == null) { + if (myCurrentBookPath == null) { return null; } for (FBTree tree : myLibraryTree) { - if ((tree instanceof BookTree) && ((BookTree)tree).Book.equals(myCurrentBook)) { + if (isSelectedItem(tree)) { return tree; } } @@ -207,7 +210,7 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt final View view = (convertView != null) ? convertView : LayoutInflater.from(parent.getContext()).inflate(R.layout.library_tree_item, parent, false); final LibraryTree tree = (LibraryTree)getItem(position); - if ((tree instanceof BookTree) && ((BookTree)tree).Book.equals(myCurrentBook)) { + if (isSelectedItem(tree)) { view.setBackgroundColor(0xff808080); } else { view.setBackgroundColor(0); @@ -246,7 +249,7 @@ public class LibraryTabActivity extends TabActivity implements MenuItem.OnMenuIt } finish(); final Book book = ((BookTree)tree).Book; - if (!book.equals(myCurrentBook)) { + if (!book.File.getPath().equals(myCurrentBookPath)) { ZLFile physicalFile = book.File.getPhysicalFile(); startActivity(getFBReaderIntent(physicalFile != null ? new File(physicalFile.getPath()) : null)); } diff --git a/src/org/geometerplus/fbreader/fbreader/FBReader.java b/src/org/geometerplus/fbreader/fbreader/FBReader.java index 4842c72f1..aa23c4ec1 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBReader.java +++ b/src/org/geometerplus/fbreader/fbreader/FBReader.java @@ -33,8 +33,6 @@ import org.geometerplus.fbreader.library.Bookmark; import org.geometerplus.fbreader.optionsDialog.OptionsDialog; public final class FBReader extends ZLApplication { - public final ZLStringOption BookSearchPatternOption = - new ZLStringOption("BookSearch", "Pattern", ""); public final ZLStringOption TextSearchPatternOption = new ZLStringOption("TextSearch", "Pattern", ""); public final ZLStringOption BookmarkSearchPatternOption = diff --git a/src/org/geometerplus/fbreader/fbreader/ShowLibraryAction.java b/src/org/geometerplus/fbreader/fbreader/ShowLibraryAction.java index d026e81ae..40b1e0c3a 100644 --- a/src/org/geometerplus/fbreader/fbreader/ShowLibraryAction.java +++ b/src/org/geometerplus/fbreader/fbreader/ShowLibraryAction.java @@ -19,7 +19,10 @@ package org.geometerplus.fbreader.fbreader; +import java.util.HashMap; + import org.geometerplus.fbreader.library.Library; +import org.geometerplus.fbreader.bookmodel.BookModel; import org.geometerplus.android.fbreader.LibraryTabActivity; @@ -33,9 +36,14 @@ class ShowLibraryAction extends FBAction { public void run() { final ZLAndroidDialogManager dialogManager = (ZLAndroidDialogManager)ZLAndroidDialogManager.Instance(); + final HashMap data = new HashMap(); + final BookModel model = Reader.Model; + if (model != null) { + data.put(LibraryTabActivity.CURRENT_BOOK_PATH_KEY, model.Book.File.getPath()); + } Runnable action = new Runnable() { public void run() { - dialogManager.runActivity(LibraryTabActivity.class); + dialogManager.runActivity(LibraryTabActivity.class, data); } }; dialogManager.wait("loadingBookList", action); diff --git a/src/org/geometerplus/zlibrary/ui/android/dialogs/ZLAndroidDialogManager.java b/src/org/geometerplus/zlibrary/ui/android/dialogs/ZLAndroidDialogManager.java index bc6f44568..3e8a5bbc0 100644 --- a/src/org/geometerplus/zlibrary/ui/android/dialogs/ZLAndroidDialogManager.java +++ b/src/org/geometerplus/zlibrary/ui/android/dialogs/ZLAndroidDialogManager.java @@ -50,8 +50,16 @@ public class ZLAndroidDialogManager extends ZLDialogManager { activity.startActivity(intent); } + public void runActivity(Class activityClass, Map data) { + Intent intent = new Intent(myActivity.getApplicationContext(), activityClass); + for (Map.Entry entry : data.entrySet()) { + intent.putExtra(entry.getKey(), entry.getValue()); + } + myActivity.startActivity(intent); + } + public void runActivity(Class activityClass) { - myActivity.startActivity(new Intent(myActivity, activityClass)); + runActivity(activityClass, Collections.emptyMap()); } public void showInformationBox(String key, String message) {