This commit was manufactured by cvs2svn to create branch 'decode'.
[gnokii.git] / xgnokii / xgnokii.c
diff --git a/xgnokii/xgnokii.c b/xgnokii/xgnokii.c
deleted file mode 100644 (file)
index 233ebd6..0000000
+++ /dev/null
@@ -1,2481 +0,0 @@
-/*
-
-  X G N O K I I
-
-  A Linux/Unix GUI for Nokia mobile phones.
-
-  Released under the terms of the GNU GPL, see file COPYING for more details.
-
-*/
-
-#include <stdlib.h>  /* for getenv */
-#include <locale.h>
-#include <string.h>
-#include <time.h>    /* for time   */
-#include <pthread.h>
-
-#ifndef WIN32
-# include <unistd.h>  /* for usleep */
-# include <signal.h>
-#else
-# include <windows.h>
-# include "../win32/winserial.h"
-# define WRITEPHONE(a, b, c) WriteCommBlock(b, c)
-# undef IN
-# undef OUT
-# define sleep(x) Sleep((x) * 1000)
-# define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000))
-#endif
-
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include "misc.h"
-#include "gsm-common.h"
-#include "gsm-api.h"
-#include "files/cfgreader.h"
-#include "xgnokii.h"
-#include "xgnokii_common.h"
-#include "xgnokii_lowlevel.h"
-#include "xgnokii_contacts.h"
-#include "xgnokii_sms.h"
-#include "xgnokii_netmon.h"
-#include "xgnokii_dtmf.h"
-#include "xgnokii_speed.h"
-#include "xgnokii_xkeyb.h"
-#include "xgnokii_calendar.h"
-#include "xgnokii_logos.h"
-#include "xgnokii_xring.h"
-#include "xgnokii_cfg.h"
-#include "xgnokii_data.h"
-#include "newmodules/n6110.h"
-
-#include "xpm/logo.xpm"
-#include "xpm/background.xpm"
-#include "xpm/sms.xpm"
-#include "xpm/alarm.xpm"
-
-/* Widgets for dialogs. */
-static GtkWidget *SplashWindow;
-static GtkWidget *GUI_MainWindow;
-static GtkWidget *AboutDialog;
-static ErrorDialog errorDialog = {NULL, NULL};
-static InfoDialog infoDialog = {NULL, NULL};
-static GtkWidget *OptionsDialog;
-static bool optionsDialogIsOpened;
-
-/* SMS sets list */
-static GtkWidget *SMSClist;
-
-/* Pixmap used for drawing all the stuff. */
-static GdkPixmap *Pixmap = NULL;
-
-/* Pixmap used for background. */
-static GdkPixmap *BackgroundPixmap = NULL;
-
-/* Pixmap used for SMS picture. */
-static GdkPixmap *SMSPixmap = NULL;
-
-/* Pixmap used for alarm picture. */
-static GdkPixmap *AlarmPixmap = NULL;
-
-
-/* Widget for popup menu */
-static GtkWidget *Menu;
-static GtkWidget *netmon_menu_item;
-static GtkWidget *sms_menu_item;
-static GtkWidget *calendar_menu_item;
-static GtkWidget *logos_menu_item;
-static GtkWidget *dtmf_menu_item;
-static GtkWidget *speedDial_menu_item;
-static GtkWidget *xkeyb_menu_item;
-static GtkWidget *cg_names_option_frame;
-static GtkWidget *sms_option_frame;
-static GtkWidget *mail_option_frame;
-static GtkWidget *user_option_frame;
-static GtkWidget *data_menu_item;
-
-/* Hold main configuration data for xgnokii */
-XgnokiiConfig xgnokiiConfig;
-
-gint max_phonebook_name_length; 
-gint max_phonebook_number_length;
-gint max_phonebook_sim_name_length;
-gint max_phonebook_sim_number_length;
-
-/* Local variables */
-static char *DefaultXGnokiiDir = XGNOKIIDIR;
-static char *DefaultXGnokiiDocsDir = XGNOKIIDOCSDIR;
-static bool SMSSettingsInitialized = FALSE;
-static bool CallersGroupsInitialized = FALSE;
-static bool SMSFoldersInitialized = FALSE;
-static gint hiddenCallDialog;
-static guint splashRemoveHandler;
-
-GSM_SMSFolders folders;
-
-static struct CallDialog {
-  GtkWidget *dialog;
-  GtkWidget *label;
-} inCallDialog;
-
-typedef struct {
-  GtkWidget *alarmSwitch;
-  GtkWidget *alarmHour;
-  GtkWidget *alarmMin;
-} AlarmWidgets;
-
-typedef struct {
-  GtkWidget *port;
-  GtkWidget *model;
-  GtkWidget *init;
-  GtkWidget *bindir;
-  GtkWidget *serial, *infrared, *mbus;
-} ConnectionWidgets;
-
-typedef struct {
-  GtkWidget *model;
-  GtkWidget *version;
-  GtkWidget *revision;
-  GtkWidget *imei;
-  GtkWidget *simNameLen;
-  GtkWidget *phoneNameLen;
-} PhoneWidgets;
-
-typedef struct {
-  GtkWidget *set;
-  GtkWidget *number;
-  GtkWidget *defaultrecipient;
-  GtkWidget *format;
-  GtkWidget *validity;
-  GSM_MessageCenter smsSetting[MAX_SMS_CENTER];
-} SMSWidgets;
-
-typedef struct {
-  GtkWidget *name;
-  GtkWidget *title;
-  GtkWidget *company;
-  GtkWidget *telephone;
-  GtkWidget *fax;
-  GtkWidget *email;
-  GtkWidget *address;
-  GtkWidget *status;
-  gint   max;
-  gint   used;
-} UserWidget;
-
-static struct ConfigDialogData
-{
-  ConnectionWidgets connection;
-  PhoneWidgets phone;
-  GtkWidget *groups[6];
-  AlarmWidgets alarm;
-  SMSWidgets sms;
-  UserWidget user;
-  GtkWidget *mailbox;
-  GtkWidget *help;
-} configDialogData;
-
-static GSM_MessageCenter tempMessageSettings;
-
-
-static inline void Help1 (GtkWidget *w, gpointer data)
-{
-  gchar *indx = g_strdup_printf ("/%s/gnokii/xgnokii/main/index.htm", xgnokiiConfig.locale);
-  Help (w, indx);
-  g_free (indx);
-}
-
-void GUI_InitSMSFoldersInf (void)
-{
-  if (SMSFoldersInitialized)
-    return;
-
-  GSM->GetSMSFolders(&folders);
-  
-  SMSFoldersInitialized = TRUE;
-  GUIEventSend (GUI_EVENT_SMS_FOLDERS_CHANGED);
-}
-
-void GUI_InitCallerGroupsInf (void)
-{
-  D_CallerGroup *cg;
-  PhoneEvent *e;
-  register gint i;
-
-  if (CallersGroupsInitialized)
-    return;
-
-  gtk_label_set_text (GTK_LABEL (infoDialog.text), _("Reading caller groups names ..."));
-  gtk_widget_show_now (infoDialog.dialog);
-  GUI_Refresh ();
-
-  xgnokiiConfig.callerGroups[0] = g_strndup( _("Familly"), MAX_CALLER_GROUP_LENGTH);
-  xgnokiiConfig.callerGroups[1] = g_strndup( _("VIP"), MAX_CALLER_GROUP_LENGTH);
-  xgnokiiConfig.callerGroups[2] = g_strndup( _("Friends"), MAX_CALLER_GROUP_LENGTH);
-  xgnokiiConfig.callerGroups[3] = g_strndup( _("Colleagues"), MAX_CALLER_GROUP_LENGTH);
-  xgnokiiConfig.callerGroups[4] = g_strndup( _("Other"), MAX_CALLER_GROUP_LENGTH);
-  xgnokiiConfig.callerGroups[5] = g_strndup( _("No group"), MAX_CALLER_GROUP_LENGTH);
-
-  if (GetModelFeature(FN_CALLERGROUPS)!=0)
-    for (i = 0; i < 5; i++)
-    {
-      cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
-      cg->number = i;
-      e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-      e->event = Event_GetCallerGroup;
-      e->data = cg;
-      GUI_InsertEvent (e);
-      pthread_mutex_lock (&callerGroupMutex);
-      pthread_cond_wait (&callerGroupCond, &callerGroupMutex);
-      pthread_mutex_unlock (&callerGroupMutex);
-
-      if (*cg->text != '\0' && cg->status == GE_NONE)
-      {
-        g_free (xgnokiiConfig.callerGroups[i]);
-        xgnokiiConfig.callerGroups[i] = g_strndup (cg->text, MAX_CALLER_GROUP_LENGTH);
-      }
-      g_free (cg);
-    }
-
-  CallersGroupsInitialized = TRUE;
-  gtk_widget_hide (infoDialog.dialog);
-  GUIEventSend (GUI_EVENT_CALLERS_GROUPS_CHANGED);
-}
-
-
-static inline void DrawBackground (GtkWidget *data)
-{
-  gdk_draw_pixmap (Pixmap,
-                  GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
-                  BackgroundPixmap,
-                  0, 0,
-                  0, 0,
-                  261, 96);
-}
-
-int network_levels[] = {
-  152, 69, 11, 3,
-  138, 69, 11, 3,
-  124, 69, 11, 4,
-  110, 69, 11, 6
-};
-
-
-static inline void DrawNetwork (GtkWidget *data, int rflevel)
-{
-  int i;
-
-  if (rflevel > 100)
-    rflevel = 100;
-  for (i = 0; (i * 25) <= rflevel; i++)
-  {
-    float percent = ((float) rflevel - i * 25) / 25;
-    
-    if (percent > 1)
-      percent = 1;
-    gdk_draw_rectangle (Pixmap, GTK_WIDGET (data)->style->white_gc, TRUE,
-                        network_levels[4 * i] + network_levels[4 * i + 2] * (1 - percent),
-                        network_levels[4 * i + 1],
-                        network_levels[4 * i + 2] * percent,
-                        network_levels[4 * i + 3]);
-  }
-}
-
-
-int battery_levels[] = {
-  50, 69, 11, 3,
-  64, 69, 11, 3,
-  78, 69, 11, 4,
-  92, 69, 11, 6
-};
-
-static inline void DrawBattery (GtkWidget *data, int batterylevel)
-{
-  int i;
-
-  if (batterylevel < 0)
-    return;
-  if (batterylevel > 100)
-    batterylevel = 100;
-  for (i = 0; (i * 25) <= batterylevel; i++)
-  {
-    float percent = ((float) batterylevel - i * 25) / 25;
-    if (percent > 1)
-      percent = 1;
-    gdk_draw_rectangle (Pixmap, GTK_WIDGET (data)->style->white_gc, TRUE,
-                        battery_levels[4 * i],
-                        battery_levels[4 * i + 1],
-                        battery_levels[4 * i + 2] * percent,
-                        battery_levels[4 * i + 3]);
-  }
-}
-
-static inline void DrawSMS (GtkWidget *data)
-{
-  gdk_draw_pixmap (Pixmap,
-                  GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
-                  SMSPixmap,
-                  0, 0,
-                  25, 47,
-                  26, 7);
-}
-
-
-static inline void DrawAlarm (GtkWidget *data)
-{
-  gdk_draw_pixmap (Pixmap,
-                  GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
-                  AlarmPixmap,
-                  0, 0,
-                  163, 11,
-                  9, 9);
-}
-
-static inline void DrawText (GtkWidget *data, int at, char *text)
-{
-  static GdkFont *Font;
-
-  Font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-90-*-*-*-*-*-*");
-  gdk_draw_string (Pixmap,
-                  Font,
-                  GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
-                   33, at, text);
-}
-
-
-static inline void DrawSMSReceived (GtkWidget *data)
-{
-  DrawText (data, 25, _("Short Message received"));
-}
-
-
-static inline void DrawWorking (GtkWidget *data)
-{
-  DrawText(data, 40, _("Working ..."));
-}
-
-
-static inline void HideCallDialog (GtkWidget *widget, gpointer data)
-{
-  hiddenCallDialog = 1;
-  gtk_widget_hide (GTK_WIDGET (data));
-}
-
-
-static void CreateInCallDialog (void)
-{
-  GtkWidget *button, *hbox;
-
-  inCallDialog.dialog = gtk_dialog_new ();
-  gtk_window_position (GTK_WINDOW (inCallDialog.dialog), GTK_WIN_POS_MOUSE);
-  gtk_window_set_title (GTK_WINDOW (inCallDialog.dialog), _("Call in progress"));
-  gtk_container_set_border_width (GTK_CONTAINER (inCallDialog.dialog), 5);
-  gtk_signal_connect (GTK_OBJECT (inCallDialog.dialog), "delete_event",
-                      GTK_SIGNAL_FUNC (DeleteEvent), NULL);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inCallDialog.dialog)->vbox), hbox, FALSE, FALSE, 5);
-  gtk_widget_show (hbox);
-
-  inCallDialog.label = gtk_label_new ("");
-  gtk_box_pack_start (GTK_BOX (hbox), inCallDialog.label, FALSE, FALSE, 0);
-  gtk_widget_show (inCallDialog.label);
-
-  button = gtk_button_new_with_label (_("Hide"));
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inCallDialog.dialog)->action_area),
-                      button, TRUE, FALSE, 0);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                      GTK_SIGNAL_FUNC (HideCallDialog), (gpointer) inCallDialog.dialog);
-  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-  gtk_widget_grab_default (button);
-  gtk_widget_show (button);
-}
-
-
-static gint Update (gpointer data)
-{
-  static gchar lastCallNum[20] = "";
-  static gchar callBuf[80];
-  static gchar timeBuf[10];
-  static gchar *anonym = "anonymous";
-  static struct tm stm;
-  static gint smsNumber = 0;
-  static gint callTimerStart = 0;
-  gint callTimer = 0;
-  time_t t;
-  static gchar *name;
-  static bool outgoing = TRUE;
-
-
-  /* The number of SMS messages before second */
-  static int smsold=0;
-
-  /* The number of second for we should display "Short Message Received" message */
-  static int smsreceived=-1;
-
-  DrawBackground (data);
-
-  DrawNetwork(data, phoneMonitor.rfLevel);
-
-  DrawBattery(data, phoneMonitor.batteryLevel);
-
-  if (phoneMonitor.alarm)
-    DrawAlarm (data);
-
-  if (phoneMonitor.working)
-    DrawText (data, 25, phoneMonitor.working);
-
-  pthread_mutex_lock (&smsMutex);
-  if (phoneMonitor.sms.unRead > 0)
-  {
-    DrawSMS (data);
-
-    if (phoneMonitor.sms.unRead > smsold && smsold != -1)
-      smsreceived = 10;  /* The message "Short Message Received" is displayed for 10s */
-  }
-  if (smsNumber != phoneMonitor.sms.number)
-    GUIEventSend (GUI_EVENT_SMS_NUMBER_CHANGED);
-
-  smsold = phoneMonitor.sms.unRead;
-
-  smsNumber = phoneMonitor.sms.number;
-
-  pthread_mutex_unlock (&smsMutex);
-
-  if (smsreceived >= 0)
-  {
-    DrawSMSReceived (data);
-    smsreceived--;
-  }
-
-  pthread_mutex_lock (&callMutex);
-  if (phoneMonitor.call.callInProgress != CS_Idle)
-  {
-    if (phoneMonitor.call.callInProgress == CS_InProgress)
-    {
-      if (!callTimerStart)
-        callTimerStart = callTimer = time (NULL);
-      else
-        callTimer = time (NULL);
-    }
-
-    if (phoneMonitor.call.callInProgress == CS_Waiting)
-    {
-      outgoing = FALSE;
-
-      if (*phoneMonitor.call.callNum == '\0')
-        name = anonym;
-      else if (strncmp (phoneMonitor.call.callNum, lastCallNum, 20))
-      {
-        strncpy (lastCallNum, phoneMonitor.call.callNum, 20);
-        lastCallNum[19] = '\0';
-        name = GUI_GetName (phoneMonitor.call.callNum);
-        if (!name)
-          name = phoneMonitor.call.callNum;
-      }
-    }
-    t = (time_t) difftime (callTimer, callTimerStart);
-    (void) gmtime_r (&t, &stm);
-    strftime (timeBuf, 10, "%T", &stm);
-    if (outgoing)
-      g_snprintf (callBuf, 80, _("Outgoing call in progress:\nTime: %s"),
-                  timeBuf);
-    else
-      g_snprintf (callBuf, 80, _("Incomming call from: %s\nTime: %s"),
-                  name, timeBuf);
-
-    gtk_label_set_text (GTK_LABEL (inCallDialog.label), callBuf);
-    if (!GTK_WIDGET_VISIBLE (inCallDialog.dialog) && !hiddenCallDialog)
-      gtk_widget_show (inCallDialog.dialog);
-  }
-  else
-  {
-    callTimerStart = callTimer = 0;
-    *lastCallNum = '\0';
-    outgoing = TRUE;
-    if (GTK_WIDGET_VISIBLE (inCallDialog.dialog))
-      gtk_widget_hide (inCallDialog.dialog);
-    hiddenCallDialog = 0;
-  }
-  pthread_mutex_unlock (&callMutex);
-
-  gtk_widget_draw (data,NULL);
-
-  GUIEventSend (GUI_EVENT_NETMON_CHANGED);
-
-  return TRUE;
-}
-
-
-/* Redraw the screen from the backing pixmap */
-static inline gint ExposeEvent (GtkWidget *widget, GdkEventExpose *event)
-{
-  gdk_draw_pixmap (widget->window,
-                  widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
-                  Pixmap,
-                  event->area.x, event->area.y,
-                  event->area.x, event->area.y,
-                  event->area.width, event->area.height);
-
-  return FALSE;
-}
-
-
-static void ParseSMSCenters (void)
-{
-  register gint i;
-  register gint j;
-
-  gtk_clist_freeze (GTK_CLIST (SMSClist));
-
-  gtk_clist_clear (GTK_CLIST (SMSClist));
-
-  for (i = 0; i < xgnokiiConfig.smsSets; i++)
-  {
-    gchar *row[5];
-    if (*(configDialogData.sms.smsSetting[i].Name) == '\0')
-      row[0] = g_strdup_printf (_("Set %d"), i + 1);
-    else
-      row[0] = g_strdup (configDialogData.sms.smsSetting[i].Name);
-
-    row[1] = g_strdup (configDialogData.sms.smsSetting[i].Number);
-
-    switch (configDialogData.sms.smsSetting[i].Format)
-    {
-      case GSMF_Text:
-        row[2] = g_strdup (_("Text"));
-        break;
-
-    case GSMF_Paging:
-        row[2] = g_strdup (_("Paging"));
-        break;
-
-    case GSMF_Fax:
-        row[2] = g_strdup (_("Fax"));
-        break;
-
-    case GSMF_Email:
-    case GSMF_UCI:
-        row[2] = g_strdup (_("E-Mail"));
-        break;
-
-    case GSMF_ERMES:
-        row[2] = g_strdup (_("ERMES"));
-        break;
-
-    case GSMF_X400:
-        row[2] = g_strdup (_("X.400"));
-        break;
-
-    case GSMF_Voice:
-        row[2] = g_strdup (_("Voice"));
-        break;
-
-    default:
-        row[2] = g_strdup (_("Text"));
-        break;
-    }
-
-    switch (configDialogData.sms.smsSetting[i].Validity)
-    {
-      case GSMV_1_Hour:
-        row[3] = g_strdup (_("1 h"));
-        break;
-
-      case GSMV_6_Hours:
-        row[3] = g_strdup (_("6 h"));
-        break;
-
-      case GSMV_24_Hours:
-        row[3] = g_strdup (_("24 h"));
-        break;
-
-      case GSMV_72_Hours:
-        row[3] = g_strdup (_("72 h"));
-        break;
-
-      case GSMV_1_Week:
-        row[3] = g_strdup (_("1 week"));
-        break;
-
-      case GSMV_Max_Time:
-        row[3] = g_strdup (_("Max. time"));
-        break;
-
-      default:
-        row[3] = g_strdup (_("24 h"));
-        break;
-    }
-
-    row[4] = g_strdup (configDialogData.sms.smsSetting[i].DefaultRecipient);
-    
-    gtk_clist_append( GTK_CLIST (SMSClist), row); 
-
-    for (j = 0; j < 5; j++)
-      g_free (row[j]);
-  }
-
-  gtk_clist_thaw (GTK_CLIST (SMSClist));
-}
-
-
-static void RefreshUserStatus (void)
-{
-  gchar buf[8];
-  configDialogData.user.used = GTK_ENTRY (configDialogData.user.name)->text_length
-                             + GTK_ENTRY (configDialogData.user.title)->text_length
-                             + GTK_ENTRY (configDialogData.user.company)->text_length
-                             + GTK_ENTRY (configDialogData.user.telephone)->text_length
-                             + GTK_ENTRY (configDialogData.user.fax)->text_length
-                             + GTK_ENTRY (configDialogData.user.email)->text_length
-                             + GTK_ENTRY (configDialogData.user.address)->text_length;
-  configDialogData.user.max = MAX_BUSINESS_CARD_LENGTH;
-  if (GTK_ENTRY (configDialogData.user.telephone)->text_length > 0)
-    configDialogData.user.max -= 4;
-  if (GTK_ENTRY (configDialogData.user.fax)->text_length > 0)
-    configDialogData.user.max -= 4;
-  g_snprintf (buf, 8, "%d/%d", configDialogData.user.used, configDialogData.user.max);
-  gtk_label_set_text (GTK_LABEL (configDialogData.user.status), buf);
-}
-
-
-void GUI_InitSMSSettings (void)
-{
-  PhoneEvent *e;
-  D_SMSCenter *c;
-  register gint i;
-
-  if (SMSSettingsInitialized)
-    return;
-
-  gtk_label_set_text (GTK_LABEL (infoDialog.text), _("Reading SMS centers ..."));
-  gtk_widget_show_now (infoDialog.dialog);
-  GUI_Refresh ();
-
-  for (i = 1; i <= MAX_SMS_CENTER; i++)
-  {
-    xgnokiiConfig.smsSetting[i - 1].No = i;
-    c = (D_SMSCenter *) g_malloc (sizeof (D_SMSCenter));
-    c->center = &(xgnokiiConfig.smsSetting[i - 1]);
-
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_GetSMSCenter;
-    e->data = c;
-    GUI_InsertEvent (e);
-    pthread_mutex_lock (&smsCenterMutex);
-    pthread_cond_wait (&smsCenterCond, &smsCenterMutex);
-    pthread_mutex_unlock (&smsCenterMutex);
-
-    if (c->status != GE_NONE)
-      break;
-
-    g_free (c);
-
-    configDialogData.sms.smsSetting[i - 1] = xgnokiiConfig.smsSetting[i - 1];
-  }
-
-  xgnokiiConfig.smsSets = i - 1;
-
-  ParseSMSCenters ();
-
-  SMSSettingsInitialized = TRUE;
-  
-  gtk_widget_hide (infoDialog.dialog);
-}
-
-
-void GUI_ShowOptions (void)
-{
-  PhoneEvent *e;
-  D_Alarm *alarm;
-  register gint i;
-
-  if (optionsDialogIsOpened)
-    return;
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.port), xgnokiiConfig.port);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.model), xgnokiiConfig.model);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.init), xgnokiiConfig.initlength);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.bindir), xgnokiiConfig.bindir);
-
-  if (!strcmp(xgnokiiConfig.connection, "fbus"))
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.serial), TRUE);
-
-  if (!strcmp(xgnokiiConfig.connection, "infrared"))
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.infrared), TRUE);
-
-  if (!strcmp(xgnokiiConfig.connection, "mbus"))
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.mbus), TRUE);
-
-  /* Phone */
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.model), phoneMonitor.phone.model);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.version), phoneMonitor.phone.version);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.revision), phoneMonitor.phone.revision);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.imei), phoneMonitor.phone.imei);
-
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen),
-                             atof (xgnokiiConfig.maxSIMLen));
-
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen),
-                             atof (xgnokiiConfig.maxPhoneLen));
-                             
-  /* Alarm */
-  alarm = (D_Alarm *) g_malloc (sizeof (D_Alarm));
-  e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-  e->event = Event_GetAlarm;
-  e->data = alarm;
-  GUI_InsertEvent (e);
-  pthread_mutex_lock (&alarmMutex);
-  pthread_cond_wait (&alarmCond, &alarmMutex);
-  pthread_mutex_unlock (&alarmMutex);
-
-  if (alarm->status != GE_NONE)
-  {
-    xgnokiiConfig.alarmSupported = FALSE;
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), FALSE);
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), 0.0);
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), 0.0);
-  }
-  else
-  {
-    xgnokiiConfig.alarmSupported = TRUE;
-    if (alarm->time.IsSet)
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), TRUE);
-    else
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), FALSE);
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), alarm->time.Hour);
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), alarm->time.Minute);
-  }
-  g_free (alarm);  
-
-  /* SMS */
-  if (GetModelFeature(FN_SMS)!=0)
-  {
-    gtk_widget_show (sms_option_frame);
-    GUI_InitSMSSettings ();
-  }
-  else
-    gtk_widget_hide (sms_option_frame);
-
-
-  /* BUSINESS CARD */
-  if (GetModelFeature(FN_SMS)!=0)
-  {
-    gtk_widget_show (user_option_frame);
-
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.name),
-                        xgnokiiConfig.user.name);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.title),
-                        xgnokiiConfig.user.title);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.company),
-                        xgnokiiConfig.user.company);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.telephone),
-                        xgnokiiConfig.user.telephone);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.fax),
-                        xgnokiiConfig.user.fax);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.email),
-                        xgnokiiConfig.user.email);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.user.address),
-                        xgnokiiConfig.user.address);
-
-    RefreshUserStatus();
-  }
-  else
-    gtk_widget_hide (user_option_frame);
-
-
-  /* Groups */
-  if (GetModelFeature(FN_CALLERGROUPS)!=0)
-  {
-    gtk_widget_show (cg_names_option_frame);
-    GUI_InitCallerGroupsInf ();
-    for ( i = 0; i < 6; i++)
-      gtk_entry_set_text (GTK_ENTRY (configDialogData.groups[i]), xgnokiiConfig.callerGroups[i]);
-  }
-  else
-    gtk_widget_hide (cg_names_option_frame);
-
-  /* Mail */
-  if (GetModelFeature(FN_SMS)!=0)
-  {
-    gtk_widget_show (mail_option_frame);
-    gtk_entry_set_text (GTK_ENTRY (configDialogData.mailbox),
-                        xgnokiiConfig.mailbox);;
-  }
-  else
-    gtk_widget_hide (mail_option_frame);
-
-  /* Help */
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.help),
-                      xgnokiiConfig.helpviewer);
-
-  if (GetModelFeature(FN_SMSCDEFAULT)!=0) {} else
-    gtk_clist_set_column_visibility (GTK_CLIST (SMSClist), 4, (GetModelFeature(FN_SMSCDEFAULT)!=0));
-
-  optionsDialogIsOpened = TRUE;
-  gtk_widget_show (OptionsDialog);
-}
-
-
-inline void GUI_ShowAbout (void)
-{
-  gtk_widget_show (AboutDialog);
-}
-
-
-inline void GUI_HideAbout(void)
-{
-  gtk_widget_hide (AboutDialog);
-}
-
-
-static void MainExit (void)
-{
-  PhoneEvent *e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-
-  e->event = Event_Exit;
-  e->data = NULL;
-  GUI_InsertEvent (e);
-  pthread_join (monitor_th, NULL); 
-
-  //need to correctly close connection
-  GSM->Terminate();
-
-  gtk_main_quit();
-}
-
-
-static void ShowMenu (GdkEventButton *event)
-{
-  GdkEventButton *bevent = (GdkEventButton *) event;
-
-  if (GetModelFeature(FN_KEYPRESS)!=0)
-    gtk_widget_show (xkeyb_menu_item);
-  else
-    gtk_widget_hide (xkeyb_menu_item);
-
-  if (GetModelFeature(FN_NETMONITOR)!=0)
-    gtk_widget_show (netmon_menu_item);
-  else
-    gtk_widget_hide (netmon_menu_item);
-
-  if (GetModelFeature(FN_SMS)!=0)
-    gtk_widget_show (sms_menu_item);
-  else
-    gtk_widget_hide (sms_menu_item);
-
-  if (GetModelFeature(FN_CALENDAR)!=0)
-    gtk_widget_show (calendar_menu_item);
-  else
-    gtk_widget_hide (calendar_menu_item);
-
-  if (GetModelFeature(FN_DTMF)!=0)
-    gtk_widget_show (dtmf_menu_item);
-  else
-    gtk_widget_hide (dtmf_menu_item);
-
-  if (GetModelFeature(FN_SPEEDDIAL)!=0)
-    gtk_widget_show (speedDial_menu_item);
-  else
-    gtk_widget_hide (speedDial_menu_item);
-  
-  if (GetModelFeature(FN_DATACALLS)!=0)
-    gtk_widget_show (data_menu_item);
-  else
-    gtk_widget_hide (data_menu_item);
-
-  gtk_menu_popup (GTK_MENU (Menu), NULL, NULL, NULL, NULL,
-                          bevent->button, bevent->time);
-}
-
-
-static gint ButtonPressEvent (GtkWidget *widget, GdkEventButton *event)
-{
-  /* Left button */
-  if (event->button == 1) {
-
-    /* Close */
-    if (event->x >= 206 && event->x <= 221 &&
-       event->y >=  42 && event->y <= 55)
-    {
-      if (GUI_ContactsIsChanged())
-        GUI_QuitSaveContacts();
-      else
-        MainExit ();
-    }
-    else if ((event->x >= 180 && event->x <= 195 &&
-             event->y >=  30 && event->y <= 50) || 
-             (event->x >= 185 && event->x <= 215 &&
-             event->y >=  15 && event->y <= 30))
-    {
-      GUI_ShowContacts ();
-    }
-    else if (event->x >= 190 && event->x <= 210 &&
-             event->y >=  70 && event->y <= 85)
-    {
-      if (GetModelFeature(FN_SMS)==0)
-        phoneMonitor.working = _("SMS not supported!");
-      else
-        GUI_ShowSMS ();
-    }
-    else if (event->x >= 235 && event->x <= 248 &&
-             event->y >=  27 && event->y <= 75) 
-    {
-      if (GetModelFeature(FN_CALENDAR)==0)
-        phoneMonitor.working = _("Calendar not supported!");
-      else
-        GUI_ShowCalendar ();
-    }
-    else if (event->x >= 245 && event->x <= 258 &&
-             event->y >=  83 && event->y <= 93)
-    {
-      GUI_ShowOptions();
-    }
-  } /* Right button */
-  else if (event->button == 3)
-    ShowMenu (event); 
-
-  // g_print ("event->x: %f\n", event->x);
-  // g_print ("event->y: %f\n", event->y);
-
-  return TRUE;
-}
-
-
-static void OptionsApplyCallback (GtkWidget *widget, gpointer data )
-{
-  PhoneEvent *e;
-  D_Alarm *alarm;
-  register gint i;
-
-  /* Phone */
-  max_phonebook_sim_name_length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen));
-  max_phonebook_name_length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen));
-  g_free (xgnokiiConfig.maxSIMLen);
-  g_free (xgnokiiConfig.maxPhoneLen);
-  xgnokiiConfig.maxSIMLen = g_strdup_printf ("%d", max_phonebook_sim_name_length);
-  xgnokiiConfig.maxPhoneLen = g_strdup_printf ("%d", max_phonebook_name_length);
-
-  /* ALARM */
-  /* From fbus-6110.c 
-     FIXME: we should also allow to set the alarm off :-) */  
-  if (xgnokiiConfig.alarmSupported 
-      && GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch)->active) 
-  {
-    alarm = (D_Alarm *) g_malloc (sizeof (D_Alarm));
-    alarm->time.Hour = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour));
-    alarm->time.Minute = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin));
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SetAlarm;
-    e->data = alarm;
-    GUI_InsertEvent (e);
-  }
-
-  /* SMS */
-  if (GetModelFeature(FN_SMS)!=0)    
-  {
-    for (i = 0; i < xgnokiiConfig.smsSets; i++)
-      xgnokiiConfig.smsSetting[i] = configDialogData.sms.smsSetting[i];
-    GUIEventSend (GUI_EVENT_SMS_CENTERS_CHANGED);
-  }
-
-  /* BUSINESS CARD */
-  if (GetModelFeature(FN_SMS)!=0)
-  {
-    g_free(xgnokiiConfig.user.name);
-    xgnokiiConfig.user.name = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.name)));
-    g_free(xgnokiiConfig.user.title);
-    xgnokiiConfig.user.title = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.title)));
-    g_free(xgnokiiConfig.user.company);
-    xgnokiiConfig.user.company = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.company)));
-    g_free(xgnokiiConfig.user.telephone);
-    xgnokiiConfig.user.telephone = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.telephone)));
-    g_free(xgnokiiConfig.user.fax);
-    xgnokiiConfig.user.fax = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.fax)));
-    g_free(xgnokiiConfig.user.email);
-    xgnokiiConfig.user.email = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.email)));
-    g_free(xgnokiiConfig.user.address);
-    xgnokiiConfig.user.address = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.address)));
-  }
-
-  /* GROUPS */
-  if (GetModelFeature(FN_CALLERGROUPS)!=0)
-  {
-    for ( i = 0; i < 6; i++)
-    {
-      strncpy(xgnokiiConfig.callerGroups[i], 
-              gtk_entry_get_text(GTK_ENTRY (configDialogData.groups[i])),
-              MAX_CALLER_GROUP_LENGTH);
-      xgnokiiConfig.callerGroups[i][MAX_CALLER_GROUP_LENGTH] = '\0';
-    }
-    GUIEventSend (GUI_EVENT_CALLERS_GROUPS_CHANGED);
-    GUIEventSend (GUI_EVENT_CONTACTS_CHANGED);
-  }
-
-  /* Mail */
-  if (GetModelFeature(FN_SMS)!=0)
-  {
-    g_free(xgnokiiConfig.mailbox);
-    xgnokiiConfig.mailbox = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.mailbox)));
-  }
-  
-  /* Help */
-  g_free(xgnokiiConfig.helpviewer);
-  xgnokiiConfig.helpviewer = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.help)));
-}
-
-
-static void OptionsSaveCallback (GtkWidget *widget, gpointer data )
-{
-  D_CallerGroup *cg;
-  D_SMSCenter *c;
-  PhoneEvent *e;
-  register gint i;
-
-  //gtk_widget_hide(GTK_WIDGET(data));
-  OptionsApplyCallback (widget, data);
-  for (i = 0; i < xgnokiiConfig.smsSets; i++)
-  {
-    xgnokiiConfig.smsSetting[i].No = i + 1;
-    c = (D_SMSCenter *) g_malloc (sizeof (D_SMSCenter));
-    c->center = &(xgnokiiConfig.smsSetting[i]);
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SetSMSCenter;
-    e->data = c;
-    GUI_InsertEvent (e);
-  }
-
-  if (GetModelFeature(FN_CALLERGROUPS)!=0)
-  {
-    cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
-    cg->number = 0;
-    if (strcmp (xgnokiiConfig.callerGroups[0], _("Familly")) == 0)
-      *cg->text = '\0';
-    else
-      strncpy (cg->text, xgnokiiConfig.callerGroups[0], 256);
-    cg->text[255] = '\0';
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SendCallerGroup;
-    e->data = cg;
-    GUI_InsertEvent (e);
-
-    cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
-    cg->number = 1;
-    if (strcmp (xgnokiiConfig.callerGroups[1], _("VIP")) == 0)
-      *cg->text = '\0';
-    else
-      strncpy (cg->text, xgnokiiConfig.callerGroups[1], 256);
-    cg->text[255] = '\0';
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SendCallerGroup;
-    e->data = cg;
-    GUI_InsertEvent (e);
-
-    cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
-    cg->number = 2;
-    if (strcmp (xgnokiiConfig.callerGroups[2], _("Friends")) == 0)
-      *cg->text = '\0';
-    else
-      strncpy (cg->text, xgnokiiConfig.callerGroups[2], 256);
-    cg->text[255] = '\0';
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SendCallerGroup;
-    e->data = cg;
-    GUI_InsertEvent (e);
-
-    cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
-    cg->number = 3;
-    if (strcmp (xgnokiiConfig.callerGroups[3], _("Colleagues")) == 0)
-      *cg->text = '\0';
-    else
-      strncpy (cg->text, xgnokiiConfig.callerGroups[3], 256);
-    cg->text[255] = '\0';
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SendCallerGroup;
-    e->data = cg;
-    GUI_InsertEvent (e);
-
-    cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
-    cg->number = 4;
-    if (strcmp (xgnokiiConfig.callerGroups[4], _("Other")) == 0)
-      *cg->text = '\0';
-    else
-      strncpy (cg->text, xgnokiiConfig.callerGroups[4], 256);
-    cg->text[255] = '\0';
-    e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
-    e->event = Event_SendCallerGroup;
-    e->data = cg;
-    GUI_InsertEvent (e);
-  }
-
-  if (GUI_SaveXConfig())
-  {
-    gtk_label_set_text (GTK_LABEL(errorDialog.text), _("Error writing configuration file!"));
-    gtk_widget_show (errorDialog.dialog);
-  }
-}
-
-
-static GtkWidget *CreateMenu (void)
-{
-  GtkWidget *menu, *menu_items;
-
-  menu = gtk_menu_new ();
-
-  menu_items = gtk_menu_item_new_with_label (_("Contacts"));
-  gtk_menu_append (GTK_MENU (menu), menu_items);
-  gtk_signal_connect_object (GTK_OBJECT (menu_items), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowContacts), NULL);
-  gtk_widget_show (menu_items);
-
-  sms_menu_item = gtk_menu_item_new_with_label (_("SMS"));
-  gtk_menu_append (GTK_MENU (menu), sms_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (sms_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowSMS), NULL);
-
-  calendar_menu_item = gtk_menu_item_new_with_label (_("Calendar"));
-  gtk_menu_append (GTK_MENU (menu), calendar_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (calendar_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowCalendar), NULL);
-
-  logos_menu_item = gtk_menu_item_new_with_label (_("Logos"));
-  gtk_menu_append (GTK_MENU (menu), logos_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (logos_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowLogosWindow), NULL);
-  gtk_widget_show(logos_menu_item);
-
-  logos_menu_item = gtk_menu_item_new_with_label (_("Ringtones"));
-  gtk_menu_append (GTK_MENU (menu), logos_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (logos_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowRingtonesWindow), NULL);
-  gtk_widget_show(logos_menu_item);  
-
-  dtmf_menu_item = gtk_menu_item_new_with_label (_("DTMF"));
-  gtk_menu_append (GTK_MENU (menu), dtmf_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (dtmf_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowDTMF), NULL);
-
-  speedDial_menu_item = gtk_menu_item_new_with_label (_("Speed Dial"));
-  gtk_menu_append (GTK_MENU (menu), speedDial_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (speedDial_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowSpeedDial), NULL);
-
-  xkeyb_menu_item = gtk_menu_item_new_with_label (_("Keyboard"));
-  gtk_menu_append (GTK_MENU (menu), xkeyb_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (xkeyb_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowXkeyb), NULL);
-
-  netmon_menu_item = gtk_menu_item_new_with_label (_("Net Monitor"));
-  gtk_menu_append (GTK_MENU (menu), netmon_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (netmon_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowNetmon), NULL);
-
-  data_menu_item = gtk_menu_item_new_with_label (_("Data calls"));
-  gtk_menu_append (GTK_MENU (menu), data_menu_item);
-  gtk_signal_connect_object (GTK_OBJECT (data_menu_item), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowData), NULL);
-
-  menu_items = gtk_menu_item_new ();
-  gtk_menu_append (GTK_MENU (menu), menu_items);
-  gtk_widget_show (menu_items);
-
-  menu_items = gtk_menu_item_new_with_label (_("Options"));
-  gtk_menu_append (GTK_MENU (menu), menu_items);
-  gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
-                             GTK_SIGNAL_FUNC(GUI_ShowOptions), NULL);
-  gtk_widget_show (menu_items);
-
-  menu_items = gtk_menu_item_new ();
-  gtk_menu_append (GTK_MENU (menu), menu_items);
-  gtk_widget_show (menu_items);
-
-  menu_items = gtk_menu_item_new_with_label (_("Help"));
-  gtk_menu_append (GTK_MENU (menu), menu_items);
-  gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
-                             GTK_SIGNAL_FUNC(Help1), NULL);
-  gtk_widget_show (menu_items);
-
-  menu_items = gtk_menu_item_new_with_label (_("About"));
-  gtk_menu_append (GTK_MENU (menu), menu_items);
-  gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
-                             GTK_SIGNAL_FUNC (GUI_ShowAbout), NULL);
-  gtk_widget_show (menu_items);
-
-  return menu;
-}
-
-
-static GtkWidget *CreateAboutDialog (void)
-{
-  GtkWidget *dialog;
-  GtkWidget *button, *hbox, *label;
-  gchar buf[200];
-
-  dialog = gtk_dialog_new ();
-  gtk_window_set_title (GTK_WINDOW (dialog), _("About"));
-  gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
-  gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
-                      GTK_SIGNAL_FUNC (DeleteEvent), NULL);
-  button = gtk_button_new_with_label (_("Ok"));
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-                      button, TRUE, FALSE, 5);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                      GTK_SIGNAL_FUNC (GUI_HideAbout), NULL);
-  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-  gtk_widget_grab_default (button);
-  gtk_widget_show (button);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
-  gtk_widget_show (hbox);
-
-  g_snprintf (buf, 200, _("xgnokii version: %s\ngnokii version: %s\n\n\
-Copyright (C) 1999 Pavel Janík ml.,\nHugh Blemings & Jan Derfinak\n"), XVERSION, VERSION);
-  label = gtk_label_new ((gchar *) buf);
-  gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-  gtk_widget_show (label);
-
-  return dialog;
-}
-
-
-static inline void SetFormat (GtkWidget *item, gpointer data)
-{
-  tempMessageSettings.Format = GPOINTER_TO_INT (data);
-}
-
-
-static inline void SetValidity (GtkWidget *item, gpointer data)
-{
-  tempMessageSettings.Validity = GPOINTER_TO_INT (data);
-}
-
-
-static inline void OptionsDeleteEvent (GtkWidget *widget, GdkEvent *event, gpointer data )
-{
-  gtk_widget_hide( GTK_WIDGET (widget));
-  optionsDialogIsOpened = FALSE;
-}
-
-
-static inline void OptionsCloseCallback (GtkWidget *widget, gpointer data )
-{
-  gtk_widget_hide(GTK_WIDGET(data));
-  optionsDialogIsOpened = FALSE;
-}
-
-
-static gint CheckInUserDataLength (GtkWidget *widget,
-                                   GdkEvent  *event,
-                                   gpointer   callback_data)
-{
-  register gint len;
-
-  len = configDialogData.user.max - (GTK_ENTRY (configDialogData.user.name)->text_length
-      + GTK_ENTRY (configDialogData.user.title)->text_length
-      + GTK_ENTRY (configDialogData.user.company)->text_length
-      + GTK_ENTRY (configDialogData.user.telephone)->text_length
-      + GTK_ENTRY (configDialogData.user.fax)->text_length
-      + GTK_ENTRY (configDialogData.user.email)->text_length
-      + GTK_ENTRY (configDialogData.user.address)->text_length
-      - GTK_ENTRY (widget)->text_length);
-
-  if (len < 1)
-  {
-    gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
-    return (FALSE);
-  }
-  else 
-    gtk_entry_set_editable (GTK_ENTRY (widget), TRUE);
-  if (GPOINTER_TO_INT (callback_data) == 3
-      || GPOINTER_TO_INT (callback_data) == 4)
-  {
-    if ((GPOINTER_TO_INT (callback_data) == 3
-        && GTK_ENTRY (configDialogData.user.telephone)->text_length == 0)
-        || (GPOINTER_TO_INT (callback_data) == 4
-        && GTK_ENTRY (configDialogData.user.fax)->text_length == 0))
-      len -= 4;
-
-    if (len < 1)
-    {
-      gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
-      return (FALSE);
-    }
-
-    if (len > max_phonebook_number_length)
-      len = max_phonebook_number_length;
-  }
-
-  gtk_entry_set_max_length (GTK_ENTRY (widget), len);
-  return (FALSE);
-}
-
-
-static inline gint CheckOutUserDataLength (GtkWidget *widget,
-                                           GdkEvent  *event,
-                                           gpointer   callback_data)
-{
-  gtk_entry_set_max_length (GTK_ENTRY (widget), GPOINTER_TO_INT (callback_data));
-  return (FALSE);  
-}
-
-
-static inline gint RefreshUserStatusCallBack (GtkWidget   *widget,
-                                              GdkEventKey *event,
-                                              gpointer     callback_data)
-{
-  RefreshUserStatus ();
-  if (GTK_EDITABLE (widget)->editable == FALSE)
-    return (FALSE);
-  if (event->keyval == GDK_BackSpace || event->keyval == GDK_Clear ||
-      event->keyval == GDK_Insert || event->keyval == GDK_Delete ||
-      event->keyval == GDK_Home || event->keyval == GDK_End ||
-      event->keyval == GDK_Left || event->keyval == GDK_Right ||
-      event->keyval == GDK_Return ||
-      (event->keyval >= 0x20 && event->keyval <= 0xFF))
-    return (TRUE);
-
-  return (FALSE);
-}
-
-
-static void OkEditSMSSetDialog (GtkWidget *w, gpointer data)
-{
-
-  strncpy(configDialogData.sms.smsSetting
-          [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name,
-          gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.set)),
-          GSM_MAX_SMS_CENTER_NAME_LENGTH);
-  configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name[GSM_MAX_SMS_CENTER_NAME_LENGTH - 1]
-    = '\0';
-
-  strncpy(configDialogData.sms.smsSetting
-          [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number,
-          gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.number)),
-          GSM_MAX_SMS_CENTER_LENGTH);
-  configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number[GSM_MAX_SMS_CENTER_LENGTH]
-    = '\0';
-
-  strncpy(configDialogData.sms.smsSetting
-          [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].DefaultRecipient,
-          gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.defaultrecipient)),
-          GSM_MAX_RECIPIENT_LENGTH);
-  configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].DefaultRecipient[GSM_MAX_RECIPIENT_LENGTH]
-    = '\0';
-
-  configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format
-    = tempMessageSettings.Format;
-
-  configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity
-    = tempMessageSettings.Validity;
-
-  ParseSMSCenters ();
-
-  gtk_widget_hide (GTK_WIDGET (data));  
-}
-
-
-static inline void EditSMSSetDialogClick (GtkWidget        *clist,
-                                          gint              row,
-                                          gint              column,
-                                          GdkEventButton   *event,
-                                          GtkWidget        *data )
-{
-  if(event && event->type == GDK_2BUTTON_PRESS)
-    gtk_signal_emit_by_name(GTK_OBJECT (data), "clicked");
-}
-
-
-static void ShowEditSMSSetDialog (GtkWidget *w, gpointer data)
-{
-  static GtkWidget *dialog = NULL;
-  GtkWidget *button, *label, *label2, *hbox, *hbox2, *menu, *item;
-
-  if (GTK_CLIST (SMSClist)->selection == NULL)
-    return;
-
-  if (dialog == NULL)
-  {
-    dialog = gtk_dialog_new();
-    gtk_window_set_title (GTK_WINDOW (dialog), _("Edit SMS Setting"));
-    gtk_window_set_modal(GTK_WINDOW (dialog), TRUE);
-    gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
-    gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
-                      GTK_SIGNAL_FUNC (DeleteEvent), NULL);
-
-    button = gtk_button_new_with_label (_("Ok"));
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-                        button, TRUE, TRUE, 10);
-    gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                        GTK_SIGNAL_FUNC (OkEditSMSSetDialog), (gpointer) dialog);
-    GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-    gtk_widget_grab_default (button);
-    gtk_widget_show (button);
-    button = gtk_button_new_with_label (_("Cancel"));
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-                        button, TRUE, TRUE, 10);
-    gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                        GTK_SIGNAL_FUNC (CancelDialog), (gpointer) dialog);
-    gtk_widget_show (button);
-
-    gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
-
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
-    gtk_widget_show (hbox);
-
-    label = gtk_label_new (_("Set's name:"));
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-    gtk_widget_show (label);
-
-    configDialogData.sms.set = gtk_entry_new_with_max_length(GSM_MAX_SMS_CENTER_NAME_LENGTH - 1);
-    gtk_widget_set_usize (configDialogData.sms.set, 110, 22);
-    gtk_box_pack_end(GTK_BOX(hbox), configDialogData.sms.set, FALSE, FALSE, 2);
-    gtk_widget_show (configDialogData.sms.set);
-
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
-    gtk_widget_show (hbox);
-
-    label = gtk_label_new (_("Center:"));
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-    gtk_widget_show (label);
-
-    configDialogData.sms.number = gtk_entry_new_with_max_length(GSM_MAX_SMS_CENTER_LENGTH - 1);
-    gtk_widget_set_usize (configDialogData.sms.number, 110, 22);
-    gtk_box_pack_end(GTK_BOX(hbox), configDialogData.sms.number, FALSE, FALSE, 2);
-    gtk_widget_show (configDialogData.sms.number);
-
-    hbox2 = gtk_hbox_new (FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox2, FALSE, FALSE, 9);
-    if (GetModelFeature(FN_SMSCDEFAULT)!=0) 
-      gtk_widget_show (hbox2);
-
-    label2 = gtk_label_new (_("Default recipient:"));
-    gtk_box_pack_start(GTK_BOX(hbox2), label2, FALSE, FALSE, 2);
-    if (GetModelFeature(FN_SMSCDEFAULT)!=0) 
-      gtk_widget_show (label2);
-
-    configDialogData.sms.defaultrecipient = gtk_entry_new_with_max_length(GSM_MAX_RECIPIENT_LENGTH - 1);
-    gtk_widget_set_usize (configDialogData.sms.defaultrecipient, 110, 22);
-    gtk_box_pack_end(GTK_BOX(hbox2), configDialogData.sms.defaultrecipient, FALSE, FALSE, 2);
-    if (GetModelFeature(FN_SMSCDEFAULT)!=0) 
-      gtk_widget_show (configDialogData.sms.defaultrecipient);
-
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 9);
-    gtk_widget_show (hbox);
-    label = gtk_label_new (_("Sending Format:"));
-    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-    gtk_widget_show (label);
-
-    configDialogData.sms.format = gtk_option_menu_new ();
-    menu = gtk_menu_new ();
-    gtk_widget_set_usize (configDialogData.sms.format, 110, 28);
-
-    item = gtk_menu_item_new_with_label (_("Text"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetFormat),
-                        (gpointer) GSMF_Text);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("Fax"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetFormat),
-                        (gpointer) GSMF_Fax);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("Paging"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetFormat),
-                        (gpointer) GSMF_Paging);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("E-Mail"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetFormat),
-                        (gpointer) GSMF_Email);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    gtk_option_menu_set_menu (GTK_OPTION_MENU (configDialogData.sms.format), menu);
-    gtk_box_pack_end (GTK_BOX (hbox), configDialogData.sms.format, FALSE, FALSE, 2);
-    gtk_widget_show (configDialogData.sms.format);
-
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 9);
-    gtk_widget_show (hbox);
-
-    label = gtk_label_new (_("Validity Period:"));
-    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-    gtk_widget_show (label);
-
-    configDialogData.sms.validity = gtk_option_menu_new ();
-    menu = gtk_menu_new ();
-    gtk_widget_set_usize (configDialogData.sms.validity, 110, 28);
-
-    item = gtk_menu_item_new_with_label (_("Max. Time"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetValidity),
-                        (gpointer) GSMV_Max_Time);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("1 h"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetValidity),
-                        (gpointer) GSMV_1_Hour);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("6 h"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetValidity),
-                        (gpointer) GSMV_6_Hours);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("24 h"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetValidity),
-                        (gpointer) GSMV_24_Hours);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("72 h"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetValidity),
-                        (gpointer) GSMV_72_Hours);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    item = gtk_menu_item_new_with_label (_("1 week"));
-    gtk_signal_connect (GTK_OBJECT (item), "activate",
-                        GTK_SIGNAL_FUNC(SetValidity),
-                        (gpointer) GSMV_1_Week);
-    gtk_widget_show (item);
-    gtk_menu_append (GTK_MENU (menu), item);
-
-    gtk_option_menu_set_menu (GTK_OPTION_MENU (configDialogData.sms.validity), menu);
-    gtk_box_pack_end (GTK_BOX (hbox), configDialogData.sms.validity, FALSE, FALSE, 2);
-    gtk_widget_show (configDialogData.sms.validity);
-  }
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.set),
-                      configDialogData.sms.smsSetting
-                      [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.number),
-                      configDialogData.sms.smsSetting
-                      [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number);
-
-  gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.defaultrecipient),
-                      configDialogData.sms.smsSetting
-                      [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].DefaultRecipient);
-
-  switch (configDialogData.sms.smsSetting
-          [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format)
-  {
-    case GSMF_Text:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
-                                   0);
-      break;
-
-    case GSMF_Paging:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
-                                   2);
-      break;
-
-    case GSMF_Fax:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
-                                   1);
-      break;
-
-    case GSMF_Email:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
-                                   3);
-      break;
-
-    default:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
-                                   0);
-  }
-
-  switch (configDialogData.sms.smsSetting
-          [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity)
-  {
-    case GSMV_1_Hour:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   1);
-      break;
-
-    case GSMV_6_Hours:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   2);
-      break;
-
-    case GSMV_24_Hours:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   3);
-      break;
-
-    case GSMV_72_Hours:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   4);
-      break;
-
-    case GSMV_1_Week:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   5);
-      break;
-
-    case GSMV_Max_Time:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   0);
-      break;
-
-    default:
-      gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
-                                   3);
-  }
-
-  tempMessageSettings.Format = configDialogData.sms.smsSetting
-               [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format;
-  tempMessageSettings.Validity = configDialogData.sms.smsSetting
-               [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity;
-
-  gtk_widget_show (dialog);
-}
-
-
-static GtkWidget *CreateOptionsDialog (void)
-{
-  gchar labelBuffer[10];
-  GtkWidget *dialog;
-  GtkWidget *button, *hbox, *vbox, *label, *notebook, *frame, *clistScrolledWindow;
-  register gint i;
-  GtkAdjustment *adj;
-  gchar *titles[5] = { _("Set's name"), _("Center number"), _("Format"), _("Validity"), _("Default recipient")};
-
-  dialog = gtk_dialog_new ();
-  gtk_window_set_title (GTK_WINDOW (dialog), _("Options"));
-  gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
-  gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
-                      GTK_SIGNAL_FUNC (OptionsDeleteEvent), NULL);
-
-  button = gtk_button_new_with_label (_("Apply"));
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-                      button, TRUE, TRUE, 10);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                      GTK_SIGNAL_FUNC (OptionsApplyCallback), (gpointer)dialog);
-  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-  gtk_widget_grab_default (button);
-  gtk_widget_show (button);
-
-  button = gtk_button_new_with_label (_("Save"));
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-                      button, TRUE, TRUE, 10);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                      GTK_SIGNAL_FUNC (OptionsSaveCallback), (gpointer)dialog);
-  gtk_widget_show (button);
-
-  button = gtk_button_new_with_label (_("Close"));
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-                      button, TRUE, TRUE, 10);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                      GTK_SIGNAL_FUNC (OptionsCloseCallback), (gpointer)dialog);
-  gtk_widget_show (button);
-
-  gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
-
-  notebook = gtk_notebook_new ();
-  gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
-  gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), notebook);
-  gtk_widget_show(notebook);
-
-  /***  Connection notebook  ***/
-  frame = gtk_frame_new (_("Phone and connection type"));
-  gtk_widget_show (frame);
-
-  vbox = gtk_vbox_new( FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (frame), vbox);
-  gtk_widget_show (vbox);
-
-  label = gtk_label_new (_("Connection"));
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Port:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.connection.port = gtk_entry_new_with_max_length (10);
-  gtk_widget_set_usize (configDialogData.connection.port, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.port),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.port, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.port);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Model:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.connection.model = gtk_entry_new_with_max_length (5);
-  gtk_widget_set_usize (configDialogData.connection.model, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.model),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.model, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.model);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Init length:"));
-  gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.connection.init = gtk_entry_new_with_max_length (100);
-  gtk_widget_set_usize (configDialogData.connection.init, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.init),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.init, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.init);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Bindir:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.connection.bindir = gtk_entry_new_with_max_length (100);
-  gtk_widget_set_usize (configDialogData.connection.bindir, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.bindir),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.bindir, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.bindir);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Connection:"));
-  gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 3);
-  gtk_widget_show (label);
-
-  configDialogData.connection.infrared = gtk_radio_button_new_with_label (NULL, _("infrared"));
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.infrared, TRUE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.infrared);
-
-  configDialogData.connection.serial = gtk_radio_button_new_with_label ( 
-            gtk_radio_button_group (GTK_RADIO_BUTTON (configDialogData.connection.infrared)), _("fbus"));
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.serial, TRUE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.serial);
-
-  configDialogData.connection.mbus = gtk_radio_button_new_with_label ( 
-            gtk_radio_button_group (GTK_RADIO_BUTTON (configDialogData.connection.serial)), _("mbus"));
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.mbus, TRUE, FALSE, 2);
-  gtk_widget_show (configDialogData.connection.mbus);
-
-  /***  Phone notebook  ***/
-  frame = gtk_frame_new (_("Phone information"));
-  gtk_widget_show (frame);
-
-  vbox = gtk_vbox_new( FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (frame), vbox);
-  gtk_widget_show (vbox);
-
-  label = gtk_label_new (_("Phone"));
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Model:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.phone.model = gtk_entry_new_with_max_length (7);
-  gtk_widget_set_usize (configDialogData.phone.model, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.model),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.model, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.phone.model);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Version:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.phone.version = gtk_entry_new_with_max_length (7);
-  gtk_widget_set_usize (configDialogData.phone.version, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.version),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.version, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.phone.version);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Revision:"));
-  gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.phone.revision = gtk_entry_new_with_max_length (64);
-  gtk_widget_set_usize (configDialogData.phone.revision, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.revision),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.revision, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.phone.revision);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("IMEI:"));
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.phone.imei = gtk_entry_new_with_max_length (64);
-  gtk_widget_set_usize (configDialogData.phone.imei, 220, 22);
-  gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.imei),
-                          FALSE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.imei, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.phone.imei);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new ("Names length:");
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (vbox), hbox);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new ("SIM:");
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 1.0, 100.0, 1.0, 10.0, 0.0);
-  configDialogData.phone.simNameLen = gtk_spin_button_new (adj, 0, 0);
-  gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen), TRUE);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen), TRUE);
-  gtk_box_pack_start (GTK_BOX (hbox), configDialogData.phone.simNameLen, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.phone.simNameLen);
-
-  adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 1.0, 100.0, 1.0, 10.0, 0.0);
-  configDialogData.phone.phoneNameLen = gtk_spin_button_new (adj, 0, 0);
-  gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen), TRUE);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen), TRUE);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.phoneNameLen, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.phone.phoneNameLen);
-
-  label = gtk_label_new ("Phone:");
-  gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  /***  Alarm notebook  ***/
-  xgnokiiConfig.alarmSupported = TRUE;
-
-  frame = gtk_frame_new (_("Alarm setting"));
-  gtk_widget_show (frame);
-
-  vbox = gtk_vbox_new( FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (frame), vbox);
-  gtk_widget_show(vbox);
-
-  label = gtk_label_new (_("Alarm"));
-  gtk_notebook_append_page( GTK_NOTEBOOK (notebook), frame, label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
-  gtk_widget_show (hbox);
-
-  configDialogData.alarm.alarmSwitch = gtk_check_button_new_with_label (_("Alarm"));
-  gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmSwitch, FALSE, FALSE, 10);
-  gtk_widget_show (configDialogData.alarm.alarmSwitch);
-
-  adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 23.0, 1.0, 4.0, 0.0);
-  configDialogData.alarm.alarmHour = gtk_spin_button_new (adj, 0, 0);
-  gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), TRUE);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), TRUE);
-  gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmHour, FALSE, FALSE, 0);
-  gtk_widget_show (configDialogData.alarm.alarmHour);
-
-  label = gtk_label_new (":");
-  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 59.0, 1.0, 10.0, 0.0);
-  configDialogData.alarm.alarmMin = gtk_spin_button_new (adj, 0, 0);
-  gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), TRUE);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), TRUE);
-  gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmMin, FALSE, FALSE, 0);
-  gtk_widget_show (configDialogData.alarm.alarmMin);
-
-  /***  SMS notebook     ***/
-  sms_option_frame = gtk_frame_new (_("Short Message Service"));
-
-  vbox = gtk_vbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (sms_option_frame), vbox);
-  gtk_widget_show (vbox);
-
-  label = gtk_label_new (_("SMS"));
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sms_option_frame, label);
-
-  SMSClist = gtk_clist_new_with_titles (5, titles);
-  gtk_clist_set_shadow_type (GTK_CLIST (SMSClist), GTK_SHADOW_OUT);
-  gtk_clist_column_titles_passive (GTK_CLIST (SMSClist));
-  gtk_clist_set_auto_sort (GTK_CLIST (SMSClist), FALSE);
-
-  gtk_clist_set_column_width (GTK_CLIST (SMSClist), 0, 70);
-  gtk_clist_set_column_width (GTK_CLIST (SMSClist), 1, 115);
-  gtk_clist_set_column_width (GTK_CLIST (SMSClist), 2, 40);
-  gtk_clist_set_column_width (GTK_CLIST (SMSClist), 3, 55);
-  gtk_clist_set_column_width (GTK_CLIST (SMSClist), 4, 100);
-//  gtk_clist_set_column_justification (GTK_CLIST (SMSClist), 1, GTK_JUSTIFY_RIGHT);
-
-  clistScrolledWindow = gtk_scrolled_window_new (NULL, NULL);
-  gtk_container_add (GTK_CONTAINER (clistScrolledWindow), SMSClist);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (clistScrolledWindow),
-                                  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-  gtk_box_pack_start (GTK_BOX (vbox), clistScrolledWindow, 
-                      TRUE, TRUE, 10);
-
-  gtk_widget_show (SMSClist);
-
-  gtk_widget_show (clistScrolledWindow);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 9);
-  gtk_widget_show (hbox);
-
-  button = gtk_button_new_with_label (_("Edit"));
-  gtk_box_pack_start (GTK_BOX (hbox),
-                      button, TRUE, FALSE, 0);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                      GTK_SIGNAL_FUNC (ShowEditSMSSetDialog), (gpointer)dialog);
-  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-  gtk_widget_grab_default (button);
-  gtk_widget_show (button);
-
-  gtk_signal_connect (GTK_OBJECT (SMSClist), "select_row",
-                      GTK_SIGNAL_FUNC (EditSMSSetDialogClick),
-                      (gpointer) button);
-
-  /***  Business notebook  ***/
-  user_option_frame = gtk_frame_new (_("Business Card"));
-
-  vbox = gtk_vbox_new( FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (user_option_frame), vbox);
-  gtk_widget_show(vbox);
-
-  label = gtk_label_new(_("User"));
-  gtk_notebook_append_page( GTK_NOTEBOOK (notebook), user_option_frame, label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  configDialogData.user.status = gtk_label_new ("");
-  gtk_box_pack_end(GTK_BOX(hbox), configDialogData.user.status, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.status);
-
-  configDialogData.user.max = MAX_BUSINESS_CARD_LENGTH;
-  configDialogData.user.used = 0;
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Name:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.name = gtk_entry_new_with_max_length(configDialogData.user.max);
-  gtk_widget_set_usize (configDialogData.user.name, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.name),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.name),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.name),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 0);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.name),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength),
-                      (gpointer) configDialogData.user.max);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.name, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.name);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Title:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.title = gtk_entry_new_with_max_length(configDialogData.user.max);
-  gtk_widget_set_usize (configDialogData.user.title, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.title),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.title),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.title),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 1);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.title),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength),
-                      (gpointer) configDialogData.user.max);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.title, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.title);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Company:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.company = gtk_entry_new_with_max_length(configDialogData.user.max);
-  gtk_widget_set_usize (configDialogData.user.company, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.company),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.company),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.company),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 2);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.company),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength),
-                      (gpointer) configDialogData.user.max);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.company, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.company);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Telephone:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.telephone = gtk_entry_new_with_max_length(max_phonebook_number_length);
-  gtk_widget_set_usize (configDialogData.user.telephone, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.telephone),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.telephone),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.telephone),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 3);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.telephone),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength), (gpointer) max_phonebook_number_length);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.telephone, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.telephone);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Fax:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.fax = gtk_entry_new_with_max_length(max_phonebook_number_length);
-  gtk_widget_set_usize (configDialogData.user.fax, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.fax),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.fax),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.fax),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 4);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.fax),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength), (gpointer) max_phonebook_number_length);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.fax, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.fax);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("E-Mail:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.email = gtk_entry_new_with_max_length(configDialogData.user.max);
-  gtk_widget_set_usize (configDialogData.user.email, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.email),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.email),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.email),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 5);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.email),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength),
-                      (gpointer) configDialogData.user.max);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.email, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.email);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Address:"));
-  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.user.address = gtk_entry_new_with_max_length(configDialogData.user.max);
-  gtk_widget_set_usize (configDialogData.user.address, 220, 22);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.address),
-                      "key_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.address),
-                      "button_press_event",
-                      GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.address),
-                      "focus_in_event",
-                      GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 6);
-  gtk_signal_connect (GTK_OBJECT (configDialogData.user.address),
-                      "focus_out_event",
-                      GTK_SIGNAL_FUNC(CheckOutUserDataLength),
-                      (gpointer) configDialogData.user.max);
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.address, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.user.address);
-
-
-  /***  Groups notebook  ***/
-  cg_names_option_frame = gtk_frame_new (_("Caller groups names"));
-
-
-  vbox = gtk_vbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (cg_names_option_frame), vbox);
-  gtk_widget_show (vbox);
-
-  label = gtk_label_new (_("Groups"));
-  gtk_notebook_append_page( GTK_NOTEBOOK (notebook), cg_names_option_frame, label);
-
-  for ( i = 0; i < 6; i++)
-  {
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 3);
-    gtk_widget_show (hbox);
-
-    g_snprintf (labelBuffer, 10, _("Group %d:"), i + 1);
-    label = gtk_label_new (labelBuffer);
-    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
-    gtk_widget_show (label);
-
-    configDialogData.groups[i] = gtk_entry_new_with_max_length (MAX_CALLER_GROUP_LENGTH);
-    gtk_widget_set_usize (configDialogData.groups[i], 220, 22);
-
-    gtk_box_pack_end (GTK_BOX (hbox), configDialogData.groups[i], FALSE, FALSE, 2);
-    gtk_widget_show (configDialogData.groups[i]);
-  }
-
-  /* Mail */
-  mail_option_frame = gtk_frame_new (_("Mailbox"));
-  gtk_widget_show (mail_option_frame);
-
-  vbox = gtk_vbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (mail_option_frame), vbox);
-  gtk_widget_show (vbox);
-
-  label = gtk_label_new (_("Mail"));
-  gtk_notebook_append_page( GTK_NOTEBOOK (notebook), mail_option_frame, label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Path to mailbox:"));
-  gtk_box_pack_start(GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.mailbox = gtk_entry_new_with_max_length (MAILBOX_LENGTH - 1);
-  gtk_widget_set_usize (configDialogData.mailbox, 220, 22);
-
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.mailbox, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.mailbox);
-
-  /* Help */
-  frame = gtk_frame_new (_("Help viewer"));
-  gtk_widget_show (frame);
-
-  vbox = gtk_vbox_new (FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (frame), vbox);
-  gtk_widget_show (vbox);
-
-  label = gtk_label_new (_("Help"));
-  gtk_notebook_append_page( GTK_NOTEBOOK (notebook), frame, label);
-
-  hbox = gtk_hbox_new (FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
-  gtk_widget_show (hbox);
-
-  label = gtk_label_new (_("Viewer:"));
-  gtk_box_pack_start(GTK_BOX (hbox), label, FALSE, FALSE, 2);
-  gtk_widget_show (label);
-
-  configDialogData.help = gtk_entry_new_with_max_length (HTMLVIEWER_LENGTH - 1);
-  gtk_widget_set_usize (configDialogData.help, 220, 22);
-
-  gtk_box_pack_end (GTK_BOX (hbox), configDialogData.help, FALSE, FALSE, 2);
-  gtk_widget_show (configDialogData.help);
-
-
-  optionsDialogIsOpened = FALSE;
-  return dialog;
-}
-
-
-static void TopLevelWindow (void)
-{
-  GtkWidget *drawing_area;
-  GdkBitmap *mask;
-  GtkStyle *style;
-  GdkGC *gc;
-  struct sigaction act;
-
-  GUI_MainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_widget_realize (GUI_MainWindow);
-
-  BackgroundPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_background);
-
-  SMSPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_sms);
-
-  AlarmPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_alarm);
-
-  Pixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_background);
-
-//  gdk_window_set_icon_name (GUI_MainWindow->window, "XXX");
-  style = gtk_widget_get_default_style ();
-  gc = style->black_gc;
-
-  /* Create the drawing area */
-  drawing_area = gtk_drawing_area_new ();
-
-  /* Signals used to handle backing pixmap */
-  gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
-                     (GtkSignalFunc) ExposeEvent, NULL);
-
-  gtk_signal_connect (GTK_OBJECT (drawing_area), "button_press_event",
-                     (GtkSignalFunc) ButtonPressEvent, NULL);
-
-  gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK
-                        | GDK_BUTTON_PRESS_MASK);
-
-  gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 261, 96);
-  gtk_container_add (GTK_CONTAINER (GUI_MainWindow), drawing_area);
-
-  gdk_draw_pixmap (drawing_area->window,
-                  drawing_area->style->fg_gc[GTK_WIDGET_STATE (drawing_area)],
-                  Pixmap,
-                  0, 0,
-                  0, 0,
-                  261, 96);
-
-  gtk_widget_shape_combine_mask (GUI_MainWindow, mask, 0, 0);
-
-  gtk_signal_connect (GTK_OBJECT (GUI_MainWindow), "destroy",
-                      GTK_SIGNAL_FUNC (MainExit),
-                      NULL);
-
-  Menu = CreateMenu ();
-  OptionsDialog = CreateOptionsDialog ();
-  AboutDialog = CreateAboutDialog ();
-  GUI_CreateSMSWindow ();
-  GUI_CreateContactsWindow ();
-  GUI_CreateNetmonWindow ();
-  GUI_CreateDTMFWindow ();
-  GUI_CreateSpeedDialWindow ();
-  GUI_CreateXkeybWindow ();
-  GUI_CreateCalendarWindow ();
-  GUI_CreateLogosWindow ();
-  GUI_CreateDataWindow();
-  GUI_CreateRingtonesWindow ();
-  CreateErrorDialog (&errorDialog, GUI_MainWindow);
-  CreateInfoDialog (&infoDialog, GUI_MainWindow);
-  CreateInCallDialog ();
-
-  act.sa_handler = RemoveZombie;
-  sigemptyset (&(act.sa_mask));
-  act.sa_flags = SA_NOCLDSTOP;
-  sigaction (SIGCHLD, &act, NULL);
-
-#if defined(__svr4__) || defined(__FreeBSD__)
-  act.sa_handler = SIG_IGN;
-  sigemptyset (&(act.sa_mask));
-  sigaction (SIGALRM, &act, NULL);
-#endif
-
-  gtk_widget_show_all (GUI_MainWindow);
-  GUI_Refresh ();
-
-  GUI_InitPhoneMonitor ();
-  pthread_create (&monitor_th, NULL, GUI_Connect, NULL);
-
-  gtk_timeout_add (1000, (GtkFunction) Update, GUI_MainWindow);
-
-  hiddenCallDialog = 0;
-}
-
-
-static void SplashScreen (void)
-{
-  GtkWidget *pixmap, *fixed;
-  GdkPixmap *gdk_pixmap;
-  GdkBitmap *mask;
-  GtkStyle *style;
-  GdkGC *gc;
-
-  SplashWindow = gtk_window_new (GTK_WINDOW_POPUP);
-  gtk_widget_realize (SplashWindow);
-
-  gtk_widget_set_usize (SplashWindow, 475, 160);
-  gtk_window_position (GTK_WINDOW (SplashWindow), GTK_WIN_POS_CENTER);
-
-  style = gtk_widget_get_default_style();
-  gc = style->black_gc;
-  gdk_pixmap = gdk_pixmap_create_from_xpm_d(SplashWindow->window, &mask,
-                                           &style->bg[GTK_STATE_NORMAL],
-                                           XPM_logo);
-  pixmap = gtk_pixmap_new(gdk_pixmap, mask);
-
-  fixed = gtk_fixed_new();
-  gtk_widget_set_usize(fixed, 261, 96);
-  gtk_fixed_put(GTK_FIXED(fixed), pixmap, 0, 0);
-  gtk_container_add(GTK_CONTAINER (SplashWindow), fixed);
-
-  gtk_widget_shape_combine_mask (SplashWindow, mask, 0, 0);
-
-  gtk_widget_show_all (SplashWindow);
-}
-
-
-static gint RemoveSplash (GtkWidget *Win)
-{
-  if (GTK_WIDGET_VISIBLE (SplashWindow))
-  {
-    gtk_timeout_remove (splashRemoveHandler);
-    gtk_widget_hide (SplashWindow);
-    gtk_widget_destroy (SplashWindow);
-    return TRUE;
-  }
-
-  return FALSE;
-}
-
-static void ReadConfig (void)
-{
-  /* Read config file */
-  if (CFG_ReadConfig(&xgnokiiConfig.model, &xgnokiiConfig.port,
-                 &xgnokiiConfig.initlength, &xgnokiiConfig.connection,
-                &xgnokiiConfig.bindir, &xgnokiiConfig.synchronizetime,false) < 0) {
-    exit(-1);
-  }
-  
-#ifndef WIN32
-  if ((xgnokiiConfig.locale = getenv ("LC_ALL")) == NULL)
-    if ((xgnokiiConfig.locale = getenv ("LC_MESSAGES")) == NULL)
-      if ((xgnokiiConfig.locale = getenv ("LANG")) == NULL)
-        xgnokiiConfig.locale = "POSIX";
-#endif
-
-  GUI_ReadXConfig();
-  max_phonebook_name_length = atoi (xgnokiiConfig.maxPhoneLen);
-  max_phonebook_sim_name_length = atoi (xgnokiiConfig.maxSIMLen);
-  
-#ifndef WIN32
-  xgnokiiConfig.xgnokiidir = DefaultXGnokiiDir;
-  xgnokiiConfig.xgnokiidocsdir = DefaultXGnokiiDocsDir;
-#endif
-  if (CheckModel (N6110_Information, xgnokiiConfig.model, CurrentConnectionType)) {
-    max_phonebook_number_length = N6110_MAX_PHONEBOOK_NUMBER_LENGTH;
-    max_phonebook_sim_number_length = N6110_MAX_PHONEBOOK_NUMBER_LENGTH;
-  }
-  else
-  {
-    max_phonebook_number_length = max_phonebook_sim_number_length = GSM_MAX_PHONEBOOK_NUMBER_LENGTH;
-  }
-
-  xgnokiiConfig.callerGroups[0] = xgnokiiConfig.callerGroups[1] =
-  xgnokiiConfig.callerGroups[2] = xgnokiiConfig.callerGroups[3] =
-  xgnokiiConfig.callerGroups[4] = xgnokiiConfig.callerGroups[5] = NULL;
-  xgnokiiConfig.smsSets = 0;
-}
-
-
-int main (int argc, char *argv[])
-{
-#ifdef USE_NLS
-  textdomain("gnokii");
-#endif
-
-  (void) gtk_set_locale ();
-
-  gtk_init (&argc, &argv);
-
-  /* Show the splash screen. */
-
-  SplashScreen ();
-
-  /* Remove it after a while. */
-
-  ReadConfig ();
-  TopLevelWindow (); 
-
-  splashRemoveHandler = gtk_timeout_add(5000, (GtkFunction) RemoveSplash, (gpointer) SplashWindow);
-
-  gtk_main ();
-
-  return(0);
-}