From 06b2ffc2bc57fc4dbe2bfe45596f04ec372f0ff3 Mon Sep 17 00:00:00 2001 From: Vasiliy Bout Date: Wed, 21 Jul 2010 16:41:52 +0000 Subject: [PATCH] Catalog loading changes git-svn-id: https://only.mawhrin.net/repos/FBReaderJ/trunk@1614 6a642e6f-84f6-412e-ac94-c4a38d5a04b0 --- .../network/ItemsLoadingRunnable.java | 9 ------- .../fbreader/network/SearchItemActions.java | 26 +++---------------- .../fbreader/network/NetworkLibrary.java | 6 ++--- .../network/NetworkOperationData.java | 1 - .../network/opds/NetworkOPDSFeedReader.java | 16 +++--------- .../network/opds/OPDSCatalogItem.java | 19 ++------------ .../fbreader/network/opds/OPDSLink.java | 3 +++ 7 files changed, 14 insertions(+), 66 deletions(-) diff --git a/src/org/geometerplus/android/fbreader/network/ItemsLoadingRunnable.java b/src/org/geometerplus/android/fbreader/network/ItemsLoadingRunnable.java index 552fb11bf..75aa5b389 100644 --- a/src/org/geometerplus/android/fbreader/network/ItemsLoadingRunnable.java +++ b/src/org/geometerplus/android/fbreader/network/ItemsLoadingRunnable.java @@ -72,12 +72,6 @@ abstract class ItemsLoadingRunnable implements Runnable { } } - private boolean isLoadingInterruptRequested() { - synchronized (myInterruptLock) { - return myInterruptRequested; - } - } - public ItemsLoadingRunnable(ItemsLoadingHandler handler) { this(handler, 1000, 500); @@ -113,9 +107,6 @@ abstract class ItemsLoadingRunnable implements Runnable { myUpdateTime = now + UpdateInterval; } } - public boolean requestInterrupt() { - return isLoadingInterruptRequested() || myItemsNumber >= ItemsLimit; - } public boolean confirmInterrupt() { return confirmInterruptLoading() || myItemsNumber >= ItemsLimit; } diff --git a/src/org/geometerplus/android/fbreader/network/SearchItemActions.java b/src/org/geometerplus/android/fbreader/network/SearchItemActions.java index ec4b101ee..00bc80fe2 100644 --- a/src/org/geometerplus/android/fbreader/network/SearchItemActions.java +++ b/src/org/geometerplus/android/fbreader/network/SearchItemActions.java @@ -28,8 +28,7 @@ import org.geometerplus.fbreader.network.SearchResult; class SearchItemActions extends NetworkTreeActions { - public static final int OPEN_RESULTS_ITEM_ID = 0; - public static final int RUN_SEARCH_ITEM_ID = 2; + public static final int RUN_SEARCH_ITEM_ID = 0; @Override @@ -54,9 +53,8 @@ class SearchItemActions extends NetworkTreeActions { if (!isLoading) { addMenuItem(menu, RUN_SEARCH_ITEM_ID, "search"); - } - if (isLoading || tree.hasChildren()) { - addMenuItem(menu, OPEN_RESULTS_ITEM_ID, "showResults"); + } else { + addMenuItem(menu, TREE_NO_ACTION, "stoppingNetworkSearch"); } } @@ -87,28 +85,10 @@ class SearchItemActions extends NetworkTreeActions { @Override public boolean runAction(NetworkBaseActivity activity, NetworkTree tree, int actionCode) { switch (actionCode) { - case OPEN_RESULTS_ITEM_ID: - doExpandCatalog(activity, (SearchItemTree)tree); - return true; case RUN_SEARCH_ITEM_ID: activity.onSearchRequested(); return true; } return false; } - - - public void doExpandCatalog(final NetworkBaseActivity activity, final SearchItemTree tree) { - if (!NetworkView.Instance().isInitialized()) { - return; - } - NetworkView.Instance().tryResumeLoading(activity, tree, NetworkSearchActivity.SEARCH_RUNNABLE_KEY, new Runnable() { - public void run() { - final boolean isLoading = NetworkView.Instance().containsItemsLoadingRunnable(NetworkSearchActivity.SEARCH_RUNNABLE_KEY); - if (isLoading || tree.hasChildren()) { - NetworkView.Instance().openTree(activity, tree, NetworkSearchActivity.SEARCH_RUNNABLE_KEY); - } - } - }); - } } diff --git a/src/org/geometerplus/fbreader/network/NetworkLibrary.java b/src/org/geometerplus/fbreader/network/NetworkLibrary.java index 615cab884..d43cdecac 100644 --- a/src/org/geometerplus/fbreader/network/NetworkLibrary.java +++ b/src/org/geometerplus/fbreader/network/NetworkLibrary.java @@ -414,9 +414,6 @@ public class NetworkLibrary { public synchronized void onNewItem(NetworkLibraryItem item) { listener.onNewItem(item); } - public synchronized boolean requestInterrupt() { - return listener.requestInterrupt(); - } public synchronized boolean confirmInterrupt() { return listener.confirmInterrupt(); } @@ -444,6 +441,9 @@ public class NetworkLibrary { requestList.clear(); + if (listener.confirmInterrupt()) { + return null; + } for (NetworkOperationData data: dataList) { ZLNetworkRequest request = data.resume(); if (request != null) { diff --git a/src/org/geometerplus/fbreader/network/NetworkOperationData.java b/src/org/geometerplus/fbreader/network/NetworkOperationData.java index 718bd25cd..f5fe2029d 100644 --- a/src/org/geometerplus/fbreader/network/NetworkOperationData.java +++ b/src/org/geometerplus/fbreader/network/NetworkOperationData.java @@ -28,7 +28,6 @@ public class NetworkOperationData { void onNewItem(NetworkLibraryItem item); // return true to confirm interrupt reading; return false to continue reading - boolean requestInterrupt(); boolean confirmInterrupt(); } diff --git a/src/org/geometerplus/fbreader/network/opds/NetworkOPDSFeedReader.java b/src/org/geometerplus/fbreader/network/opds/NetworkOPDSFeedReader.java index e643c9d87..4c627ca44 100644 --- a/src/org/geometerplus/fbreader/network/opds/NetworkOPDSFeedReader.java +++ b/src/org/geometerplus/fbreader/network/opds/NetworkOPDSFeedReader.java @@ -132,19 +132,9 @@ class NetworkOPDSFeedReader implements OPDSFeedReader { } private boolean tryInterrupt() { - if (myData.Listener.requestInterrupt()) { - myData.Interrupt = true; - - final int noninterruptableRemainder = 10; - if (myItemsToLoad < 0 || myItemsToLoad > noninterruptableRemainder) { - if (myData.Listener.confirmInterrupt()) { - return true; - } else { - myData.Interrupt = false; - } - } - } - return false; + final int noninterruptableRemainder = 10; + return (myItemsToLoad < 0 || myItemsToLoad > noninterruptableRemainder) + && myData.Listener.confirmInterrupt(); } public boolean processFeedEntry(OPDSEntry entry) { diff --git a/src/org/geometerplus/fbreader/network/opds/OPDSCatalogItem.java b/src/org/geometerplus/fbreader/network/opds/OPDSCatalogItem.java index 98a011fee..fa2b7a9f8 100644 --- a/src/org/geometerplus/fbreader/network/opds/OPDSCatalogItem.java +++ b/src/org/geometerplus/fbreader/network/opds/OPDSCatalogItem.java @@ -32,17 +32,10 @@ class OPDSCatalogItem extends NetworkCatalogItem { static class State extends NetworkOperationData { public String LastLoadedTitle; - public boolean Interrupt; public State(INetworkLink link, OnNewItemListener listener) { super(link, listener); } - - @Override - public void clear() { - super.clear(); - Interrupt = false; - } } private State myLoadingState; @@ -66,16 +59,8 @@ class OPDSCatalogItem extends NetworkCatalogItem { myLoadingState = null; return errorMessage; } - if (myLoadingState.Interrupt) { - if (myLoadingState.LastLoadedTitle == null) { - // In this case Catalog loading was not interrupted, and - // we must confirm interruption here. - if (listener.confirmInterrupt()) { - return null; - } - } else { - return null; - } + if (listener.confirmInterrupt()) { + return null; } networkRequest = myLoadingState.resume(); } diff --git a/src/org/geometerplus/fbreader/network/opds/OPDSLink.java b/src/org/geometerplus/fbreader/network/opds/OPDSLink.java index d56c30928..1bc12f13b 100644 --- a/src/org/geometerplus/fbreader/network/opds/OPDSLink.java +++ b/src/org/geometerplus/fbreader/network/opds/OPDSLink.java @@ -85,6 +85,9 @@ class OPDSLink extends AbstractNetworkLink { return new ZLNetworkRequest(url) { @Override public String handleStream(URLConnection connection, InputStream inputStream) throws IOException { + if (result.Listener.confirmInterrupt()) { + return null; + } new OPDSXMLReader( new NetworkOPDSFeedReader(URL, result) ).read(inputStream);