From b85870b5c10bae79fa7ccf3de444514b1f24107e Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Thu, 14 Jul 2011 13:47:24 +0100 Subject: [PATCH] library code unification (in progress) --- .../fbreader/library/BaseActivity.java | 41 ++++++++++++------- .../android/fbreader/library/FileManager.java | 8 +--- .../fbreader/library/FileTree.java | 4 +- .../fbreader/library/LibraryTree.java | 1 + 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/org/geometerplus/android/fbreader/library/BaseActivity.java b/src/org/geometerplus/android/fbreader/library/BaseActivity.java index 4e058dbdd..f0f3bb811 100644 --- a/src/org/geometerplus/android/fbreader/library/BaseActivity.java +++ b/src/org/geometerplus/android/fbreader/library/BaseActivity.java @@ -328,28 +328,39 @@ abstract class BaseActivity extends ListActivity implements View.OnCreateContext } public void run() { - if (myTree.getOpeningStatus() == LibraryTree.Status.WAIT_FOR_OPEN) { - UIUtil.runWithMessage( - BaseActivity.this, myTree.getOpeningStatusMessage(), - new Runnable() { - public void run() { - myTree.waitForOpening(); - } - }, - new Runnable() { - public void run() { - openTree(); - } + switch (myTree.getOpeningStatus()) { + case WAIT_FOR_OPEN: + case ALWAYS_RELOAD_BEFORE_OPENING: + final String messageKey = myTree.getOpeningStatusMessage(); + if (messageKey != null) { + UIUtil.runWithMessage( + BaseActivity.this, messageKey, + new Runnable() { + public void run() { + myTree.waitForOpening(); + } + }, + new Runnable() { + public void run() { + openTree(); + } + } + ); + } else { + myTree.waitForOpening(); + openTree(); } - ); - } else { - openTree(); + break; + default: + openTree(); + break; } } protected void openTree() { switch (myTree.getOpeningStatus()) { case READY_TO_OPEN: + case ALWAYS_RELOAD_BEFORE_OPENING: startActivityForResult( new Intent(BaseActivity.this, myActivityClass) .putExtra(SELECTED_BOOK_PATH_KEY, mySelectedBookPath) diff --git a/src/org/geometerplus/android/fbreader/library/FileManager.java b/src/org/geometerplus/android/fbreader/library/FileManager.java index d9c6aabaf..291cf77fc 100644 --- a/src/org/geometerplus/android/fbreader/library/FileManager.java +++ b/src/org/geometerplus/android/fbreader/library/FileManager.java @@ -34,12 +34,8 @@ public final class FileManager extends BaseActivity { super.onCreate(icicle); final ListAdapter adapter = new ListAdapter(this, new ArrayList()); - - if (myCurrentTree instanceof FileTree) { - startUpdate(); - } else { - adapter.addAll(myCurrentTree.subTrees()); - } + adapter.addAll(myCurrentTree.subTrees()); + setSelection(getListAdapter().getFirstSelectedItemIndex()); getListView().setTextFilterEnabled(true); } diff --git a/src/org/geometerplus/fbreader/library/FileTree.java b/src/org/geometerplus/fbreader/library/FileTree.java index af3c2912d..bc1286f8f 100644 --- a/src/org/geometerplus/fbreader/library/FileTree.java +++ b/src/org/geometerplus/fbreader/library/FileTree.java @@ -114,12 +114,12 @@ public class FileTree extends LibraryTree { if (!myFile.isReadable()) { return Status.CANNOT_OPEN; } - return Status.READY_TO_OPEN; + return Status.ALWAYS_RELOAD_BEFORE_OPENING; } @Override public String getOpeningStatusMessage() { - return "permissionDenied"; + return getOpeningStatus() == Status.CANNOT_OPEN ? "permissionDenied" : null; } @Override diff --git a/src/org/geometerplus/fbreader/library/LibraryTree.java b/src/org/geometerplus/fbreader/library/LibraryTree.java index 605beb00c..8d7f0c124 100644 --- a/src/org/geometerplus/fbreader/library/LibraryTree.java +++ b/src/org/geometerplus/fbreader/library/LibraryTree.java @@ -27,6 +27,7 @@ public abstract class LibraryTree extends FBTree { public static enum Status { READY_TO_OPEN, WAIT_FOR_OPEN, + ALWAYS_RELOAD_BEFORE_OPENING, CANNOT_OPEN };