示例#1
0
static void loadChildren(JNIEnv* env, jobject jparent, shared_ptr<ePub3::NavigationElement> parent)
{
	auto children = parent->Children();
	for (auto childIt = children.begin(); childIt != children.end(); ++childIt) {
		auto instance = &*childIt;
		auto navigationElement = instance->get();
		if (ePub3::NavigationPoint *navigationPoint = dynamic_cast<ePub3::NavigationPoint*>(navigationElement)) {
			jni::StringUTF title(env, (std::string&) navigationPoint->Title().stl_str());
			jstring jtitle = (jstring) title;
			jni::StringUTF content(env, (std::string&) navigationPoint->Content().stl_str());
			jstring jcontent = (jstring) content;
			jobject jchild = env->CallStaticObjectMethod(javaJavaObjectsFactoryClass, createNavigationPoint_ID,
					jtitle, jcontent);
			env->DeleteLocalRef(jtitle);
			env->DeleteLocalRef(jcontent);
			env->CallStaticVoidMethod(javaJavaObjectsFactoryClass, addElementToParent_ID,
					jparent, jchild);
			loadChildren(env, jchild, *instance);
			env->DeleteLocalRef(jchild);
		}
	}
}