const char * get_imlist(const char *args) { int i, nr; uim_context uc; if (!vp_iobuf_get_args(iobuf, args, "")) return vp_iobuf_return(iobuf); uc = uim_create_context(NULL, "UTF-8", NULL, NULL, NULL, NULL); if (uc == NULL) return "uim_create_context error"; /* [method, langs, desc, is_default] */ nr = uim_get_nr_im(uc); for (i = 0; i < nr; ++i) { vp_iobuf_put_str(iobuf, uim_get_im_name(uc, i)); vp_iobuf_put_str(iobuf, uim_get_im_language(uc, i)); vp_iobuf_put_str(iobuf, uim_get_im_short_desc(uc, i)); vp_iobuf_put_num(iobuf, (strcmp(uim_get_im_name(uc, i), uim_get_default_im_name("")) == 0)); } uim_release_context(uc); return vp_iobuf_return(iobuf); }
void QUimInfoManager::initUimInfo() { info.clear(); uim_context tmp_uc = uim_create_context( 0, "UTF-8", 0, 0, 0, 0 ); struct uimInfo ui; int nr = uim_get_nr_im( tmp_uc ); for ( int i = 0; i < nr; i++ ) { ui.name = uim_get_im_name( tmp_uc, i ); ui.lang = uim_get_im_language (tmp_uc, i ); ui.short_desc = uim_get_im_short_desc( tmp_uc, i ); info.append( ui ); } uim_release_context( tmp_uc ); }
static void get_uim_info() { int res; res = uim_init(); if (res) { printf("Failed to init uim\n"); exit(1); } uim_context uc = uim_create_context(NULL, "UTF-8", NULL, NULL, uim_iconv, NULL); struct UIMInfo ui; int nr = uim_get_nr_im(uc); for (int i = 0; i < nr; i++) { ui.name = strdup(uim_get_im_name(uc, i)); ui.lang = strdup(uim_get_im_language(uc, i)); ui.desc = strdup(uim_get_im_short_desc(uc, i)); uim_info.push_back(ui); } uim_release_context(uc); }