7 A Linux/Unix GUI for Nokia mobile phones.
8 Copyright (C) 1999 Pavel Janík ml., Hugh Blemings
9 & Ján Derfiòák <ja@mail.upjs.sk>.
11 Released under the terms of the GNU GPL, see file COPYING for more details.
14 Revision 1.1.1.1 2001/11/25 21:59:26 short
15 :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001
17 Revision 1.39 2001/11/08 16:34:20 pkot
18 Updates to work with new libsms
20 Revision 1.38 2001/09/14 13:14:03 pkot
21 Xgnokii WM fixes (Martin Lucina)
23 Revision 1.37 2001/06/27 23:52:52 pkot
24 7110/6210 updates (Marian Jancar)
26 Revision 1.36 2001/06/20 21:27:36 pkot
27 IrDA patch (Marian Jancar)
29 Revision 1.35 2001/05/24 20:47:30 chris
30 More updating of 7110 code and some of xgnokii_lowlevel changed over.
32 Revision 1.34 2001/03/23 08:24:56 ja
33 New preview for 6210 in xgnokii's logos module.
35 Revision 1.33 2001/03/19 23:43:47 pkot
36 Solaris/BSD '#if defined' cleanup
38 Revision 1.32 2001/03/13 01:21:39 pkot
39 *BSD updates (Bert Driehuis)
41 Revision 1.31 2001/03/05 10:42:02 ja
42 Pavel Machek's vcard and finegrained indicators patch.
44 Revision 1.30 2001/01/29 15:22:20 machek
45 Use integer as bitfield instead of struct of int:1.
47 Be able to read phonebook saved in gnokii format from xgnokii.
49 Revision 1.29 2001/01/15 21:10:20 ja
50 Better status reporting in xgnokii, fixed phone capabilities detection in xgnokii.
52 Revision 1.28 2000/12/20 11:49:25 ja
53 Bringing back to life smsd. It was broken after last Pawel update.
55 Revision 1.27 2000/12/19 16:18:21 pkot
56 configure script updates and added shared function for configfile reading
61 #include <stdlib.h> /* for getenv */
64 #include <time.h> /* for time */
68 # include <unistd.h> /* for usleep */
72 # include "../win32/winserial.h"
73 # define WRITEPHONE(a, b, c) WriteCommBlock(b, c)
76 # define sleep(x) Sleep((x) * 1000)
77 # define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000))
80 #include <gdk/gdkkeysyms.h>
84 #include "gsm-common.h"
86 #include "cfgreader.h"
87 #include "phones/nk7110.h"
88 #include "phones/nk6110.h"
89 #include "phones/nk3110.h"
90 #include "phones/nk2110.h"
92 #include "xgnokii_common.h"
93 #include "xgnokii_lowlevel.h"
94 #include "xgnokii_contacts.h"
95 #include "xgnokii_sms.h"
96 #include "xgnokii_netmon.h"
97 #include "xgnokii_dtmf.h"
98 #include "xgnokii_speed.h"
99 #include "xgnokii_xkeyb.h"
100 #include "xgnokii_calendar.h"
101 #include "xgnokii_logos.h"
102 #include "xgnokii_cfg.h"
103 #include "xgnokii_data.h"
105 #include "xpm/logo.xpm"
106 #include "xpm/background.xpm"
107 #include "xpm/sms.xpm"
108 #include "xpm/alarm.xpm"
110 /* Widgets for dialogs. */
111 static GtkWidget *SplashWindow;
112 static GtkWidget *GUI_MainWindow;
113 static GtkWidget *AboutDialog;
114 static ErrorDialog errorDialog = {NULL, NULL};
115 static InfoDialog infoDialog = {NULL, NULL};
116 static GtkWidget *OptionsDialog;
117 static bool optionsDialogIsOpened;
120 static GtkWidget *SMSClist;
122 /* Pixmap used for drawing all the stuff. */
123 static GdkPixmap *Pixmap = NULL;
125 /* Pixmap used for background. */
126 static GdkPixmap *BackgroundPixmap = NULL;
128 /* Pixmap used for SMS picture. */
129 static GdkPixmap *SMSPixmap = NULL;
131 /* Pixmap used for alarm picture. */
132 static GdkPixmap *AlarmPixmap = NULL;
135 /* Widget for popup menu */
136 static GtkWidget *Menu;
137 static GtkWidget *netmon_menu_item;
138 static GtkWidget *sms_menu_item;
139 static GtkWidget *calendar_menu_item;
140 static GtkWidget *logos_menu_item;
141 static GtkWidget *dtmf_menu_item;
142 static GtkWidget *speedDial_menu_item;
143 static GtkWidget *xkeyb_menu_item;
144 static GtkWidget *cg_names_option_frame;
145 static GtkWidget *sms_option_frame;
146 static GtkWidget *mail_option_frame;
147 static GtkWidget *user_option_frame;
148 static GtkWidget *data_menu_item;
150 /* Hold main configuration data for xgnokii */
151 XgnokiiConfig xgnokiiConfig;
153 gint max_phonebook_name_length;
154 gint max_phonebook_number_length;
155 gint max_phonebook_sim_name_length;
156 gint max_phonebook_sim_number_length;
158 /* Local variables */
159 static char *DefaultXGnokiiDir = XGNOKIIDIR;
160 static bool SMSSettingsInitialized = FALSE;
161 static bool CallersGroupsInitialized = FALSE;
162 static gint hiddenCallDialog;
163 static guint splashRemoveHandler;
165 static struct CallDialog {
171 GtkWidget *alarmSwitch;
172 GtkWidget *alarmHour;
181 GtkWidget *serial, *infrared, *irda;
189 GtkWidget *simNameLen;
190 GtkWidget *phoneNameLen;
198 GSM_MessageCenter smsSetting[MAX_SMS_CENTER];
205 GtkWidget *telephone;
214 static struct ConfigDialogData
216 ConnectionWidgets connection;
218 GtkWidget *groups[6];
226 static GSM_MessageCenter tempMessageSettings;
229 static inline void Help1 (GtkWidget *w, gpointer data)
231 gchar *indx = g_strdup_printf ("/help/%s/index.html", xgnokiiConfig.locale);
237 void GUI_InitCallerGroupsInf (void)
243 if (CallersGroupsInitialized)
246 gtk_label_set_text (GTK_LABEL (infoDialog.text), _("Reading caller groups names ..."));
247 gtk_widget_show_now (infoDialog.dialog);
250 xgnokiiConfig.callerGroups[0] = g_strndup( _("Familly"), MAX_CALLER_GROUP_LENGTH);
251 xgnokiiConfig.callerGroups[1] = g_strndup( _("VIP"), MAX_CALLER_GROUP_LENGTH);
252 xgnokiiConfig.callerGroups[2] = g_strndup( _("Friends"), MAX_CALLER_GROUP_LENGTH);
253 xgnokiiConfig.callerGroups[3] = g_strndup( _("Colleagues"), MAX_CALLER_GROUP_LENGTH);
254 xgnokiiConfig.callerGroups[4] = g_strndup( _("Other"), MAX_CALLER_GROUP_LENGTH);
255 xgnokiiConfig.callerGroups[5] = g_strndup( _("No group"), MAX_CALLER_GROUP_LENGTH);
257 if (phoneMonitor.supported & PM_CALLERGROUP)
258 for (i = 0; i < 5; i++)
260 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
262 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
263 e->event = Event_GetCallerGroup;
266 pthread_mutex_lock (&callerGroupMutex);
267 pthread_cond_wait (&callerGroupCond, &callerGroupMutex);
268 pthread_mutex_unlock (&callerGroupMutex);
270 if (*cg->text != '\0' && cg->status == GE_NONE)
272 g_free (xgnokiiConfig.callerGroups[i]);
273 xgnokiiConfig.callerGroups[i] = g_strndup (cg->text, MAX_CALLER_GROUP_LENGTH);
278 CallersGroupsInitialized = TRUE;
279 gtk_widget_hide (infoDialog.dialog);
280 GUIEventSend (GUI_EVENT_CALLERS_GROUPS_CHANGED);
284 static inline void DrawBackground (GtkWidget *data)
286 gdk_draw_pixmap (Pixmap,
287 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
295 int network_levels[] = {
303 static inline void DrawNetwork (GtkWidget *data, int rflevel)
309 for (i = 0; (i * 25) <= rflevel; i++)
311 float percent = ((float) rflevel - i * 25) / 25;
315 gdk_draw_rectangle (Pixmap, GTK_WIDGET (data)->style->white_gc, TRUE,
316 network_levels[4 * i] + network_levels[4 * i + 2] * (1 - percent),
317 network_levels[4 * i + 1],
318 network_levels[4 * i + 2] * percent,
319 network_levels[4 * i + 3]);
324 int battery_levels[] = {
332 static inline void DrawBattery (GtkWidget *data, int batterylevel)
336 if (batterylevel < 0)
338 if (batterylevel > 100)
340 for (i = 0; (i * 25) <= batterylevel; i++)
342 float percent = ((float) batterylevel - i * 25) / 25;
345 gdk_draw_rectangle (Pixmap, GTK_WIDGET (data)->style->white_gc, TRUE,
346 battery_levels[4 * i],
347 battery_levels[4 * i + 1],
348 battery_levels[4 * i + 2] * percent,
349 battery_levels[4 * i + 3]);
354 static inline void DrawSMS (GtkWidget *data)
356 gdk_draw_pixmap (Pixmap,
357 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
365 static inline void DrawAlarm (GtkWidget *data)
367 gdk_draw_pixmap (Pixmap,
368 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
376 static inline void DrawText (GtkWidget *data, int at, char *text)
378 static GdkFont *Font;
380 Font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-90-*-*-*-*-iso8859-*");
381 gdk_draw_string (Pixmap,
383 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
388 static inline void DrawSMSReceived (GtkWidget *data)
390 DrawText (data, 25, _("Short Message received"));
394 static inline void DrawWorking (GtkWidget *data)
396 DrawText(data, 40, _("Working ..."));
400 static inline void HideCallDialog (GtkWidget *widget, gpointer data)
402 hiddenCallDialog = 1;
403 gtk_widget_hide (GTK_WIDGET (data));
407 static void CreateInCallDialog (void)
409 GtkWidget *button, *hbox;
411 inCallDialog.dialog = gtk_dialog_new ();
412 gtk_window_position (GTK_WINDOW (inCallDialog.dialog), GTK_WIN_POS_MOUSE);
413 gtk_window_set_title (GTK_WINDOW (inCallDialog.dialog), _("Call in progress"));
414 gtk_container_set_border_width (GTK_CONTAINER (inCallDialog.dialog), 5);
415 gtk_signal_connect (GTK_OBJECT (inCallDialog.dialog), "delete_event",
416 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
418 hbox = gtk_hbox_new (FALSE, 0);
419 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inCallDialog.dialog)->vbox), hbox, FALSE, FALSE, 5);
420 gtk_widget_show (hbox);
422 inCallDialog.label = gtk_label_new ("");
423 gtk_box_pack_start (GTK_BOX (hbox), inCallDialog.label, FALSE, FALSE, 0);
424 gtk_widget_show (inCallDialog.label);
426 button = gtk_button_new_with_label (_("Hide"));
427 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inCallDialog.dialog)->action_area),
428 button, TRUE, FALSE, 0);
429 gtk_signal_connect (GTK_OBJECT (button), "clicked",
430 GTK_SIGNAL_FUNC (HideCallDialog), (gpointer) inCallDialog.dialog);
431 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
432 gtk_widget_grab_default (button);
433 gtk_widget_show (button);
437 static gint Update (gpointer data)
439 static gchar lastCallNum[20] = "";
440 static gchar callBuf[80];
441 static gchar timeBuf[10];
442 static gchar *anonym = "anonymous";
443 static struct tm stm;
444 static gint smsNumber = 0;
445 static gint callTimerStart = 0;
449 static bool outgoing = TRUE;
452 /* The number of SMS messages before second */
455 /* The number of second for we should display "Short Message Received" message */
456 static int smsreceived=-1;
458 DrawBackground (data);
460 DrawNetwork (data, phoneMonitor.rfLevel);
462 DrawBattery (data, phoneMonitor.batteryLevel);
464 if (phoneMonitor.alarm)
467 if (phoneMonitor.working)
468 DrawText (data, 25, phoneMonitor.working);
470 pthread_mutex_lock (&smsMutex);
471 if (phoneMonitor.sms.unRead > 0)
475 if (phoneMonitor.sms.unRead > smsold && smsold != -1)
476 smsreceived = 10; /* The message "Short Message Received" is displayed for 10s */
478 if (smsNumber != phoneMonitor.sms.number)
479 GUIEventSend (GUI_EVENT_SMS_NUMBER_CHANGED);
481 smsold = phoneMonitor.sms.unRead;
483 smsNumber = phoneMonitor.sms.number;
485 pthread_mutex_unlock (&smsMutex);
487 if (smsreceived >= 0)
489 DrawSMSReceived (data);
493 pthread_mutex_lock (&callMutex);
494 if (phoneMonitor.call.callInProgress != CS_Idle)
496 if (phoneMonitor.call.callInProgress == CS_InProgress)
499 callTimerStart = callTimer = time (NULL);
501 callTimer = time (NULL);
504 if (phoneMonitor.call.callInProgress == CS_Waiting)
508 if (*phoneMonitor.call.callNum == '\0')
510 else if (strncmp (phoneMonitor.call.callNum, lastCallNum, 20))
512 strncpy (lastCallNum, phoneMonitor.call.callNum, 20);
513 lastCallNum[19] = '\0';
514 name = GUI_GetName (phoneMonitor.call.callNum);
516 name = phoneMonitor.call.callNum;
519 t = (time_t) difftime (callTimer, callTimerStart);
520 (void) gmtime_r (&t, &stm);
521 strftime (timeBuf, 10, "%T", &stm);
523 g_snprintf (callBuf, 80, _("Outgoing call in progress:\nTime: %s"),
526 g_snprintf (callBuf, 80, _("Incomming call from: %s\nTime: %s"),
529 gtk_label_set_text (GTK_LABEL (inCallDialog.label), callBuf);
530 if (!GTK_WIDGET_VISIBLE (inCallDialog.dialog) && !hiddenCallDialog)
531 gtk_widget_show (inCallDialog.dialog);
535 callTimerStart = callTimer = 0;
538 if (GTK_WIDGET_VISIBLE (inCallDialog.dialog))
539 gtk_widget_hide (inCallDialog.dialog);
540 hiddenCallDialog = 0;
542 pthread_mutex_unlock (&callMutex);
544 gtk_widget_draw (data,NULL);
546 GUIEventSend (GUI_EVENT_NETMON_CHANGED);
552 /* Redraw the screen from the backing pixmap */
553 static inline gint ExposeEvent (GtkWidget *widget, GdkEventExpose *event)
555 gdk_draw_pixmap (widget->window,
556 widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
558 event->area.x, event->area.y,
559 event->area.x, event->area.y,
560 event->area.width, event->area.height);
566 static void ParseSMSCenters (void)
571 gtk_clist_freeze (GTK_CLIST (SMSClist));
573 gtk_clist_clear (GTK_CLIST (SMSClist));
575 for (i = 0; i < xgnokiiConfig.smsSets; i++)
578 if (*(configDialogData.sms.smsSetting[i].Name) == '\0')
579 row[0] = g_strdup_printf (_("Set %d"), i + 1);
581 row[0] = g_strdup (configDialogData.sms.smsSetting[i].Name);
583 row[1] = g_strdup (configDialogData.sms.smsSetting[i].Number);
585 switch (configDialogData.sms.smsSetting[i].Format)
588 row[2] = g_strdup (_("Text"));
592 row[2] = g_strdup (_("Paging"));
596 row[2] = g_strdup (_("Fax"));
601 row[2] = g_strdup (_("E-Mail"));
605 row[2] = g_strdup (_("ERMES"));
609 row[2] = g_strdup (_("X.400"));
613 row[2] = g_strdup (_("Voice"));
617 row[2] = g_strdup (_("Text"));
621 switch (configDialogData.sms.smsSetting[i].Validity)
624 row[3] = g_strdup (_("1 h"));
628 row[3] = g_strdup (_("6 h"));
632 row[3] = g_strdup (_("24 h"));
636 row[3] = g_strdup (_("72 h"));
640 row[3] = g_strdup (_("1 week"));
644 row[3] = g_strdup (_("Max. time"));
648 row[3] = g_strdup (_("24 h"));
652 gtk_clist_append( GTK_CLIST (SMSClist), row);
654 for (j = 0; j < 4; j++)
658 gtk_clist_thaw (GTK_CLIST (SMSClist));
662 static void RefreshUserStatus (void)
665 configDialogData.user.used = GTK_ENTRY (configDialogData.user.name)->text_length
666 + GTK_ENTRY (configDialogData.user.title)->text_length
667 + GTK_ENTRY (configDialogData.user.company)->text_length
668 + GTK_ENTRY (configDialogData.user.telephone)->text_length
669 + GTK_ENTRY (configDialogData.user.fax)->text_length
670 + GTK_ENTRY (configDialogData.user.email)->text_length
671 + GTK_ENTRY (configDialogData.user.address)->text_length;
672 configDialogData.user.max = MAX_BUSINESS_CARD_LENGTH;
673 if (GTK_ENTRY (configDialogData.user.telephone)->text_length > 0)
674 configDialogData.user.max -= 4;
675 if (GTK_ENTRY (configDialogData.user.fax)->text_length > 0)
676 configDialogData.user.max -= 4;
677 g_snprintf (buf, 8, "%d/%d", configDialogData.user.used, configDialogData.user.max);
678 gtk_label_set_text (GTK_LABEL (configDialogData.user.status), buf);
682 void GUI_InitSMSSettings (void)
688 if (SMSSettingsInitialized)
691 gtk_label_set_text (GTK_LABEL (infoDialog.text), _("Reading SMS centers ..."));
692 gtk_widget_show_now (infoDialog.dialog);
695 for (i = 1; i <= MAX_SMS_CENTER; i++)
697 xgnokiiConfig.smsSetting[i - 1].No = i;
698 c = (D_SMSCenter *) g_malloc (sizeof (D_SMSCenter));
699 c->center = &(xgnokiiConfig.smsSetting[i - 1]);
701 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
702 e->event = Event_GetSMSCenter;
705 pthread_mutex_lock (&smsCenterMutex);
706 pthread_cond_wait (&smsCenterCond, &smsCenterMutex);
707 pthread_mutex_unlock (&smsCenterMutex);
709 if (c->status != GE_NONE)
714 configDialogData.sms.smsSetting[i - 1] = xgnokiiConfig.smsSetting[i - 1];
717 xgnokiiConfig.smsSets = i - 1;
721 SMSSettingsInitialized = TRUE;
723 gtk_widget_hide (infoDialog.dialog);
727 void GUI_ShowOptions (void)
733 if (optionsDialogIsOpened)
736 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.port), xgnokiiConfig.port);
738 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.model), xgnokiiConfig.model);
740 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.init), xgnokiiConfig.initlength);
742 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.bindir), xgnokiiConfig.bindir);
744 if(!strcmp(xgnokiiConfig.connection, "serial")) {
745 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.serial), TRUE);
746 } else if(!strcmp(xgnokiiConfig.connection, "infrared")) {
747 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.infrared), TRUE);
749 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.irda), TRUE);
753 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.model), phoneMonitor.phone.model);
755 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.version), phoneMonitor.phone.version);
757 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.revision), phoneMonitor.phone.revision);
759 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.imei), phoneMonitor.phone.imei);
761 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen),
762 atof (xgnokiiConfig.maxSIMLen));
764 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen),
765 atof (xgnokiiConfig.maxPhoneLen));
768 alarm = (D_Alarm *) g_malloc (sizeof (D_Alarm));
769 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
770 e->event = Event_GetAlarm;
773 pthread_mutex_lock (&alarmMutex);
774 pthread_cond_wait (&alarmCond, &alarmMutex);
775 pthread_mutex_unlock (&alarmMutex);
777 if (alarm->status != GE_NONE)
779 xgnokiiConfig.alarmSupported = FALSE;
780 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), FALSE);
781 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), 0.0);
782 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), 0.0);
786 xgnokiiConfig.alarmSupported = TRUE;
787 if (alarm->time.AlarmEnabled)
788 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), TRUE);
790 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), FALSE);
791 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), alarm->time.Hour);
792 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), alarm->time.Minute);
797 if (phoneMonitor.supported & PM_SMS)
799 gtk_widget_show (sms_option_frame);
800 GUI_InitSMSSettings ();
803 gtk_widget_hide (sms_option_frame);
807 if (phoneMonitor.supported & PM_SMS)
809 gtk_widget_show (user_option_frame);
811 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.name),
812 xgnokiiConfig.user.name);
813 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.title),
814 xgnokiiConfig.user.title);
815 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.company),
816 xgnokiiConfig.user.company);
817 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.telephone),
818 xgnokiiConfig.user.telephone);
819 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.fax),
820 xgnokiiConfig.user.fax);
821 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.email),
822 xgnokiiConfig.user.email);
823 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.address),
824 xgnokiiConfig.user.address);
829 gtk_widget_hide (user_option_frame);
833 if (phoneMonitor.supported & PM_CALLERGROUP)
835 gtk_widget_show (cg_names_option_frame);
836 GUI_InitCallerGroupsInf ();
837 for ( i = 0; i < 6; i++)
838 gtk_entry_set_text (GTK_ENTRY (configDialogData.groups[i]), xgnokiiConfig.callerGroups[i]);
841 gtk_widget_hide (cg_names_option_frame);
844 if (phoneMonitor.supported & PM_SMS)
846 gtk_widget_show (mail_option_frame);
847 gtk_entry_set_text (GTK_ENTRY (configDialogData.mailbox),
848 xgnokiiConfig.mailbox);;
851 gtk_widget_hide (mail_option_frame);
854 gtk_entry_set_text (GTK_ENTRY (configDialogData.help),
855 xgnokiiConfig.helpviewer);
857 optionsDialogIsOpened = TRUE;
858 gtk_widget_show (OptionsDialog);
862 inline void GUI_ShowAbout (void)
864 gtk_widget_show (AboutDialog);
868 inline void GUI_HideAbout(void)
870 gtk_widget_hide (AboutDialog);
874 static void MainExit (void)
876 PhoneEvent *e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
878 e->event = Event_Exit;
881 pthread_join (monitor_th, NULL);
886 static void ShowMenu (GdkEventButton *event)
888 GdkEventButton *bevent = (GdkEventButton *) event;
890 if (phoneMonitor.supported & PM_KEYBOARD)
891 gtk_widget_show (xkeyb_menu_item);
893 gtk_widget_hide (xkeyb_menu_item);
895 if (phoneMonitor.supported & PM_NETMONITOR)
896 gtk_widget_show (netmon_menu_item);
898 gtk_widget_hide (netmon_menu_item);
900 if (phoneMonitor.supported & PM_SMS)
901 gtk_widget_show (sms_menu_item);
903 gtk_widget_hide (sms_menu_item);
905 if (phoneMonitor.supported & PM_CALENDAR)
906 gtk_widget_show (calendar_menu_item);
908 gtk_widget_hide (calendar_menu_item);
910 if (phoneMonitor.supported & PM_DTMF)
911 gtk_widget_show (dtmf_menu_item);
913 gtk_widget_hide (dtmf_menu_item);
915 if (phoneMonitor.supported & PM_SPEEDDIAL)
916 gtk_widget_show (speedDial_menu_item);
918 gtk_widget_hide (speedDial_menu_item);
920 if (phoneMonitor.supported & PM_DATA)
921 gtk_widget_show (data_menu_item);
923 gtk_widget_hide (data_menu_item);
925 gtk_menu_popup (GTK_MENU (Menu), NULL, NULL, NULL, NULL,
926 bevent->button, bevent->time);
930 static gint ButtonPressEvent (GtkWidget *widget, GdkEventButton *event)
933 if (event->button == 1) {
936 if (event->x >= 206 && event->x <= 221 &&
937 event->y >= 42 && event->y <= 55)
939 if (GUI_ContactsIsChanged())
940 GUI_QuitSaveContacts();
944 else if ((event->x >= 180 && event->x <= 195 &&
945 event->y >= 30 && event->y <= 50) ||
946 (event->x >= 185 && event->x <= 215 &&
947 event->y >= 15 && event->y <= 30))
951 else if (event->x >= 190 && event->x <= 210 &&
952 event->y >= 70 && event->y <= 85)
954 if (!phoneMonitor.supported & PM_SMS)
955 phoneMonitor.working = _("SMS not supported!");
959 else if (event->x >= 235 && event->x <= 248 &&
960 event->y >= 27 && event->y <= 75)
962 if (!phoneMonitor.supported & PM_CALENDAR)
963 phoneMonitor.working = _("Calendar not supported!");
967 else if (event->x >= 245 && event->x <= 258 &&
968 event->y >= 83 && event->y <= 93)
973 else if (event->button == 3)
976 // g_print ("event->x: %f\n", event->x);
977 // g_print ("event->y: %f\n", event->y);
983 static void OptionsApplyCallback (GtkWidget *widget, gpointer data )
990 max_phonebook_sim_name_length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen));
991 max_phonebook_name_length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen));
992 g_free (xgnokiiConfig.maxSIMLen);
993 g_free (xgnokiiConfig.maxPhoneLen);
994 xgnokiiConfig.maxSIMLen = g_strdup_printf ("%d", max_phonebook_sim_name_length);
995 xgnokiiConfig.maxPhoneLen = g_strdup_printf ("%d", max_phonebook_name_length);
999 FIXME: we should also allow to set the alarm off :-) */
1000 if (xgnokiiConfig.alarmSupported
1001 && GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch)->active)
1003 alarm = (D_Alarm *) g_malloc (sizeof (D_Alarm));
1004 alarm->time.Hour = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour));
1005 alarm->time.Minute = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin));
1006 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1007 e->event = Event_SetAlarm;
1009 GUI_InsertEvent (e);
1013 if (phoneMonitor.supported & PM_SMS)
1015 for (i = 0; i < xgnokiiConfig.smsSets; i++)
1016 xgnokiiConfig.smsSetting[i] = configDialogData.sms.smsSetting[i];
1017 GUIEventSend (GUI_EVENT_SMS_CENTERS_CHANGED);
1021 if (phoneMonitor.supported & PM_SMS)
1023 g_free(xgnokiiConfig.user.name);
1024 xgnokiiConfig.user.name = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.name)));
1025 g_free(xgnokiiConfig.user.title);
1026 xgnokiiConfig.user.title = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.title)));
1027 g_free(xgnokiiConfig.user.company);
1028 xgnokiiConfig.user.company = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.company)));
1029 g_free(xgnokiiConfig.user.telephone);
1030 xgnokiiConfig.user.telephone = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.telephone)));
1031 g_free(xgnokiiConfig.user.fax);
1032 xgnokiiConfig.user.fax = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.fax)));
1033 g_free(xgnokiiConfig.user.email);
1034 xgnokiiConfig.user.email = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.email)));
1035 g_free(xgnokiiConfig.user.address);
1036 xgnokiiConfig.user.address = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.address)));
1040 if (phoneMonitor.supported & PM_CALLERGROUP)
1042 for ( i = 0; i < 6; i++)
1044 strncpy(xgnokiiConfig.callerGroups[i],
1045 gtk_entry_get_text(GTK_ENTRY (configDialogData.groups[i])),
1046 MAX_CALLER_GROUP_LENGTH);
1047 xgnokiiConfig.callerGroups[i][MAX_CALLER_GROUP_LENGTH] = '\0';
1049 GUIEventSend (GUI_EVENT_CALLERS_GROUPS_CHANGED);
1050 GUIEventSend (GUI_EVENT_CONTACTS_CHANGED);
1054 if (phoneMonitor.supported & PM_SMS)
1056 g_free(xgnokiiConfig.mailbox);
1057 xgnokiiConfig.mailbox = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.mailbox)));
1061 g_free(xgnokiiConfig.helpviewer);
1062 xgnokiiConfig.helpviewer = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.help)));
1066 static void OptionsSaveCallback (GtkWidget *widget, gpointer data )
1073 //gtk_widget_hide(GTK_WIDGET(data));
1074 OptionsApplyCallback (widget, data);
1075 for (i = 0; i < xgnokiiConfig.smsSets; i++)
1077 xgnokiiConfig.smsSetting[i].No = i + 1;
1078 c = (D_SMSCenter *) g_malloc (sizeof (D_SMSCenter));
1079 c->center = &(xgnokiiConfig.smsSetting[i]);
1080 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1081 e->event = Event_SetSMSCenter;
1083 GUI_InsertEvent (e);
1086 if (phoneMonitor.supported & PM_CALLERGROUP)
1088 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1090 if (strcmp (xgnokiiConfig.callerGroups[0], _("Familly")) == 0)
1093 strncpy (cg->text, xgnokiiConfig.callerGroups[0], 256);
1094 cg->text[255] = '\0';
1095 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1096 e->event = Event_SendCallerGroup;
1098 GUI_InsertEvent (e);
1100 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1102 if (strcmp (xgnokiiConfig.callerGroups[1], _("VIP")) == 0)
1105 strncpy (cg->text, xgnokiiConfig.callerGroups[1], 256);
1106 cg->text[255] = '\0';
1107 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1108 e->event = Event_SendCallerGroup;
1110 GUI_InsertEvent (e);
1112 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1114 if (strcmp (xgnokiiConfig.callerGroups[2], _("Friends")) == 0)
1117 strncpy (cg->text, xgnokiiConfig.callerGroups[2], 256);
1118 cg->text[255] = '\0';
1119 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1120 e->event = Event_SendCallerGroup;
1122 GUI_InsertEvent (e);
1124 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1126 if (strcmp (xgnokiiConfig.callerGroups[3], _("Colleagues")) == 0)
1129 strncpy (cg->text, xgnokiiConfig.callerGroups[3], 256);
1130 cg->text[255] = '\0';
1131 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1132 e->event = Event_SendCallerGroup;
1134 GUI_InsertEvent (e);
1136 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1138 if (strcmp (xgnokiiConfig.callerGroups[4], _("Other")) == 0)
1141 strncpy (cg->text, xgnokiiConfig.callerGroups[4], 256);
1142 cg->text[255] = '\0';
1143 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1144 e->event = Event_SendCallerGroup;
1146 GUI_InsertEvent (e);
1149 if (GUI_SaveXConfig())
1151 gtk_label_set_text (GTK_LABEL(errorDialog.text), _("Error writing configuration file!"));
1152 gtk_widget_show (errorDialog.dialog);
1157 static GtkWidget *CreateMenu (void)
1159 GtkWidget *menu, *menu_items;
1161 menu = gtk_menu_new ();
1163 menu_items = gtk_menu_item_new_with_label (_("Contacts"));
1164 gtk_menu_append (GTK_MENU (menu), menu_items);
1165 gtk_signal_connect_object (GTK_OBJECT (menu_items), "activate",
1166 GTK_SIGNAL_FUNC (GUI_ShowContacts), NULL);
1167 gtk_widget_show (menu_items);
1169 sms_menu_item = gtk_menu_item_new_with_label (_("SMS"));
1170 gtk_menu_append (GTK_MENU (menu), sms_menu_item);
1171 gtk_signal_connect_object (GTK_OBJECT (sms_menu_item), "activate",
1172 GTK_SIGNAL_FUNC (GUI_ShowSMS), NULL);
1174 calendar_menu_item = gtk_menu_item_new_with_label (_("Calendar"));
1175 gtk_menu_append (GTK_MENU (menu), calendar_menu_item);
1176 gtk_signal_connect_object (GTK_OBJECT (calendar_menu_item), "activate",
1177 GTK_SIGNAL_FUNC (GUI_ShowCalendar), NULL);
1179 logos_menu_item = gtk_menu_item_new_with_label (_("Logos"));
1180 gtk_menu_append (GTK_MENU (menu), logos_menu_item);
1181 gtk_signal_connect_object (GTK_OBJECT (logos_menu_item), "activate",
1182 GTK_SIGNAL_FUNC (GUI_ShowLogosWindow), NULL);
1183 gtk_widget_show(logos_menu_item);
1185 dtmf_menu_item = gtk_menu_item_new_with_label (_("DTMF"));
1186 gtk_menu_append (GTK_MENU (menu), dtmf_menu_item);
1187 gtk_signal_connect_object (GTK_OBJECT (dtmf_menu_item), "activate",
1188 GTK_SIGNAL_FUNC (GUI_ShowDTMF), NULL);
1190 speedDial_menu_item = gtk_menu_item_new_with_label (_("Speed Dial"));
1191 gtk_menu_append (GTK_MENU (menu), speedDial_menu_item);
1192 gtk_signal_connect_object (GTK_OBJECT (speedDial_menu_item), "activate",
1193 GTK_SIGNAL_FUNC (GUI_ShowSpeedDial), NULL);
1195 xkeyb_menu_item = gtk_menu_item_new_with_label (_("Keyboard"));
1196 gtk_menu_append (GTK_MENU (menu), xkeyb_menu_item);
1197 gtk_signal_connect_object (GTK_OBJECT (xkeyb_menu_item), "activate",
1198 GTK_SIGNAL_FUNC (GUI_ShowXkeyb), NULL);
1200 netmon_menu_item = gtk_menu_item_new_with_label (_("Net Monitor"));
1201 gtk_menu_append (GTK_MENU (menu), netmon_menu_item);
1202 gtk_signal_connect_object (GTK_OBJECT (netmon_menu_item), "activate",
1203 GTK_SIGNAL_FUNC (GUI_ShowNetmon), NULL);
1205 data_menu_item = gtk_menu_item_new_with_label (_("Data calls"));
1206 gtk_menu_append (GTK_MENU (menu), data_menu_item);
1207 gtk_signal_connect_object (GTK_OBJECT (data_menu_item), "activate",
1208 GTK_SIGNAL_FUNC (GUI_ShowData), NULL);
1210 menu_items = gtk_menu_item_new ();
1211 gtk_menu_append (GTK_MENU (menu), menu_items);
1212 gtk_widget_show (menu_items);
1214 menu_items = gtk_menu_item_new_with_label (_("Options"));
1215 gtk_menu_append (GTK_MENU (menu), menu_items);
1216 gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
1217 GTK_SIGNAL_FUNC(GUI_ShowOptions), NULL);
1218 gtk_widget_show (menu_items);
1220 menu_items = gtk_menu_item_new ();
1221 gtk_menu_append (GTK_MENU (menu), menu_items);
1222 gtk_widget_show (menu_items);
1224 menu_items = gtk_menu_item_new_with_label (_("Help"));
1225 gtk_menu_append (GTK_MENU (menu), menu_items);
1226 gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
1227 GTK_SIGNAL_FUNC(Help1), NULL);
1228 gtk_widget_show (menu_items);
1230 menu_items = gtk_menu_item_new_with_label (_("About"));
1231 gtk_menu_append (GTK_MENU (menu), menu_items);
1232 gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
1233 GTK_SIGNAL_FUNC (GUI_ShowAbout), NULL);
1234 gtk_widget_show (menu_items);
1240 static GtkWidget *CreateAboutDialog (void)
1243 GtkWidget *button, *hbox, *label;
1246 dialog = gtk_dialog_new ();
1247 gtk_window_set_title (GTK_WINDOW (dialog), _("About"));
1248 gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
1249 gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
1250 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
1251 button = gtk_button_new_with_label (_("Ok"));
1252 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1253 button, TRUE, FALSE, 5);
1254 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1255 GTK_SIGNAL_FUNC (GUI_HideAbout), NULL);
1256 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1257 gtk_widget_grab_default (button);
1258 gtk_widget_show (button);
1260 hbox = gtk_hbox_new (FALSE, 0);
1261 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
1262 gtk_widget_show (hbox);
1264 g_snprintf (buf, 2000, _("xgnokii version: %s\ngnokii version: %s\n\n\
1265 Copyright (C) 1999,2000 Pavel Janík ml.,\nHugh Blemings, Jan Derfinak and others\n\
1266 xgnokii is free software, covered by the GNU General Public License, and you are\n\
1267 welcome to change it and/or distribute copies of it under certain conditions.\n\
1268 There is absolutely no waranty for xgnokii. See GPL for details.\n"),
1270 label = gtk_label_new ((gchar *) buf);
1271 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
1272 gtk_widget_show (label);
1278 static inline void SetFormat (GtkWidget *item, gpointer data)
1280 tempMessageSettings.Format = GPOINTER_TO_INT (data);
1284 static inline void SetValidity (GtkWidget *item, gpointer data)
1286 tempMessageSettings.Validity = GPOINTER_TO_INT (data);
1290 static inline void OptionsDeleteEvent (GtkWidget *widget, GdkEvent *event, gpointer data )
1292 gtk_widget_hide( GTK_WIDGET (widget));
1293 optionsDialogIsOpened = FALSE;
1297 static inline void OptionsCloseCallback (GtkWidget *widget, gpointer data )
1299 gtk_widget_hide(GTK_WIDGET(data));
1300 optionsDialogIsOpened = FALSE;
1304 static gint CheckInUserDataLength (GtkWidget *widget,
1306 gpointer callback_data)
1310 len = configDialogData.user.max - (GTK_ENTRY (configDialogData.user.name)->text_length
1311 + GTK_ENTRY (configDialogData.user.title)->text_length
1312 + GTK_ENTRY (configDialogData.user.company)->text_length
1313 + GTK_ENTRY (configDialogData.user.telephone)->text_length
1314 + GTK_ENTRY (configDialogData.user.fax)->text_length
1315 + GTK_ENTRY (configDialogData.user.email)->text_length
1316 + GTK_ENTRY (configDialogData.user.address)->text_length
1317 - GTK_ENTRY (widget)->text_length);
1321 gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
1325 gtk_entry_set_editable (GTK_ENTRY (widget), TRUE);
1326 if (GPOINTER_TO_INT (callback_data) == 3
1327 || GPOINTER_TO_INT (callback_data) == 4)
1329 if ((GPOINTER_TO_INT (callback_data) == 3
1330 && GTK_ENTRY (configDialogData.user.telephone)->text_length == 0)
1331 || (GPOINTER_TO_INT (callback_data) == 4
1332 && GTK_ENTRY (configDialogData.user.fax)->text_length == 0))
1337 gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
1341 if (len > max_phonebook_number_length)
1342 len = max_phonebook_number_length;
1345 gtk_entry_set_max_length (GTK_ENTRY (widget), len);
1350 static inline gint CheckOutUserDataLength (GtkWidget *widget,
1352 gpointer callback_data)
1354 gtk_entry_set_max_length (GTK_ENTRY (widget), GPOINTER_TO_INT (callback_data));
1359 static inline gint RefreshUserStatusCallBack (GtkWidget *widget,
1361 gpointer callback_data)
1363 RefreshUserStatus ();
1364 if (GTK_EDITABLE (widget)->editable == FALSE)
1366 if (event->keyval == GDK_BackSpace || event->keyval == GDK_Clear ||
1367 event->keyval == GDK_Insert || event->keyval == GDK_Delete ||
1368 event->keyval == GDK_Home || event->keyval == GDK_End ||
1369 event->keyval == GDK_Left || event->keyval == GDK_Right ||
1370 event->keyval == GDK_Return ||
1371 (event->keyval >= 0x20 && event->keyval <= 0xFF))
1378 static void OkEditSMSSetDialog (GtkWidget *w, gpointer data)
1381 strncpy(configDialogData.sms.smsSetting
1382 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name,
1383 gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.set)),
1384 GSM_MAX_SMS_CENTER_NAME_LENGTH);
1385 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name[GSM_MAX_SMS_CENTER_NAME_LENGTH - 1]
1388 strncpy(configDialogData.sms.smsSetting
1389 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number,
1390 gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.number)),
1391 GSM_MAX_SMS_CENTER_LENGTH);
1392 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number[GSM_MAX_SMS_CENTER_LENGTH]
1395 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format
1396 = tempMessageSettings.Format;
1398 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity
1399 = tempMessageSettings.Validity;
1403 gtk_widget_hide (GTK_WIDGET (data));
1407 static inline void EditSMSSetDialogClick (GtkWidget *clist,
1410 GdkEventButton *event,
1413 if(event && event->type == GDK_2BUTTON_PRESS)
1414 gtk_signal_emit_by_name(GTK_OBJECT (data), "clicked");
1418 static void ShowEditSMSSetDialog (GtkWidget *w, gpointer data)
1420 static GtkWidget *dialog = NULL;
1421 GtkWidget *button, *label, *hbox, *menu, *item;
1423 if (GTK_CLIST (SMSClist)->selection == NULL)
1428 dialog = gtk_dialog_new();
1429 gtk_window_set_title (GTK_WINDOW (dialog), _("Edit SMS Setting"));
1430 gtk_window_set_modal(GTK_WINDOW (dialog), TRUE);
1431 gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
1432 gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
1433 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
1435 button = gtk_button_new_with_label (_("Ok"));
1436 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1437 button, TRUE, TRUE, 10);
1438 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1439 GTK_SIGNAL_FUNC (OkEditSMSSetDialog), (gpointer) dialog);
1440 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1441 gtk_widget_grab_default (button);
1442 gtk_widget_show (button);
1443 button = gtk_button_new_with_label (_("Cancel"));
1444 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1445 button, TRUE, TRUE, 10);
1446 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1447 GTK_SIGNAL_FUNC (CancelDialog), (gpointer) dialog);
1448 gtk_widget_show (button);
1450 gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
1452 hbox = gtk_hbox_new (FALSE, 0);
1453 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
1454 gtk_widget_show (hbox);
1456 label = gtk_label_new (_("Set's name:"));
1457 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
1458 gtk_widget_show (label);
1460 configDialogData.sms.set = gtk_entry_new_with_max_length(GSM_MAX_SMS_CENTER_NAME_LENGTH - 1);
1461 gtk_widget_set_usize (configDialogData.sms.set, 110, 22);
1462 gtk_box_pack_end(GTK_BOX(hbox), configDialogData.sms.set, FALSE, FALSE, 2);
1463 gtk_widget_show (configDialogData.sms.set);
1465 hbox = gtk_hbox_new (FALSE, 0);
1466 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
1467 gtk_widget_show (hbox);
1469 label = gtk_label_new (_("Center:"));
1470 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
1471 gtk_widget_show (label);
1473 configDialogData.sms.number = gtk_entry_new_with_max_length(GSM_MAX_SMS_CENTER_LENGTH - 1);
1474 gtk_widget_set_usize (configDialogData.sms.number, 110, 22);
1475 gtk_box_pack_end(GTK_BOX(hbox), configDialogData.sms.number, FALSE, FALSE, 2);
1476 gtk_widget_show (configDialogData.sms.number);
1478 hbox = gtk_hbox_new (FALSE, 0);
1479 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 9);
1480 gtk_widget_show (hbox);
1482 label = gtk_label_new (_("Sending Format:"));
1483 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1484 gtk_widget_show (label);
1486 configDialogData.sms.format = gtk_option_menu_new ();
1487 menu = gtk_menu_new ();
1488 gtk_widget_set_usize (configDialogData.sms.format, 110, 28);
1490 item = gtk_menu_item_new_with_label (_("Text"));
1491 gtk_signal_connect (GTK_OBJECT (item), "activate",
1492 GTK_SIGNAL_FUNC(SetFormat),
1493 (gpointer) GSMF_Text);
1494 gtk_widget_show (item);
1495 gtk_menu_append (GTK_MENU (menu), item);
1497 item = gtk_menu_item_new_with_label (_("Fax"));
1498 gtk_signal_connect (GTK_OBJECT (item), "activate",
1499 GTK_SIGNAL_FUNC(SetFormat),
1500 (gpointer) GSMF_Fax);
1501 gtk_widget_show (item);
1502 gtk_menu_append (GTK_MENU (menu), item);
1504 item = gtk_menu_item_new_with_label (_("Paging"));
1505 gtk_signal_connect (GTK_OBJECT (item), "activate",
1506 GTK_SIGNAL_FUNC(SetFormat),
1507 (gpointer) GSMF_Paging);
1508 gtk_widget_show (item);
1509 gtk_menu_append (GTK_MENU (menu), item);
1511 item = gtk_menu_item_new_with_label (_("E-Mail"));
1512 gtk_signal_connect (GTK_OBJECT (item), "activate",
1513 GTK_SIGNAL_FUNC(SetFormat),
1514 (gpointer) GSMF_Email);
1515 gtk_widget_show (item);
1516 gtk_menu_append (GTK_MENU (menu), item);
1518 gtk_option_menu_set_menu (GTK_OPTION_MENU (configDialogData.sms.format), menu);
1519 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.sms.format, FALSE, FALSE, 2);
1520 gtk_widget_show (configDialogData.sms.format);
1522 hbox = gtk_hbox_new (FALSE, 0);
1523 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 9);
1524 gtk_widget_show (hbox);
1526 label = gtk_label_new (_("Validity Period:"));
1527 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1528 gtk_widget_show (label);
1530 configDialogData.sms.validity = gtk_option_menu_new ();
1531 menu = gtk_menu_new ();
1532 gtk_widget_set_usize (configDialogData.sms.validity, 110, 28);
1534 item = gtk_menu_item_new_with_label (_("Max. Time"));
1535 gtk_signal_connect (GTK_OBJECT (item), "activate",
1536 GTK_SIGNAL_FUNC(SetValidity),
1537 (gpointer) GSMV_Max_Time);
1538 gtk_widget_show (item);
1539 gtk_menu_append (GTK_MENU (menu), item);
1541 item = gtk_menu_item_new_with_label (_("1 h"));
1542 gtk_signal_connect (GTK_OBJECT (item), "activate",
1543 GTK_SIGNAL_FUNC(SetValidity),
1544 (gpointer) GSMV_1_Hour);
1545 gtk_widget_show (item);
1546 gtk_menu_append (GTK_MENU (menu), item);
1548 item = gtk_menu_item_new_with_label (_("6 h"));
1549 gtk_signal_connect (GTK_OBJECT (item), "activate",
1550 GTK_SIGNAL_FUNC(SetValidity),
1551 (gpointer) GSMV_6_Hours);
1552 gtk_widget_show (item);
1553 gtk_menu_append (GTK_MENU (menu), item);
1555 item = gtk_menu_item_new_with_label (_("24 h"));
1556 gtk_signal_connect (GTK_OBJECT (item), "activate",
1557 GTK_SIGNAL_FUNC(SetValidity),
1558 (gpointer) GSMV_24_Hours);
1559 gtk_widget_show (item);
1560 gtk_menu_append (GTK_MENU (menu), item);
1562 item = gtk_menu_item_new_with_label (_("72 h"));
1563 gtk_signal_connect (GTK_OBJECT (item), "activate",
1564 GTK_SIGNAL_FUNC(SetValidity),
1565 (gpointer) GSMV_72_Hours);
1566 gtk_widget_show (item);
1567 gtk_menu_append (GTK_MENU (menu), item);
1569 item = gtk_menu_item_new_with_label (_("1 week"));
1570 gtk_signal_connect (GTK_OBJECT (item), "activate",
1571 GTK_SIGNAL_FUNC(SetValidity),
1572 (gpointer) GSMV_1_Week);
1573 gtk_widget_show (item);
1574 gtk_menu_append (GTK_MENU (menu), item);
1576 gtk_option_menu_set_menu (GTK_OPTION_MENU (configDialogData.sms.validity), menu);
1577 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.sms.validity, FALSE, FALSE, 2);
1578 gtk_widget_show (configDialogData.sms.validity);
1581 gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.set),
1582 configDialogData.sms.smsSetting
1583 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name);
1585 gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.number),
1586 configDialogData.sms.smsSetting
1587 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number);
1589 switch (configDialogData.sms.smsSetting
1590 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format)
1593 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1598 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1603 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1608 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1613 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1617 switch (configDialogData.sms.smsSetting
1618 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity)
1621 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1626 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1631 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1636 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1641 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1646 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1651 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1655 tempMessageSettings.Format = configDialogData.sms.smsSetting
1656 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format;
1657 tempMessageSettings.Validity = configDialogData.sms.smsSetting
1658 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity;
1660 gtk_widget_show (dialog);
1664 static GtkWidget *CreateOptionsDialog (void)
1666 gchar labelBuffer[10];
1668 GtkWidget *button, *hbox, *vbox, *label, *notebook, *frame, *clistScrolledWindow;
1671 gchar *titles[4] = { _("Set's name"), _("Center number"), _("Format"), _("Validity")};
1673 dialog = gtk_dialog_new ();
1674 gtk_window_set_title (GTK_WINDOW (dialog), _("Options"));
1675 gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
1676 gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
1677 GTK_SIGNAL_FUNC (OptionsDeleteEvent), NULL);
1679 button = gtk_button_new_with_label (_("Apply"));
1680 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1681 button, TRUE, TRUE, 10);
1682 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1683 GTK_SIGNAL_FUNC (OptionsApplyCallback), (gpointer)dialog);
1684 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1685 gtk_widget_grab_default (button);
1686 gtk_widget_show (button);
1688 button = gtk_button_new_with_label (_("Save"));
1689 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1690 button, TRUE, TRUE, 10);
1691 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1692 GTK_SIGNAL_FUNC (OptionsSaveCallback), (gpointer)dialog);
1693 gtk_widget_show (button);
1695 button = gtk_button_new_with_label (_("Close"));
1696 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1697 button, TRUE, TRUE, 10);
1698 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1699 GTK_SIGNAL_FUNC (OptionsCloseCallback), (gpointer)dialog);
1700 gtk_widget_show (button);
1702 gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
1704 notebook = gtk_notebook_new ();
1705 gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
1706 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), notebook);
1707 gtk_widget_show(notebook);
1709 /*** Connection notebook ***/
1710 frame = gtk_frame_new (_("Phone and connection type"));
1711 gtk_widget_show (frame);
1713 vbox = gtk_vbox_new( FALSE, 0);
1714 gtk_container_add (GTK_CONTAINER (frame), vbox);
1715 gtk_widget_show (vbox);
1717 label = gtk_label_new (_("Connection"));
1718 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
1720 hbox = gtk_hbox_new (FALSE, 0);
1721 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1722 gtk_widget_show (hbox);
1724 label = gtk_label_new (_("Port:"));
1725 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1726 gtk_widget_show (label);
1728 configDialogData.connection.port = gtk_entry_new_with_max_length (10);
1729 gtk_widget_set_usize (configDialogData.connection.port, 220, 22);
1730 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.port),
1732 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.port, FALSE, FALSE, 2);
1733 gtk_widget_show (configDialogData.connection.port);
1735 hbox = gtk_hbox_new (FALSE, 0);
1736 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1737 gtk_widget_show (hbox);
1739 label = gtk_label_new (_("Model:"));
1740 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1741 gtk_widget_show (label);
1743 configDialogData.connection.model = gtk_entry_new_with_max_length (5);
1744 gtk_widget_set_usize (configDialogData.connection.model, 220, 22);
1745 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.model),
1747 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.model, FALSE, FALSE, 2);
1748 gtk_widget_show (configDialogData.connection.model);
1750 hbox = gtk_hbox_new (FALSE, 0);
1751 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1752 gtk_widget_show (hbox);
1754 label = gtk_label_new (_("Init length:"));
1755 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
1756 gtk_widget_show (label);
1758 configDialogData.connection.init = gtk_entry_new_with_max_length (100);
1759 gtk_widget_set_usize (configDialogData.connection.init, 220, 22);
1760 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.init),
1762 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.init, FALSE, FALSE, 2);
1763 gtk_widget_show (configDialogData.connection.init);
1765 hbox = gtk_hbox_new (FALSE, 0);
1766 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1767 gtk_widget_show (hbox);
1769 label = gtk_label_new (_("Bindir:"));
1770 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1771 gtk_widget_show (label);
1773 configDialogData.connection.bindir = gtk_entry_new_with_max_length (100);
1774 gtk_widget_set_usize (configDialogData.connection.bindir, 220, 22);
1775 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.bindir),
1777 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.bindir, FALSE, FALSE, 2);
1778 gtk_widget_show (configDialogData.connection.bindir);
1780 hbox = gtk_hbox_new (FALSE, 0);
1781 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1782 gtk_widget_show (hbox);
1784 label = gtk_label_new (_("Connection:"));
1785 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
1786 gtk_widget_show (label);
1788 configDialogData.connection.infrared = gtk_radio_button_new_with_label (NULL, _("infrared"));
1789 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.infrared, TRUE, FALSE, 2);
1790 gtk_widget_show (configDialogData.connection.infrared);
1792 configDialogData.connection.serial = gtk_radio_button_new_with_label (
1793 gtk_radio_button_group (GTK_RADIO_BUTTON (configDialogData.connection.infrared)), _("serial"));
1794 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.serial, TRUE, FALSE, 2);
1795 gtk_widget_show (configDialogData.connection.serial);
1797 configDialogData.connection.irda = gtk_radio_button_new_with_label (
1798 gtk_radio_button_group (GTK_RADIO_BUTTON (configDialogData.connection.infrared)), _("irda"));
1799 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.irda, TRUE, FALSE, 2);
1800 gtk_widget_show (configDialogData.connection.irda);
1802 /*** Phone notebook ***/
1803 frame = gtk_frame_new (_("Phone information"));
1804 gtk_widget_show (frame);
1806 vbox = gtk_vbox_new( FALSE, 0);
1807 gtk_container_add (GTK_CONTAINER (frame), vbox);
1808 gtk_widget_show (vbox);
1810 label = gtk_label_new (_("Phone"));
1811 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
1813 hbox = gtk_hbox_new (FALSE, 0);
1814 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1815 gtk_widget_show (hbox);
1817 label = gtk_label_new (_("Model:"));
1818 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1819 gtk_widget_show (label);
1821 configDialogData.phone.model = gtk_entry_new_with_max_length (7);
1822 gtk_widget_set_usize (configDialogData.phone.model, 220, 22);
1823 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.model),
1825 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.model, FALSE, FALSE, 2);
1826 gtk_widget_show (configDialogData.phone.model);
1828 hbox = gtk_hbox_new (FALSE, 0);
1829 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1830 gtk_widget_show (hbox);
1832 label = gtk_label_new (_("Version:"));
1833 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1834 gtk_widget_show (label);
1836 configDialogData.phone.version = gtk_entry_new_with_max_length (7);
1837 gtk_widget_set_usize (configDialogData.phone.version, 220, 22);
1838 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.version),
1840 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.version, FALSE, FALSE, 2);
1841 gtk_widget_show (configDialogData.phone.version);
1843 hbox = gtk_hbox_new (FALSE, 0);
1844 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1845 gtk_widget_show (hbox);
1847 label = gtk_label_new (_("Revision:"));
1848 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
1849 gtk_widget_show (label);
1851 configDialogData.phone.revision = gtk_entry_new_with_max_length (64);
1852 gtk_widget_set_usize (configDialogData.phone.revision, 220, 22);
1853 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.revision),
1855 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.revision, FALSE, FALSE, 2);
1856 gtk_widget_show (configDialogData.phone.revision);
1858 hbox = gtk_hbox_new (FALSE, 0);
1859 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1860 gtk_widget_show (hbox);
1862 label = gtk_label_new (_("IMEI:"));
1863 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1864 gtk_widget_show (label);
1866 configDialogData.phone.imei = gtk_entry_new_with_max_length (64);
1867 gtk_widget_set_usize (configDialogData.phone.imei, 220, 22);
1868 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.imei),
1870 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.imei, FALSE, FALSE, 2);
1871 gtk_widget_show (configDialogData.phone.imei);
1873 hbox = gtk_hbox_new (FALSE, 0);
1874 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1875 gtk_widget_show (hbox);
1877 label = gtk_label_new (_("Names length:"));
1878 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1879 gtk_widget_show (label);
1881 hbox = gtk_hbox_new (FALSE, 0);
1882 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1883 gtk_widget_show (hbox);
1885 label = gtk_label_new (_("SIM:"));
1886 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1887 gtk_widget_show (label);
1889 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 1.0, 100.0, 1.0, 10.0, 0.0);
1890 configDialogData.phone.simNameLen = gtk_spin_button_new (adj, 0, 0);
1891 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen), TRUE);
1892 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen), TRUE);
1893 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.phone.simNameLen, FALSE, FALSE, 2);
1894 gtk_widget_show (configDialogData.phone.simNameLen);
1896 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 1.0, 100.0, 1.0, 10.0, 0.0);
1897 configDialogData.phone.phoneNameLen = gtk_spin_button_new (adj, 0, 0);
1898 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen), TRUE);
1899 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen), TRUE);
1900 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.phoneNameLen, FALSE, FALSE, 2);
1901 gtk_widget_show (configDialogData.phone.phoneNameLen);
1903 label = gtk_label_new (_("Phone:"));
1904 gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1905 gtk_widget_show (label);
1907 /*** Alarm notebook ***/
1908 xgnokiiConfig.alarmSupported = TRUE;
1910 frame = gtk_frame_new (_("Alarm setting"));
1911 gtk_widget_show (frame);
1913 vbox = gtk_vbox_new( FALSE, 0);
1914 gtk_container_add (GTK_CONTAINER (frame), vbox);
1915 gtk_widget_show(vbox);
1917 label = gtk_label_new (_("Alarm"));
1918 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), frame, label);
1920 hbox = gtk_hbox_new (FALSE, 0);
1921 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
1922 gtk_widget_show (hbox);
1924 configDialogData.alarm.alarmSwitch = gtk_check_button_new_with_label (_("Alarm"));
1925 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmSwitch, FALSE, FALSE, 10);
1926 gtk_widget_show (configDialogData.alarm.alarmSwitch);
1928 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 23.0, 1.0, 4.0, 0.0);
1929 configDialogData.alarm.alarmHour = gtk_spin_button_new (adj, 0, 0);
1930 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), TRUE);
1931 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), TRUE);
1932 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmHour, FALSE, FALSE, 0);
1933 gtk_widget_show (configDialogData.alarm.alarmHour);
1935 label = gtk_label_new (":");
1936 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1937 gtk_widget_show (label);
1939 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 59.0, 1.0, 10.0, 0.0);
1940 configDialogData.alarm.alarmMin = gtk_spin_button_new (adj, 0, 0);
1941 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), TRUE);
1942 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), TRUE);
1943 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmMin, FALSE, FALSE, 0);
1944 gtk_widget_show (configDialogData.alarm.alarmMin);
1946 /*** SMS notebook ***/
1947 sms_option_frame = gtk_frame_new (_("Short Message Service"));
1949 vbox = gtk_vbox_new (FALSE, 0);
1950 gtk_container_add (GTK_CONTAINER (sms_option_frame), vbox);
1951 gtk_widget_show (vbox);
1953 label = gtk_label_new (_("SMS"));
1954 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sms_option_frame, label);
1956 SMSClist = gtk_clist_new_with_titles (4, titles);
1957 gtk_clist_set_shadow_type (GTK_CLIST (SMSClist), GTK_SHADOW_OUT);
1958 gtk_clist_column_titles_passive (GTK_CLIST (SMSClist));
1959 gtk_clist_set_auto_sort (GTK_CLIST (SMSClist), FALSE);
1961 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 0, 70);
1962 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 1, 115);
1963 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 2, 40);
1964 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 3, 55);
1965 // gtk_clist_set_column_justification (GTK_CLIST (SMSClist), 1, GTK_JUSTIFY_RIGHT);
1967 clistScrolledWindow = gtk_scrolled_window_new (NULL, NULL);
1968 gtk_container_add (GTK_CONTAINER (clistScrolledWindow), SMSClist);
1969 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (clistScrolledWindow),
1970 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1971 gtk_box_pack_start (GTK_BOX (vbox), clistScrolledWindow,
1974 gtk_widget_show (SMSClist);
1975 gtk_widget_show (clistScrolledWindow);
1977 hbox = gtk_hbox_new (FALSE, 0);
1978 gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 9);
1979 gtk_widget_show (hbox);
1981 button = gtk_button_new_with_label (_("Edit"));
1982 gtk_box_pack_start (GTK_BOX (hbox),
1983 button, TRUE, FALSE, 0);
1984 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1985 GTK_SIGNAL_FUNC (ShowEditSMSSetDialog), (gpointer)dialog);
1986 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1987 gtk_widget_grab_default (button);
1988 gtk_widget_show (button);
1990 gtk_signal_connect (GTK_OBJECT (SMSClist), "select_row",
1991 GTK_SIGNAL_FUNC (EditSMSSetDialogClick),
1994 /*** Business notebook ***/
1995 user_option_frame = gtk_frame_new (_("Business Card"));
1997 vbox = gtk_vbox_new( FALSE, 0);
1998 gtk_container_add (GTK_CONTAINER (user_option_frame), vbox);
1999 gtk_widget_show(vbox);
2001 label = gtk_label_new(_("User"));
2002 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), user_option_frame, label);
2004 hbox = gtk_hbox_new (FALSE, 0);
2005 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2006 gtk_widget_show (hbox);
2008 configDialogData.user.status = gtk_label_new ("");
2009 gtk_box_pack_end(GTK_BOX(hbox), configDialogData.user.status, FALSE, FALSE, 2);
2010 gtk_widget_show (configDialogData.user.status);
2012 configDialogData.user.max = MAX_BUSINESS_CARD_LENGTH;
2013 configDialogData.user.used = 0;
2015 hbox = gtk_hbox_new (FALSE, 0);
2016 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2017 gtk_widget_show (hbox);
2019 label = gtk_label_new (_("Name:"));
2020 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2021 gtk_widget_show (label);
2023 configDialogData.user.name = gtk_entry_new_with_max_length(configDialogData.user.max);
2024 gtk_widget_set_usize (configDialogData.user.name, 220, 22);
2025 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.name),
2027 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2028 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.name),
2029 "button_press_event",
2030 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2031 gtk_signal_connect (GTK_OBJECT (configDialogData.user.name),
2033 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 0);
2034 gtk_signal_connect (GTK_OBJECT (configDialogData.user.name),
2036 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2037 (gpointer) configDialogData.user.max);
2038 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.name, FALSE, FALSE, 2);
2039 gtk_widget_show (configDialogData.user.name);
2041 hbox = gtk_hbox_new (FALSE, 0);
2042 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2043 gtk_widget_show (hbox);
2045 label = gtk_label_new (_("Title:"));
2046 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2047 gtk_widget_show (label);
2049 configDialogData.user.title = gtk_entry_new_with_max_length(configDialogData.user.max);
2050 gtk_widget_set_usize (configDialogData.user.title, 220, 22);
2051 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.title),
2053 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2054 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.title),
2055 "button_press_event",
2056 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2057 gtk_signal_connect (GTK_OBJECT (configDialogData.user.title),
2059 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 1);
2060 gtk_signal_connect (GTK_OBJECT (configDialogData.user.title),
2062 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2063 (gpointer) configDialogData.user.max);
2064 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.title, FALSE, FALSE, 2);
2065 gtk_widget_show (configDialogData.user.title);
2067 hbox = gtk_hbox_new (FALSE, 0);
2068 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2069 gtk_widget_show (hbox);
2071 label = gtk_label_new (_("Company:"));
2072 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2073 gtk_widget_show (label);
2075 configDialogData.user.company = gtk_entry_new_with_max_length(configDialogData.user.max);
2076 gtk_widget_set_usize (configDialogData.user.company, 220, 22);
2077 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.company),
2079 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2080 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.company),
2081 "button_press_event",
2082 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2083 gtk_signal_connect (GTK_OBJECT (configDialogData.user.company),
2085 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 2);
2086 gtk_signal_connect (GTK_OBJECT (configDialogData.user.company),
2088 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2089 (gpointer) configDialogData.user.max);
2090 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.company, FALSE, FALSE, 2);
2091 gtk_widget_show (configDialogData.user.company);
2093 hbox = gtk_hbox_new (FALSE, 0);
2094 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2095 gtk_widget_show (hbox);
2097 label = gtk_label_new (_("Telephone:"));
2098 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2099 gtk_widget_show (label);
2101 configDialogData.user.telephone = gtk_entry_new_with_max_length(max_phonebook_number_length);
2102 gtk_widget_set_usize (configDialogData.user.telephone, 220, 22);
2103 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.telephone),
2105 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2106 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.telephone),
2107 "button_press_event",
2108 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2109 gtk_signal_connect (GTK_OBJECT (configDialogData.user.telephone),
2111 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 3);
2112 gtk_signal_connect (GTK_OBJECT (configDialogData.user.telephone),
2114 GTK_SIGNAL_FUNC(CheckOutUserDataLength), (gpointer) max_phonebook_number_length);
2115 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.telephone, FALSE, FALSE, 2);
2116 gtk_widget_show (configDialogData.user.telephone);
2118 hbox = gtk_hbox_new (FALSE, 0);
2119 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2120 gtk_widget_show (hbox);
2122 label = gtk_label_new (_("Fax:"));
2123 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2124 gtk_widget_show (label);
2126 configDialogData.user.fax = gtk_entry_new_with_max_length(max_phonebook_number_length);
2127 gtk_widget_set_usize (configDialogData.user.fax, 220, 22);
2128 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.fax),
2130 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2131 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.fax),
2132 "button_press_event",
2133 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2134 gtk_signal_connect (GTK_OBJECT (configDialogData.user.fax),
2136 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 4);
2137 gtk_signal_connect (GTK_OBJECT (configDialogData.user.fax),
2139 GTK_SIGNAL_FUNC(CheckOutUserDataLength), (gpointer) max_phonebook_number_length);
2140 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.fax, FALSE, FALSE, 2);
2141 gtk_widget_show (configDialogData.user.fax);
2143 hbox = gtk_hbox_new (FALSE, 0);
2144 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2145 gtk_widget_show (hbox);
2147 label = gtk_label_new (_("E-Mail:"));
2148 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2149 gtk_widget_show (label);
2151 configDialogData.user.email = gtk_entry_new_with_max_length(configDialogData.user.max);
2152 gtk_widget_set_usize (configDialogData.user.email, 220, 22);
2153 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.email),
2155 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2156 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.email),
2157 "button_press_event",
2158 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2159 gtk_signal_connect (GTK_OBJECT (configDialogData.user.email),
2161 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 5);
2162 gtk_signal_connect (GTK_OBJECT (configDialogData.user.email),
2164 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2165 (gpointer) configDialogData.user.max);
2166 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.email, FALSE, FALSE, 2);
2167 gtk_widget_show (configDialogData.user.email);
2169 hbox = gtk_hbox_new (FALSE, 0);
2170 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2171 gtk_widget_show (hbox);
2173 label = gtk_label_new (_("Address:"));
2174 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2175 gtk_widget_show (label);
2177 configDialogData.user.address = gtk_entry_new_with_max_length(configDialogData.user.max);
2178 gtk_widget_set_usize (configDialogData.user.address, 220, 22);
2179 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.address),
2181 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2182 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.address),
2183 "button_press_event",
2184 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2185 gtk_signal_connect (GTK_OBJECT (configDialogData.user.address),
2187 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 6);
2188 gtk_signal_connect (GTK_OBJECT (configDialogData.user.address),
2190 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2191 (gpointer) configDialogData.user.max);
2192 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.address, FALSE, FALSE, 2);
2193 gtk_widget_show (configDialogData.user.address);
2196 /*** Groups notebook ***/
2197 cg_names_option_frame = gtk_frame_new (_("Caller groups names"));
2200 vbox = gtk_vbox_new (FALSE, 0);
2201 gtk_container_add (GTK_CONTAINER (cg_names_option_frame), vbox);
2202 gtk_widget_show (vbox);
2204 label = gtk_label_new (_("Groups"));
2205 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), cg_names_option_frame, label);
2207 for ( i = 0; i < 6; i++)
2209 hbox = gtk_hbox_new (FALSE, 0);
2210 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 3);
2211 gtk_widget_show (hbox);
2213 g_snprintf (labelBuffer, 10, _("Group %d:"), i + 1);
2214 label = gtk_label_new (labelBuffer);
2215 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
2216 gtk_widget_show (label);
2218 configDialogData.groups[i] = gtk_entry_new_with_max_length (MAX_CALLER_GROUP_LENGTH);
2219 gtk_widget_set_usize (configDialogData.groups[i], 220, 22);
2221 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.groups[i], FALSE, FALSE, 2);
2222 gtk_widget_show (configDialogData.groups[i]);
2226 mail_option_frame = gtk_frame_new (_("Mailbox"));
2227 gtk_widget_show (mail_option_frame);
2229 vbox = gtk_vbox_new (FALSE, 0);
2230 gtk_container_add (GTK_CONTAINER (mail_option_frame), vbox);
2231 gtk_widget_show (vbox);
2233 label = gtk_label_new (_("Mail"));
2234 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), mail_option_frame, label);
2236 hbox = gtk_hbox_new (FALSE, 0);
2237 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2238 gtk_widget_show (hbox);
2240 label = gtk_label_new (_("Path to mailbox:"));
2241 gtk_box_pack_start(GTK_BOX (hbox), label, FALSE, FALSE, 2);
2242 gtk_widget_show (label);
2244 configDialogData.mailbox = gtk_entry_new_with_max_length (MAILBOX_LENGTH - 1);
2245 gtk_widget_set_usize (configDialogData.mailbox, 220, 22);
2247 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.mailbox, FALSE, FALSE, 2);
2248 gtk_widget_show (configDialogData.mailbox);
2251 frame = gtk_frame_new (_("Help viewer"));
2252 gtk_widget_show (frame);
2254 vbox = gtk_vbox_new (FALSE, 0);
2255 gtk_container_add (GTK_CONTAINER (frame), vbox);
2256 gtk_widget_show (vbox);
2258 label = gtk_label_new (_("Help"));
2259 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), frame, label);
2261 hbox = gtk_hbox_new (FALSE, 0);
2262 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2263 gtk_widget_show (hbox);
2265 label = gtk_label_new (_("Viewer:"));
2266 gtk_box_pack_start(GTK_BOX (hbox), label, FALSE, FALSE, 2);
2267 gtk_widget_show (label);
2269 configDialogData.help = gtk_entry_new_with_max_length (HTMLVIEWER_LENGTH - 1);
2270 gtk_widget_set_usize (configDialogData.help, 220, 22);
2272 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.help, FALSE, FALSE, 2);
2273 gtk_widget_show (configDialogData.help);
2276 optionsDialogIsOpened = FALSE;
2281 static void TopLevelWindow (void)
2283 GtkWidget *drawing_area;
2287 struct sigaction act;
2289 GUI_MainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2290 gtk_window_set_wmclass (GTK_WINDOW (GUI_MainWindow), "MainWindow", "Xgnokii");
2291 /* gtk_window_set_decorated (GTK_WINDOW (GUI_MainWindow), GTK_FALSE); */
2292 gtk_widget_realize (GUI_MainWindow);
2294 BackgroundPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_background);
2296 SMSPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_sms);
2298 AlarmPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_alarm);
2300 Pixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_background);
2302 // gdk_window_set_icon_name (GUI_MainWindow->window, "XXX");
2303 style = gtk_widget_get_default_style ();
2304 gc = style->black_gc;
2306 /* Create the drawing area */
2307 drawing_area = gtk_drawing_area_new ();
2309 /* Signals used to handle backing pixmap */
2310 gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
2311 (GtkSignalFunc) ExposeEvent, NULL);
2313 gtk_signal_connect (GTK_OBJECT (drawing_area), "button_press_event",
2314 (GtkSignalFunc) ButtonPressEvent, NULL);
2316 gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK
2317 | GDK_BUTTON_PRESS_MASK);
2319 gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 261, 96);
2320 gtk_container_add (GTK_CONTAINER (GUI_MainWindow), drawing_area);
2322 gdk_draw_pixmap (drawing_area->window,
2323 drawing_area->style->fg_gc[GTK_WIDGET_STATE (drawing_area)],
2329 gtk_widget_shape_combine_mask (GUI_MainWindow, mask, 0, 0);
2331 gtk_signal_connect (GTK_OBJECT (GUI_MainWindow), "destroy",
2332 GTK_SIGNAL_FUNC (MainExit),
2335 Menu = CreateMenu ();
2336 OptionsDialog = CreateOptionsDialog ();
2337 AboutDialog = CreateAboutDialog ();
2338 GUI_CreateSMSWindow ();
2339 GUI_CreateContactsWindow ();
2340 GUI_CreateNetmonWindow ();
2341 GUI_CreateDTMFWindow ();
2342 GUI_CreateSpeedDialWindow ();
2343 GUI_CreateXkeybWindow ();
2344 GUI_CreateCalendarWindow ();
2345 GUI_CreateLogosWindow ();
2346 GUI_CreateDataWindow();
2347 CreateErrorDialog (&errorDialog, GUI_MainWindow);
2348 CreateInfoDialog (&infoDialog, GUI_MainWindow);
2349 CreateInCallDialog ();
2351 act.sa_handler = RemoveZombie;
2352 sigemptyset (&(act.sa_mask));
2353 act.sa_flags = SA_NOCLDSTOP;
2354 sigaction (SIGCHLD, &act, NULL);
2357 act.sa_handler = SIG_IGN;
2358 sigemptyset (&(act.sa_mask));
2359 sigaction (SIGALRM, &act, NULL);
2362 gtk_widget_show_all (GUI_MainWindow);
2365 GUI_InitPhoneMonitor ();
2366 pthread_create (&monitor_th, NULL, GUI_Connect, NULL);
2368 gtk_timeout_add (1000, (GtkFunction) Update, GUI_MainWindow);
2370 hiddenCallDialog = 0;
2374 static void SplashScreen (void)
2376 GtkWidget *pixmap, *fixed;
2377 GdkPixmap *gdk_pixmap;
2382 SplashWindow = gtk_window_new (GTK_WINDOW_POPUP);
2383 gtk_widget_realize (SplashWindow);
2385 gtk_widget_set_usize (SplashWindow, 475, 160);
2386 gtk_window_position (GTK_WINDOW (SplashWindow), GTK_WIN_POS_CENTER);
2388 style = gtk_widget_get_default_style();
2389 gc = style->black_gc;
2390 gdk_pixmap = gdk_pixmap_create_from_xpm_d(SplashWindow->window, &mask,
2391 &style->bg[GTK_STATE_NORMAL],
2393 pixmap = gtk_pixmap_new(gdk_pixmap, mask);
2395 fixed = gtk_fixed_new();
2396 gtk_widget_set_usize(fixed, 261, 96);
2397 gtk_fixed_put(GTK_FIXED(fixed), pixmap, 0, 0);
2398 gtk_container_add(GTK_CONTAINER (SplashWindow), fixed);
2400 gtk_widget_shape_combine_mask (SplashWindow, mask, 0, 0);
2402 gtk_widget_show_all (SplashWindow);
2406 static gint RemoveSplash (GtkWidget *Win)
2408 if (GTK_WIDGET_VISIBLE (SplashWindow))
2410 gtk_timeout_remove (splashRemoveHandler);
2411 gtk_widget_hide (SplashWindow);
2412 gtk_widget_destroy (SplashWindow);
2419 static void ReadConfig (void)
2422 xgnokiiConfig.locale = "";
2424 if ((xgnokiiConfig.locale = getenv ("LC_ALL")) == NULL)
2425 if ((xgnokiiConfig.locale = getenv ("LC_MESSAGES")) == NULL)
2426 if ((xgnokiiConfig.locale = getenv ("LANG")) == NULL)
2427 xgnokiiConfig.locale = "POSIX";
2429 if (readconfig(&xgnokiiConfig.model, &xgnokiiConfig.port,
2430 &xgnokiiConfig.initlength, &xgnokiiConfig.connection,
2431 &xgnokiiConfig.bindir) < 0)
2437 max_phonebook_name_length = atoi (xgnokiiConfig.maxPhoneLen);
2438 max_phonebook_sim_name_length = atoi (xgnokiiConfig.maxSIMLen);
2441 xgnokiiConfig.xgnokiidir = DefaultXGnokiiDir;
2443 if (strstr(FB38_Information.Models, xgnokiiConfig.model) != NULL)
2445 max_phonebook_number_length = 30;
2446 max_phonebook_sim_number_length = 30;
2450 if (strstr(FB61_Information.Models, xgnokiiConfig.model) != NULL)
2452 max_phonebook_number_length = FB61_MAX_PHONEBOOK_NUMBER_LENGTH;
2453 max_phonebook_sim_number_length = FB61_MAX_PHONEBOOK_NUMBER_LENGTH;
2457 max_phonebook_number_length = max_phonebook_sim_number_length = GSM_MAX_PHONEBOOK_NUMBER_LENGTH;
2460 xgnokiiConfig.callerGroups[0] = xgnokiiConfig.callerGroups[1] =
2461 xgnokiiConfig.callerGroups[2] = xgnokiiConfig.callerGroups[3] =
2462 xgnokiiConfig.callerGroups[4] = xgnokiiConfig.callerGroups[5] = NULL;
2463 xgnokiiConfig.smsSets = 0;
2467 int main (int argc, char *argv[])
2470 textdomain("gnokii");
2473 (void) gtk_set_locale ();
2475 gtk_init (&argc, &argv);
2477 /* Show the splash screen. */
2481 /* Remove it after a while. */
2486 splashRemoveHandler = gtk_timeout_add(5000, (GtkFunction) RemoveSplash, (gpointer) SplashWindow);