rho_param *rho_param_dup(rho_param *p) { int i, lim; rho_param *ret = NULL; if (!p) return NULL; switch (p->type) { case RHO_PARAM_STRING: ret = rho_param_str(p->v.string); break; case RHO_PARAM_ARRAY: ret = rho_param_array(p->v.array->size); for (i = 0, lim = p->v.array->size; i < lim; ++i) ret->v.array->value[i] = rho_param_dup(p->v.array->value[i]); break; case RHO_PARAM_HASH: ret = rho_param_hash(p->v.hash->size); for (i = 0, lim = p->v.hash->size; i < lim; ++i) { ret->v.hash->name[i] = strdup(p->v.hash->name[i]); ret->v.hash->value[i] = rho_param_dup(p->v.hash->value[i]); } break; } return ret; }
extern "C" void mapview_create(rho_param *p) { RHO_MAP_TRACE("MapView create executed"); RhoMapViewOpenViewCommand* command = new RhoMapViewOpenViewCommand(); ourMapViewDlg.mParams = rho_param_dup(p); RhoNativeViewUtil::executeInUIThread_WM(command); }
AndroidMapDevice::AndroidMapDevice(rho_param *p) :m_params(rho_param_dup(p)), m_mapview(NULL), m_jdevice(NULL) { RHO_MAP_TRACE("AndroidMapDevice: ctor start"); JNIEnv *env = jnienv(); jclass cls = getJNIClass(RHODES_JAVA_CLASS_MAPVIEW); if (!cls) return; jmethodID mid = getJNIClassStaticMethod(env, cls, "create", "(J)V"); if (!mid) return; env->CallStaticVoidMethod(cls, mid, (jlong)this); RHO_MAP_TRACE("AndroidMapDevice: ctor finish"); }