diff --git a/src/org/geometerplus/fbreader/filetype/FileType.java b/src/org/geometerplus/fbreader/filetype/FileType.java index 92f5e407d..3c1f82015 100644 --- a/src/org/geometerplus/fbreader/filetype/FileType.java +++ b/src/org/geometerplus/fbreader/filetype/FileType.java @@ -33,7 +33,7 @@ public abstract class FileType { public abstract boolean acceptsFile(ZLFile file); - public abstract String extension(); + //public abstract String extension(); public abstract List mimeTypes(); public abstract MimeType mimeType(ZLFile file); } diff --git a/src/org/geometerplus/fbreader/filetype/FileTypeDjVu.java b/src/org/geometerplus/fbreader/filetype/FileTypeDjVu.java index 3e024e337..39a4c6132 100644 --- a/src/org/geometerplus/fbreader/filetype/FileTypeDjVu.java +++ b/src/org/geometerplus/fbreader/filetype/FileTypeDjVu.java @@ -35,13 +35,20 @@ class FileTypeDjVu extends FileType { return "djvu".equalsIgnoreCase(extension) || "djv".equalsIgnoreCase(extension); } + /* @Override public String extension() { return "djvu"; } + */ @Override public List mimeTypes() { return MimeType.TYPES_DJVU; } + + @Override + public MimeType mimeType(ZLFile file) { + return acceptsFile(file) ? MimeType.IMAGE_VND_DJVU : MimeType.NULL; + } } diff --git a/src/org/geometerplus/fbreader/filetype/FileTypeEpub.java b/src/org/geometerplus/fbreader/filetype/FileTypeEpub.java index 25a3bb6a8..4668c9f29 100644 --- a/src/org/geometerplus/fbreader/filetype/FileTypeEpub.java +++ b/src/org/geometerplus/fbreader/filetype/FileTypeEpub.java @@ -38,13 +38,25 @@ class FileTypeEpub extends FileType { "opf".equalsIgnoreCase(extension); } + /* @Override public String extension() { return "epub"; } + */ @Override public List mimeTypes() { return MimeType.TYPES_EPUB; } + + @Override + public MimeType mimeType(ZLFile file) { + final String extension = file.getExtension(); + if ("epub".equalsIgnoreCase(extension)) { + return MimeType.APP_EPUB_ZIP; + } + // TODO: process other extensions (?) + return MimeType.NULL; + } } diff --git a/src/org/geometerplus/fbreader/filetype/FileTypeFB2Zip.java b/src/org/geometerplus/fbreader/filetype/FileTypeFB2Zip.java index 1a72fd02c..0ee86077b 100644 --- a/src/org/geometerplus/fbreader/filetype/FileTypeFB2Zip.java +++ b/src/org/geometerplus/fbreader/filetype/FileTypeFB2Zip.java @@ -31,17 +31,23 @@ class FileTypeFB2Zip extends FileType { @Override public boolean acceptsFile(ZLFile file) { - // TODO: implement - return false; + return file.getShortName().toLowerCase().endsWith(".fb2.zip"); } + /* @Override public String extension() { return "fb2.zip"; } + */ @Override public List mimeTypes() { return MimeType.TYPES_FB2_ZIP; } + + @Override + public MimeType mimeType(ZLFile file) { + return acceptsFile(file) ? MimeType.APP_FB2_ZIP : MimeType.NULL; + } } diff --git a/src/org/geometerplus/fbreader/filetype/FileTypeHtml.java b/src/org/geometerplus/fbreader/filetype/FileTypeHtml.java index b8936144a..41ccbcd78 100644 --- a/src/org/geometerplus/fbreader/filetype/FileTypeHtml.java +++ b/src/org/geometerplus/fbreader/filetype/FileTypeHtml.java @@ -35,13 +35,20 @@ class FileTypeHtml extends FileType { return extension.endsWith("html") || "htm".equals(extension); } + /* @Override public String extension() { return "html"; } + */ @Override public List mimeTypes() { return MimeType.TYPES_HTML; } + + @Override + public MimeType mimeType(ZLFile file) { + return acceptsFile(file) ? MimeType.TEXT_HTML : MimeType.NULL; + } } diff --git a/src/org/geometerplus/fbreader/filetype/FileTypeMobipocket.java b/src/org/geometerplus/fbreader/filetype/FileTypeMobipocket.java index 2d97a0092..36e41b4ae 100644 --- a/src/org/geometerplus/fbreader/filetype/FileTypeMobipocket.java +++ b/src/org/geometerplus/fbreader/filetype/FileTypeMobipocket.java @@ -34,13 +34,20 @@ class FileTypeMobipocket extends FileTypePalm { return "mobi".equalsIgnoreCase(file.getExtension()) || super.acceptsFile(file); } + /* @Override public String extension() { return "mobi"; } + */ @Override public List mimeTypes() { return MimeType.TYPES_MOBIPOCKET; } + + @Override + public MimeType mimeType(ZLFile file) { + return acceptsFile(file) ? MimeType.APP_MOBI : MimeType.NULL; + } } diff --git a/src/org/geometerplus/fbreader/filetype/FileTypePalm.java b/src/org/geometerplus/fbreader/filetype/FileTypePalm.java index 82abbd8b7..db30f54dd 100644 --- a/src/org/geometerplus/fbreader/filetype/FileTypePalm.java +++ b/src/org/geometerplus/fbreader/filetype/FileTypePalm.java @@ -62,8 +62,10 @@ abstract class FileTypePalm extends FileType { myPalmId.equals(palmFileType(file)); } + /* @Override public String extension() { return "pdb"; } + */ } diff --git a/src/org/geometerplus/fbreader/filetype/SimpleFileType.java b/src/org/geometerplus/fbreader/filetype/SimpleFileType.java index 910ff3df5..3c78e0213 100644 --- a/src/org/geometerplus/fbreader/filetype/SimpleFileType.java +++ b/src/org/geometerplus/fbreader/filetype/SimpleFileType.java @@ -39,13 +39,20 @@ class SimpleFileType extends FileType { return myExtension.equalsIgnoreCase(file.getExtension()); } + /* @Override public String extension() { return myExtension; } + */ @Override public List mimeTypes() { return myMimeTypes; } + + @Override + public MimeType mimeType(ZLFile file) { + return acceptsFile(file) ? myMimeTypes.get(0) : MimeType.NULL; + } }