diff --git a/jni/NativeFormats/JavaNativeFormatPlugin.cpp b/jni/NativeFormats/JavaNativeFormatPlugin.cpp index 5c7e3e411..93273b74b 100644 --- a/jni/NativeFormats/JavaNativeFormatPlugin.cpp +++ b/jni/NativeFormats/JavaNativeFormatPlugin.cpp @@ -101,6 +101,17 @@ JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPl extern "C" JNIEXPORT void JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_detectLanguageAndEncoding(JNIEnv* env, jobject thiz, jobject javaBook) { // TODO: implement + shared_ptr plugin = findCppPlugin(env, thiz); + if (plugin.isNull()) { + return; + } + + shared_ptr book = Book::loadFromJavaBook(env, javaBook); + if (!plugin->readLanguageAndEncoding(*book)) { + return; + } + + //fillLanguageAndEncoding(env, javaBook, *book); } static bool initBookModel(JNIEnv *env, jobject javaModel, BookModel &model) { diff --git a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp index 753946249..8e5a27609 100644 --- a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp +++ b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.cpp @@ -31,24 +31,20 @@ void FormatPlugin::detectEncodingAndLanguage(Book &book, ZLInputStream &stream) std::string language = book.language(); std::string encoding = book.encoding(); - if (!encoding.empty() && !language.empty()) { + if (!encoding.empty()) { return; } PluginCollection &collection = PluginCollection::Instance(); - if (language.empty()) { - language = collection.defaultLanguage(); - } if (encoding.empty()) { - encoding = collection.defaultEncoding(); + encoding = "utf-8"; } if (collection.isLanguageAutoDetectEnabled() && stream.open()) { static const int BUFSIZE = 65536; char *buffer = new char[BUFSIZE]; const size_t size = stream.read(buffer, BUFSIZE); stream.close(); - shared_ptr info = - ZLLanguageDetector().findInfo(buffer, size); + shared_ptr info = ZLLanguageDetector().findInfo(buffer, size); delete[] buffer; if (!info.isNull()) { if (!info->Language.empty()) { @@ -71,9 +67,6 @@ void FormatPlugin::detectLanguage(Book &book, ZLInputStream &stream) { } PluginCollection &collection = PluginCollection::Instance(); - if (language.empty()) { - language = collection.defaultLanguage(); - } if (collection.isLanguageAutoDetectEnabled() && stream.open()) { static const int BUFSIZE = 65536; char *buffer = new char[BUFSIZE]; diff --git a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h index 2dbc45e92..f9d42befa 100644 --- a/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h +++ b/jni/NativeFormats/fbreader/src/formats/FormatPlugin.h @@ -84,8 +84,6 @@ public: shared_ptr pluginByType(const std::string &fileType) const; bool isLanguageAutoDetectEnabled(); - std::string defaultLanguage(); - std::string defaultEncoding(); private: static PluginCollection *ourInstance; diff --git a/jni/NativeFormats/fbreader/src/formats/PluginCollection.cpp b/jni/NativeFormats/fbreader/src/formats/PluginCollection.cpp index 0b1c98b49..e29269ac8 100644 --- a/jni/NativeFormats/fbreader/src/formats/PluginCollection.cpp +++ b/jni/NativeFormats/fbreader/src/formats/PluginCollection.cpp @@ -95,11 +95,3 @@ shared_ptr PluginCollection::pluginByType(const std::string &fileT bool PluginCollection::isLanguageAutoDetectEnabled() { return true; } - -std::string PluginCollection::defaultLanguage() { - return "en"; -} - -std::string PluginCollection::defaultEncoding() { - return "windows-1252"; -}