JNIEXPORT void JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readUidsNative(JNIEnv* env, jobject thiz, jobject javaBook) { shared_ptr<FormatPlugin> plugin = findCppPlugin(thiz); if (plugin.isNull()) { return; } shared_ptr<Book> book = Book::loadFromJavaBook(env, javaBook); plugin->readUids(*book); fillUids(env, javaBook, *book); }
static void fillMetaInfo(JNIEnv* env, jobject javaBook, Book &book) { jstring javaString; javaString = AndroidUtil::createJavaString(env, book.title()); AndroidUtil::Method_Book_setTitle->call(javaBook, javaString); env->DeleteLocalRef(javaString); javaString = AndroidUtil::createJavaString(env, book.language()); if (javaString != 0) { AndroidUtil::Method_Book_setLanguage->call(javaBook, javaString); env->DeleteLocalRef(javaString); } javaString = AndroidUtil::createJavaString(env, book.encoding()); if (javaString != 0) { AndroidUtil::Method_Book_setEncoding->call(javaBook, javaString); env->DeleteLocalRef(javaString); } javaString = AndroidUtil::createJavaString(env, book.seriesTitle()); if (javaString != 0) { jstring indexString = AndroidUtil::createJavaString(env, book.indexInSeries()); AndroidUtil::Method_Book_setSeriesInfo->call(javaBook, javaString, indexString); if (indexString != 0) { env->DeleteLocalRef(indexString); } env->DeleteLocalRef(javaString); } const AuthorList &authors = book.authors(); for (std::size_t i = 0; i < authors.size(); ++i) { const Author &author = *authors[i]; javaString = env->NewStringUTF(author.name().c_str()); jstring key = env->NewStringUTF(author.sortKey().c_str()); AndroidUtil::Method_Book_addAuthor->call(javaBook, javaString, key); env->DeleteLocalRef(key); env->DeleteLocalRef(javaString); } const TagList &tags = book.tags(); for (std::size_t i = 0; i < tags.size(); ++i) { const Tag &tag = *tags[i]; AndroidUtil::Method_Book_addTag->call(javaBook, tag.javaTag(env)); } fillUids(env, javaBook, book); }
static void fillMetaInfo(JNIEnv* env, jobject javaBook, Book &book) { JString title(env, book.title()); AndroidUtil::Method_Book_setTitle->call(javaBook, title.j()); JString language(env, book.language()); if (language.j() != 0) { AndroidUtil::Method_Book_setLanguage->call(javaBook, language.j()); } JString encoding(env, book.encoding()); if (encoding.j() != 0) { AndroidUtil::Method_Book_setEncoding->call(javaBook, encoding.j()); } JString seriesTitle(env, book.seriesTitle()); if (seriesTitle.j() != 0) { JString indexString(env, book.indexInSeries()); AndroidUtil::Method_Book_setSeriesInfo->call(javaBook, seriesTitle.j(), indexString.j()); } const AuthorList &authors = book.authors(); for (std::size_t i = 0; i < authors.size(); ++i) { const Author &author = *authors[i]; JString name(env, author.name(), false); JString key(env, author.sortKey(), false); AndroidUtil::Method_Book_addAuthor->call(javaBook, name.j(), key.j()); } const TagList &tags = book.tags(); for (std::size_t i = 0; i < tags.size(); ++i) { const Tag &tag = *tags[i]; AndroidUtil::Method_Book_addTag->call(javaBook, tag.javaTag(env)); } fillUids(env, javaBook, book); }