mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 19:42:17 +02:00
related links support
This commit is contained in:
parent
7600f00b68
commit
f1023791c3
11 changed files with 71 additions and 16 deletions
|
@ -1,7 +1,9 @@
|
|||
===== 1.0.10 (??? ??, 2011) =====
|
||||
* Fixed book downloading service (book-by-link-downloading works again)
|
||||
* Old authentication dialog has gone
|
||||
* 'Unencripted protocol' warning message has been restored
|
||||
* 'Unencrypted protocol' warning message has been restored
|
||||
* ODPS full entry support
|
||||
* Related links for books
|
||||
|
||||
===== 1.0.9 (Apr 23, 2011) =====
|
||||
* HttpConnection => HttpClient (that fixes a bug in SSL connection)
|
||||
|
|
|
@ -40,8 +40,7 @@ import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager;
|
|||
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
|
||||
import org.geometerplus.zlibrary.ui.android.network.SQLiteCookieDatabase;
|
||||
|
||||
import org.geometerplus.fbreader.network.NetworkTree;
|
||||
import org.geometerplus.fbreader.network.NetworkBookItem;
|
||||
import org.geometerplus.fbreader.network.*;
|
||||
import org.geometerplus.fbreader.network.tree.NetworkBookTree;
|
||||
import org.geometerplus.fbreader.network.urlInfo.*;
|
||||
|
||||
|
@ -166,10 +165,16 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
|
|||
linkView = inflater.inflate(R.layout.extra_link_item, extraLinkSection, false);
|
||||
linkView.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View view) {
|
||||
if (MimeType.TEXT_HTML.equals(relatedInfo.Mime)) {
|
||||
final NetworkCatalogItem catalogItem =
|
||||
myBook.createRelatedCatalogItem(relatedInfo);
|
||||
if (catalogItem != null) {
|
||||
NetworkCatalogActions.doExpandCatalog(
|
||||
NetworkBookInfoActivity.this,
|
||||
NetworkLibrary.Instance().getFakeCatalogTree(catalogItem)
|
||||
);
|
||||
} else if (MimeType.TEXT_HTML.equals(relatedInfo.Mime)) {
|
||||
Util.openInBrowser(NetworkBookInfoActivity.this, relatedInfo.Url);
|
||||
}
|
||||
System.err.println(relatedInfo.Url);
|
||||
}
|
||||
});
|
||||
((TextView)linkView.findViewById(R.id.extra_link_title)).setText(relatedInfo.Title);
|
||||
|
|
|
@ -397,7 +397,7 @@ class NetworkCatalogActions extends NetworkTreeActions {
|
|||
}
|
||||
}
|
||||
|
||||
private void processExtraData(final NetworkBaseActivity activity, Map<String,String> extraData, final Runnable postRunnable) {
|
||||
private static void processExtraData(final Activity activity, Map<String,String> extraData, final Runnable postRunnable) {
|
||||
if (extraData != null && !extraData.isEmpty()) {
|
||||
PackageUtil.runInstallPluginDialog(activity, extraData, postRunnable);
|
||||
} else {
|
||||
|
@ -405,7 +405,7 @@ class NetworkCatalogActions extends NetworkTreeActions {
|
|||
}
|
||||
}
|
||||
|
||||
private void doExpandCatalog(final NetworkBaseActivity activity, final NetworkCatalogTree tree) {
|
||||
static void doExpandCatalog(final Activity activity, final NetworkCatalogTree tree) {
|
||||
NetworkView.Instance().tryResumeLoading(activity, tree, new Runnable() {
|
||||
public void run() {
|
||||
boolean resumeNotLoad = false;
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.geometerplus.android.fbreader.network;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.view.MenuItem;
|
||||
|
@ -132,7 +133,7 @@ class NetworkView {
|
|||
* Code for loading network items (running items-loading service and managing items-loading runnables).
|
||||
*/
|
||||
|
||||
public void tryResumeLoading(NetworkBaseActivity activity, NetworkCatalogTree tree, Runnable expandRunnable) {
|
||||
public void tryResumeLoading(Activity activity, NetworkCatalogTree tree, Runnable expandRunnable) {
|
||||
final ItemsLoadingRunnable runnable = ItemsLoadingService.getRunnable(tree);
|
||||
if (runnable != null && runnable.tryResumeLoading()) {
|
||||
Util.openTree(activity, tree);
|
||||
|
|
|
@ -116,6 +116,10 @@ public class NetworkBookItem extends NetworkItem {
|
|||
public void loadFullInformation() throws ZLNetworkException {
|
||||
}
|
||||
|
||||
public NetworkCatalogItem createRelatedCatalogItem(RelatedUrlInfo info) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public BookUrlInfo reference(UrlInfo.Type type) {
|
||||
BookUrlInfo reference = null;
|
||||
for (UrlInfo r : getAllInfos(type)) {
|
||||
|
|
|
@ -151,7 +151,8 @@ public class NetworkLibrary {
|
|||
return filteredList;
|
||||
}
|
||||
|
||||
private final RootTree myRootTree = new RootTree();
|
||||
private final RootTree myRootTree = new RootTree("@Root");
|
||||
private final RootTree myFakeRootTree = new RootTree("@FakeRoot");
|
||||
private SearchItemTree mySearchItemTree;
|
||||
|
||||
private boolean myChildrenAreInvalid = true;
|
||||
|
@ -404,12 +405,29 @@ public class NetworkLibrary {
|
|||
return mySearchItemTree;
|
||||
}
|
||||
|
||||
public NetworkCatalogTree getFakeCatalogTree(NetworkCatalogItem item) {
|
||||
final String id = item.getStringId();
|
||||
for (FBTree tree : myFakeRootTree.subTrees()) {
|
||||
final NetworkCatalogTree ncTree = (NetworkCatalogTree)tree;
|
||||
if (id.equals(ncTree.getUniqueKey().Id)) {
|
||||
return ncTree;
|
||||
}
|
||||
}
|
||||
return new NetworkCatalogTree(myFakeRootTree, item, 0);
|
||||
}
|
||||
|
||||
public NetworkTree getTreeByKey(NetworkTree.Key key) {
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
if (key.Parent == null) {
|
||||
return key.equals(myRootTree.getUniqueKey()) ? myRootTree : null;
|
||||
if (key.equals(myRootTree.getUniqueKey())) {
|
||||
return myRootTree;
|
||||
}
|
||||
if (key.equals(myFakeRootTree.getUniqueKey())) {
|
||||
return myFakeRootTree;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
final NetworkTree parentTree = getTreeByKey(key.Parent);
|
||||
if (parentTree == null) {
|
||||
|
|
|
@ -23,10 +23,11 @@ import org.geometerplus.zlibrary.core.util.ZLNetworkUtil;
|
|||
|
||||
import org.geometerplus.fbreader.network.*;
|
||||
import org.geometerplus.fbreader.network.opds.OPDSCatalogItem;
|
||||
import org.geometerplus.fbreader.network.opds.OPDSNetworkLink;
|
||||
import org.geometerplus.fbreader.network.urlInfo.*;
|
||||
|
||||
public class LitResRecommendationsItem extends OPDSCatalogItem {
|
||||
public LitResRecommendationsItem(INetworkLink link, String title, String summary, UrlInfoCollection urls, Accessibility accessibility) {
|
||||
public LitResRecommendationsItem(OPDSNetworkLink link, String title, String summary, UrlInfoCollection urls, Accessibility accessibility) {
|
||||
super(link, title, summary, urls, accessibility, FLAGS_DEFAULT & ~FLAGS_GROUP);
|
||||
}
|
||||
|
||||
|
|
|
@ -236,6 +236,13 @@ public class OPDSBookItem extends NetworkBookItem implements OPDSConstants {
|
|||
});
|
||||
}
|
||||
|
||||
public OPDSCatalogItem createRelatedCatalogItem(RelatedUrlInfo info) {
|
||||
if (MimeType.APP_ATOM.equals(info.Mime)) {
|
||||
return new OPDSCatalogItem((OPDSNetworkLink)Link, info);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private class SingleEntryFeedHandler implements ATOMFeedHandler<OPDSFeedMetadata,OPDSEntry> {
|
||||
private final String myUrl;
|
||||
|
||||
|
|
|
@ -32,23 +32,34 @@ public class OPDSCatalogItem extends NetworkURLCatalogItem {
|
|||
public String LastLoadedId;
|
||||
public final HashSet<String> LoadedIds = new HashSet<String>();
|
||||
|
||||
public State(INetworkLink link, OnNewItemListener listener) {
|
||||
public State(OPDSNetworkLink link, OnNewItemListener listener) {
|
||||
super(link, listener);
|
||||
}
|
||||
}
|
||||
private State myLoadingState;
|
||||
private final Map<String,String> myExtraData;
|
||||
|
||||
OPDSCatalogItem(INetworkLink link, String title, String summary, UrlInfoCollection urls, Map<String,String> extraData) {
|
||||
OPDSCatalogItem(OPDSNetworkLink link, String title, String summary, UrlInfoCollection urls, Map<String,String> extraData) {
|
||||
super(link, title, summary, urls);
|
||||
myExtraData = extraData;
|
||||
}
|
||||
|
||||
public OPDSCatalogItem(INetworkLink link, String title, String summary, UrlInfoCollection urls, Accessibility accessibility, int flags) {
|
||||
protected OPDSCatalogItem(OPDSNetworkLink link, String title, String summary, UrlInfoCollection urls, Accessibility accessibility, int flags) {
|
||||
super(link, title, summary, urls, accessibility, flags);
|
||||
myExtraData = null;
|
||||
}
|
||||
|
||||
private static UrlInfoCollection createSimpleCollection(String url) {
|
||||
final UrlInfoCollection collection = new UrlInfoCollection();
|
||||
collection.addInfo(new UrlInfo(UrlInfo.Type.Catalog, url));
|
||||
return collection;
|
||||
}
|
||||
|
||||
OPDSCatalogItem(OPDSNetworkLink link, RelatedUrlInfo info) {
|
||||
super(link, info.Title, null, createSimpleCollection(info.Url));
|
||||
myExtraData = null;
|
||||
}
|
||||
|
||||
private void doLoadChildren(ZLNetworkRequest networkRequest) throws ZLNetworkException {
|
||||
try {
|
||||
super.doLoadChildren(myLoadingState, networkRequest);
|
||||
|
|
|
@ -32,7 +32,7 @@ public class NetworkCatalogTree extends NetworkTree {
|
|||
|
||||
private long myLoadedTime = -1;
|
||||
|
||||
NetworkCatalogTree(RootTree parent, NetworkCatalogItem item, int position) {
|
||||
public NetworkCatalogTree(RootTree parent, NetworkCatalogItem item, int position) {
|
||||
super(parent, position);
|
||||
Item = item;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,12 @@ import org.geometerplus.fbreader.network.NetworkItem;
|
|||
import org.geometerplus.fbreader.network.NetworkTree;
|
||||
|
||||
public final class RootTree extends NetworkTree {
|
||||
private final String myId;
|
||||
|
||||
public RootTree(String id) {
|
||||
myId = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return null;
|
||||
|
@ -35,6 +41,6 @@ public final class RootTree extends NetworkTree {
|
|||
|
||||
@Override
|
||||
protected String getStringId() {
|
||||
return "@Root";
|
||||
return myId;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue