diff --git a/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java b/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java index 978473806..da3934f1d 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryBaseActivity.java @@ -41,9 +41,23 @@ abstract class LibraryBaseActivity extends BaseActivity implements MenuItem.OnMe @Override protected void onActivityResult(int requestCode, int returnCode, Intent intent) { if (requestCode == CHILD_LIST_REQUEST && returnCode == RESULT_DO_INVALIDATE_VIEWS) { + if (myCurrentTree instanceof FileTree) { + startUpdate(); + } getListView().invalidateViews(); setResult(RESULT_DO_INVALIDATE_VIEWS); + } else if (requestCode == BOOK_INFO_REQUEST) { + getListView().invalidateViews(); } + } + + private void startUpdate() { + new Thread(new Runnable() { + public void run() { + myCurrentTree.waitForOpening(); + getListAdapter().replaceAll(myCurrentTree.subTrees()); + } + }).start(); } @Override @@ -127,4 +141,15 @@ abstract class LibraryBaseActivity extends BaseActivity implements MenuItem.OnMe return R.drawable.ic_list_library_books; } + + @Override + protected void deleteBook(Book book, int mode) { + super.deleteBook(book, mode); + if (myCurrentTree instanceof FileTree) { + getListAdapter().remove(new FileTree((FileTree)myCurrentTree, book.File)); + } else { + getListAdapter().replaceAll(myCurrentTree.subTrees()); + } + getListView().invalidateViews(); + } } diff --git a/src/org/geometerplus/android/fbreader/library/LibraryTreeActivity.java b/src/org/geometerplus/android/fbreader/library/LibraryTreeActivity.java index f354cf422..90c2d1b67 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryTreeActivity.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryTreeActivity.java @@ -22,9 +22,6 @@ package org.geometerplus.android.fbreader.library; import android.content.Intent; import android.os.Bundle; -import org.geometerplus.fbreader.library.Book; -import org.geometerplus.fbreader.library.FileTree; - public class LibraryTreeActivity extends LibraryBaseActivity { @Override public void onCreate(Bundle icicle) { @@ -50,41 +47,4 @@ public class LibraryTreeActivity extends LibraryBaseActivity { getListView().setTextFilterEnabled(true); } - - @Override - protected void deleteBook(Book book, int mode) { - super.deleteBook(book, mode); - if (myCurrentTree instanceof FileTree) { - getListAdapter().remove(new FileTree((FileTree)myCurrentTree, book.File)); - } else { - getListAdapter().replaceAll(myCurrentTree.subTrees()); - } - getListView().invalidateViews(); - } - - @Override - protected void onActivityResult(int requestCode, int returnCode, Intent intent) { - if (myCurrentTree instanceof FileTree) { - if (requestCode == CHILD_LIST_REQUEST && returnCode == RESULT_DO_INVALIDATE_VIEWS) { - if (myCurrentTree instanceof FileTree) { - startUpdate(); - } - getListView().invalidateViews(); - setResult(RESULT_DO_INVALIDATE_VIEWS); - } else if (requestCode == BOOK_INFO_REQUEST) { - getListView().invalidateViews(); - } - } else { - super.onActivityResult(requestCode, returnCode, intent); - } - } - - private void startUpdate() { - new Thread(new Runnable() { - public void run() { - myCurrentTree.waitForOpening(); - getListAdapter().replaceAll(myCurrentTree.subTrees()); - } - }).start(); - } } diff --git a/src/org/geometerplus/fbreader/library/Library.java b/src/org/geometerplus/fbreader/library/Library.java index 4e26dec5f..c0ef28cbb 100644 --- a/src/org/geometerplus/fbreader/library/Library.java +++ b/src/org/geometerplus/fbreader/library/Library.java @@ -70,12 +70,7 @@ public final class Library { } private FirstLevelTree getFirstLevelTree(String key) { - for (FBTree tree : myRootTree.subTrees()) { - if (key.equals(tree.getUniqueKey().Id)) { - return (FirstLevelTree)tree; - } - } - return null; + return (FirstLevelTree)myRootTree.getSubTree(key); } public LibraryTree getLibraryTree(LibraryTree.Key key) {