mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-06 12:00:17 +02:00
MimeTypes refactoring; ZLLoadableImage is introduced
This commit is contained in:
parent
3f651a9f15
commit
989ea3ab0f
24 changed files with 55 additions and 50 deletions
|
@ -38,13 +38,13 @@ import org.geometerplus.zlibrary.ui.android.R;
|
|||
|
||||
import org.geometerplus.zlibrary.core.resources.ZLResource;
|
||||
import org.geometerplus.zlibrary.core.image.ZLImage;
|
||||
import org.geometerplus.zlibrary.core.image.ZLLoadableImage;
|
||||
|
||||
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager;
|
||||
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
|
||||
import org.geometerplus.zlibrary.ui.android.library.ZLAndroidLibrary;
|
||||
|
||||
import org.geometerplus.fbreader.network.NetworkTree;
|
||||
import org.geometerplus.fbreader.network.NetworkImage;
|
||||
import org.geometerplus.fbreader.network.tree.NetworkBookTree;
|
||||
|
||||
import org.geometerplus.android.fbreader.tree.ZLAndroidTree;
|
||||
|
@ -123,21 +123,21 @@ abstract class NetworkBaseActivity extends ListActivity
|
|||
if (cover != null) {
|
||||
ZLAndroidImageData data = null;
|
||||
final ZLAndroidImageManager mgr = (ZLAndroidImageManager) ZLAndroidImageManager.Instance();
|
||||
if (cover instanceof NetworkImage) {
|
||||
final NetworkImage img = (NetworkImage) cover;
|
||||
if (cover instanceof ZLLoadableImage) {
|
||||
final ZLLoadableImage img = (ZLLoadableImage)cover;
|
||||
if (img.isSynchronized()) {
|
||||
data = mgr.getImageData(img);
|
||||
} else if (!myAwaitedCovers.contains(img.Url)) {
|
||||
} else if (!myAwaitedCovers.contains(img.getId())) {
|
||||
final Runnable runnable = new Runnable() {
|
||||
public void run() {
|
||||
myAwaitedCovers.remove(img.Url);
|
||||
myAwaitedCovers.remove(img.getId());
|
||||
final ListView view = NetworkBaseActivity.this.getListView();
|
||||
view.invalidateViews();
|
||||
}
|
||||
};
|
||||
final NetworkView networkView = NetworkView.Instance();
|
||||
networkView.performCoverSynchronization(img, runnable);
|
||||
myAwaitedCovers.add(img.Url);
|
||||
myAwaitedCovers.add(img.getId());
|
||||
}
|
||||
} else {
|
||||
data = mgr.getImageData(cover);
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.geometerplus.zlibrary.ui.android.R;
|
|||
|
||||
import org.geometerplus.zlibrary.core.resources.ZLResource;
|
||||
import org.geometerplus.zlibrary.core.image.ZLImage;
|
||||
import org.geometerplus.zlibrary.core.image.ZLLoadableImage;
|
||||
|
||||
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager;
|
||||
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
|
||||
|
@ -189,8 +190,8 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
|
|||
if (cover != null) {
|
||||
ZLAndroidImageData data = null;
|
||||
final ZLAndroidImageManager mgr = (ZLAndroidImageManager) ZLAndroidImageManager.Instance();
|
||||
if (cover instanceof NetworkImage) {
|
||||
final NetworkImage img = (NetworkImage) cover;
|
||||
if (cover instanceof ZLLoadableImage) {
|
||||
final ZLLoadableImage img = (ZLLoadableImage)cover;
|
||||
final NetworkView networkView = NetworkView.Instance();
|
||||
if (networkView.isInitialized()) {
|
||||
networkView.performCoverSynchronization(img, new Runnable() {
|
||||
|
|
|
@ -34,6 +34,7 @@ import android.os.Message;
|
|||
import android.view.MenuItem;
|
||||
import android.view.Menu;
|
||||
|
||||
import org.geometerplus.zlibrary.core.image.ZLLoadableImage;
|
||||
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
|
||||
|
||||
import org.geometerplus.fbreader.network.*;
|
||||
|
@ -231,8 +232,8 @@ class NetworkView {
|
|||
|
||||
private final CoverSynchronizedHandler myCoverSynchronizedHandler = new CoverSynchronizedHandler();
|
||||
|
||||
public void performCoverSynchronization(final NetworkImage image, Runnable finishRunnable) {
|
||||
LinkedList<Runnable> runnables = myOnCoverSyncRunnables.get(image.Url);
|
||||
public void performCoverSynchronization(final ZLLoadableImage image, Runnable finishRunnable) {
|
||||
LinkedList<Runnable> runnables = myOnCoverSyncRunnables.get(image.getId());
|
||||
if (runnables != null) {
|
||||
runnables.add(finishRunnable);
|
||||
return;
|
||||
|
@ -240,12 +241,12 @@ class NetworkView {
|
|||
|
||||
runnables = new LinkedList<Runnable>();
|
||||
runnables.add(finishRunnable);
|
||||
myOnCoverSyncRunnables.put(image.Url, runnables);
|
||||
myOnCoverSyncRunnables.put(image.getId(), runnables);
|
||||
|
||||
myPool.execute(new Runnable() {
|
||||
public void run() {
|
||||
image.synchronize();
|
||||
myCoverSynchronizedHandler.fireMessage(image.Url);
|
||||
myCoverSynchronizedHandler.fireMessage(image.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -21,13 +21,12 @@ package org.geometerplus.fbreader.formats.fb2;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
|
||||
import org.geometerplus.zlibrary.core.image.ZLImage;
|
||||
import org.geometerplus.zlibrary.core.xml.*;
|
||||
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
|
||||
public class FB2CoverReader extends ZLXMLReaderAdapter {
|
||||
private boolean myReadCoverPage;
|
||||
private String myImageReference;
|
||||
|
|
|
@ -21,6 +21,8 @@ package org.geometerplus.fbreader.formats.oeb;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.xml.*;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
|
||||
import org.geometerplus.zlibrary.core.image.ZLFileImage;
|
||||
|
@ -28,8 +30,6 @@ import org.geometerplus.zlibrary.core.image.ZLFileImage;
|
|||
import org.geometerplus.fbreader.bookmodel.*;
|
||||
import org.geometerplus.fbreader.formats.xhtml.XHTMLReader;
|
||||
import org.geometerplus.fbreader.formats.util.MiscUtil;
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
|
||||
class Reference {
|
||||
public final String Title;
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
|
||||
package org.geometerplus.fbreader.formats.oeb;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
|
||||
import org.geometerplus.zlibrary.core.image.ZLFileImage;
|
||||
import org.geometerplus.zlibrary.core.image.ZLImage;
|
||||
import org.geometerplus.zlibrary.core.xml.*;
|
||||
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.formats.util.MiscUtil;
|
||||
|
||||
class OEBCoverReader extends ZLXMLReaderAdapter implements XMLNamespaces, MimeTypes {
|
||||
|
|
|
@ -21,11 +21,11 @@ package org.geometerplus.fbreader.formats.oeb;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
|
||||
import org.geometerplus.zlibrary.core.xml.*;
|
||||
|
||||
import org.geometerplus.fbreader.library.Book;
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
|
||||
class OEBMetaInfoReader extends ZLXMLReaderAdapter implements XMLNamespaces {
|
||||
private final Book myBook;
|
||||
|
|
|
@ -23,11 +23,11 @@ import java.util.*;
|
|||
import java.io.*;
|
||||
import java.nio.charset.CharsetDecoder;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.image.ZLFileImage;
|
||||
import org.geometerplus.zlibrary.core.html.ZLByteBuffer;
|
||||
import org.geometerplus.zlibrary.core.html.ZLHtmlAttributeMap;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.formats.html.HtmlReader;
|
||||
import org.geometerplus.fbreader.formats.html.HtmlTag;
|
||||
import org.geometerplus.fbreader.bookmodel.BookModel;
|
||||
|
|
|
@ -23,12 +23,12 @@ import java.io.IOException;
|
|||
import java.util.*;
|
||||
import java.util.zip.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
|
||||
import org.geometerplus.zlibrary.core.util.ZLInputStreamWithOffset;
|
||||
import org.geometerplus.zlibrary.core.image.*;
|
||||
import org.geometerplus.zlibrary.text.model.*;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.bookmodel.*;
|
||||
import org.geometerplus.fbreader.formats.pdb.*;
|
||||
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
|
||||
package org.geometerplus.fbreader.formats.xhtml;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.xml.ZLStringMap;
|
||||
import org.geometerplus.zlibrary.core.image.ZLFileImage;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.formats.util.MiscUtil;
|
||||
import org.geometerplus.fbreader.bookmodel.BookReader;
|
||||
|
||||
|
|
|
@ -21,9 +21,9 @@ package org.geometerplus.fbreader.network;
|
|||
|
||||
import java.io.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.image.ZLBase64EncodedImage;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.Paths;
|
||||
|
||||
final class Base64EncodedImage extends ZLBase64EncodedImage {
|
||||
|
|
|
@ -22,11 +22,11 @@ package org.geometerplus.fbreader.network;
|
|||
import java.io.*;
|
||||
import java.net.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.image.ZLLoadableImage;
|
||||
import org.geometerplus.zlibrary.core.network.ZLNetworkManager;
|
||||
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.Paths;
|
||||
|
||||
public final class NetworkImage extends ZLLoadableImage implements MimeTypes {
|
||||
|
@ -133,10 +133,17 @@ public final class NetworkImage extends ZLLoadableImage implements MimeTypes {
|
|||
return makeImageFileName(Url, mimeType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return Url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void synchronize() {
|
||||
synchronizeInternal(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void synchronizeFast() {
|
||||
synchronizeInternal(true);
|
||||
}
|
||||
|
|
|
@ -22,10 +22,10 @@ package org.geometerplus.fbreader.network;
|
|||
import java.util.LinkedList;
|
||||
import java.util.Set;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.image.ZLImage;
|
||||
|
||||
import org.geometerplus.fbreader.tree.FBTree;
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
|
||||
public abstract class NetworkTree extends FBTree {
|
||||
protected NetworkTree(int level) {
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.geometerplus.fbreader.network.authentication.litres;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.xml.*;
|
||||
|
||||
import org.geometerplus.fbreader.network.*;
|
||||
|
@ -157,7 +158,7 @@ class LitResXMLReader extends LitResAuthenticationXMLReader {
|
|||
} else if (TAG_BOOK_TITLE == tag) {
|
||||
myState = BOOK_TITLE;
|
||||
} else if (TAG_ANNOTATION == tag) {
|
||||
myHtmlToString.setupTextContent("text/xhtml");
|
||||
myHtmlToString.setupTextContent(MimeTypes.MIME_TEXT_XHTML);
|
||||
myState = ANNOTATION;
|
||||
} else if (TAG_DATE == tag) {
|
||||
myState = DATE;
|
||||
|
|
|
@ -21,9 +21,9 @@ package org.geometerplus.fbreader.network.opds;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.util.ZLNetworkUtil;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
import org.geometerplus.fbreader.network.atom.ATOMLink;
|
||||
|
||||
class CatalogInfoReader implements OPDSFeedReader {
|
||||
|
|
|
@ -24,16 +24,14 @@ import java.io.ByteArrayInputStream;
|
|||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
import org.geometerplus.zlibrary.core.html.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.xml.ZLXMLProcessor;
|
||||
import org.geometerplus.zlibrary.core.xml.ZLStringMap;
|
||||
import org.geometerplus.fbreader.formats.xhtml.XHTMLReader;
|
||||
|
||||
import org.geometerplus.fbreader.formats.xhtml.XHTMLReader;
|
||||
import org.geometerplus.fbreader.network.atom.ATOMConstants;
|
||||
|
||||
|
||||
public class HtmlToString {
|
||||
|
||||
private String myLastOpenedTag;
|
||||
private String myTextType;
|
||||
private StringBuilder myTextContent = new StringBuilder();
|
||||
|
@ -61,8 +59,8 @@ public class HtmlToString {
|
|||
result = new String(contentArray);
|
||||
}
|
||||
if (result != null) {
|
||||
if (myTextType == ATOMConstants.TYPE_HTML || myTextType == ATOMConstants.TYPE_XHTML
|
||||
|| myTextType == "text/html" || myTextType == "text/xhtml") {
|
||||
if (myTextType == ATOMConstants.TYPE_HTML || myTextType == ATOMConstants.TYPE_XHTML ||
|
||||
myTextType == MimeTypes.MIME_TEXT_HTML || myTextType == MimeTypes.MIME_TEXT_XHTML) {
|
||||
myHtmlToStringReader.readFromString(result);
|
||||
result = myHtmlToStringReader.getString();
|
||||
}
|
||||
|
@ -73,7 +71,7 @@ public class HtmlToString {
|
|||
}
|
||||
|
||||
public void processTextContent(boolean closeTag, String tag, ZLStringMap attributes, String bufferContent) {
|
||||
if (myTextType == ATOMConstants.TYPE_XHTML || myTextType == "text/xhtml") {
|
||||
if (myTextType == ATOMConstants.TYPE_XHTML || myTextType == MimeTypes.MIME_TEXT_XHTML) {
|
||||
if (bufferContent != null) {
|
||||
myTextContent.append(bufferContent);
|
||||
}
|
||||
|
|
|
@ -21,10 +21,9 @@ package org.geometerplus.fbreader.network.opds;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.util.ZLNetworkUtil;
|
||||
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
|
||||
import org.geometerplus.fbreader.network.*;
|
||||
import org.geometerplus.fbreader.network.atom.*;
|
||||
import org.geometerplus.fbreader.network.authentication.litres.LitResBookshelfItem;
|
||||
|
|
|
@ -23,13 +23,12 @@ import java.util.HashMap;
|
|||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.filesystem.ZLResourceFile;
|
||||
import org.geometerplus.zlibrary.core.util.ZLNetworkUtil;
|
||||
import org.geometerplus.zlibrary.core.xml.ZLStringMap;
|
||||
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
|
||||
import org.geometerplus.fbreader.network.INetworkLink;
|
||||
import org.geometerplus.fbreader.network.NetworkLibrary;
|
||||
import org.geometerplus.fbreader.network.atom.ATOMLink;
|
||||
|
|
|
@ -21,15 +21,12 @@ package org.geometerplus.fbreader.network.opds;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.xml.*;
|
||||
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
|
||||
import org.geometerplus.fbreader.network.atom.*;
|
||||
|
||||
|
||||
class OPDSXMLReader extends ZLXMLReaderAdapter {
|
||||
|
||||
public static final String KEY_PRICE = "price";
|
||||
|
||||
|
||||
|
|
|
@ -23,13 +23,12 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.XMLNamespaces;
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.util.ZLNetworkUtil;
|
||||
import org.geometerplus.zlibrary.core.xml.ZLStringMap;
|
||||
import org.geometerplus.zlibrary.core.xml.ZLXMLReaderAdapter;
|
||||
|
||||
import org.geometerplus.fbreader.constants.XMLNamespaces;
|
||||
import org.geometerplus.fbreader.constants.MimeTypes;
|
||||
|
||||
class OpenSearchXMLReader extends ZLXMLReaderAdapter {
|
||||
|
||||
private final List<OpenSearchDescription> myDescriptions;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.geometerplus.fbreader.constants;
|
||||
package org.geometerplus.zlibrary.core.constants;
|
||||
|
||||
public interface MimeTypes {
|
||||
// MIME types / application
|
||||
|
@ -35,6 +35,8 @@ public interface MimeTypes {
|
|||
|
||||
// MIME types / text
|
||||
String MIME_TEXT_HTML = "text/html";
|
||||
String MIME_TEXT_XHTML = "text/xhtml";
|
||||
String MIME_TEXT_PLAIN = "text/plain";
|
||||
|
||||
// MIME images
|
||||
String MIME_IMAGE_PREFIX = "image/";
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.geometerplus.fbreader.constants;
|
||||
package org.geometerplus.zlibrary.core.constants;
|
||||
|
||||
public interface XMLNamespaces {
|
||||
String DublinCorePrefix = "http://purl.org/dc/elements";
|
||||
|
|
|
@ -36,4 +36,5 @@ public abstract class ZLLoadableImage extends ZLSingleImage {
|
|||
|
||||
public abstract void synchronize();
|
||||
public abstract void synchronizeFast();
|
||||
public abstract String getId();
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
package org.geometerplus.zlibrary.ui.android.image;
|
||||
|
||||
import org.geometerplus.zlibrary.core.constants.MimeTypes;
|
||||
import org.geometerplus.zlibrary.core.image.*;
|
||||
|
||||
public final class ZLAndroidImageManager extends ZLImageManager {
|
||||
|
@ -27,7 +28,7 @@ public final class ZLAndroidImageManager extends ZLImageManager {
|
|||
return (ZLAndroidImageData)image;
|
||||
} else if (image instanceof ZLSingleImage) {
|
||||
ZLSingleImage singleImage = (ZLSingleImage)image;
|
||||
if ("image/palm".equals(singleImage.mimeType())) {
|
||||
if (MimeTypes.MIME_IMAGE_PALM.equals(singleImage.mimeType())) {
|
||||
return null;
|
||||
}
|
||||
byte[] array = singleImage.byteData();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue