RHO_GLOBAL void take_picture(char* callback_url, rho_param *options_hash ) { JNIEnv *env = jnienv(); jclass cls = getJNIClass(RHODES_JAVA_CLASS_CAMERA); if (!cls) return; jmethodID mid = getJNIClassStaticMethod(env, cls, "takePicture", "(Ljava/lang/String;Ljava/lang/Object;)V"); if (!mid) return; if ((options_hash != NULL) && (options_hash->type != RHO_PARAM_HASH)) { RAWLOG_ERROR("Unexpected parameter type, should be Hash"); return; } jobject paramsObj = NULL; if (options_hash != NULL) { paramsObj = RhoValueConverter(env).createObject(options_hash); } env->CallStaticVoidMethod(cls, mid, rho_cast<jhstring>(callback_url).get(), paramsObj); if (options_hash != NULL) { env->DeleteLocalRef(paramsObj); } }
RHO_GLOBAL void rho_signature_take(char* callback_url, rho_param* p) { JNIEnv *env = jnienv(); jclass cls = getJNIClass(RHODES_JAVA_CLASS_SIGNATURE); if (!cls) return; jmethodID mid = getJNIClassStaticMethod(env, cls, "takeSignature", "(Ljava/lang/String;Ljava/lang/Object;)V"); if (!mid) return; jhstring objCallback = rho_cast<jhstring>(callback_url); /* char* image_format = 0; if (p) { rho_param* pFF = rho_param_hash_get(p, "imageFormat"); if ( pFF ) image_format = pFF->v.string; } if (!image_format) image_format = ""; jhstring objFormat = rho_cast<jhstring>(image_format); env->CallStaticVoidMethod(cls, mid, objCallback.get(), objFormat.get()); */ jobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(cls, mid, objCallback.get(), paramsObj); env->DeleteLocalRef(paramsObj); }
RHO_GLOBAL void create_navbar(rho_param *p) { JNIEnv *env = jnienv(); jclass cls = getJNIClass(RHODES_JAVA_CLASS_NAVBAR); if (!cls) return; jmethodID mid = getJNIClassStaticMethod(env, cls, "create", "(Ljava/util/Map;)V"); if (!mid) return; jhobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(cls, mid, paramsObj.get()); }
RHO_GLOBAL void rho_signature_visible(bool b, rho_param* p) { JNIEnv *env = jnienv(); jclass cls = getJNIClass(RHODES_JAVA_CLASS_SIGNATURE); if (!cls) return; jmethodID mid = getJNIClassStaticMethod(env, cls, "inline_signature_visible", "(ILjava/lang/Object;)V"); if (!mid) return; int visible = 0; if (b) visible = 1; jobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(cls, mid, visible, paramsObj); env->DeleteLocalRef(paramsObj); }
RHO_GLOBAL void google_mapview_create(rho_param *p) { JNIEnv *env = jnienv(); static jclass clsMapView = rho_find_class(env, GMAP_FACADE_CLASS); if (!clsMapView) return; jmethodID midCreate = getJNIClassStaticMethod(env, clsMapView, "create", "(Ljava/util/Map;)V"); if (!midCreate) return; if (p->type != RHO_PARAM_HASH) { RAWLOG_ERROR("create: wrong input parameter (expect Hash)"); return; } jhobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(clsMapView, midCreate, paramsObj.get()); }
RHO_GLOBAL void alert_show_popup(rho_param *p) { JNIEnv *env = jnienv(); jclass cls = getJNIClass(RHODES_JAVA_CLASS_ALERT); if (!cls) return; jmethodID mid = getJNIClassStaticMethod(env, cls, "showPopup", "(Ljava/lang/Object;)V"); if (!mid) return; if (p->type != RHO_PARAM_STRING && p->type != RHO_PARAM_HASH) { RAWLOG_ERROR("show_popup: wrong input parameter (expect String or Hash)"); return; } jobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(cls, mid, paramsObj); env->DeleteLocalRef(paramsObj); }
RHO_GLOBAL void create_nativebar(int bar_type, rho_param *p) { JNIEnv *env = jnienv(); jclass clsNativeBar = getJNIClass(RHODES_JAVA_CLASS_NATIVEBAR); if (!clsNativeBar) return; jmethodID midCreate = getJNIClassStaticMethod(env, clsNativeBar, "create", "(ILjava/util/Vector;)V"); if (!midCreate) return; if (p->type != RHO_PARAM_ARRAY) { RAWLOG_ERROR("Unexpected parameter type, should be Array"); return; } jobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(clsNativeBar, midCreate, bar_type, paramsObj); env->DeleteLocalRef(paramsObj); }
//#if 0 RHO_GLOBAL void google_mapview_create(rho_param *p) { #ifdef RHO_GOOGLE_API_KEY JNIEnv *env = jnienv(); jclass clsMapView = getJNIClass(RHODES_JAVA_CLASS_GOOGLEMAPVIEW); if (!clsMapView) return; jmethodID midCreate = getJNIClassStaticMethod(env, clsMapView, "create", "(Ljava/lang/String;Ljava/util/Map;)V"); if (!midCreate) return; if (p->type != RHO_PARAM_HASH) { RAWLOG_ERROR("create: wrong input parameter (expect Hash)"); return; } jhobject paramsObj = jhobject(RhoValueConverter(env).createObject(p)); jhstring keyObj = rho_cast<jhstring>(RHO_GOOGLE_API_KEY); env->CallStaticVoidMethod(clsMapView, midCreate, keyObj.get(), paramsObj.get()); #else RAWLOG_ERROR("MapView disabled at build time"); #endif }
RHO_GLOBAL void create_nativebar(int bar_type, rho_param *p) { JNIEnv *env = jnienv(); jclass clsNativeBar = getJNIClass(RHODES_JAVA_CLASS_NATIVEBAR); if (!clsNativeBar) return; jmethodID midCreate = getJNIClassStaticMethod(env, clsNativeBar, "create", "(ILjava/lang/Object;)V"); if (!midCreate) return; if (p->type != RHO_PARAM_ARRAY && p->type != RHO_PARAM_HASH) { RAWLOG_ERROR("Unexpected parameter type, should be Array or Hash"); return; } // check for iPad SplitTabBar type -> redirect to TabBar if (bar_type == 3) { bar_type = 1; } jobject paramsObj = RhoValueConverter(env).createObject(p); env->CallStaticVoidMethod(clsNativeBar, midCreate, bar_type, paramsObj); env->DeleteLocalRef(paramsObj); }