mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-03 09:49:19 +02:00
BookReadingException can be thrown from native code
This commit is contained in:
parent
5f6223353d
commit
0e476c760c
4 changed files with 32 additions and 3 deletions
|
@ -17,6 +17,8 @@
|
|||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <ZLFile.h>
|
||||
|
||||
#include "AndroidUtil.h"
|
||||
|
||||
JavaVM *AndroidUtil::ourJavaVM = 0;
|
||||
|
@ -37,6 +39,7 @@ const char * const AndroidUtil::Class_ZLFile = "org/geometerplus/zlibrary/core/f
|
|||
const char * const AndroidUtil::Class_Book = "org/geometerplus/fbreader/library/Book";
|
||||
const char * const AndroidUtil::Class_Tag = "org/geometerplus/fbreader/library/Tag";
|
||||
const char * const AndroidUtil::Class_NativeBookModel = "org/geometerplus/fbreader/bookmodel/NativeBookModel";
|
||||
const char * const AndroidUtil::Class_BookReadingException = "org/geometerplus/fbreader/bookmodel/BookReadingException";
|
||||
|
||||
jmethodID AndroidUtil::MID_java_lang_String_toLowerCase;
|
||||
jmethodID AndroidUtil::MID_java_lang_String_toUpperCase;
|
||||
|
@ -103,6 +106,8 @@ jmethodID AndroidUtil::MID_NativeBookModel_createTextModel;
|
|||
jmethodID AndroidUtil::MID_NativeBookModel_setBookTextModel;
|
||||
jmethodID AndroidUtil::MID_NativeBookModel_setFootnoteModel;
|
||||
|
||||
jmethodID AndroidUtil::SMID_BookReadingException_throwForFile;
|
||||
|
||||
JNIEnv *AndroidUtil::getEnv() {
|
||||
JNIEnv *env;
|
||||
ourJavaVM->GetEnv((void **)&env, JNI_VERSION_1_2);
|
||||
|
@ -216,6 +221,10 @@ bool AndroidUtil::init(JavaVM* jvm) {
|
|||
CHECK_NULL( MID_NativeBookModel_setFootnoteModel = env->GetMethodID(cls, "setFootnoteModel", "(Lorg/geometerplus/zlibrary/text/model/ZLTextModel;)V") );
|
||||
env->DeleteLocalRef(cls);
|
||||
|
||||
CHECK_NULL( cls = env->FindClass(Class_BookReadingException) );
|
||||
CHECK_NULL( SMID_BookReadingException_throwForFile = env->GetStaticMethodID(cls, "throwForFile", "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/filesystem/ZLFile;)V") );
|
||||
env->DeleteLocalRef(cls);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -299,6 +308,14 @@ void AndroidUtil::throwRuntimeException(JNIEnv *env, const std::string &message)
|
|||
env->ThrowNew(cls, message.c_str());
|
||||
}
|
||||
|
||||
void AndroidUtil::throwBookReadingException(JNIEnv *env, const std::string &resourceId, const std::string &filePath) {
|
||||
// TODO: implement
|
||||
void AndroidUtil::throwBookReadingException(const std::string &resourceId, const ZLFile &file) {
|
||||
JNIEnv *env = getEnv();
|
||||
jclass cls = env->FindClass("org/geometerplus/fbreader/bookmodel/BookReadingException");
|
||||
env->CallStaticVoidMethod(
|
||||
cls,
|
||||
SMID_BookReadingException_throwForFile,
|
||||
AndroidUtil::createJavaString(env, resourceId),
|
||||
AndroidUtil::createZLFile(env, file.path())
|
||||
);
|
||||
// TODO: clear cls & ZLFile object references
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue