default platform: i386 (not m68k)
[gnokii.git] / xgnokii / xgnokii_data.c
1 /*
2
3   X G N O K I I
4
5   A Linux/Unix GUI for Nokia mobile phones.
6
7   Released under the terms of the GNU GPL, see file COPYING for more details.
8
9 */
10
11 #include <stdio.h>
12 #include <gtk/gtk.h>
13 #include "misc.h"
14 #include "xgnokii_common.h"
15 #include "xgnokii.h"
16 #include "xgnokii_lowlevel.h"
17 #include "xgnokii_data.h"
18 #include "data/virtmodem.h"
19
20 static GtkWidget *GUI_DataWindow;
21 bool TerminateThread = false;
22 bool enabled = false;
23 static GtkWidget *label = NULL;
24
25 static inline void Help1 (GtkWidget *w, gpointer data)
26 {
27   gchar *indx = g_strdup_printf ("/%s/gnokii/xgnokii/data/index.htm", xgnokiiConfig.locale);
28   Help (w, indx);
29   g_free (indx);
30 }
31
32 static void UpdateStatus (void)
33 {
34   gchar *buf;
35
36   if (!enabled)
37     buf = g_strdup_printf (_("Data calls are currently\nDisabled\n "));
38   else
39     buf = g_strdup_printf (_("Data calls are currently\nEnabled\n "));
40   
41   if (label != NULL)
42     gtk_label_set_text (GTK_LABEL (label), buf);
43
44   g_free (buf);
45 }
46
47
48 inline void GUI_ShowData (void)
49 {
50   if (GetModelFeature(FN_DATACALLS)==0)
51     return;
52     
53   if (TerminateThread)
54   { 
55     VM_Terminate ();
56     enabled = false;
57     TerminateThread = false;
58   }
59   UpdateStatus ();
60   
61   gtk_widget_show (GUI_DataWindow);
62 }
63
64
65 inline void GUI_HideData(void)
66 {
67   gtk_widget_hide (GUI_DataWindow);
68 }
69
70 static inline void DisableData (GtkWidget *widget,
71                                 gpointer   data )
72 {
73   VM_Terminate ();
74   enabled = false;
75   UpdateStatus ();
76 }
77
78
79 static inline void EnableData (GtkWidget *widget,
80                                gpointer   data)
81 {
82
83   TerminateThread = false;
84   VM_Initialise (xgnokiiConfig.model,  xgnokiiConfig.port, 
85                  0, 0, xgnokiiConfig.bindir, false, false,
86                  xgnokiiConfig.synchronizetime);
87   enabled = true;
88   UpdateStatus ();
89 }
90
91
92 void GUI_CreateDataWindow (void)
93 {
94   GtkWidget *button, *hbox, *vbox;
95   
96   GUI_DataWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
97   gtk_window_set_title (GTK_WINDOW (GUI_DataWindow), _("Virtual Modem"));
98   gtk_container_set_border_width (GTK_CONTAINER (GUI_DataWindow), 10);
99   gtk_signal_connect (GTK_OBJECT (GUI_DataWindow), "delete_event",
100                       GTK_SIGNAL_FUNC (DeleteEvent), NULL);
101
102   vbox = gtk_vbox_new (FALSE, 1);
103   gtk_container_border_width (GTK_CONTAINER (vbox), 1);
104   gtk_container_add (GTK_CONTAINER (GUI_DataWindow), vbox);
105   gtk_widget_show (vbox);
106
107   label = gtk_label_new ("");
108   gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
109   gtk_widget_show (label);
110
111   hbox = gtk_hbox_new (FALSE, 0);
112   gtk_container_add (GTK_CONTAINER (vbox), hbox);
113   gtk_widget_show (hbox);
114
115   button = gtk_button_new_with_label (_("Enable"));
116   gtk_box_pack_start (GTK_BOX (hbox),
117                       button, TRUE, FALSE, 5);
118   gtk_signal_connect (GTK_OBJECT (button), "clicked",
119                       GTK_SIGNAL_FUNC (EnableData), NULL);
120   gtk_widget_show (button);
121   button = gtk_button_new_with_label (_("Disable"));
122   gtk_box_pack_start (GTK_BOX (hbox),
123                       button, TRUE, FALSE, 5);
124   gtk_signal_connect (GTK_OBJECT (button), "clicked",
125                       GTK_SIGNAL_FUNC (DisableData), NULL);
126   GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
127   gtk_widget_grab_default (button);
128   gtk_widget_show (button);
129 }