1
0
Fork 0
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:
Nikolay Pultsin 2010-12-04 03:47:34 +00:00
parent 3f651a9f15
commit 989ea3ab0f
24 changed files with 55 additions and 50 deletions

View file

@ -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);

View file

@ -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() {

View file

@ -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());
}
});
}

View file

@ -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;

View file

@ -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;

View file

@ -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 {

View file

@ -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;

View file

@ -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;

View file

@ -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.*;

View file

@ -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;

View file

@ -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 {

View file

@ -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);
}

View file

@ -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) {

View file

@ -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;

View file

@ -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 {

View file

@ -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);
}

View file

@ -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;

View file

@ -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;

View file

@ -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";

View file

@ -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;

View file

@ -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/";

View file

@ -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";

View file

@ -36,4 +36,5 @@ public abstract class ZLLoadableImage extends ZLSingleImage {
public abstract void synchronize();
public abstract void synchronizeFast();
public abstract String getId();
}

View file

@ -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();