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.4 2002/04/03 00:08:26 short
15 Found in "gnokii-working" directory, some November-patches version
17 Revision 1.38 2001/09/14 13:14:03 pkot
18 Xgnokii WM fixes (Martin Lucina)
20 Revision 1.37 2001/06/27 23:52:52 pkot
21 7110/6210 updates (Marian Jancar)
23 Revision 1.36 2001/06/20 21:27:36 pkot
24 IrDA patch (Marian Jancar)
26 Revision 1.35 2001/05/24 20:47:30 chris
27 More updating of 7110 code and some of xgnokii_lowlevel changed over.
29 Revision 1.34 2001/03/23 08:24:56 ja
30 New preview for 6210 in xgnokii's logos module.
32 Revision 1.33 2001/03/19 23:43:47 pkot
33 Solaris/BSD '#if defined' cleanup
35 Revision 1.32 2001/03/13 01:21:39 pkot
36 *BSD updates (Bert Driehuis)
38 Revision 1.31 2001/03/05 10:42:02 ja
39 Pavel Machek's vcard and finegrained indicators patch.
41 Revision 1.30 2001/01/29 15:22:20 machek
42 Use integer as bitfield instead of struct of int:1.
44 Be able to read phonebook saved in gnokii format from xgnokii.
46 Revision 1.29 2001/01/15 21:10:20 ja
47 Better status reporting in xgnokii, fixed phone capabilities detection in xgnokii.
49 Revision 1.28 2000/12/20 11:49:25 ja
50 Bringing back to life smsd. It was broken after last Pawel update.
52 Revision 1.27 2000/12/19 16:18:21 pkot
53 configure script updates and added shared function for configfile reading
58 #include <stdlib.h> /* for getenv */
61 #include <time.h> /* for time */
65 # include <unistd.h> /* for usleep */
69 # include "../win32/winserial.h"
70 # define WRITEPHONE(a, b, c) WriteCommBlock(b, c)
73 # define sleep(x) Sleep((x) * 1000)
74 # define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000))
77 #include <gdk/gdkkeysyms.h>
81 #include "gsm-common.h"
83 #include "fbus-6110.h"
84 #include "fbus-3810.h"
85 #include "cfgreader.h"
87 #include "xgnokii_common.h"
88 #include "xgnokii_lowlevel.h"
89 #include "xgnokii_contacts.h"
90 #include "xgnokii_sms.h"
91 #include "xgnokii_netmon.h"
92 #include "xgnokii_dtmf.h"
93 #include "xgnokii_speed.h"
94 #include "xgnokii_xkeyb.h"
95 #include "xgnokii_calendar.h"
96 #include "xgnokii_logos.h"
97 #include "xgnokii_cfg.h"
98 #include "xgnokii_data.h"
100 #include "xpm/logo.xpm"
101 #include "xpm/background.xpm"
102 #include "xpm/sms.xpm"
103 #include "xpm/alarm.xpm"
105 /* Widgets for dialogs. */
106 static GtkWidget *SplashWindow;
107 static GtkWidget *GUI_MainWindow;
108 static GtkWidget *AboutDialog;
109 static ErrorDialog errorDialog = {NULL, NULL};
110 static InfoDialog infoDialog = {NULL, NULL};
111 static GtkWidget *OptionsDialog;
112 static bool optionsDialogIsOpened;
115 static GtkWidget *SMSClist;
117 /* Pixmap used for drawing all the stuff. */
118 static GdkPixmap *Pixmap = NULL;
120 /* Pixmap used for background. */
121 static GdkPixmap *BackgroundPixmap = NULL;
123 /* Pixmap used for SMS picture. */
124 static GdkPixmap *SMSPixmap = NULL;
126 /* Pixmap used for alarm picture. */
127 static GdkPixmap *AlarmPixmap = NULL;
130 /* Widget for popup menu */
131 static GtkWidget *Menu;
132 static GtkWidget *netmon_menu_item;
133 static GtkWidget *sms_menu_item;
134 static GtkWidget *calendar_menu_item;
135 static GtkWidget *logos_menu_item;
136 static GtkWidget *dtmf_menu_item;
137 static GtkWidget *speedDial_menu_item;
138 static GtkWidget *xkeyb_menu_item;
139 static GtkWidget *cg_names_option_frame;
140 static GtkWidget *sms_option_frame;
141 static GtkWidget *mail_option_frame;
142 static GtkWidget *user_option_frame;
143 static GtkWidget *data_menu_item;
145 /* Hold main configuration data for xgnokii */
146 XgnokiiConfig xgnokiiConfig;
148 gint max_phonebook_name_length;
149 gint max_phonebook_number_length;
150 gint max_phonebook_sim_name_length;
151 gint max_phonebook_sim_number_length;
153 /* Local variables */
154 static char *DefaultXGnokiiDir = XGNOKIIDIR;
155 static bool SMSSettingsInitialized = FALSE;
156 static bool CallersGroupsInitialized = FALSE;
157 static gint hiddenCallDialog;
158 static guint splashRemoveHandler;
160 static struct CallDialog {
166 GtkWidget *alarmSwitch;
167 GtkWidget *alarmHour;
176 GtkWidget *serial, *infrared, *irda;
184 GtkWidget *simNameLen;
185 GtkWidget *phoneNameLen;
193 GSM_MessageCenter smsSetting[MAX_SMS_CENTER];
200 GtkWidget *telephone;
209 static struct ConfigDialogData
211 ConnectionWidgets connection;
213 GtkWidget *groups[6];
221 static GSM_MessageCenter tempMessageSettings;
224 static inline void Help1 (GtkWidget *w, gpointer data)
226 gchar *indx = g_strdup_printf ("/help/%s/index.html", xgnokiiConfig.locale);
232 void GUI_InitCallerGroupsInf (void)
238 if (CallersGroupsInitialized)
241 gtk_label_set_text (GTK_LABEL (infoDialog.text), _("Reading caller groups names ..."));
242 gtk_widget_show_now (infoDialog.dialog);
245 xgnokiiConfig.callerGroups[0] = g_strndup( _("Familly"), MAX_CALLER_GROUP_LENGTH);
246 xgnokiiConfig.callerGroups[1] = g_strndup( _("VIP"), MAX_CALLER_GROUP_LENGTH);
247 xgnokiiConfig.callerGroups[2] = g_strndup( _("Friends"), MAX_CALLER_GROUP_LENGTH);
248 xgnokiiConfig.callerGroups[3] = g_strndup( _("Colleagues"), MAX_CALLER_GROUP_LENGTH);
249 xgnokiiConfig.callerGroups[4] = g_strndup( _("Other"), MAX_CALLER_GROUP_LENGTH);
250 xgnokiiConfig.callerGroups[5] = g_strndup( _("No group"), MAX_CALLER_GROUP_LENGTH);
252 if (phoneMonitor.supported & PM_CALLERGROUP)
253 for (i = 0; i < 5; i++)
255 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
257 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
258 e->event = Event_GetCallerGroup;
261 pthread_mutex_lock (&callerGroupMutex);
262 pthread_cond_wait (&callerGroupCond, &callerGroupMutex);
263 pthread_mutex_unlock (&callerGroupMutex);
265 if (*cg->text != '\0' && cg->status == GE_NONE)
267 g_free (xgnokiiConfig.callerGroups[i]);
268 xgnokiiConfig.callerGroups[i] = g_strndup (cg->text, MAX_CALLER_GROUP_LENGTH);
273 CallersGroupsInitialized = TRUE;
274 gtk_widget_hide (infoDialog.dialog);
275 GUIEventSend (GUI_EVENT_CALLERS_GROUPS_CHANGED);
279 static inline void DrawBackground (GtkWidget *data)
281 gdk_draw_pixmap (Pixmap,
282 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
290 int network_levels[] = {
298 static inline void DrawNetwork (GtkWidget *data, int rflevel)
304 for (i = 0; (i * 25) <= rflevel; i++)
306 float percent = ((float) rflevel - i * 25) / 25;
310 gdk_draw_rectangle (Pixmap, GTK_WIDGET (data)->style->white_gc, TRUE,
311 network_levels[4 * i] + network_levels[4 * i + 2] * (1 - percent),
312 network_levels[4 * i + 1],
313 network_levels[4 * i + 2] * percent,
314 network_levels[4 * i + 3]);
319 int battery_levels[] = {
327 static inline void DrawBattery (GtkWidget *data, int batterylevel)
331 if (batterylevel < 0)
333 if (batterylevel > 100)
335 for (i = 0; (i * 25) <= batterylevel; i++)
337 float percent = ((float) batterylevel - i * 25) / 25;
340 gdk_draw_rectangle (Pixmap, GTK_WIDGET (data)->style->white_gc, TRUE,
341 battery_levels[4 * i],
342 battery_levels[4 * i + 1],
343 battery_levels[4 * i + 2] * percent,
344 battery_levels[4 * i + 3]);
349 static inline void DrawSMS (GtkWidget *data)
351 gdk_draw_pixmap (Pixmap,
352 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
360 static inline void DrawAlarm (GtkWidget *data)
362 gdk_draw_pixmap (Pixmap,
363 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
371 static inline void DrawText (GtkWidget *data, int at, char *text)
373 static GdkFont *Font;
375 Font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-90-*-*-*-*-iso8859-*");
376 gdk_draw_string (Pixmap,
378 GTK_WIDGET(data)->style->fg_gc[GTK_STATE_NORMAL],
383 static inline void DrawSMSReceived (GtkWidget *data)
385 DrawText (data, 25, _("Short Message received"));
389 static inline void DrawWorking (GtkWidget *data)
391 DrawText(data, 40, _("Working ..."));
395 static inline void HideCallDialog (GtkWidget *widget, gpointer data)
397 hiddenCallDialog = 1;
398 gtk_widget_hide (GTK_WIDGET (data));
402 static void CreateInCallDialog (void)
404 GtkWidget *button, *hbox;
406 inCallDialog.dialog = gtk_dialog_new ();
407 gtk_window_position (GTK_WINDOW (inCallDialog.dialog), GTK_WIN_POS_MOUSE);
408 gtk_window_set_title (GTK_WINDOW (inCallDialog.dialog), _("Call in progress"));
409 gtk_container_set_border_width (GTK_CONTAINER (inCallDialog.dialog), 5);
410 gtk_signal_connect (GTK_OBJECT (inCallDialog.dialog), "delete_event",
411 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
413 hbox = gtk_hbox_new (FALSE, 0);
414 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inCallDialog.dialog)->vbox), hbox, FALSE, FALSE, 5);
415 gtk_widget_show (hbox);
417 inCallDialog.label = gtk_label_new ("");
418 gtk_box_pack_start (GTK_BOX (hbox), inCallDialog.label, FALSE, FALSE, 0);
419 gtk_widget_show (inCallDialog.label);
421 button = gtk_button_new_with_label (_("Hide"));
422 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (inCallDialog.dialog)->action_area),
423 button, TRUE, FALSE, 0);
424 gtk_signal_connect (GTK_OBJECT (button), "clicked",
425 GTK_SIGNAL_FUNC (HideCallDialog), (gpointer) inCallDialog.dialog);
426 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
427 gtk_widget_grab_default (button);
428 gtk_widget_show (button);
432 static gint Update (gpointer data)
434 static gchar lastCallNum[20] = "";
435 static gchar callBuf[80];
436 static gchar timeBuf[10];
437 static gchar *anonym = "anonymous";
438 static struct tm stm;
439 static gint smsUsed = 0;
440 static gint callTimerStart = 0;
444 static bool outgoing = TRUE;
447 /* The number of SMS messages before second */
448 static int smsUnRead=0;
450 /* The number of second for we should display "Short Message Received" message */
451 static int smsreceived=-1;
453 DrawBackground (data);
455 DrawNetwork (data, phoneMonitor.rfLevel);
457 if (phoneMonitor.powerSource == GPS_ACDC)
458 phoneMonitor.batteryLevel = ((gint) phoneMonitor.batteryLevel + 25) % 125;
459 DrawBattery (data, phoneMonitor.batteryLevel);
461 if (phoneMonitor.alarm)
464 if (phoneMonitor.working)
465 DrawText (data, 25, phoneMonitor.working);
467 pthread_mutex_lock (&smsMutex);
468 if (phoneMonitor.sms.unRead > 0)
472 if (phoneMonitor.sms.unRead > smsUnRead && smsUnRead != -1)
473 smsreceived = 10; /* The message "Short Message Received" is displayed for 10s */
475 if (smsUsed != phoneMonitor.sms.used)
476 GUIEventSend (GUI_EVENT_SMS_NUMBER_CHANGED);
478 smsUnRead = phoneMonitor.sms.unRead;
480 smsUsed = phoneMonitor.sms.used;
482 pthread_mutex_unlock (&smsMutex);
484 if (smsreceived >= 0)
486 DrawSMSReceived (data);
490 pthread_mutex_lock (&callMutex);
491 if (phoneMonitor.call.callInProgress != CS_Idle)
493 if (phoneMonitor.call.callInProgress == CS_InProgress)
496 callTimerStart = callTimer = time (NULL);
498 callTimer = time (NULL);
501 if (phoneMonitor.call.callInProgress == CS_Waiting)
505 if (*phoneMonitor.call.callNum == '\0')
507 else if (strncmp (phoneMonitor.call.callNum, lastCallNum, 20))
509 strncpy (lastCallNum, phoneMonitor.call.callNum, 20);
510 lastCallNum[19] = '\0';
511 name = GUI_GetName (phoneMonitor.call.callNum);
513 name = phoneMonitor.call.callNum;
516 t = (time_t) difftime (callTimer, callTimerStart);
517 (void) gmtime_r (&t, &stm);
518 strftime (timeBuf, 10, "%T", &stm);
520 g_snprintf (callBuf, 80, _("Outgoing call in progress:\nTime: %s"),
523 g_snprintf (callBuf, 80, _("Incomming call from: %s\nTime: %s"),
526 gtk_label_set_text (GTK_LABEL (inCallDialog.label), callBuf);
527 if (!GTK_WIDGET_VISIBLE (inCallDialog.dialog) && !hiddenCallDialog)
528 gtk_widget_show (inCallDialog.dialog);
532 callTimerStart = callTimer = 0;
535 if (GTK_WIDGET_VISIBLE (inCallDialog.dialog))
536 gtk_widget_hide (inCallDialog.dialog);
537 hiddenCallDialog = 0;
539 pthread_mutex_unlock (&callMutex);
541 gtk_widget_draw (data,NULL);
543 GUIEventSend (GUI_EVENT_NETMON_CHANGED);
549 /* Redraw the screen from the backing pixmap */
550 static inline gint ExposeEvent (GtkWidget *widget, GdkEventExpose *event)
552 gdk_draw_pixmap (widget->window,
553 widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
555 event->area.x, event->area.y,
556 event->area.x, event->area.y,
557 event->area.width, event->area.height);
563 static void ParseSMSCenters (void)
568 gtk_clist_freeze (GTK_CLIST (SMSClist));
570 gtk_clist_clear (GTK_CLIST (SMSClist));
572 for (i = 0; i < xgnokiiConfig.smsSets; i++)
575 if (*(configDialogData.sms.smsSetting[i].Name) == '\0')
576 row[0] = g_strdup_printf (_("Set %d"), i + 1);
578 row[0] = g_strdup (configDialogData.sms.smsSetting[i].Name);
580 row[1] = g_strdup (configDialogData.sms.smsSetting[i].Number);
582 switch (configDialogData.sms.smsSetting[i].Format)
585 row[2] = g_strdup (_("Text"));
589 row[2] = g_strdup (_("Paging"));
593 row[2] = g_strdup (_("Fax"));
598 row[2] = g_strdup (_("E-Mail"));
602 row[2] = g_strdup (_("ERMES"));
606 row[2] = g_strdup (_("X.400"));
610 row[2] = g_strdup (_("Voice"));
614 row[2] = g_strdup (_("Text"));
618 switch (configDialogData.sms.smsSetting[i].Validity)
621 row[3] = g_strdup (_("1 h"));
625 row[3] = g_strdup (_("6 h"));
629 row[3] = g_strdup (_("24 h"));
633 row[3] = g_strdup (_("72 h"));
637 row[3] = g_strdup (_("1 week"));
641 row[3] = g_strdup (_("Max. time"));
645 row[3] = g_strdup (_("24 h"));
649 gtk_clist_append( GTK_CLIST (SMSClist), row);
651 for (j = 0; j < 4; j++)
655 gtk_clist_thaw (GTK_CLIST (SMSClist));
659 static void RefreshUserStatus (void)
662 configDialogData.user.used = GTK_ENTRY (configDialogData.user.name)->text_length
663 + GTK_ENTRY (configDialogData.user.title)->text_length
664 + GTK_ENTRY (configDialogData.user.company)->text_length
665 + GTK_ENTRY (configDialogData.user.telephone)->text_length
666 + GTK_ENTRY (configDialogData.user.fax)->text_length
667 + GTK_ENTRY (configDialogData.user.email)->text_length
668 + GTK_ENTRY (configDialogData.user.address)->text_length;
669 configDialogData.user.max = MAX_BUSINESS_CARD_LENGTH;
670 if (GTK_ENTRY (configDialogData.user.telephone)->text_length > 0)
671 configDialogData.user.max -= 4;
672 if (GTK_ENTRY (configDialogData.user.fax)->text_length > 0)
673 configDialogData.user.max -= 4;
674 g_snprintf (buf, 8, "%d/%d", configDialogData.user.used, configDialogData.user.max);
675 gtk_label_set_text (GTK_LABEL (configDialogData.user.status), buf);
679 void GUI_InitSMSSettings (void)
685 if (SMSSettingsInitialized)
688 gtk_label_set_text (GTK_LABEL (infoDialog.text), _("Reading SMS centers ..."));
689 gtk_widget_show_now (infoDialog.dialog);
692 for (i = 1; i <= MAX_SMS_CENTER; i++)
694 xgnokiiConfig.smsSetting[i - 1].No = i;
695 c = (D_SMSCenter *) g_malloc (sizeof (D_SMSCenter));
696 c->center = &(xgnokiiConfig.smsSetting[i - 1]);
698 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
699 e->event = Event_GetSMSCenter;
702 pthread_mutex_lock (&smsCenterMutex);
703 pthread_cond_wait (&smsCenterCond, &smsCenterMutex);
704 pthread_mutex_unlock (&smsCenterMutex);
706 if (c->status != GE_NONE)
711 configDialogData.sms.smsSetting[i - 1] = xgnokiiConfig.smsSetting[i - 1];
714 xgnokiiConfig.smsSets = i - 1;
718 SMSSettingsInitialized = TRUE;
720 gtk_widget_hide (infoDialog.dialog);
724 void GUI_ShowOptions (void)
730 if (optionsDialogIsOpened)
733 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.port), xgnokiiConfig.port);
735 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.model), xgnokiiConfig.model);
737 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.init), xgnokiiConfig.initlength);
739 gtk_entry_set_text (GTK_ENTRY (configDialogData.connection.bindir), xgnokiiConfig.bindir);
741 if(!strcmp(xgnokiiConfig.connection, "serial")) {
742 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.serial), TRUE);
743 } else if(!strcmp(xgnokiiConfig.connection, "infrared")) {
744 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.infrared), TRUE);
746 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.connection.irda), TRUE);
750 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.model), phoneMonitor.phone.model);
752 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.version), phoneMonitor.phone.version);
754 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.revision), phoneMonitor.phone.revision);
756 gtk_entry_set_text (GTK_ENTRY (configDialogData.phone.imei), phoneMonitor.phone.imei);
758 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen),
759 atof (xgnokiiConfig.maxSIMLen));
761 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen),
762 atof (xgnokiiConfig.maxPhoneLen));
765 alarm = (D_Alarm *) g_malloc (sizeof (D_Alarm));
766 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
767 e->event = Event_GetAlarm;
770 pthread_mutex_lock (&alarmMutex);
771 pthread_cond_wait (&alarmCond, &alarmMutex);
772 pthread_mutex_unlock (&alarmMutex);
774 if (alarm->status != GE_NONE)
776 xgnokiiConfig.alarmSupported = FALSE;
777 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), FALSE);
778 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), 0.0);
779 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), 0.0);
783 xgnokiiConfig.alarmSupported = TRUE;
784 if (alarm->time.AlarmEnabled)
785 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), TRUE);
787 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch), FALSE);
788 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), alarm->time.Hour);
789 gtk_spin_button_set_value (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), alarm->time.Minute);
794 if (phoneMonitor.supported & PM_SMS)
796 gtk_widget_show (sms_option_frame);
797 GUI_InitSMSSettings ();
800 gtk_widget_hide (sms_option_frame);
804 if (phoneMonitor.supported & PM_SMS)
806 gtk_widget_show (user_option_frame);
808 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.name),
809 xgnokiiConfig.user.name);
810 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.title),
811 xgnokiiConfig.user.title);
812 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.company),
813 xgnokiiConfig.user.company);
814 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.telephone),
815 xgnokiiConfig.user.telephone);
816 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.fax),
817 xgnokiiConfig.user.fax);
818 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.email),
819 xgnokiiConfig.user.email);
820 gtk_entry_set_text (GTK_ENTRY (configDialogData.user.address),
821 xgnokiiConfig.user.address);
826 gtk_widget_hide (user_option_frame);
830 if (phoneMonitor.supported & PM_CALLERGROUP)
832 gtk_widget_show (cg_names_option_frame);
833 GUI_InitCallerGroupsInf ();
834 for ( i = 0; i < 6; i++)
835 gtk_entry_set_text (GTK_ENTRY (configDialogData.groups[i]), xgnokiiConfig.callerGroups[i]);
838 gtk_widget_hide (cg_names_option_frame);
841 if (phoneMonitor.supported & PM_SMS)
843 gtk_widget_show (mail_option_frame);
844 gtk_entry_set_text (GTK_ENTRY (configDialogData.mailbox),
845 xgnokiiConfig.mailbox);;
848 gtk_widget_hide (mail_option_frame);
851 gtk_entry_set_text (GTK_ENTRY (configDialogData.help),
852 xgnokiiConfig.helpviewer);
854 optionsDialogIsOpened = TRUE;
855 gtk_widget_show (OptionsDialog);
859 inline void GUI_ShowAbout (void)
861 gtk_widget_show (AboutDialog);
865 inline void GUI_HideAbout(void)
867 gtk_widget_hide (AboutDialog);
871 static void MainExit (void)
873 PhoneEvent *e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
875 e->event = Event_Exit;
878 pthread_join (monitor_th, NULL);
883 static void ShowMenu (GdkEventButton *event)
885 GdkEventButton *bevent = (GdkEventButton *) event;
887 if (phoneMonitor.supported & PM_KEYBOARD)
888 gtk_widget_show (xkeyb_menu_item);
890 gtk_widget_hide (xkeyb_menu_item);
892 if (phoneMonitor.supported & PM_NETMONITOR)
893 gtk_widget_show (netmon_menu_item);
895 gtk_widget_hide (netmon_menu_item);
897 if (phoneMonitor.supported & PM_SMS)
898 gtk_widget_show (sms_menu_item);
900 gtk_widget_hide (sms_menu_item);
902 if (phoneMonitor.supported & PM_CALENDAR)
903 gtk_widget_show (calendar_menu_item);
905 gtk_widget_hide (calendar_menu_item);
907 if (phoneMonitor.supported & PM_DTMF)
908 gtk_widget_show (dtmf_menu_item);
910 gtk_widget_hide (dtmf_menu_item);
912 if (phoneMonitor.supported & PM_SPEEDDIAL)
913 gtk_widget_show (speedDial_menu_item);
915 gtk_widget_hide (speedDial_menu_item);
917 if (phoneMonitor.supported & PM_DATA)
918 gtk_widget_show (data_menu_item);
920 gtk_widget_hide (data_menu_item);
922 gtk_menu_popup (GTK_MENU (Menu), NULL, NULL, NULL, NULL,
923 bevent->button, bevent->time);
927 static gint ButtonPressEvent (GtkWidget *widget, GdkEventButton *event)
930 if (event->button == 1) {
933 if (event->x >= 206 && event->x <= 221 &&
934 event->y >= 42 && event->y <= 55)
936 if (GUI_ContactsIsChanged())
937 GUI_QuitSaveContacts();
941 else if ((event->x >= 180 && event->x <= 195 &&
942 event->y >= 30 && event->y <= 50) ||
943 (event->x >= 185 && event->x <= 215 &&
944 event->y >= 15 && event->y <= 30))
948 else if (event->x >= 190 && event->x <= 210 &&
949 event->y >= 70 && event->y <= 85)
951 if (!phoneMonitor.supported & PM_SMS)
952 phoneMonitor.working = _("SMS not supported!");
956 else if (event->x >= 235 && event->x <= 248 &&
957 event->y >= 27 && event->y <= 75)
959 if (!phoneMonitor.supported & PM_CALENDAR)
960 phoneMonitor.working = _("Calendar not supported!");
964 else if (event->x >= 245 && event->x <= 258 &&
965 event->y >= 83 && event->y <= 93)
970 else if (event->button == 3)
973 // g_print ("event->x: %f\n", event->x);
974 // g_print ("event->y: %f\n", event->y);
980 static void OptionsApplyCallback (GtkWidget *widget, gpointer data )
987 max_phonebook_sim_name_length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen));
988 max_phonebook_name_length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen));
989 g_free (xgnokiiConfig.maxSIMLen);
990 g_free (xgnokiiConfig.maxPhoneLen);
991 xgnokiiConfig.maxSIMLen = g_strdup_printf ("%d", max_phonebook_sim_name_length);
992 xgnokiiConfig.maxPhoneLen = g_strdup_printf ("%d", max_phonebook_name_length);
996 FIXME: we should also allow to set the alarm off :-) */
997 if (xgnokiiConfig.alarmSupported
998 && GTK_TOGGLE_BUTTON (configDialogData.alarm.alarmSwitch)->active)
1000 alarm = (D_Alarm *) g_malloc (sizeof (D_Alarm));
1001 alarm->time.Hour = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour));
1002 alarm->time.Minute = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin));
1003 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1004 e->event = Event_SetAlarm;
1006 GUI_InsertEvent (e);
1010 if (phoneMonitor.supported & PM_SMS)
1012 for (i = 0; i < xgnokiiConfig.smsSets; i++)
1013 xgnokiiConfig.smsSetting[i] = configDialogData.sms.smsSetting[i];
1014 GUIEventSend (GUI_EVENT_SMS_CENTERS_CHANGED);
1018 if (phoneMonitor.supported & PM_SMS)
1020 g_free(xgnokiiConfig.user.name);
1021 xgnokiiConfig.user.name = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.name)));
1022 g_free(xgnokiiConfig.user.title);
1023 xgnokiiConfig.user.title = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.title)));
1024 g_free(xgnokiiConfig.user.company);
1025 xgnokiiConfig.user.company = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.company)));
1026 g_free(xgnokiiConfig.user.telephone);
1027 xgnokiiConfig.user.telephone = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.telephone)));
1028 g_free(xgnokiiConfig.user.fax);
1029 xgnokiiConfig.user.fax = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.fax)));
1030 g_free(xgnokiiConfig.user.email);
1031 xgnokiiConfig.user.email = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.email)));
1032 g_free(xgnokiiConfig.user.address);
1033 xgnokiiConfig.user.address = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.user.address)));
1037 if (phoneMonitor.supported & PM_CALLERGROUP)
1039 for ( i = 0; i < 6; i++)
1041 strncpy(xgnokiiConfig.callerGroups[i],
1042 gtk_entry_get_text(GTK_ENTRY (configDialogData.groups[i])),
1043 MAX_CALLER_GROUP_LENGTH);
1044 xgnokiiConfig.callerGroups[i][MAX_CALLER_GROUP_LENGTH] = '\0';
1046 GUIEventSend (GUI_EVENT_CALLERS_GROUPS_CHANGED);
1047 GUIEventSend (GUI_EVENT_CONTACTS_CHANGED);
1051 if (phoneMonitor.supported & PM_SMS)
1053 g_free(xgnokiiConfig.mailbox);
1054 xgnokiiConfig.mailbox = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.mailbox)));
1058 g_free(xgnokiiConfig.helpviewer);
1059 xgnokiiConfig.helpviewer = g_strdup (gtk_entry_get_text(GTK_ENTRY (configDialogData.help)));
1063 static void OptionsSaveCallback (GtkWidget *widget, gpointer data )
1070 //gtk_widget_hide(GTK_WIDGET(data));
1071 OptionsApplyCallback (widget, data);
1072 for (i = 0; i < xgnokiiConfig.smsSets; i++)
1074 xgnokiiConfig.smsSetting[i].No = i + 1;
1075 c = (D_SMSCenter *) g_malloc (sizeof (D_SMSCenter));
1076 c->center = &(xgnokiiConfig.smsSetting[i]);
1077 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1078 e->event = Event_SetSMSCenter;
1080 GUI_InsertEvent (e);
1083 if (phoneMonitor.supported & PM_CALLERGROUP)
1085 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1087 if (strcmp (xgnokiiConfig.callerGroups[0], _("Familly")) == 0)
1090 strncpy (cg->text, xgnokiiConfig.callerGroups[0], 256);
1091 cg->text[255] = '\0';
1092 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1093 e->event = Event_SendCallerGroup;
1095 GUI_InsertEvent (e);
1097 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1099 if (strcmp (xgnokiiConfig.callerGroups[1], _("VIP")) == 0)
1102 strncpy (cg->text, xgnokiiConfig.callerGroups[1], 256);
1103 cg->text[255] = '\0';
1104 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1105 e->event = Event_SendCallerGroup;
1107 GUI_InsertEvent (e);
1109 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1111 if (strcmp (xgnokiiConfig.callerGroups[2], _("Friends")) == 0)
1114 strncpy (cg->text, xgnokiiConfig.callerGroups[2], 256);
1115 cg->text[255] = '\0';
1116 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1117 e->event = Event_SendCallerGroup;
1119 GUI_InsertEvent (e);
1121 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1123 if (strcmp (xgnokiiConfig.callerGroups[3], _("Colleagues")) == 0)
1126 strncpy (cg->text, xgnokiiConfig.callerGroups[3], 256);
1127 cg->text[255] = '\0';
1128 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1129 e->event = Event_SendCallerGroup;
1131 GUI_InsertEvent (e);
1133 cg = (D_CallerGroup *) g_malloc (sizeof (D_CallerGroup));
1135 if (strcmp (xgnokiiConfig.callerGroups[4], _("Other")) == 0)
1138 strncpy (cg->text, xgnokiiConfig.callerGroups[4], 256);
1139 cg->text[255] = '\0';
1140 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
1141 e->event = Event_SendCallerGroup;
1143 GUI_InsertEvent (e);
1146 if (GUI_SaveXConfig())
1148 gtk_label_set_text (GTK_LABEL(errorDialog.text), _("Error writing configuration file!"));
1149 gtk_widget_show (errorDialog.dialog);
1154 static GtkWidget *CreateMenu (void)
1156 GtkWidget *menu, *menu_items;
1158 menu = gtk_menu_new ();
1160 menu_items = gtk_menu_item_new_with_label (_("Contacts"));
1161 gtk_menu_append (GTK_MENU (menu), menu_items);
1162 gtk_signal_connect_object (GTK_OBJECT (menu_items), "activate",
1163 GTK_SIGNAL_FUNC (GUI_ShowContacts), NULL);
1164 gtk_widget_show (menu_items);
1166 sms_menu_item = gtk_menu_item_new_with_label (_("SMS"));
1167 gtk_menu_append (GTK_MENU (menu), sms_menu_item);
1168 gtk_signal_connect_object (GTK_OBJECT (sms_menu_item), "activate",
1169 GTK_SIGNAL_FUNC (GUI_ShowSMS), NULL);
1171 calendar_menu_item = gtk_menu_item_new_with_label (_("Calendar"));
1172 gtk_menu_append (GTK_MENU (menu), calendar_menu_item);
1173 gtk_signal_connect_object (GTK_OBJECT (calendar_menu_item), "activate",
1174 GTK_SIGNAL_FUNC (GUI_ShowCalendar), NULL);
1176 logos_menu_item = gtk_menu_item_new_with_label (_("Logos"));
1177 gtk_menu_append (GTK_MENU (menu), logos_menu_item);
1178 gtk_signal_connect_object (GTK_OBJECT (logos_menu_item), "activate",
1179 GTK_SIGNAL_FUNC (GUI_ShowLogosWindow), NULL);
1180 gtk_widget_show(logos_menu_item);
1182 dtmf_menu_item = gtk_menu_item_new_with_label (_("DTMF"));
1183 gtk_menu_append (GTK_MENU (menu), dtmf_menu_item);
1184 gtk_signal_connect_object (GTK_OBJECT (dtmf_menu_item), "activate",
1185 GTK_SIGNAL_FUNC (GUI_ShowDTMF), NULL);
1187 speedDial_menu_item = gtk_menu_item_new_with_label (_("Speed Dial"));
1188 gtk_menu_append (GTK_MENU (menu), speedDial_menu_item);
1189 gtk_signal_connect_object (GTK_OBJECT (speedDial_menu_item), "activate",
1190 GTK_SIGNAL_FUNC (GUI_ShowSpeedDial), NULL);
1192 xkeyb_menu_item = gtk_menu_item_new_with_label (_("Keyboard"));
1193 gtk_menu_append (GTK_MENU (menu), xkeyb_menu_item);
1194 gtk_signal_connect_object (GTK_OBJECT (xkeyb_menu_item), "activate",
1195 GTK_SIGNAL_FUNC (GUI_ShowXkeyb), NULL);
1197 netmon_menu_item = gtk_menu_item_new_with_label (_("Net Monitor"));
1198 gtk_menu_append (GTK_MENU (menu), netmon_menu_item);
1199 gtk_signal_connect_object (GTK_OBJECT (netmon_menu_item), "activate",
1200 GTK_SIGNAL_FUNC (GUI_ShowNetmon), NULL);
1202 data_menu_item = gtk_menu_item_new_with_label (_("Data calls"));
1203 gtk_menu_append (GTK_MENU (menu), data_menu_item);
1204 gtk_signal_connect_object (GTK_OBJECT (data_menu_item), "activate",
1205 GTK_SIGNAL_FUNC (GUI_ShowData), NULL);
1207 menu_items = gtk_menu_item_new ();
1208 gtk_menu_append (GTK_MENU (menu), menu_items);
1209 gtk_widget_show (menu_items);
1211 menu_items = gtk_menu_item_new_with_label (_("Options"));
1212 gtk_menu_append (GTK_MENU (menu), menu_items);
1213 gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
1214 GTK_SIGNAL_FUNC(GUI_ShowOptions), NULL);
1215 gtk_widget_show (menu_items);
1217 menu_items = gtk_menu_item_new ();
1218 gtk_menu_append (GTK_MENU (menu), menu_items);
1219 gtk_widget_show (menu_items);
1221 menu_items = gtk_menu_item_new_with_label (_("Help"));
1222 gtk_menu_append (GTK_MENU (menu), menu_items);
1223 gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
1224 GTK_SIGNAL_FUNC(Help1), NULL);
1225 gtk_widget_show (menu_items);
1227 menu_items = gtk_menu_item_new_with_label (_("About"));
1228 gtk_menu_append (GTK_MENU (menu), menu_items);
1229 gtk_signal_connect_object (GTK_OBJECT(menu_items), "activate",
1230 GTK_SIGNAL_FUNC (GUI_ShowAbout), NULL);
1231 gtk_widget_show (menu_items);
1237 static GtkWidget *CreateAboutDialog (void)
1240 GtkWidget *button, *hbox, *label;
1243 dialog = gtk_dialog_new ();
1244 gtk_window_set_title (GTK_WINDOW (dialog), _("About"));
1245 gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
1246 gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
1247 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
1248 button = gtk_button_new_with_label (_("Ok"));
1249 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1250 button, TRUE, FALSE, 5);
1251 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1252 GTK_SIGNAL_FUNC (GUI_HideAbout), NULL);
1253 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1254 gtk_widget_grab_default (button);
1255 gtk_widget_show (button);
1257 hbox = gtk_hbox_new (FALSE, 0);
1258 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
1259 gtk_widget_show (hbox);
1261 g_snprintf (buf, 2000, _("xgnokii version: %s\ngnokii version: %s\n\n\
1262 Copyright (C) 1999,2000 Pavel Janík ml.,\nHugh Blemings, Jan Derfinak and others\n\
1263 xgnokii is free software, covered by the GNU General Public License, and you are\n\
1264 welcome to change it and/or distribute copies of it under certain conditions.\n\
1265 There is absolutely no waranty for xgnokii. See GPL for details.\n"),
1267 label = gtk_label_new ((gchar *) buf);
1268 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
1269 gtk_widget_show (label);
1275 static inline void SetFormat (GtkWidget *item, gpointer data)
1277 tempMessageSettings.Format = GPOINTER_TO_INT (data);
1281 static inline void SetValidity (GtkWidget *item, gpointer data)
1283 tempMessageSettings.Validity = GPOINTER_TO_INT (data);
1287 static inline void OptionsDeleteEvent (GtkWidget *widget, GdkEvent *event, gpointer data )
1289 gtk_widget_hide( GTK_WIDGET (widget));
1290 optionsDialogIsOpened = FALSE;
1294 static inline void OptionsCloseCallback (GtkWidget *widget, gpointer data )
1296 gtk_widget_hide(GTK_WIDGET(data));
1297 optionsDialogIsOpened = FALSE;
1301 static gint CheckInUserDataLength (GtkWidget *widget,
1303 gpointer callback_data)
1307 len = configDialogData.user.max - (GTK_ENTRY (configDialogData.user.name)->text_length
1308 + GTK_ENTRY (configDialogData.user.title)->text_length
1309 + GTK_ENTRY (configDialogData.user.company)->text_length
1310 + GTK_ENTRY (configDialogData.user.telephone)->text_length
1311 + GTK_ENTRY (configDialogData.user.fax)->text_length
1312 + GTK_ENTRY (configDialogData.user.email)->text_length
1313 + GTK_ENTRY (configDialogData.user.address)->text_length
1314 - GTK_ENTRY (widget)->text_length);
1318 gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
1322 gtk_entry_set_editable (GTK_ENTRY (widget), TRUE);
1323 if (GPOINTER_TO_INT (callback_data) == 3
1324 || GPOINTER_TO_INT (callback_data) == 4)
1326 if ((GPOINTER_TO_INT (callback_data) == 3
1327 && GTK_ENTRY (configDialogData.user.telephone)->text_length == 0)
1328 || (GPOINTER_TO_INT (callback_data) == 4
1329 && GTK_ENTRY (configDialogData.user.fax)->text_length == 0))
1334 gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
1338 if (len > max_phonebook_number_length)
1339 len = max_phonebook_number_length;
1342 gtk_entry_set_max_length (GTK_ENTRY (widget), len);
1347 static inline gint CheckOutUserDataLength (GtkWidget *widget,
1349 gpointer callback_data)
1351 gtk_entry_set_max_length (GTK_ENTRY (widget), GPOINTER_TO_INT (callback_data));
1356 static inline gint RefreshUserStatusCallBack (GtkWidget *widget,
1358 gpointer callback_data)
1360 RefreshUserStatus ();
1361 if (GTK_EDITABLE (widget)->editable == FALSE)
1363 if (event->keyval == GDK_BackSpace || event->keyval == GDK_Clear ||
1364 event->keyval == GDK_Insert || event->keyval == GDK_Delete ||
1365 event->keyval == GDK_Home || event->keyval == GDK_End ||
1366 event->keyval == GDK_Left || event->keyval == GDK_Right ||
1367 event->keyval == GDK_Return ||
1368 (event->keyval >= 0x20 && event->keyval <= 0xFF))
1375 static void OkEditSMSSetDialog (GtkWidget *w, gpointer data)
1378 strncpy(configDialogData.sms.smsSetting
1379 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name,
1380 gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.set)),
1381 GSM_MAX_SMS_CENTER_NAME_LENGTH);
1382 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name[GSM_MAX_SMS_CENTER_NAME_LENGTH - 1]
1385 strncpy(configDialogData.sms.smsSetting
1386 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number,
1387 gtk_entry_get_text(GTK_ENTRY (configDialogData.sms.number)),
1388 GSM_MAX_SMS_CENTER_LENGTH);
1389 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number[GSM_MAX_SMS_CENTER_LENGTH]
1392 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format
1393 = tempMessageSettings.Format;
1395 configDialogData.sms.smsSetting[GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity
1396 = tempMessageSettings.Validity;
1400 gtk_widget_hide (GTK_WIDGET (data));
1404 static inline void EditSMSSetDialogClick (GtkWidget *clist,
1407 GdkEventButton *event,
1410 if(event && event->type == GDK_2BUTTON_PRESS)
1411 gtk_signal_emit_by_name(GTK_OBJECT (data), "clicked");
1415 static void ShowEditSMSSetDialog (GtkWidget *w, gpointer data)
1417 static GtkWidget *dialog = NULL;
1418 GtkWidget *button, *label, *hbox, *menu, *item;
1420 if (GTK_CLIST (SMSClist)->selection == NULL)
1425 dialog = gtk_dialog_new();
1426 gtk_window_set_title (GTK_WINDOW (dialog), _("Edit SMS Setting"));
1427 gtk_window_set_modal(GTK_WINDOW (dialog), TRUE);
1428 gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
1429 gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
1430 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
1432 button = gtk_button_new_with_label (_("Ok"));
1433 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1434 button, TRUE, TRUE, 10);
1435 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1436 GTK_SIGNAL_FUNC (OkEditSMSSetDialog), (gpointer) dialog);
1437 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1438 gtk_widget_grab_default (button);
1439 gtk_widget_show (button);
1440 button = gtk_button_new_with_label (_("Cancel"));
1441 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1442 button, TRUE, TRUE, 10);
1443 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1444 GTK_SIGNAL_FUNC (CancelDialog), (gpointer) dialog);
1445 gtk_widget_show (button);
1447 gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
1449 hbox = gtk_hbox_new (FALSE, 0);
1450 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
1451 gtk_widget_show (hbox);
1453 label = gtk_label_new (_("Set's name:"));
1454 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
1455 gtk_widget_show (label);
1457 configDialogData.sms.set = gtk_entry_new_with_max_length(GSM_MAX_SMS_CENTER_NAME_LENGTH - 1);
1458 gtk_widget_set_usize (configDialogData.sms.set, 110, 22);
1459 gtk_box_pack_end(GTK_BOX(hbox), configDialogData.sms.set, FALSE, FALSE, 2);
1460 gtk_widget_show (configDialogData.sms.set);
1462 hbox = gtk_hbox_new (FALSE, 0);
1463 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
1464 gtk_widget_show (hbox);
1466 label = gtk_label_new (_("Center:"));
1467 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
1468 gtk_widget_show (label);
1470 configDialogData.sms.number = gtk_entry_new_with_max_length(GSM_MAX_SMS_CENTER_LENGTH - 1);
1471 gtk_widget_set_usize (configDialogData.sms.number, 110, 22);
1472 gtk_box_pack_end(GTK_BOX(hbox), configDialogData.sms.number, FALSE, FALSE, 2);
1473 gtk_widget_show (configDialogData.sms.number);
1475 hbox = gtk_hbox_new (FALSE, 0);
1476 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 9);
1477 gtk_widget_show (hbox);
1479 label = gtk_label_new (_("Sending Format:"));
1480 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1481 gtk_widget_show (label);
1483 configDialogData.sms.format = gtk_option_menu_new ();
1484 menu = gtk_menu_new ();
1485 gtk_widget_set_usize (configDialogData.sms.format, 110, 28);
1487 item = gtk_menu_item_new_with_label (_("Text"));
1488 gtk_signal_connect (GTK_OBJECT (item), "activate",
1489 GTK_SIGNAL_FUNC(SetFormat),
1490 (gpointer) GSMF_Text);
1491 gtk_widget_show (item);
1492 gtk_menu_append (GTK_MENU (menu), item);
1494 item = gtk_menu_item_new_with_label (_("Fax"));
1495 gtk_signal_connect (GTK_OBJECT (item), "activate",
1496 GTK_SIGNAL_FUNC(SetFormat),
1497 (gpointer) GSMF_Fax);
1498 gtk_widget_show (item);
1499 gtk_menu_append (GTK_MENU (menu), item);
1501 item = gtk_menu_item_new_with_label (_("Paging"));
1502 gtk_signal_connect (GTK_OBJECT (item), "activate",
1503 GTK_SIGNAL_FUNC(SetFormat),
1504 (gpointer) GSMF_Paging);
1505 gtk_widget_show (item);
1506 gtk_menu_append (GTK_MENU (menu), item);
1508 item = gtk_menu_item_new_with_label (_("E-Mail"));
1509 gtk_signal_connect (GTK_OBJECT (item), "activate",
1510 GTK_SIGNAL_FUNC(SetFormat),
1511 (gpointer) GSMF_Email);
1512 gtk_widget_show (item);
1513 gtk_menu_append (GTK_MENU (menu), item);
1515 gtk_option_menu_set_menu (GTK_OPTION_MENU (configDialogData.sms.format), menu);
1516 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.sms.format, FALSE, FALSE, 2);
1517 gtk_widget_show (configDialogData.sms.format);
1519 hbox = gtk_hbox_new (FALSE, 0);
1520 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 9);
1521 gtk_widget_show (hbox);
1523 label = gtk_label_new (_("Validity Period:"));
1524 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1525 gtk_widget_show (label);
1527 configDialogData.sms.validity = gtk_option_menu_new ();
1528 menu = gtk_menu_new ();
1529 gtk_widget_set_usize (configDialogData.sms.validity, 110, 28);
1531 item = gtk_menu_item_new_with_label (_("Max. Time"));
1532 gtk_signal_connect (GTK_OBJECT (item), "activate",
1533 GTK_SIGNAL_FUNC(SetValidity),
1534 (gpointer) GSMV_Max_Time);
1535 gtk_widget_show (item);
1536 gtk_menu_append (GTK_MENU (menu), item);
1538 item = gtk_menu_item_new_with_label (_("1 h"));
1539 gtk_signal_connect (GTK_OBJECT (item), "activate",
1540 GTK_SIGNAL_FUNC(SetValidity),
1541 (gpointer) GSMV_1_Hour);
1542 gtk_widget_show (item);
1543 gtk_menu_append (GTK_MENU (menu), item);
1545 item = gtk_menu_item_new_with_label (_("6 h"));
1546 gtk_signal_connect (GTK_OBJECT (item), "activate",
1547 GTK_SIGNAL_FUNC(SetValidity),
1548 (gpointer) GSMV_6_Hours);
1549 gtk_widget_show (item);
1550 gtk_menu_append (GTK_MENU (menu), item);
1552 item = gtk_menu_item_new_with_label (_("24 h"));
1553 gtk_signal_connect (GTK_OBJECT (item), "activate",
1554 GTK_SIGNAL_FUNC(SetValidity),
1555 (gpointer) GSMV_24_Hours);
1556 gtk_widget_show (item);
1557 gtk_menu_append (GTK_MENU (menu), item);
1559 item = gtk_menu_item_new_with_label (_("72 h"));
1560 gtk_signal_connect (GTK_OBJECT (item), "activate",
1561 GTK_SIGNAL_FUNC(SetValidity),
1562 (gpointer) GSMV_72_Hours);
1563 gtk_widget_show (item);
1564 gtk_menu_append (GTK_MENU (menu), item);
1566 item = gtk_menu_item_new_with_label (_("1 week"));
1567 gtk_signal_connect (GTK_OBJECT (item), "activate",
1568 GTK_SIGNAL_FUNC(SetValidity),
1569 (gpointer) GSMV_1_Week);
1570 gtk_widget_show (item);
1571 gtk_menu_append (GTK_MENU (menu), item);
1573 gtk_option_menu_set_menu (GTK_OPTION_MENU (configDialogData.sms.validity), menu);
1574 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.sms.validity, FALSE, FALSE, 2);
1575 gtk_widget_show (configDialogData.sms.validity);
1578 gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.set),
1579 configDialogData.sms.smsSetting
1580 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Name);
1582 gtk_entry_set_text (GTK_ENTRY (configDialogData.sms.number),
1583 configDialogData.sms.smsSetting
1584 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Number);
1586 switch (configDialogData.sms.smsSetting
1587 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format)
1590 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1595 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1600 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1605 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1610 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.format),
1614 switch (configDialogData.sms.smsSetting
1615 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity)
1618 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1623 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1628 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1633 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1638 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1643 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1648 gtk_option_menu_set_history (GTK_OPTION_MENU (configDialogData.sms.validity),
1652 tempMessageSettings.Format = configDialogData.sms.smsSetting
1653 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Format;
1654 tempMessageSettings.Validity = configDialogData.sms.smsSetting
1655 [GPOINTER_TO_INT(GTK_CLIST (SMSClist)->selection->data)].Validity;
1657 gtk_widget_show (dialog);
1661 static GtkWidget *CreateOptionsDialog (void)
1663 gchar labelBuffer[10];
1665 GtkWidget *button, *hbox, *vbox, *label, *notebook, *frame, *clistScrolledWindow;
1668 gchar *titles[4] = { _("Set's name"), _("Center number"), _("Format"), _("Validity")};
1670 dialog = gtk_dialog_new ();
1671 gtk_window_set_title (GTK_WINDOW (dialog), _("Options"));
1672 gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
1673 gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
1674 GTK_SIGNAL_FUNC (OptionsDeleteEvent), NULL);
1676 button = gtk_button_new_with_label (_("Apply"));
1677 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1678 button, TRUE, TRUE, 10);
1679 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1680 GTK_SIGNAL_FUNC (OptionsApplyCallback), (gpointer)dialog);
1681 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1682 gtk_widget_grab_default (button);
1683 gtk_widget_show (button);
1685 button = gtk_button_new_with_label (_("Save"));
1686 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1687 button, TRUE, TRUE, 10);
1688 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1689 GTK_SIGNAL_FUNC (OptionsSaveCallback), (gpointer)dialog);
1690 gtk_widget_show (button);
1692 button = gtk_button_new_with_label (_("Close"));
1693 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
1694 button, TRUE, TRUE, 10);
1695 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1696 GTK_SIGNAL_FUNC (OptionsCloseCallback), (gpointer)dialog);
1697 gtk_widget_show (button);
1699 gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
1701 notebook = gtk_notebook_new ();
1702 gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
1703 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), notebook);
1704 gtk_widget_show(notebook);
1706 /*** Connection notebook ***/
1707 frame = gtk_frame_new (_("Phone and connection type"));
1708 gtk_widget_show (frame);
1710 vbox = gtk_vbox_new( FALSE, 0);
1711 gtk_container_add (GTK_CONTAINER (frame), vbox);
1712 gtk_widget_show (vbox);
1714 label = gtk_label_new (_("Connection"));
1715 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
1717 hbox = gtk_hbox_new (FALSE, 0);
1718 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1719 gtk_widget_show (hbox);
1721 label = gtk_label_new (_("Port:"));
1722 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1723 gtk_widget_show (label);
1725 configDialogData.connection.port = gtk_entry_new_with_max_length (10);
1726 gtk_widget_set_usize (configDialogData.connection.port, 220, 22);
1727 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.port),
1729 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.port, FALSE, FALSE, 2);
1730 gtk_widget_show (configDialogData.connection.port);
1732 hbox = gtk_hbox_new (FALSE, 0);
1733 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1734 gtk_widget_show (hbox);
1736 label = gtk_label_new (_("Model:"));
1737 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1738 gtk_widget_show (label);
1740 configDialogData.connection.model = gtk_entry_new_with_max_length (5);
1741 gtk_widget_set_usize (configDialogData.connection.model, 220, 22);
1742 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.model),
1744 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.model, FALSE, FALSE, 2);
1745 gtk_widget_show (configDialogData.connection.model);
1747 hbox = gtk_hbox_new (FALSE, 0);
1748 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1749 gtk_widget_show (hbox);
1751 label = gtk_label_new (_("Init length:"));
1752 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
1753 gtk_widget_show (label);
1755 configDialogData.connection.init = gtk_entry_new_with_max_length (100);
1756 gtk_widget_set_usize (configDialogData.connection.init, 220, 22);
1757 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.init),
1759 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.init, FALSE, FALSE, 2);
1760 gtk_widget_show (configDialogData.connection.init);
1762 hbox = gtk_hbox_new (FALSE, 0);
1763 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1764 gtk_widget_show (hbox);
1766 label = gtk_label_new (_("Bindir:"));
1767 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1768 gtk_widget_show (label);
1770 configDialogData.connection.bindir = gtk_entry_new_with_max_length (100);
1771 gtk_widget_set_usize (configDialogData.connection.bindir, 220, 22);
1772 gtk_entry_set_editable (GTK_ENTRY (configDialogData.connection.bindir),
1774 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.bindir, FALSE, FALSE, 2);
1775 gtk_widget_show (configDialogData.connection.bindir);
1777 hbox = gtk_hbox_new (FALSE, 0);
1778 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1779 gtk_widget_show (hbox);
1781 label = gtk_label_new (_("Connection:"));
1782 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
1783 gtk_widget_show (label);
1785 configDialogData.connection.infrared = gtk_radio_button_new_with_label (NULL, _("infrared"));
1786 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.infrared, TRUE, FALSE, 2);
1787 gtk_widget_show (configDialogData.connection.infrared);
1789 configDialogData.connection.serial = gtk_radio_button_new_with_label (
1790 gtk_radio_button_group (GTK_RADIO_BUTTON (configDialogData.connection.infrared)), _("serial"));
1791 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.serial, TRUE, FALSE, 2);
1792 gtk_widget_show (configDialogData.connection.serial);
1794 configDialogData.connection.irda = gtk_radio_button_new_with_label (
1795 gtk_radio_button_group (GTK_RADIO_BUTTON (configDialogData.connection.infrared)), _("irda"));
1796 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.connection.irda, TRUE, FALSE, 2);
1797 gtk_widget_show (configDialogData.connection.irda);
1799 /*** Phone notebook ***/
1800 frame = gtk_frame_new (_("Phone information"));
1801 gtk_widget_show (frame);
1803 vbox = gtk_vbox_new( FALSE, 0);
1804 gtk_container_add (GTK_CONTAINER (frame), vbox);
1805 gtk_widget_show (vbox);
1807 label = gtk_label_new (_("Phone"));
1808 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);
1810 hbox = gtk_hbox_new (FALSE, 0);
1811 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1812 gtk_widget_show (hbox);
1814 label = gtk_label_new (_("Model:"));
1815 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1816 gtk_widget_show (label);
1818 configDialogData.phone.model = gtk_entry_new_with_max_length (7);
1819 gtk_widget_set_usize (configDialogData.phone.model, 220, 22);
1820 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.model),
1822 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.model, FALSE, FALSE, 2);
1823 gtk_widget_show (configDialogData.phone.model);
1825 hbox = gtk_hbox_new (FALSE, 0);
1826 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1827 gtk_widget_show (hbox);
1829 label = gtk_label_new (_("Version:"));
1830 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1831 gtk_widget_show (label);
1833 configDialogData.phone.version = gtk_entry_new_with_max_length (7);
1834 gtk_widget_set_usize (configDialogData.phone.version, 220, 22);
1835 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.version),
1837 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.version, FALSE, FALSE, 2);
1838 gtk_widget_show (configDialogData.phone.version);
1840 hbox = gtk_hbox_new (FALSE, 0);
1841 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1842 gtk_widget_show (hbox);
1844 label = gtk_label_new (_("Revision:"));
1845 gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 2);
1846 gtk_widget_show (label);
1848 configDialogData.phone.revision = gtk_entry_new_with_max_length (64);
1849 gtk_widget_set_usize (configDialogData.phone.revision, 220, 22);
1850 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.revision),
1852 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.revision, FALSE, FALSE, 2);
1853 gtk_widget_show (configDialogData.phone.revision);
1855 hbox = gtk_hbox_new (FALSE, 0);
1856 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1857 gtk_widget_show (hbox);
1859 label = gtk_label_new (_("IMEI:"));
1860 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1861 gtk_widget_show (label);
1863 configDialogData.phone.imei = gtk_entry_new_with_max_length (64);
1864 gtk_widget_set_usize (configDialogData.phone.imei, 220, 22);
1865 gtk_entry_set_editable (GTK_ENTRY (configDialogData.phone.imei),
1867 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.imei, FALSE, FALSE, 2);
1868 gtk_widget_show (configDialogData.phone.imei);
1870 hbox = gtk_hbox_new (FALSE, 0);
1871 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1872 gtk_widget_show (hbox);
1874 label = gtk_label_new (_("Names length:"));
1875 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1876 gtk_widget_show (label);
1878 hbox = gtk_hbox_new (FALSE, 0);
1879 gtk_container_add (GTK_CONTAINER (vbox), hbox);
1880 gtk_widget_show (hbox);
1882 label = gtk_label_new (_("SIM:"));
1883 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1884 gtk_widget_show (label);
1886 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 1.0, 100.0, 1.0, 10.0, 0.0);
1887 configDialogData.phone.simNameLen = gtk_spin_button_new (adj, 0, 0);
1888 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen), TRUE);
1889 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.phone.simNameLen), TRUE);
1890 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.phone.simNameLen, FALSE, FALSE, 2);
1891 gtk_widget_show (configDialogData.phone.simNameLen);
1893 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 1.0, 100.0, 1.0, 10.0, 0.0);
1894 configDialogData.phone.phoneNameLen = gtk_spin_button_new (adj, 0, 0);
1895 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen), TRUE);
1896 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.phone.phoneNameLen), TRUE);
1897 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.phone.phoneNameLen, FALSE, FALSE, 2);
1898 gtk_widget_show (configDialogData.phone.phoneNameLen);
1900 label = gtk_label_new (_("Phone:"));
1901 gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1902 gtk_widget_show (label);
1904 /*** Alarm notebook ***/
1905 xgnokiiConfig.alarmSupported = TRUE;
1907 frame = gtk_frame_new (_("Alarm setting"));
1908 gtk_widget_show (frame);
1910 vbox = gtk_vbox_new( FALSE, 0);
1911 gtk_container_add (GTK_CONTAINER (frame), vbox);
1912 gtk_widget_show(vbox);
1914 label = gtk_label_new (_("Alarm"));
1915 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), frame, label);
1917 hbox = gtk_hbox_new (FALSE, 0);
1918 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
1919 gtk_widget_show (hbox);
1921 configDialogData.alarm.alarmSwitch = gtk_check_button_new_with_label (_("Alarm"));
1922 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmSwitch, FALSE, FALSE, 10);
1923 gtk_widget_show (configDialogData.alarm.alarmSwitch);
1925 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 23.0, 1.0, 4.0, 0.0);
1926 configDialogData.alarm.alarmHour = gtk_spin_button_new (adj, 0, 0);
1927 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), TRUE);
1928 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.alarm.alarmHour), TRUE);
1929 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmHour, FALSE, FALSE, 0);
1930 gtk_widget_show (configDialogData.alarm.alarmHour);
1932 label = gtk_label_new (":");
1933 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
1934 gtk_widget_show (label);
1936 adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 59.0, 1.0, 10.0, 0.0);
1937 configDialogData.alarm.alarmMin = gtk_spin_button_new (adj, 0, 0);
1938 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), TRUE);
1939 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (configDialogData.alarm.alarmMin), TRUE);
1940 gtk_box_pack_start (GTK_BOX (hbox), configDialogData.alarm.alarmMin, FALSE, FALSE, 0);
1941 gtk_widget_show (configDialogData.alarm.alarmMin);
1943 /*** SMS notebook ***/
1944 sms_option_frame = gtk_frame_new (_("Short Message Service"));
1946 vbox = gtk_vbox_new (FALSE, 0);
1947 gtk_container_add (GTK_CONTAINER (sms_option_frame), vbox);
1948 gtk_widget_show (vbox);
1950 label = gtk_label_new (_("SMS"));
1951 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sms_option_frame, label);
1953 SMSClist = gtk_clist_new_with_titles (4, titles);
1954 gtk_clist_set_shadow_type (GTK_CLIST (SMSClist), GTK_SHADOW_OUT);
1955 gtk_clist_column_titles_passive (GTK_CLIST (SMSClist));
1956 gtk_clist_set_auto_sort (GTK_CLIST (SMSClist), FALSE);
1958 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 0, 70);
1959 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 1, 115);
1960 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 2, 40);
1961 gtk_clist_set_column_width (GTK_CLIST (SMSClist), 3, 55);
1962 // gtk_clist_set_column_justification (GTK_CLIST (SMSClist), 1, GTK_JUSTIFY_RIGHT);
1964 clistScrolledWindow = gtk_scrolled_window_new (NULL, NULL);
1965 gtk_container_add (GTK_CONTAINER (clistScrolledWindow), SMSClist);
1966 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (clistScrolledWindow),
1967 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1968 gtk_box_pack_start (GTK_BOX (vbox), clistScrolledWindow,
1971 gtk_widget_show (SMSClist);
1972 gtk_widget_show (clistScrolledWindow);
1974 hbox = gtk_hbox_new (FALSE, 0);
1975 gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 9);
1976 gtk_widget_show (hbox);
1978 button = gtk_button_new_with_label (_("Edit"));
1979 gtk_box_pack_start (GTK_BOX (hbox),
1980 button, TRUE, FALSE, 0);
1981 gtk_signal_connect (GTK_OBJECT (button), "clicked",
1982 GTK_SIGNAL_FUNC (ShowEditSMSSetDialog), (gpointer)dialog);
1983 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
1984 gtk_widget_grab_default (button);
1985 gtk_widget_show (button);
1987 gtk_signal_connect (GTK_OBJECT (SMSClist), "select_row",
1988 GTK_SIGNAL_FUNC (EditSMSSetDialogClick),
1991 /*** Business notebook ***/
1992 user_option_frame = gtk_frame_new (_("Business Card"));
1994 vbox = gtk_vbox_new( FALSE, 0);
1995 gtk_container_add (GTK_CONTAINER (user_option_frame), vbox);
1996 gtk_widget_show(vbox);
1998 label = gtk_label_new(_("User"));
1999 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), user_option_frame, label);
2001 hbox = gtk_hbox_new (FALSE, 0);
2002 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2003 gtk_widget_show (hbox);
2005 configDialogData.user.status = gtk_label_new ("");
2006 gtk_box_pack_end(GTK_BOX(hbox), configDialogData.user.status, FALSE, FALSE, 2);
2007 gtk_widget_show (configDialogData.user.status);
2009 configDialogData.user.max = MAX_BUSINESS_CARD_LENGTH;
2010 configDialogData.user.used = 0;
2012 hbox = gtk_hbox_new (FALSE, 0);
2013 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2014 gtk_widget_show (hbox);
2016 label = gtk_label_new (_("Name:"));
2017 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2018 gtk_widget_show (label);
2020 configDialogData.user.name = gtk_entry_new_with_max_length(configDialogData.user.max);
2021 gtk_widget_set_usize (configDialogData.user.name, 220, 22);
2022 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.name),
2024 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2025 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.name),
2026 "button_press_event",
2027 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2028 gtk_signal_connect (GTK_OBJECT (configDialogData.user.name),
2030 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 0);
2031 gtk_signal_connect (GTK_OBJECT (configDialogData.user.name),
2033 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2034 (gpointer) configDialogData.user.max);
2035 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.name, FALSE, FALSE, 2);
2036 gtk_widget_show (configDialogData.user.name);
2038 hbox = gtk_hbox_new (FALSE, 0);
2039 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2040 gtk_widget_show (hbox);
2042 label = gtk_label_new (_("Title:"));
2043 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2044 gtk_widget_show (label);
2046 configDialogData.user.title = gtk_entry_new_with_max_length(configDialogData.user.max);
2047 gtk_widget_set_usize (configDialogData.user.title, 220, 22);
2048 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.title),
2050 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2051 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.title),
2052 "button_press_event",
2053 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2054 gtk_signal_connect (GTK_OBJECT (configDialogData.user.title),
2056 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 1);
2057 gtk_signal_connect (GTK_OBJECT (configDialogData.user.title),
2059 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2060 (gpointer) configDialogData.user.max);
2061 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.title, FALSE, FALSE, 2);
2062 gtk_widget_show (configDialogData.user.title);
2064 hbox = gtk_hbox_new (FALSE, 0);
2065 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2066 gtk_widget_show (hbox);
2068 label = gtk_label_new (_("Company:"));
2069 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2070 gtk_widget_show (label);
2072 configDialogData.user.company = gtk_entry_new_with_max_length(configDialogData.user.max);
2073 gtk_widget_set_usize (configDialogData.user.company, 220, 22);
2074 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.company),
2076 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2077 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.company),
2078 "button_press_event",
2079 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2080 gtk_signal_connect (GTK_OBJECT (configDialogData.user.company),
2082 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 2);
2083 gtk_signal_connect (GTK_OBJECT (configDialogData.user.company),
2085 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2086 (gpointer) configDialogData.user.max);
2087 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.company, FALSE, FALSE, 2);
2088 gtk_widget_show (configDialogData.user.company);
2090 hbox = gtk_hbox_new (FALSE, 0);
2091 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2092 gtk_widget_show (hbox);
2094 label = gtk_label_new (_("Telephone:"));
2095 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2096 gtk_widget_show (label);
2098 configDialogData.user.telephone = gtk_entry_new_with_max_length(max_phonebook_number_length);
2099 gtk_widget_set_usize (configDialogData.user.telephone, 220, 22);
2100 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.telephone),
2102 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2103 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.telephone),
2104 "button_press_event",
2105 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2106 gtk_signal_connect (GTK_OBJECT (configDialogData.user.telephone),
2108 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 3);
2109 gtk_signal_connect (GTK_OBJECT (configDialogData.user.telephone),
2111 GTK_SIGNAL_FUNC(CheckOutUserDataLength), (gpointer) max_phonebook_number_length);
2112 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.telephone, FALSE, FALSE, 2);
2113 gtk_widget_show (configDialogData.user.telephone);
2115 hbox = gtk_hbox_new (FALSE, 0);
2116 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2117 gtk_widget_show (hbox);
2119 label = gtk_label_new (_("Fax:"));
2120 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2121 gtk_widget_show (label);
2123 configDialogData.user.fax = gtk_entry_new_with_max_length(max_phonebook_number_length);
2124 gtk_widget_set_usize (configDialogData.user.fax, 220, 22);
2125 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.fax),
2127 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2128 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.fax),
2129 "button_press_event",
2130 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2131 gtk_signal_connect (GTK_OBJECT (configDialogData.user.fax),
2133 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 4);
2134 gtk_signal_connect (GTK_OBJECT (configDialogData.user.fax),
2136 GTK_SIGNAL_FUNC(CheckOutUserDataLength), (gpointer) max_phonebook_number_length);
2137 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.fax, FALSE, FALSE, 2);
2138 gtk_widget_show (configDialogData.user.fax);
2140 hbox = gtk_hbox_new (FALSE, 0);
2141 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2142 gtk_widget_show (hbox);
2144 label = gtk_label_new (_("E-Mail:"));
2145 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2146 gtk_widget_show (label);
2148 configDialogData.user.email = gtk_entry_new_with_max_length(configDialogData.user.max);
2149 gtk_widget_set_usize (configDialogData.user.email, 220, 22);
2150 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.email),
2152 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2153 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.email),
2154 "button_press_event",
2155 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2156 gtk_signal_connect (GTK_OBJECT (configDialogData.user.email),
2158 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 5);
2159 gtk_signal_connect (GTK_OBJECT (configDialogData.user.email),
2161 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2162 (gpointer) configDialogData.user.max);
2163 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.email, FALSE, FALSE, 2);
2164 gtk_widget_show (configDialogData.user.email);
2166 hbox = gtk_hbox_new (FALSE, 0);
2167 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2168 gtk_widget_show (hbox);
2170 label = gtk_label_new (_("Address:"));
2171 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
2172 gtk_widget_show (label);
2174 configDialogData.user.address = gtk_entry_new_with_max_length(configDialogData.user.max);
2175 gtk_widget_set_usize (configDialogData.user.address, 220, 22);
2176 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.address),
2178 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2179 gtk_signal_connect_after (GTK_OBJECT (configDialogData.user.address),
2180 "button_press_event",
2181 GTK_SIGNAL_FUNC(RefreshUserStatusCallBack), (gpointer) NULL);
2182 gtk_signal_connect (GTK_OBJECT (configDialogData.user.address),
2184 GTK_SIGNAL_FUNC(CheckInUserDataLength), (gpointer) 6);
2185 gtk_signal_connect (GTK_OBJECT (configDialogData.user.address),
2187 GTK_SIGNAL_FUNC(CheckOutUserDataLength),
2188 (gpointer) configDialogData.user.max);
2189 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.user.address, FALSE, FALSE, 2);
2190 gtk_widget_show (configDialogData.user.address);
2193 /*** Groups notebook ***/
2194 cg_names_option_frame = gtk_frame_new (_("Caller groups names"));
2197 vbox = gtk_vbox_new (FALSE, 0);
2198 gtk_container_add (GTK_CONTAINER (cg_names_option_frame), vbox);
2199 gtk_widget_show (vbox);
2201 label = gtk_label_new (_("Groups"));
2202 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), cg_names_option_frame, label);
2204 for ( i = 0; i < 6; i++)
2206 hbox = gtk_hbox_new (FALSE, 0);
2207 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 3);
2208 gtk_widget_show (hbox);
2210 g_snprintf (labelBuffer, 10, _("Group %d:"), i + 1);
2211 label = gtk_label_new (labelBuffer);
2212 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
2213 gtk_widget_show (label);
2215 configDialogData.groups[i] = gtk_entry_new_with_max_length (MAX_CALLER_GROUP_LENGTH);
2216 gtk_widget_set_usize (configDialogData.groups[i], 220, 22);
2218 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.groups[i], FALSE, FALSE, 2);
2219 gtk_widget_show (configDialogData.groups[i]);
2223 mail_option_frame = gtk_frame_new (_("Mailbox"));
2224 gtk_widget_show (mail_option_frame);
2226 vbox = gtk_vbox_new (FALSE, 0);
2227 gtk_container_add (GTK_CONTAINER (mail_option_frame), vbox);
2228 gtk_widget_show (vbox);
2230 label = gtk_label_new (_("Mail"));
2231 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), mail_option_frame, label);
2233 hbox = gtk_hbox_new (FALSE, 0);
2234 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2235 gtk_widget_show (hbox);
2237 label = gtk_label_new (_("Path to mailbox:"));
2238 gtk_box_pack_start(GTK_BOX (hbox), label, FALSE, FALSE, 2);
2239 gtk_widget_show (label);
2241 configDialogData.mailbox = gtk_entry_new_with_max_length (MAILBOX_LENGTH - 1);
2242 gtk_widget_set_usize (configDialogData.mailbox, 220, 22);
2244 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.mailbox, FALSE, FALSE, 2);
2245 gtk_widget_show (configDialogData.mailbox);
2248 frame = gtk_frame_new (_("Help viewer"));
2249 gtk_widget_show (frame);
2251 vbox = gtk_vbox_new (FALSE, 0);
2252 gtk_container_add (GTK_CONTAINER (frame), vbox);
2253 gtk_widget_show (vbox);
2255 label = gtk_label_new (_("Help"));
2256 gtk_notebook_append_page( GTK_NOTEBOOK (notebook), frame, label);
2258 hbox = gtk_hbox_new (FALSE, 0);
2259 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
2260 gtk_widget_show (hbox);
2262 label = gtk_label_new (_("Viewer:"));
2263 gtk_box_pack_start(GTK_BOX (hbox), label, FALSE, FALSE, 2);
2264 gtk_widget_show (label);
2266 configDialogData.help = gtk_entry_new_with_max_length (HTMLVIEWER_LENGTH - 1);
2267 gtk_widget_set_usize (configDialogData.help, 220, 22);
2269 gtk_box_pack_end (GTK_BOX (hbox), configDialogData.help, FALSE, FALSE, 2);
2270 gtk_widget_show (configDialogData.help);
2273 optionsDialogIsOpened = FALSE;
2278 static void TopLevelWindow (void)
2280 GtkWidget *drawing_area;
2284 struct sigaction act;
2286 GUI_MainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
2287 gtk_window_set_wmclass (GTK_WINDOW (GUI_MainWindow), "MainWindow", "Xgnokii");
2288 /* gtk_window_set_decorated (GTK_WINDOW (GUI_MainWindow), GTK_FALSE); */
2289 gtk_widget_realize (GUI_MainWindow);
2291 BackgroundPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_background);
2293 SMSPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_sms);
2295 AlarmPixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_alarm);
2297 Pixmap = gdk_pixmap_create_from_xpm_d (GUI_MainWindow->window, &mask, &GUI_MainWindow->style->white, (gchar **) XPM_background);
2299 // gdk_window_set_icon_name (GUI_MainWindow->window, "XXX");
2300 style = gtk_widget_get_default_style ();
2301 gc = style->black_gc;
2303 /* Create the drawing area */
2304 drawing_area = gtk_drawing_area_new ();
2306 /* Signals used to handle backing pixmap */
2307 gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
2308 (GtkSignalFunc) ExposeEvent, NULL);
2310 gtk_signal_connect (GTK_OBJECT (drawing_area), "button_press_event",
2311 (GtkSignalFunc) ButtonPressEvent, NULL);
2313 gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK
2314 | GDK_BUTTON_PRESS_MASK);
2316 gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 261, 96);
2317 gtk_container_add (GTK_CONTAINER (GUI_MainWindow), drawing_area);
2319 gdk_draw_pixmap (drawing_area->window,
2320 drawing_area->style->fg_gc[GTK_WIDGET_STATE (drawing_area)],
2326 gtk_widget_shape_combine_mask (GUI_MainWindow, mask, 0, 0);
2328 gtk_signal_connect (GTK_OBJECT (GUI_MainWindow), "destroy",
2329 GTK_SIGNAL_FUNC (MainExit),
2332 Menu = CreateMenu ();
2333 OptionsDialog = CreateOptionsDialog ();
2334 AboutDialog = CreateAboutDialog ();
2335 GUI_CreateSMSWindow ();
2336 GUI_CreateContactsWindow ();
2337 GUI_CreateNetmonWindow ();
2338 GUI_CreateDTMFWindow ();
2339 GUI_CreateSpeedDialWindow ();
2340 GUI_CreateXkeybWindow ();
2341 GUI_CreateCalendarWindow ();
2342 GUI_CreateLogosWindow ();
2343 GUI_CreateDataWindow();
2344 CreateErrorDialog (&errorDialog, GUI_MainWindow);
2345 CreateInfoDialog (&infoDialog, GUI_MainWindow);
2346 CreateInCallDialog ();
2348 act.sa_handler = RemoveZombie;
2349 sigemptyset (&(act.sa_mask));
2350 act.sa_flags = SA_NOCLDSTOP;
2351 sigaction (SIGCHLD, &act, NULL);
2354 act.sa_handler = SIG_IGN;
2355 sigemptyset (&(act.sa_mask));
2356 sigaction (SIGALRM, &act, NULL);
2359 gtk_widget_show_all (GUI_MainWindow);
2362 GUI_InitPhoneMonitor ();
2363 pthread_create (&monitor_th, NULL, GUI_Connect, NULL);
2365 gtk_timeout_add (1000, (GtkFunction) Update, GUI_MainWindow);
2367 hiddenCallDialog = 0;
2371 static void SplashScreen (void)
2373 GtkWidget *pixmap, *fixed;
2374 GdkPixmap *gdk_pixmap;
2379 SplashWindow = gtk_window_new (GTK_WINDOW_POPUP);
2380 gtk_widget_realize (SplashWindow);
2382 gtk_widget_set_usize (SplashWindow, 475, 160);
2383 gtk_window_position (GTK_WINDOW (SplashWindow), GTK_WIN_POS_CENTER);
2385 style = gtk_widget_get_default_style();
2386 gc = style->black_gc;
2387 gdk_pixmap = gdk_pixmap_create_from_xpm_d(SplashWindow->window, &mask,
2388 &style->bg[GTK_STATE_NORMAL],
2390 pixmap = gtk_pixmap_new(gdk_pixmap, mask);
2392 fixed = gtk_fixed_new();
2393 gtk_widget_set_usize(fixed, 261, 96);
2394 gtk_fixed_put(GTK_FIXED(fixed), pixmap, 0, 0);
2395 gtk_container_add(GTK_CONTAINER (SplashWindow), fixed);
2397 gtk_widget_shape_combine_mask (SplashWindow, mask, 0, 0);
2399 gtk_widget_show_all (SplashWindow);
2403 static gint RemoveSplash (GtkWidget *Win)
2405 if (GTK_WIDGET_VISIBLE (SplashWindow))
2407 gtk_timeout_remove (splashRemoveHandler);
2408 gtk_widget_hide (SplashWindow);
2409 gtk_widget_destroy (SplashWindow);
2416 static void ReadConfig (void)
2419 xgnokiiConfig.locale = "";
2421 if ((xgnokiiConfig.locale = getenv ("LC_ALL")) == NULL)
2422 if ((xgnokiiConfig.locale = getenv ("LC_MESSAGES")) == NULL)
2423 if ((xgnokiiConfig.locale = getenv ("LANG")) == NULL)
2424 xgnokiiConfig.locale = "POSIX";
2426 if (readconfig(&xgnokiiConfig.model, &xgnokiiConfig.port,
2427 &xgnokiiConfig.initlength, &xgnokiiConfig.connection,
2428 &xgnokiiConfig.bindir) < 0)
2434 max_phonebook_name_length = atoi (xgnokiiConfig.maxPhoneLen);
2435 max_phonebook_sim_name_length = atoi (xgnokiiConfig.maxSIMLen);
2438 xgnokiiConfig.xgnokiidir = DefaultXGnokiiDir;
2441 if (strstr(FB38_Information.Models, xgnokiiConfig.model) != NULL)
2443 max_phonebook_number_length = 30;
2444 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;
2458 max_phonebook_number_length = max_phonebook_sim_number_length = GSM_MAX_PHONEBOOK_NUMBER_LENGTH;
2461 xgnokiiConfig.callerGroups[0] = xgnokiiConfig.callerGroups[1] =
2462 xgnokiiConfig.callerGroups[2] = xgnokiiConfig.callerGroups[3] =
2463 xgnokiiConfig.callerGroups[4] = xgnokiiConfig.callerGroups[5] = NULL;
2464 xgnokiiConfig.smsSets = 0;
2468 int main (int argc, char *argv[])
2471 textdomain("gnokii");
2474 (void) gtk_set_locale ();
2476 gtk_init (&argc, &argv);
2478 /* Show the splash screen. */
2482 /* Remove it after a while. */
2487 splashRemoveHandler = gtk_timeout_add(5000, (GtkFunction) RemoveSplash, (gpointer) SplashWindow);