diff --git a/src/org/geometerplus/android/fbreader/library/BaseActivity.java b/src/org/geometerplus/android/fbreader/library/BaseActivity.java index 87c7ab456..7dce6f5c9 100644 --- a/src/org/geometerplus/android/fbreader/library/BaseActivity.java +++ b/src/org/geometerplus/android/fbreader/library/BaseActivity.java @@ -66,8 +66,6 @@ abstract class BaseActivity extends ListActivity implements View.OnCreateContext private Book mySelectedBook; protected LibraryTree myCurrentTree; - private final Map myIconMap = new HashMap(); - @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -109,17 +107,24 @@ abstract class BaseActivity extends ListActivity implements View.OnCreateContext return (ListAdapter)super.getListAdapter(); } - protected void addFBTreeWithIcon(FBTree tree, int coverResourceId) { - getListAdapter().add(tree); - myIconMap.put(tree, coverResourceId); - } - int getCoverResourceId(FBTree tree) { - final Integer icon = myIconMap.get(tree); - if (icon != null) { - return icon.intValue(); - } else if (((LibraryTree)tree).getBook() != null) { + if (((LibraryTree)tree).getBook() != null) { return R.drawable.ic_list_library_book; + } else if (tree instanceof FirstLevelTree) { + final String id = tree.getUniqueKey().Id; + if (Library.ROOT_FAVORITES.equals(id)) { + return R.drawable.ic_list_library_favorites; + } else if (Library.ROOT_RECENT.equals(id)) { + return R.drawable.ic_list_library_recent; + } else if (Library.ROOT_BY_AUTHOR.equals(id)) { + return R.drawable.ic_list_library_authors; + } else if (Library.ROOT_BY_TITLE.equals(id)) { + return R.drawable.ic_list_library_books; + } else if (Library.ROOT_BY_TAG.equals(id)) { + return R.drawable.ic_list_library_tags; + } else if (Library.ROOT_FILE_TREE.equals(id)) { + return R.drawable.ic_list_library_folder; + } } else if (tree instanceof FileTree) { final ZLFile file = ((FileTree)tree).getFile(); if (file.isArchive()) { @@ -133,9 +138,9 @@ abstract class BaseActivity extends ListActivity implements View.OnCreateContext return R.drawable.ic_list_library_author; } else if (tree instanceof TagTree) { return R.drawable.ic_list_library_tag; - } else { - return R.drawable.ic_list_library_books; } + + return R.drawable.ic_list_library_books; } @Override diff --git a/src/org/geometerplus/android/fbreader/library/LibraryTopLevelActivity.java b/src/org/geometerplus/android/fbreader/library/LibraryTopLevelActivity.java index a06ee3456..0fae48db9 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryTopLevelActivity.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryTopLevelActivity.java @@ -29,12 +29,12 @@ import org.geometerplus.zlibrary.ui.android.R; import org.geometerplus.fbreader.tree.FBTree; import org.geometerplus.fbreader.library.Library; -import org.geometerplus.fbreader.library.RootTree; +import org.geometerplus.fbreader.library.FirstLevelTree; import org.geometerplus.android.util.UIUtil; public class LibraryTopLevelActivity extends LibraryBaseActivity { - private RootTree mySearchResultsItem; + private FirstLevelTree mySearchResultsItem; @Override public void onCreate(Bundle icicle) { @@ -42,20 +42,16 @@ public class LibraryTopLevelActivity extends LibraryBaseActivity { final ListAdapter adapter = new ListAdapter(this, Collections.emptyList()); - addTopLevelTree(Library.ROOT_FAVORITES, R.drawable.ic_list_library_favorites); - addTopLevelTree(Library.ROOT_RECENT, R.drawable.ic_list_library_recent); - addTopLevelTree(Library.ROOT_BY_AUTHOR, R.drawable.ic_list_library_authors); - addTopLevelTree(Library.ROOT_BY_TITLE, R.drawable.ic_list_library_books); - addTopLevelTree(Library.ROOT_BY_TAG, R.drawable.ic_list_library_tags); - addTopLevelTree(Library.ROOT_FILE_TREE, R.drawable.ic_list_library_folder); + adapter.add(LibraryInstance.getRootTree(Library.ROOT_FAVORITES)); + adapter.add(LibraryInstance.getRootTree(Library.ROOT_RECENT)); + adapter.add(LibraryInstance.getRootTree(Library.ROOT_BY_AUTHOR)); + adapter.add(LibraryInstance.getRootTree(Library.ROOT_BY_TITLE)); + adapter.add(LibraryInstance.getRootTree(Library.ROOT_BY_TAG)); + adapter.add(LibraryInstance.getRootTree(Library.ROOT_FILE_TREE)); onNewIntent(getIntent()); } - private void addTopLevelTree(String key, int imageId) { - addFBTreeWithIcon(LibraryInstance.getRootTree(key), imageId); - } - @Override public void onDestroy() { LibraryInstance = null; diff --git a/src/org/geometerplus/fbreader/library/FavoritesTree.java b/src/org/geometerplus/fbreader/library/FavoritesTree.java index 31d510c63..ff7ad6961 100644 --- a/src/org/geometerplus/fbreader/library/FavoritesTree.java +++ b/src/org/geometerplus/fbreader/library/FavoritesTree.java @@ -21,7 +21,7 @@ package org.geometerplus.fbreader.library; import org.geometerplus.zlibrary.core.resources.ZLResource; -public class FavoritesTree extends RootTree { +public class FavoritesTree extends FirstLevelTree { FavoritesTree(Library library, String id) { super(library, id); } diff --git a/src/org/geometerplus/fbreader/library/FileRootTree.java b/src/org/geometerplus/fbreader/library/FileFirstLevelTree.java similarity index 93% rename from src/org/geometerplus/fbreader/library/FileRootTree.java rename to src/org/geometerplus/fbreader/library/FileFirstLevelTree.java index 43867bdd1..eb7859e45 100644 --- a/src/org/geometerplus/fbreader/library/FileRootTree.java +++ b/src/org/geometerplus/fbreader/library/FileFirstLevelTree.java @@ -24,8 +24,8 @@ import org.geometerplus.zlibrary.core.filesystem.ZLFile; import org.geometerplus.fbreader.Paths; -public class FileRootTree extends RootTree { - FileRootTree(Library library, String id) { +public class FileFirstLevelTree extends FirstLevelTree { + FileFirstLevelTree(Library library, String id) { super(library, id); addChild(Paths.BooksDirectoryOption().getValue(), "fileTreeLibrary"); addChild("/", "fileTreeRoot"); diff --git a/src/org/geometerplus/fbreader/library/RootTree.java b/src/org/geometerplus/fbreader/library/FirstLevelTree.java similarity index 95% rename from src/org/geometerplus/fbreader/library/RootTree.java rename to src/org/geometerplus/fbreader/library/FirstLevelTree.java index 493ece13c..04edfeab8 100644 --- a/src/org/geometerplus/fbreader/library/RootTree.java +++ b/src/org/geometerplus/fbreader/library/FirstLevelTree.java @@ -21,12 +21,12 @@ package org.geometerplus.fbreader.library; import org.geometerplus.zlibrary.core.resources.ZLResource; -public class RootTree extends LibraryTree { +public class FirstLevelTree extends LibraryTree { private final Library myLibrary; private final String myId; private final ZLResource myResource; - RootTree(Library library, String id) { + FirstLevelTree(Library library, String id) { myLibrary = library; myId = id; myResource = Library.resource().getResource(myId); diff --git a/src/org/geometerplus/fbreader/library/Library.java b/src/org/geometerplus/fbreader/library/Library.java index 6981aa62f..6e00b9914 100644 --- a/src/org/geometerplus/fbreader/library/Library.java +++ b/src/org/geometerplus/fbreader/library/Library.java @@ -51,20 +51,20 @@ public final class Library { private final List myBooks = new LinkedList(); private final Set myExternalBooks = new HashSet(); - private final Map myRootTrees = new HashMap(); + private final Map myRootTrees = new HashMap(); private volatile int myState = STATE_NOT_INITIALIZED; private volatile boolean myInterrupted = false; public Library() { myRootTrees.put(ROOT_FAVORITES, new FavoritesTree(this, ROOT_FAVORITES)); - myRootTrees.put(ROOT_FILE_TREE, new FileRootTree(this, ROOT_FILE_TREE)); + myRootTrees.put(ROOT_FILE_TREE, new FileFirstLevelTree(this, ROOT_FILE_TREE)); } - public RootTree getRootTree(String id) { - RootTree root = myRootTrees.get(id); + public FirstLevelTree getRootTree(String id) { + FirstLevelTree root = myRootTrees.get(id); if (root == null) { - root = new RootTree(this, id); + root = new FirstLevelTree(this, id); myRootTrees.put(id, root); } return root; @@ -408,7 +408,7 @@ public final class Library { public LibraryTree searchBooks(String pattern) { waitForState(STATE_FULLY_INITIALIZED); - final RootTree newSearchResults = new SearchResultsTree(this, ROOT_SEARCH_RESULTS, pattern); + final FirstLevelTree newSearchResults = new SearchResultsTree(this, ROOT_SEARCH_RESULTS, pattern); if (pattern != null) { pattern = pattern.toLowerCase(); for (Book book : myBooks) { diff --git a/src/org/geometerplus/fbreader/library/SearchResultsTree.java b/src/org/geometerplus/fbreader/library/SearchResultsTree.java index 898bc7bfc..50f593dc1 100644 --- a/src/org/geometerplus/fbreader/library/SearchResultsTree.java +++ b/src/org/geometerplus/fbreader/library/SearchResultsTree.java @@ -19,7 +19,7 @@ package org.geometerplus.fbreader.library; -class SearchResultsTree extends RootTree { +class SearchResultsTree extends FirstLevelTree { private final String myPattern; SearchResultsTree(Library library, String id, String pattern) {