/*
* Copyright (c) 2008 Jiri Benc <jbenc@upir.cz>
+ * Copyright (c) 2009 Roman Moravcik <roman.moravcik@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
#include <glib.h>
#include <gtk/gtk.h>
#include <hildon/hildon-caption.h>
+#include <hildon/hildon.h>
#include <libosso.h>
#include <gconf/gconf.h>
#include <gconf/gconf-client.h>
-
-#ifdef HAVE_MAEMO5
-#define GETTEXT_PACKAGE "osso-applet-textinput"
-
-#include <hildon/hildon.h>
-#include <glib/gi18n-lib.h>
-#endif
-
#include "prefs.h"
#include "lang.h"
#include "langset.h"
+#define GETTEXT_PACKAGE "osso-applet-textinput"
+#include <glib/gi18n-lib.h>
+
#define L_CONF_DIR "/apps/osso/inputmethod/hildon-im-languages"
-#ifdef HAVE_MAEMO5
gboolean get_l_bool(GConfClient *client, char *lang, char *key)
-#else
-static gboolean get_l_bool(GConfClient *client, char *lang, char *key)
-#endif
{
char *tmp = g_strjoin("/", L_CONF_DIR, lang, key, NULL);
gboolean res;
return res;
}
-#ifdef HAVE_MAEMO5
void set_l_bool(GConfClient *client, char *lang, char *key, gboolean val)
-#else
-static void set_l_bool(GConfClient *client, char *lang, char *key, gboolean val)
-#endif
{
char *tmp = g_strjoin("/", L_CONF_DIR, lang, key, NULL);
g_free(tmp);
}
-#ifdef HAVE_MAEMO5
gchar *get_l_str(GConfClient *client, char *lang, char *key)
-#else
-static gchar *get_l_str(GConfClient *client, char *lang, char *key)
-#endif
{
char *tmp = g_strjoin("/", L_CONF_DIR, lang, key, NULL);
GConfValue *val;
return res;
}
-#ifdef HAVE_MAEMO5
void set_l_str(GConfClient *client, char *lang, char *key, gchar *val)
-#else
-static void set_l_str(GConfClient *client, char *lang, char *key, gchar *val)
-#endif
{
char *tmp = g_strjoin("/", L_CONF_DIR, lang, key, NULL);
g_free(tmp);
}
-#ifdef HAVE_MAEMO5
void fill_dict(HildonTouchSelector *combo, GList *langs, gchar *deflang)
{
GList *item;
if (!deflang || !*deflang)
hildon_touch_selector_set_active(combo, 0, i);
}
-#else
-static void fill_dict(GtkComboBox *combo, GList *langs, gchar *deflang)
-{
- GList *item;
- struct lang *lang;
- unsigned i;
-
- for (item = langs, i = 0; item; item = g_list_next(item)) {
- lang = item->data;
- if (lang->ext)
- continue;
- gtk_combo_box_append_text(combo, lang->desc);
- if (deflang && !strcmp(lang->code, deflang))
- gtk_combo_box_set_active(combo, i);
- i++;
- }
- gtk_combo_box_append_text(combo, "Custom/Empty");
- if (!deflang || !*deflang)
- gtk_combo_box_set_active(combo, i);
-}
-
-void lang_settings(GConfClient *client, GtkWidget *win, GList *langs, int n)
-{
- GtkDialog *dialog;
- GtkBox *vbox;
- GtkSizeGroup *group;
- GtkToggleButton *auto_cap, *word_compl, *word_pred, *sp_after;
- GtkComboBox *dict;
- struct lang *lang;
- gchar *code, *tmp;
- int res;
-
- if (n < 0)
- return;
- lang = g_list_nth_data(langs, n);
- if (!lang)
- return;
- code = lang->code;
-
- dialog = GTK_DIALOG(gtk_dialog_new());
- gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(win));
- tmp = g_strconcat("On-screen text input: ", lang->desc, NULL);
- gtk_window_set_title(GTK_WINDOW(dialog), tmp);
- g_free(tmp);
- gtk_dialog_set_has_separator(dialog, FALSE);
- gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-
- gtk_dialog_add_action_widget(dialog, gtk_button_new_with_label("OK"), GTK_RESPONSE_ACCEPT);
- gtk_dialog_add_action_widget(dialog, gtk_button_new_with_label("Cancel"), GTK_RESPONSE_REJECT);
-
- vbox = GTK_BOX(gtk_vbox_new(FALSE, 0));
- group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
- auto_cap = GTK_TOGGLE_BUTTON(gtk_check_button_new());
- gtk_toggle_button_set_active(auto_cap, get_l_bool(client, code, "auto-capitalisation"));
- gtk_box_pack_start_defaults(vbox, hildon_caption_new(group, "Auto-capitalisation",
- GTK_WIDGET(auto_cap), NULL, HILDON_CAPTION_MANDATORY));
-
- word_compl = GTK_TOGGLE_BUTTON(gtk_check_button_new());
- gtk_toggle_button_set_active(word_compl, get_l_bool(client, code, "word-completion"));
- gtk_box_pack_start_defaults(vbox, hildon_caption_new(group, "Word completion",
- GTK_WIDGET(word_compl), NULL, HILDON_CAPTION_MANDATORY));
-
- word_pred = GTK_TOGGLE_BUTTON(gtk_check_button_new());
- gtk_toggle_button_set_active(word_pred, get_l_bool(client, code, "next-word-prediction"));
- gtk_box_pack_start_defaults(vbox, hildon_caption_new(group, "Next word prediction",
- GTK_WIDGET(word_pred), NULL, HILDON_CAPTION_MANDATORY));
-
- sp_after = GTK_TOGGLE_BUTTON(gtk_check_button_new());
- gtk_toggle_button_set_active(sp_after, get_l_bool(client, code, "insert-space-after-word"));
- gtk_box_pack_start_defaults(vbox, hildon_caption_new(group, "Insert space after word",
- GTK_WIDGET(sp_after), NULL, HILDON_CAPTION_MANDATORY));
-
- dict = GTK_COMBO_BOX(gtk_combo_box_new_text());
- tmp = get_l_str(client, code, "dictionary");
- /* If tmp is NULL (i.e. the gconf key is unset), try to use the same
- * dictionary as the keyboard. But don't do this if the keyboard is
- * from our package. */
- fill_dict(dict, langs, (tmp || lang->ext) ? tmp : code);
- if (tmp)
- g_free(tmp);
- gtk_box_pack_start_defaults(vbox, hildon_caption_new(group, "Dictionary",
- GTK_WIDGET(dict), NULL, HILDON_CAPTION_MANDATORY));
-
- g_object_unref(G_OBJECT(group));
-
- gtk_container_add(GTK_CONTAINER(dialog->vbox), GTK_WIDGET(vbox));
- gtk_widget_show_all(GTK_WIDGET(dialog));
- res = gtk_dialog_run(dialog);
- if (res == GTK_RESPONSE_ACCEPT) {
- set_l_bool(client, code, "auto-capitalisation", gtk_toggle_button_get_active(auto_cap));
- set_l_bool(client, code, "word-completion", gtk_toggle_button_get_active(word_compl));
- set_l_bool(client, code, "next-word-prediction", gtk_toggle_button_get_active(word_pred));
- set_l_bool(client, code, "insert-space-after-word", gtk_toggle_button_get_active(sp_after));
- res = gtk_combo_box_get_active(dict);
- if (res >= 0) {
- lang = g_list_nth_data(langs, res);
- tmp = (lang && !lang->ext) ? lang->code : "";
- set_l_str(client, code, "dictionary", tmp);
- }
- }
- gtk_widget_destroy(GTK_WIDGET(dialog));
-}
-#endif