Exemplo n.º 1
0
void InputContext::review_im(const char *engine)
{
    char *locale, *prev_engine;
    const char *client_locale, *engine_locales;
    const char *encoding;

    prev_engine = mEngineName;
    mEngineName = strdup(engine);
    encoding = mXic->get_encoding();
    client_locale = mXic->get_lang_region();
    engine_locales = compose_localenames_from_im_lang(get_im_lang_from_engine(engine));

    if (!strcmp(encoding, "UTF-8")) {
	if (is_locale_included(engine_locales, client_locale))
	    locale = strdup(client_locale);
	else
	    locale = get_prefered_locale(engine_locales);
	locale = (char *)realloc(locale, strlen(locale) + strlen(".UTF-8") + 1);
	strcat(locale, ".UTF-8");
	setlocale(LC_CTYPE, locale);
	free(mLocaleName);
	mLocaleName = locale;
    } else {
	if (!is_locale_included(engine_locales, client_locale)) {
	    clear();
	    uim_switch_im(mUc, prev_engine);
	    free(mEngineName);
	    mEngineName = strdup(prev_engine);
	}
    }
    free(prev_engine);
}
Exemplo n.º 2
0
static void
update_context_im(uim_agent_context *ua)
{
  debug_printf(DEBUG_NOTE, "update_context_im\n");

  uim_switch_im(ua->context, ua->im);

  if (ua->im && strcmp(ua->im, uim_get_current_im_name(ua->context)) != 0) {
	debug_printf(DEBUG_ERROR,
				 "update_context_im: failed to switch IM to %s\n", ua->im);
	free(ua->im);
	ua->im = strdup(uim_get_current_im_name(ua->context));
  }
}
Exemplo n.º 3
0
void QUimInputContext::switch_app_global_im( const char *name )
{
    QUimInputContext *cc;
    QString im_name_sym;

    im_name_sym.sprintf( "'%s", name);

    for ( cc = contextList.first(); cc; cc = contextList.next() )
    {
        if (cc != this) {
            uim_switch_im( cc->uimContext(), name );
            cc->readIMConf();
        }
    }
    uim_prop_update_custom(this->uimContext(), "custom-preserved-default-im-name", ( const char* ) im_name_sym );
}