diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml index a854f439c..4760f59c8 100644 --- a/assets/resources/application/en.xml +++ b/assets/resources/application/en.xml @@ -859,6 +859,7 @@ + diff --git a/jni/NativeFormats/JavaNativeFormatPlugin.cpp b/jni/NativeFormats/JavaNativeFormatPlugin.cpp index 659c5f108..17bc3d928 100644 --- a/jni/NativeFormats/JavaNativeFormatPlugin.cpp +++ b/jni/NativeFormats/JavaNativeFormatPlugin.cpp @@ -131,14 +131,14 @@ JNIEXPORT jint JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin } extern "C" -JNIEXPORT jstring JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readEncryptionType(JNIEnv* env, jobject thiz, jobject javaBook) { +JNIEXPORT jstring JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readEncryptionMethod(JNIEnv* env, jobject thiz, jobject javaBook) { shared_ptr plugin = findCppPlugin(thiz); if (plugin.isNull()) { - return AndroidUtil::createJavaString(env, FormatPlugin::EncryptionType::UNKNOWN); + return AndroidUtil::createJavaString(env, FormatPlugin::EncryptionMethod::UNSUPPORTED); } shared_ptr book = Book::loadFromJavaBook(env, javaBook); - return AndroidUtil::createJavaString(env, plugin->readEncryptionType(*book)); + return AndroidUtil::createJavaString(env, plugin->readEncryptionMethod(*book)); } extern "C" diff --git a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp index 1084107ed..b5bababd3 100644 --- a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp +++ b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp @@ -28,9 +28,9 @@ #include "../library/Book.h" -const std::string FormatPlugin::EncryptionType::NONE = "none"; -const std::string FormatPlugin::EncryptionType::UNKNOWN = "unknown"; -const std::string FormatPlugin::EncryptionType::MARLIN = "marlin"; +const std::string FormatPlugin::EncryptionMethod::NONE = "none"; +const std::string FormatPlugin::EncryptionMethod::UNSUPPORTED = "unsupported"; +const std::string FormatPlugin::EncryptionMethod::MARLIN = "marlin"; bool FormatPlugin::detectEncodingAndLanguage(Book &book, ZLInputStream &stream, bool force) { std::string language = book.language(); @@ -103,8 +103,8 @@ const std::string &FormatPlugin::tryOpen(const ZLFile&) const { return EMPTY; } -const std::string &FormatPlugin::readEncryptionType(Book &book) const { - return EncryptionType::NONE; +const std::string &FormatPlugin::readEncryptionMethod(Book &book) const { + return EncryptionMethod::NONE; } shared_ptr FormatPlugin::coverImage(const ZLFile &file) const { diff --git a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h index e0ebb7f40..e15f04219 100644 --- a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h +++ b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h @@ -47,11 +47,11 @@ public: class FormatPlugin { public: - class EncryptionType { + class EncryptionMethod { public: static const std::string NONE; - static const std::string UNKNOWN; + static const std::string UNSUPPORTED; static const std::string MARLIN; }; @@ -67,7 +67,7 @@ public: virtual const std::string &tryOpen(const ZLFile &file) const; virtual bool readMetaInfo(Book &book) const = 0; - virtual const std::string &readEncryptionType(Book &book) const; + virtual const std::string &readEncryptionMethod(Book &book) const; virtual bool readUids(Book &book) const = 0; virtual bool readLanguageAndEncoding(Book &book) const = 0; virtual bool readModel(BookModel &model) const = 0; diff --git a/jni/NativeFormats/fbreader/src/formats/oeb/OEBEncryptionReader.cpp b/jni/NativeFormats/fbreader/src/formats/oeb/OEBEncryptionReader.cpp index 3b4bbe9ea..772289614 100644 --- a/jni/NativeFormats/fbreader/src/formats/oeb/OEBEncryptionReader.cpp +++ b/jni/NativeFormats/fbreader/src/formats/oeb/OEBEncryptionReader.cpp @@ -30,17 +30,17 @@ OEBEncryptionReader::OEBEncryptionReader() : myIsMarlin(false) { const std::string &OEBEncryptionReader::readEncryptionInfo(const ZLFile &epubFile) { shared_ptr epubDir = epubFile.directory(); if (epubDir.isNull()) { - return FormatPlugin::EncryptionType::UNKNOWN; + return FormatPlugin::EncryptionMethod::UNSUPPORTED; } const ZLFile rightsFile(epubDir->itemPath("META-INF/rights.xml")); if (rightsFile.exists()) { readDocument(rightsFile); return myIsMarlin - ? FormatPlugin::EncryptionType::MARLIN - : FormatPlugin::EncryptionType::UNKNOWN; + ? FormatPlugin::EncryptionMethod::MARLIN + : FormatPlugin::EncryptionMethod::UNSUPPORTED; } else { - return FormatPlugin::EncryptionType::NONE; + return FormatPlugin::EncryptionMethod::NONE; } } diff --git a/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.cpp b/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.cpp index 39cea990b..96649fa74 100644 --- a/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.cpp +++ b/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.cpp @@ -129,7 +129,7 @@ bool OEBPlugin::readMetaInfo(Book &book) const { return OEBMetaInfoReader(book).readMetaInfo(opfFile(file)); } -const std::string &OEBPlugin::readEncryptionType(Book &book) const { +const std::string &OEBPlugin::readEncryptionMethod(Book &book) const { return OEBEncryptionReader().readEncryptionInfo(epubFile(book.file())); } diff --git a/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.h b/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.h index 4cb7f738a..6dbd23b67 100644 --- a/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.h +++ b/jni/NativeFormats/fbreader/src/formats/oeb/OEBPlugin.h @@ -33,7 +33,7 @@ public: bool providesMetaInfo() const; const std::string supportedFileType() const; bool readMetaInfo(Book &book) const; - const std::string &readEncryptionType(Book &book) const; + const std::string &readEncryptionMethod(Book &book) const; bool readUids(Book &book) const; bool readLanguageAndEncoding(Book &book) const; bool readModel(BookModel &model) const; diff --git a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java index 693dee6c8..946982c7e 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java +++ b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java @@ -34,6 +34,7 @@ import org.geometerplus.zlibrary.text.view.*; import org.geometerplus.fbreader.book.*; import org.geometerplus.fbreader.bookmodel.*; import org.geometerplus.fbreader.fbreader.options.*; +import org.geometerplus.fbreader.formats.FormatPlugin; public final class FBReaderApp extends ZLApplication { public final MiscOptions MiscOptions = new MiscOptions(); @@ -278,6 +279,22 @@ public final class FBReaderApp extends ZLApplication { getViewWidget().reset(); getViewWidget().repaint(); + + try { + if (!FormatPlugin.EncryptionMethod.NONE.equals( + book.getPlugin().readEncryptionMethod(book))) { + System.err.println("UNSUPPORTED ALGORITHM"); + /* + UIUtil.showErrorMessage( + FBReader.this, + "unsupportedEncryptionAlgorithm", + myBook.File.getPath() + ); + */ + } + } catch (BookReadingException e) { + // ignore + } } private List invisibleBookmarks() { diff --git a/src/org/geometerplus/fbreader/formats/FormatPlugin.java b/src/org/geometerplus/fbreader/formats/FormatPlugin.java index edc442f4d..e4e0cf383 100644 --- a/src/org/geometerplus/fbreader/formats/FormatPlugin.java +++ b/src/org/geometerplus/fbreader/formats/FormatPlugin.java @@ -28,9 +28,9 @@ import org.geometerplus.fbreader.bookmodel.BookModel; import org.geometerplus.fbreader.bookmodel.BookReadingException; public abstract class FormatPlugin { - public interface EncryptionType { + public interface EncryptionMethod { String NONE = "none"; - String UNKNOWN = "unknown"; + String UNSUPPORTED = "unsupported"; String MARLIN = "marlin"; } @@ -48,7 +48,7 @@ public abstract class FormatPlugin { return file; } public abstract void readMetaInfo(Book book) throws BookReadingException; - public abstract String readEncryptionType(Book book); + public abstract String readEncryptionMethod(Book book); public abstract void readUids(Book book) throws BookReadingException; public abstract void readModel(BookModel model) throws BookReadingException; public abstract void detectLanguageAndEncoding(Book book) throws BookReadingException; diff --git a/src/org/geometerplus/fbreader/formats/NativeFormatPlugin.java b/src/org/geometerplus/fbreader/formats/NativeFormatPlugin.java index a8902653c..ea46ee321 100644 --- a/src/org/geometerplus/fbreader/formats/NativeFormatPlugin.java +++ b/src/org/geometerplus/fbreader/formats/NativeFormatPlugin.java @@ -61,7 +61,7 @@ public class NativeFormatPlugin extends FormatPlugin { private native int readMetaInfoNative(Book book); @Override - public native String readEncryptionType(Book book); + public native String readEncryptionMethod(Book book); @Override synchronized public void readUids(Book book) throws BookReadingException { @@ -83,7 +83,6 @@ public class NativeFormatPlugin extends FormatPlugin { @Override synchronized public void readModel(BookModel model) throws BookReadingException { final int code = readModelNative(model); - System.err.println("ENCRYPTION TYPE = " + readEncryptionType(model.Book)); if (code != 0) { throw new BookReadingException( "nativeCodeFailure", diff --git a/src/org/geometerplus/fbreader/formats/fb2/FB2Plugin.java b/src/org/geometerplus/fbreader/formats/fb2/FB2Plugin.java index fb45f3de3..291bcabf1 100644 --- a/src/org/geometerplus/fbreader/formats/fb2/FB2Plugin.java +++ b/src/org/geometerplus/fbreader/formats/fb2/FB2Plugin.java @@ -48,8 +48,8 @@ public class FB2Plugin extends JavaFormatPlugin { } @Override - public String readEncryptionType(Book book) { - return EncryptionType.NONE; + public String readEncryptionMethod(Book book) { + return EncryptionMethod.NONE; } @Override diff --git a/src/org/geometerplus/fbreader/formats/oeb/OEBPlugin.java b/src/org/geometerplus/fbreader/formats/oeb/OEBPlugin.java index f019d4ada..1c7639f4b 100644 --- a/src/org/geometerplus/fbreader/formats/oeb/OEBPlugin.java +++ b/src/org/geometerplus/fbreader/formats/oeb/OEBPlugin.java @@ -62,8 +62,8 @@ public class OEBPlugin extends JavaFormatPlugin { } @Override - public String readEncryptionType(Book book) { - return EncryptionType.NONE; + public String readEncryptionMethod(Book book) { + return EncryptionMethod.NONE; } @Override diff --git a/src/org/geometerplus/fbreader/formats/pdb/MobipocketPlugin.java b/src/org/geometerplus/fbreader/formats/pdb/MobipocketPlugin.java index db60c3857..964031fc2 100644 --- a/src/org/geometerplus/fbreader/formats/pdb/MobipocketPlugin.java +++ b/src/org/geometerplus/fbreader/formats/pdb/MobipocketPlugin.java @@ -124,8 +124,8 @@ public class MobipocketPlugin extends JavaFormatPlugin { } @Override - public String readEncryptionType(Book book) { - return EncryptionType.NONE; + public String readEncryptionMethod(Book book) { + return EncryptionMethod.NONE; } @Override