+/*
+
+ $Id$
+
+ X G N O K I I
+
+ A Linux/Unix GUI for Nokia mobile phones.
+ Copyright (C) 1999 Pavel Janík ml., Hugh Blemings
+ & Ján Derfiòák <ja@mail.upjs.sk>.
+
+ Released under the terms of the GNU GPL, see file COPYING for more details.
+
+ $Log$
+ Revision 1.1.1.5 2002/04/03 00:08:33 short
+ Found in "gnokii-working" directory, some November-patches version
+
+ Revision 1.9 2001/09/14 12:53:00 pkot
+ New preview logos.
+ Localization fixes.
+ Set valid operator on logos xgnokii screen.
+
+ Revision 1.8 2001/05/24 20:47:31 chris
+ More updating of 7110 code and some of xgnokii_lowlevel changed over.
+
+ Revision 1.7 2001/03/23 08:24:56 ja
+ New preview for 6210 in xgnokii's logos module.
+
+
+*/
+
+#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/types.h>
#include <string.h>
#include <gtk/gtk.h>
-#include <stdio.h>
#include "misc.h"
#include "gsm-common.h"
#include "gsm-api.h"
+#include "cfgreader.h"
#include "gsm-networks.h"
-#include "files/gsm-filetypes.h"
+#include "gsm-filetypes.h"
#include "gsm-bitmaps.h"
#include "xgnokii_logos.h"
#include "xpm/New.xpm"
#include "xpm/Send.xpm"
+#include "xpm/SendSMS.xpm"
#include "xpm/Read.xpm"
+#include "xpm/Open.xpm"
+#include "xpm/Save.xpm"
#include "xpm/Edit_invert.xpm"
#include "xpm/Edit_flip_horizontal.xpm"
#include "xpm/Tool_filled_rectangle.xpm"
extern GSM_Network GSM_Networks[];
+extern GSM_Statemachine xgnokii_statemachine; /* from xgnokii_lowlevel.c */
-static GtkWidget *GUI_LogosWindow;
+GtkWidget *GUI_LogosWindow;
-static ErrorDialog errorDialog = {NULL, NULL};
-static InfoDialog infoDialog = {NULL, NULL};
+ErrorDialog errorDialog = {NULL, NULL};
+InfoDialog infoDialog = {NULL, NULL};
/* stuff for drawingArea */
-static GtkWidget *drawingArea = NULL;
-static GdkPixmap *drawingPixmap = NULL;
-static GdkPixmap *greenPointPixmap, *blackPointPixmap;
-static int drawingAreaWidth, drawingAreaHeight; /* in pixels */
-static int mouseButtonPushed = 0;
+GtkWidget *drawingArea = NULL;
+GdkPixmap *drawingPixmap = NULL;
+GdkPixmap *greenPointPixmap, *blackPointPixmap;
+int drawingAreaWidth, drawingAreaHeight; /* in pixels */
+int mouseButtonPushed = 0;
/* stuff for previewArea */
-static GtkWidget *previewArea = NULL;
-static GdkPixmap *previewPixmap = NULL;
-static GdkPixmap *greenPixelPixmap;
-static int previewPixmapWidth, previewPixmapHeight;
-static int previewAvailable = 1, showPreviewErrorDialog = 1;
-static int previewPixmapNumber = 0;
+GtkWidget *previewArea = NULL;
+GdkPixmap *previewPixmap = NULL;
+GdkPixmap *greenPixelPixmap;
+int previewPixmapWidth, previewPixmapHeight;
+int previewAvailable = 1, showPreviewErrorDialog = 1;
+int previewPixmapNumber = 0;
-static GSM_Bitmap bitmap, oldBitmap;
-static GSM_NetworkInfo networkInfo;
+GSM_Bitmap bitmap, oldBitmap;
+GSM_NetworkInfo networkInfo;
/* widgets for toolbar - some, need global variables */
-static GtkWidget *buttonStartup, *buttonOperator, *buttonCaller, *buttonPicture;
-static GtkWidget *networkCombo, *callerCombo;
+GtkWidget *buttonStartup, *buttonOperator, *buttonCaller;
+GtkWidget *networkCombo, *callerCombo;
-static int activeTool = TOOL_BRUSH;
-static int toolStartX, toolStartY, toolLastX, toolLastY;
+int activeTool = TOOL_BRUSH;
+int toolStartX, toolStartY, toolLastX, toolLastY;
/* tools for drawing */
static GtkWidget *buttonBrush, *buttonLine, *buttonRectangle;
pixmap = gdk_pixmap_create_from_xpm(widget->window,&mask,
&widget->style->bg[GTK_STATE_NORMAL],
file);
+
g_free(file);
return pixmap;
if (!previewAvailable) return;
/* there is difference between positiong of startupLogo and others */
- if (bitmap.type != GSM_StartupLogo && bitmap.type != GSM_7110StartupLogo &&
- bitmap.type != GSM_6210StartupLogo) {
+ if (bitmap.type != GSM_StartupLogo) {
x += PREVIEWJUMPX;
y += PREVIEWJUMPY;
}
if (!previewAvailable) return;
/* there is difference between positiong of startupLogo and others */
- if (bitmap.type != GSM_StartupLogo && bitmap.type != GSM_7110StartupLogo &&
- bitmap.type != GSM_6210StartupLogo) {
+ if (bitmap.type != GSM_StartupLogo) {
x += PREVIEWJUMPX;
y += PREVIEWJUMPY;
}
}
void SetPoint(GtkWidget *widget, int x, int y, int update) {
-
+ /* difference between settings points in startupLogo and others */
GSM_SetPointBitmap(&bitmap,x,y);
/* draw point to pixmap */
}
void ClearPoint(GtkWidget *widget, int x, int y, int update) {
-
+ /* difference between settings points in startupLogo and others */
GSM_ClearPointBitmap(&bitmap,x,y);
/* clear point from pixmap */
GdkRectangle updateRect;
int x, y, dx = 0, dy = 0;
- if (bitmap.type != GSM_StartupLogo && bitmap.type != GSM_7110StartupLogo &&
- bitmap.type != GSM_6210StartupLogo) {
+ if (bitmap.type != GSM_StartupLogo) {
dx = PREVIEWJUMPX;
dy = PREVIEWJUMPY;
}
int x, y, dx = 0, dy = 0;
if (!previewPixmap || !previewAvailable) return;
-
- if (bitmap.type != GSM_StartupLogo && bitmap.type != GSM_7110StartupLogo &&
- bitmap.type != GSM_6210StartupLogo) {
+
+ if (bitmap.type != GSM_StartupLogo) {
dx = PREVIEWJUMPX;
dy = PREVIEWJUMPY;
}
}
/* TOOL - LINE */
-/* going to rewrite to Bresenham algorithm */
-static void ToolLineUpdate(GtkWidget *widget, int column, int row) {
- double delta, y, x;
- int i, x1, y1, x2, y2;
-
- if (abs(toolStartX-toolLastX) >= abs(toolStartY-toolLastY)) {
- if (toolStartX > toolLastX) {
- x1 = toolLastX;
- x2 = toolStartX;
- y1 = toolLastY;
- y2 = toolStartY;
- } else {
- x1 = toolStartX;
- x2 = toolLastX;
- y1 = toolStartY;
- y2 = toolLastY;
- }
-
- delta = ((double)(y2-y1))/((double)(x2-x1));
- y = (double)y1;
- for (i = x1;i <= x2;i++) {
- if (!GSM_IsPointBitmap(&oldBitmap,i,(int)y)) ClearPoint(widget,i,(int)y,0);
- y += delta;
- }
- } else {
- if (toolStartY > toolLastY) {
- x1 = toolLastX;
- x2 = toolStartX;
- y1 = toolLastY;
- y2 = toolStartY;
- } else {
- x1 = toolStartX;
- x2 = toolLastX;
- y1 = toolStartY;
- y2 = toolLastY;
- }
- delta = ((double)(x2-x1))/((double)(y2-y1));
-
- x = (double)x1;
- for (i = y1;i <= y2;i++) {
- if (!GSM_IsPointBitmap(&oldBitmap,(int)x,i)) ClearPoint(widget,(int)x,i,0);
- x += delta;
- }
- }
-
- if (abs(toolStartX-column) >= abs(toolStartY-row)) {
- if (toolStartX > column) {
- x1 = column;
- x2 = toolStartX;
- y1 = row;
- y2 = toolStartY;
- } else {
- x1 = toolStartX;
- x2 = column;
- y1 = toolStartY;
- y2 = row;
- }
-
- delta = ((double)(y2-y1))/((double)(x2-x1));
- y = (double)y1;
- for (i = x1;i <= x2;i++) {
- SetPoint(widget,i,(int)y,0);
- y += delta;
- }
- } else {
- if (toolStartY > row) {
- x1 = column;
- x2 = toolStartX;
- y1 = row;
- y2 = toolStartY;
- } else {
- x1 = toolStartX;
- x2 = column;
- y1 = toolStartY;
- y2 = row;
- }
- delta = ((double)(x2-x1))/((double)(y2-y1));
+/* this function clear or draw a line on the screen USED BY TOOLLINEUPDATE */
+void ToolLine(GtkWidget *widget, int x1, int y1, int x2, int y2, int draw) {
+ int udx, udy, dx, dy, error, loop, xadd, yadd;
+
+ dx = x2 - x1; /* x delta */
+ dy = y2 - y1; /* y delta */
+
+ udx = abs(dx); /* unsigned x delta */
+ udy = abs(dy); /* unsigned y delta */
+
+ if (dx < 0) { xadd = -1; } else { xadd = 1; } /* set directions */
+ if (dy < 0) { yadd = -1; } else { yadd = 1; }
+
+ error = 0;
+ loop = 0;
+ if (udx > udy) { /* delta X > delta Y */
+ do {
+ error += udy;
+
+ if (error >= udx) { /* is time to move up or down? */
+ error -= udx;
+ y1 += yadd;
+ }
+ loop++;
+ if (draw == 1) {
+ SetPoint(widget,x1,y1,0);
+ } else {
+ /* now clearing line before drawing new one, we must check */
+ /* if there is a point in oldBitmap which saves bitmap before */
+ /* we starting drawing new line */
+ if (!GSM_IsPointBitmap(&oldBitmap,x1,y1)) {
+ ClearPoint(widget,x1,y1,0);
+ }
+ }
+ x1 += xadd; /* move horizontally */
+ } while (loop < udx); /* repeat for x length */
+ } else {
+ do {
+ error += udx;
+ if (error >= udy) { /* is time to move left or right? */
+ error -= udy;
+ x1 += xadd;
+ }
+ loop++;
+ if (draw == 1) {
+ SetPoint(widget,x1,y1,0);
+ } else {
+ /* check comment in delta X > delta Y */
+ if (!GSM_IsPointBitmap(&oldBitmap,x1,y1)) {
+ ClearPoint(widget,x1,y1,0);
+ }
+ }
+ y1 += yadd; /* move vertically */
+ } while (loop < udy); /* repeat for y length */
+ }
+}
- x = (double)x1;
- for (i = y1;i <= y2;i++) {
- SetPoint(widget,(int)x,i,0);
- x += delta;
- }
- }
+/* going to rewrite to Bresenham algorithm */
+void ToolLineUpdate(GtkWidget *widget, int column, int row) {
+ /* clear old line */
+ ToolLine(widget,toolStartX,toolStartY,toolLastX,toolLastY,0);
+ /* draw new one */
+ ToolLine(widget,toolStartX,toolStartY,column,row,1);
}
/* TOOL - FILLED RECT */
-static void ToolFilledRectangleUpdate(GtkWidget *widget, int column, int row) {
+
+/* FIXME - going to rewrite for optimalized version, clearing and */
+/* drawing new parts only before clearing and drawing whole */
+/* filled rectangle - it's too slow on diskless terminal ;(( */
+void ToolFilledRectangleUpdate(GtkWidget *widget, int column, int row) {
int i, j, x1, y1, x2, y2;
+ /* swap Xs to x1 < x2 */
if (toolStartX > toolLastX) {
x1 = toolLastX;
x2 = toolStartX;
x2 = toolLastX;
}
+ /* swap Ys to y1 < y2 */
if (toolStartY > toolLastY) {
y1 = toolLastY;
y2 = toolStartY;
y2 = toolLastY;
}
+ /* clear one now */
for (j = y1;j <= y2;j++)
for (i = x1;i <= x2;i++)
if (!GSM_IsPointBitmap(&oldBitmap,i,j)) ClearPoint(widget,i,j,0);
+ /* swap Xs to x1 < x2 */
if (toolStartX > column) {
x1 = column;
x2 = toolStartX;
x2 = column;
}
+ /* swap Ys to y1 < y2 */
if (toolStartY > row) {
y1 = row;
y2 = toolStartY;
y2 = row;
}
+ /* draw new one */
for (j = y1;j <= y2;j++)
for (i = x1;i <= x2;i++)
SetPoint(widget,i,j,0);
}
/* TOOL - RECTANGLE */
-static void ToolRectangleUpdate(GtkWidget *widget, int column, int row) {
+void ToolRectangleUpdate(GtkWidget *widget, int column, int row) {
int i, j, x1, y1, x2, y2;
/* clear old rectangle */
+ /* swap Xs to x1 < x2 */
if (toolStartX > toolLastX) {
x1 = toolLastX;
x2 = toolStartX;
x2 = toolLastX;
}
+ /* swap Ys to y1 < y2 */
if (toolStartY > toolLastY) {
y1 = toolLastY;
y2 = toolStartY;
y2 = toolLastY;
}
+ /* clear old one */
for (i = x1;i <= x2;i++) {
if (!GSM_IsPointBitmap(&oldBitmap,i,y1)) ClearPoint(widget,i,y1,0);
if (!GSM_IsPointBitmap(&oldBitmap,i,y2)) ClearPoint(widget,i,y2,0);
}
/* draw new rectangle */
+ /* swap Xs to x1 < x2 */
if (toolStartX > column) {
x1 = column;
x2 = toolStartX;
x2 = column;
}
+ /* swap Ys to y1 < y2 */
if (toolStartY > row) {
y1 = row;
y2 = toolStartY;
y2 = row;
}
+ /* draw new one */
for (i = x1;i <= x2;i++) {
if (!IsPoint(i,y1)) SetPoint(widget,i,y1,0);
if (!IsPoint(i,y2)) SetPoint(widget,i,y2,0);
}
}
-static void UpdateToolScreen(GtkWidget *widget, int x1, int y1, int x2, int y2) {
+/* this update tools actions on the screen - this is for optimalization */
+/* eg. for faster redrawing tools actions - we do not need redraw pixel */
+/* by pixel. Faster is redraw whole rectangle which contains all changes */
+void UpdateToolScreen(GtkWidget *widget, int x1, int y1, int x2, int y2) {
GdkRectangle updateRect;
/* update preview area */
- updateRect.x = PREVIEWSTARTX+x1;
- updateRect.y = PREVIEWSTARTY+y1;
- if (bitmap.type != GSM_StartupLogo && bitmap.type != GSM_7110StartupLogo &&
- bitmap.type != GSM_6210StartupLogo) {
- updateRect.x += PREVIEWJUMPX;
- updateRect.y += PREVIEWJUMPY;
- }
- updateRect.width = x2-x1+1;
- updateRect.height = y2-y1+1;
- gtk_widget_draw(previewArea,&updateRect);
+ if (previewAvailable) {
+ updateRect.x = PREVIEWSTARTX+x1;
+ updateRect.y = PREVIEWSTARTY+y1;
+ if (bitmap.type != GSM_StartupLogo) {
+ updateRect.x += PREVIEWJUMPX;
+ updateRect.y += PREVIEWJUMPY;
+ }
+ updateRect.width = x2-x1+1;
+ updateRect.height = y2-y1+1;
+ gtk_widget_draw(previewArea,&updateRect);
+ }
/* update drawing area */
updateRect.x = x1 * (POINTSIZE+1);
* *************************************
*/
-static gint PreviewAreaButtonPressEvent(GtkWidget *widget, GdkEventButton *event) {
+gint PreviewAreaButtonPressEvent(GtkWidget *widget, GdkEventButton *event) {
previewPixmapNumber = (previewPixmapNumber % 8) + 1;
gtk_drawing_area_size(GTK_DRAWING_AREA(previewArea),
return TRUE;
}
-static gint PreviewAreaConfigureEvent(GtkWidget *widget, GdkEventConfigure *event) {
+gint PreviewAreaConfigureEvent(GtkWidget *widget, GdkEventConfigure *event) {
if (previewPixmap) gdk_pixmap_unref(previewPixmap);
previewPixmap = GetPreviewPixmap(widget);
return TRUE;
}
-static gint PreviewAreaExposeEvent(GtkWidget *widget, GdkEventExpose *event) {
+gint PreviewAreaExposeEvent(GtkWidget *widget, GdkEventExpose *event) {
/* got previewPixmap? */
if (previewPixmap)
/* yes - simply redraw some rectangle */
* ********************************
*/
-static gint DrawingAreaButtonPressEvent(GtkWidget *widget, GdkEventButton *event) {
+gint DrawingAreaButtonPressEvent(GtkWidget *widget, GdkEventButton *event) {
/* got drawingPixmap? */
if (drawingPixmap == NULL) return TRUE;
return TRUE;
}
-static gint DrawingAreaButtonReleaseEvent(GtkWidget *widget, GdkEventButton *event) {
+gint DrawingAreaButtonReleaseEvent(GtkWidget *widget, GdkEventButton *event) {
if (event->button == 1)
mouseButtonPushed = 0;
return TRUE;
}
-static gint DrawingAreaMotionNotifyEvent(GtkWidget *widget, GdkEventMotion *event) {
+gint DrawingAreaMotionNotifyEvent(GtkWidget *widget, GdkEventMotion *event) {
int x,y;
GdkModifierType state;
}
/* configureEvent? -> event when someone resize windows, ... */
-static gint DrawingAreaConfigureEvent(GtkWidget *widget, GdkEventConfigure *event) {
+gint DrawingAreaConfigureEvent(GtkWidget *widget, GdkEventConfigure *event) {
int x, y;
/* got drawingPixmap? */
if (drawingPixmap) gdk_pixmap_unref(drawingPixmap); /* got, erase it */
return TRUE;
}
-static gint DrawingAreaExposeEvent(GtkWidget *widget, GdkEventExpose *event) {
+gint DrawingAreaExposeEvent(GtkWidget *widget, GdkEventExpose *event) {
/* got drawingPixmap? */
if (drawingPixmap)
/* got - draw it */
* *****************************************
*/
-static void GetNetworkInfoEvent(GtkWidget *widget) {
+void GetNetworkInfoEvent(GtkWidget *widget) {
GSM_Error error;
PhoneEvent *e = (PhoneEvent *)g_malloc(sizeof(PhoneEvent));
D_NetworkInfo *data = (D_NetworkInfo *)g_malloc(sizeof(D_NetworkInfo));
GSM_GetNetworkName(networkInfo.NetworkCode));
}
-static void GetLogoEvent(GtkWidget *widget) {
- int i;
+void GetLogoEvent(GtkWidget *widget) {
GSM_Error error;
+ int i;
PhoneEvent *e = (PhoneEvent *) g_malloc(sizeof(PhoneEvent));
D_Bitmap *data = (D_Bitmap *)g_malloc(sizeof(D_Bitmap));
char *operator = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(networkCombo)->entry));
data->bitmap = &bitmap;
e->event = Event_GetBitmap;
e->data = data;
- if (GetModelFeature(FN_CALLERGROUPS)!=0) {
+ if (phoneMonitor.supported & PM_CALLERGROUP) {
for (i = 0;i < 6;i++)
if (strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(callerCombo)->entry)),
xgnokiiConfig.callerGroups[i]) == 0) bitmap.number = i;
}
-
+
/* launch event and wait for result */
GUI_InsertEvent(e);
pthread_mutex_lock(&getBitmapMutex);
}
}
-static void SetLogoEvent(GtkWidget *widget) {
+void SetLogoEvent(GtkWidget *widget) {
GSM_Error error;
PhoneEvent *e = (PhoneEvent *)g_malloc(sizeof(PhoneEvent));
D_Bitmap *data = (D_Bitmap *)g_malloc(sizeof(D_Bitmap));
/* above condition must be there, because if you launch logos before
* callerGroups are available, you will see segfault - callerGroups not initialized
*/
- if (GetModelFeature(FN_CALLERGROUPS)!=0) {
+ if (phoneMonitor.supported & PM_CALLERGROUP) {
for (i = 0;i < 6;i++)
if (strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(callerCombo)->entry)),
xgnokiiConfig.callerGroups[i]) == 0) bitmap.number = i;
}
}
- if (bitmap.type == GSM_StartupLogo) {
- bitmap.number=0;
- }
data->bitmap = &bitmap;
e->event = Event_SetBitmap;
}
}
+typedef struct {
+ GtkWidget *dialog;
+ GtkWidget *entry;
+} SendLogoDialog;
+static SendLogoDialog sendLogoDialog = {NULL, NULL};
+
+static void OkSendLogoDialog(GtkWidget *w, gpointer gtkdata)
+{
+ GSM_SMSMessage SMS;
+ GSM_Error error;
+
+ char Data[7] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+ PhoneEvent *e = (PhoneEvent *)g_malloc(sizeof(PhoneEvent));
+ D_SMSMessage *data = (D_SMSMessage *)g_malloc(sizeof(D_SMSMessage));
+ char *number = gtk_entry_get_text(GTK_ENTRY(sendLogoDialog.entry));
+ char *operator = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(networkCombo)->entry));
+ char *opcode = GSM_GetNetworkCode(operator);
+ int i;
+
+ int current=0;
+
+ /* Default settings for SMS message:
+ - no delivery report
+ - Class Message 1
+ - no compression
+ - 8 bit data
+ - SMSC no. 1
+ - validity 3 days
+ - set UserDataHeaderIndicator
+ */
+
+ SMS.Type = GST_MO;
+ SMS.Class = 1;
+ SMS.Compression = false;
+ SMS.EightBit = true;
+ SMS.MessageCenter = xgnokiiConfig.smsSetting[0]; /* we need to at least set .Format ! */
+ SMS.MessageCenter.No = 0;
+ SMS.Validity = 4320; /* 4320 minutes == 72 hours */
+ SMS_SetupUDH(&SMS,bitmap.type);
+
+ /* prepare data */
+
+ switch (bitmap.type) {
+
+ case GSM_CallerLogo:
+ /* below condition must be there, because if you launch logos before
+ * callerGroups are available, you will see segfault - callerGroups not initialized
+ */
+ if (phoneMonitor.supported & PM_CALLERGROUP) {
+ for (i = 0;i < 6;i++)
+ if (strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(callerCombo)->entry)),
+ xgnokiiConfig.callerGroups[i]) == 0) bitmap.number = i;
+ }
+ break;
+
+ case GSM_OperatorLogo:
+ opcode=GSM_GetNetworkCode(operator);
+ Data[current++] = ((opcode[1] & 0x0f) << 4) | (opcode[0] & 0xf);
+ Data[current++] = 0xf0 | (opcode[2] & 0x0f);
+ Data[current++] = ((opcode[5] & 0x0f) << 4) | (opcode[4] & 0xf);
+ break;
+
+ default: /* unsupported */
+ g_free(e);
+ g_free(data);
+ return;
+ }
+
+ strncpy(SMS.Destination,number,sizeof(SMS.Destination));
+ SMS.Destination[sizeof(SMS.Destination)-1]='\0';
+
+ /* Set the logo size */
+ current++;
+ Data[current++] = bitmap.width;
+ Data[current++] = bitmap.height;
+
+ Data[current++] = 0x01;
+
+ memcpy(SMS.MessageText,Data,current);
+ memcpy(SMS.MessageText+current,bitmap.bitmap,bitmap.size);
+ SMS.MessageTextLength = current+bitmap.size;
+
+ data->sms = &SMS;
+ e->event = Event_SendSMSMessage;
+ e->data = data;
+
+ /* launch event and wait for result */
+ GUI_InsertEvent(e);
+ pthread_mutex_lock (&sendSMSMutex);
+ pthread_cond_wait (&sendSMSCond, &sendSMSMutex);
+ pthread_mutex_unlock (&sendSMSMutex);
+ error = data->status;
+ g_free(data);
+
+ /* watch for errors */
+ if (error != GE_SMSSENDOK) {
+ gchar *buf = g_strdup_printf(_("Error sending bitmap\n(error=%d)"),error);
+ gtk_label_set_text(GTK_LABEL(errorDialog.text),buf);
+ gtk_widget_show(errorDialog.dialog);
+ g_free(buf);
+ }
+
+ gtk_widget_hide (((SendLogoDialog *) gtkdata)->dialog);
+}
+
+/* Here would be appropriate xgnokii_sms/ShowSelectContactsDialog()
+ * (and the multi-recipient handling code).
+ * I haven't implemented yet any such code as the whole XGnokii has broken
+ * design of hand-coded GTK+ GUI (even w/o any Gnome features) instead of Glade.
+ * The right solution is to drop 95% of XGNokii code, not to write yet another
+ * insane +2% of hand-coded GUI code.
+ */
+void SendLogoEvent(GtkWidget *widget)
+{
+ if (sendLogoDialog.dialog == NULL)
+ {
+ GtkWidget *button, *label;
+
+ sendLogoDialog.dialog = gtk_dialog_new ();
+ gtk_window_set_title (GTK_WINDOW (sendLogoDialog.dialog), _("Send logo"));
+ gtk_window_set_modal(GTK_WINDOW (sendLogoDialog.dialog), TRUE);
+ gtk_container_set_border_width (GTK_CONTAINER (sendLogoDialog.dialog), 10);
+ gtk_signal_connect (GTK_OBJECT (sendLogoDialog.dialog), "delete_event",
+ GTK_SIGNAL_FUNC (DeleteEvent), NULL);
+
+ button = gtk_button_new_with_label (_("Send"));
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (sendLogoDialog.dialog)->action_area),
+ button, TRUE, TRUE, 10);
+ gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (OkSendLogoDialog), (gpointer) &sendLogoDialog);
+ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (button);
+ gtk_widget_show (button);
+
+ button = gtk_button_new_with_label (_("Cancel"));
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (sendLogoDialog.dialog)->action_area),
+ button, TRUE, TRUE, 10);
+ gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (CancelDialog), (gpointer) sendLogoDialog.dialog);
+ gtk_widget_show (button);
+
+ gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (sendLogoDialog.dialog)->vbox), 5);
+
+ label = gtk_label_new (_("Number:"));
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (sendLogoDialog.dialog)->vbox), label, FALSE, FALSE, 5);
+ gtk_widget_show (label);
+
+ sendLogoDialog.entry = gtk_entry_new_with_max_length (GSM_MAX_PHONEBOOK_NUMBER_LENGTH);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (sendLogoDialog.dialog)->vbox), sendLogoDialog.entry, FALSE, FALSE, 5);
+ gtk_widget_show (sendLogoDialog.entry);
+ }
+
+ gtk_entry_set_text (GTK_ENTRY (sendLogoDialog.entry), "");
+
+ gtk_widget_show (sendLogoDialog.dialog);
+}
+
static void ClearLogoEvent(GtkWidget *widget) {
- bitmap.size=GSM_GetBitmapSize(&bitmap);
+ // bitmap.size=bitmap.width*bitmap.height/8;
GSM_ClearBitmap(&bitmap);
UpdatePoints(widget);
}
-static void InvertLogoEvent(GtkWidget *widget) {
+void InvertLogoEvent(GtkWidget *widget) {
int column, row;
for (column = 0;column < bitmap.width;column++)
UpdatePoints(widget);
}
-static void UpLogoEvent(GtkWidget *widget) {
+void UpLogoEvent(GtkWidget *widget) {
int column, row;
GSM_Bitmap tbitmap;
- tbitmap=bitmap;
+ memcpy(&tbitmap,&bitmap,sizeof(GSM_Bitmap));
for (row = 0;row < bitmap.height-1;row++)
for (column = 0;column < bitmap.width;column++)
for (column = 0;column < bitmap.width;column++)
if (GSM_IsPointBitmap(&tbitmap,column,0))
- GSM_SetPointBitmap(&bitmap,column,row);
+ GSM_SetPointBitmap(&bitmap,column,bitmap.height-1);
else
- GSM_ClearPointBitmap(&bitmap,column,row);
+ GSM_ClearPointBitmap(&bitmap,column,bitmap.height-1);
UpdatePoints(widget);
}
-static void DownLogoEvent(GtkWidget *widget) {
+void DownLogoEvent(GtkWidget *widget) {
int column, row;
GSM_Bitmap tbitmap;
- tbitmap=bitmap;
+ memcpy(&tbitmap,&bitmap,sizeof(GSM_Bitmap));
for (row = bitmap.height-1;row > 0;row--)
for (column = 0;column < bitmap.width;column++)
UpdatePoints(widget);
}
-static void LeftLogoEvent(GtkWidget *widget) {
+void LeftLogoEvent(GtkWidget *widget) {
int column, row;
GSM_Bitmap tbitmap;
- tbitmap=bitmap;
+ memcpy(&tbitmap,&bitmap,sizeof(GSM_Bitmap));
for (column = 0; column < bitmap.width-1;column++)
for (row = 0;row < bitmap.height;row++)
UpdatePoints(widget);
}
-static void RightLogoEvent(GtkWidget *widget) {
+void RightLogoEvent(GtkWidget *widget) {
int column, row;
GSM_Bitmap tbitmap;
- tbitmap=bitmap;
+ memcpy(&tbitmap,&bitmap,sizeof(GSM_Bitmap));
for (column = bitmap.width-1;column > 0;column--)
for (row = 0;row < bitmap.height;row++)
UpdatePoints(widget);
}
-static void FlipVerticalLogoEvent(GtkWidget *widget) {
+void FlipVerticalLogoEvent(GtkWidget *widget) {
int row, column, temp;
for (row = 0;row < (bitmap.height/2);row++)
UpdatePoints(widget);
}
-static void FlipHorizontalLogoEvent(GtkWidget *widget) {
+void FlipHorizontalLogoEvent(GtkWidget *widget) {
int row, column, temp;
for (row = 0;row < bitmap.height;row++)
}
/* this is launched when tool was changed */
-static gint ToolTypeEvent(GtkWidget *widget) {
+gint ToolTypeEvent(GtkWidget *widget) {
if (GTK_TOGGLE_BUTTON(buttonBrush)->active) activeTool = TOOL_BRUSH; else
if (GTK_TOGGLE_BUTTON(buttonLine)->active) activeTool = TOOL_LINE; else
if (GTK_TOGGLE_BUTTON(buttonRectangle)->active) activeTool = TOOL_RECTANGLE; else
}
/* this is launched when logo type was change by buttons on toolbar */
-static gint LogoTypeEvent(GtkWidget *widget) {
+gint LogoTypeEvent(GtkWidget *widget) {
int clear = 0;
/* is startupLogo? */
- if (GTK_TOGGLE_BUTTON(buttonStartup)->active &&
- bitmap.type != GSM_StartupLogo && bitmap.type != GSM_6210StartupLogo &&
- bitmap.type != GSM_7110StartupLogo) {
- /* look for old bitmap type, clean if another */
- clear = 1;
-
- if (!strcmp(xgnokiiConfig.model,"7110")) {
- GSM_ResizeBitmap(&bitmap,GSM_7110StartupLogo);
- } else if (!strcmp(xgnokiiConfig.model,"6210") || !strcmp(xgnokiiConfig.model,"6250")) {
- GSM_ResizeBitmap(&bitmap,GSM_6210StartupLogo);
- } else {
- GSM_ResizeBitmap(&bitmap,GSM_StartupLogo);
- }
- }
-
- /* new type is PictureImage */
- if (GTK_TOGGLE_BUTTON(buttonPicture)->active && bitmap.type != GSM_PictureImage) {
+ /* Resize and clear anyway - CK */
+ if (GTK_TOGGLE_BUTTON(buttonStartup)->active) {
/* look for old bitmap type, clean if another */
clear = 1;
- GSM_ResizeBitmap(&bitmap,GSM_PictureImage);
+ GSM_ResizeBitmap(&bitmap,GSM_StartupLogo, &xgnokii_statemachine.Phone.Info);
}
-
- /* new type is callerLogo */
- if (GTK_TOGGLE_BUTTON(buttonCaller)->active && bitmap.type != GSM_CallerLogo) {
- /* previous was startup or Picture ? clear and draw batteries, signal, ... */
- if (bitmap.type != GSM_OperatorLogo) clear = 1;
- GSM_ResizeBitmap(&bitmap,GSM_CallerLogo);
+
+ /* has phone support for callerGroups? */
+ if (phoneMonitor.supported & PM_CALLERGROUP) {
+ if (GTK_TOGGLE_BUTTON(buttonCaller)->active && bitmap.type != GSM_CallerLogo) {
+ /* previous was startup? clear and draw batteries, signal, ... */
+ /* Clear anyway for 7110...CK */
+ clear = 1;
+ GSM_ResizeBitmap(&bitmap,GSM_CallerLogo, &xgnokii_statemachine.Phone.Info);
+ }
}
/* is new type operatorLogo? */
- if (GTK_TOGGLE_BUTTON(buttonOperator)->active && bitmap.type != GSM_OperatorLogo &&
- bitmap.type != GSM_7110OperatorLogo) {
-
- /* previous startup or Picture ? clear and draw batteries, signal, ... */
- if (bitmap.type != GSM_CallerLogo) clear = 1;
-
- if (!strcmp(xgnokiiConfig.model,"7110")) {
- GSM_ResizeBitmap(&bitmap,GSM_7110OperatorLogo);
- } else if (!strcmp(xgnokiiConfig.model,"6210") || !strcmp(xgnokiiConfig.model,"6250")) {
- GSM_ResizeBitmap(&bitmap,GSM_7110OperatorLogo);
- } else {
- GSM_ResizeBitmap(&bitmap,GSM_OperatorLogo);
- }
+ if (GTK_TOGGLE_BUTTON(buttonOperator)->active && bitmap.type != GSM_OperatorLogo) {
+ /* previous startup? clear and draw batteries, signal, ... */
+ /* Clear anyway for 7110..CK */
+ clear = 1;
+ GSM_ResizeBitmap(&bitmap,GSM_OperatorLogo, &xgnokii_statemachine.Phone.Info);
}
/* must clear? */
return 0;
}
-static inline void CloseLogosWindow (void) {
+inline void CloseLogosWindow (void) {
gtk_widget_hide(GUI_LogosWindow);
}
gtk_widget_show(errorDialog.dialog);
g_free(buf);
return;
- }
+ } else fclose(f);
error=GSM_ReadBitmapFile(fileName,&tbitmap);
if (error!=GE_NONE) {
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonStartup),false);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonOperator),false);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonCaller),false);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonPicture),false);
-
- if (tbitmap.type==GSM_OperatorLogo || tbitmap.type==GSM_7110OperatorLogo) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonOperator),true);
- if (tbitmap.type==GSM_StartupLogo || tbitmap.type==GSM_7110StartupLogo || tbitmap.type==GSM_6210StartupLogo) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonStartup),true);
+
+ if (tbitmap.type==GSM_OperatorLogo) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonOperator),true);
+ if (tbitmap.type==GSM_StartupLogo) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonStartup),true);
if (tbitmap.type==GSM_CallerLogo) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonCaller),true);
- if (tbitmap.type==GSM_PictureImage) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttonPicture),true);
memcpy(&bitmap,&tbitmap,sizeof(GSM_Bitmap));
-
- if (!strcmp(xgnokiiConfig.model,"7110")) { //7110
- if (bitmap.type==GSM_StartupLogo || bitmap.type==GSM_6210StartupLogo)
- GSM_ResizeBitmap(&bitmap,GSM_7110StartupLogo);
-
- if (bitmap.type==GSM_OperatorLogo)
- GSM_ResizeBitmap(&bitmap,GSM_7110OperatorLogo);
-
- } else if (!strcmp(xgnokiiConfig.model,"6210") || !strcmp(xgnokiiConfig.model,"6250")) { //6210,6250
- if (bitmap.type==GSM_StartupLogo || bitmap.type==GSM_7110StartupLogo)
- GSM_ResizeBitmap(&bitmap,GSM_6210StartupLogo);
-
- if (bitmap.type==GSM_OperatorLogo)
- GSM_ResizeBitmap(&bitmap,GSM_7110OperatorLogo);
-
- } else {
- if (bitmap.type==GSM_6210StartupLogo || bitmap.type==GSM_7110StartupLogo)
- GSM_ResizeBitmap(&bitmap,GSM_StartupLogo);
- if (bitmap.type==GSM_7110OperatorLogo)
- GSM_ResizeBitmap(&bitmap,GSM_OperatorLogo);
- }
UpdatePoints(drawingArea);
}
void SaveLogoAs(GtkWidget *widget)
{
- FileSelection=gtk_file_selection_new ("Save logo as ...");
+ FileSelection=gtk_file_selection_new (_("Save logo as ..."));
gtk_signal_connect (
GTK_OBJECT (GTK_FILE_SELECTION (FileSelection)->ok_button),
void OpenLogo(GtkWidget *widget)
{
- FileSelection=gtk_file_selection_new ("Open logo...");
+ FileSelection=gtk_file_selection_new (_("Open logo..."));
gtk_signal_connect (
GTK_OBJECT (GTK_FILE_SELECTION (FileSelection)->ok_button),
{ NULL, "<control>G", GetNetworkInfoEvent, 0, NULL},
{ NULL, NULL, GetLogoEvent, 0, NULL},
{ NULL, "<control>T", SetLogoEvent, 0, NULL},
+ { NULL, "<control>N", SendLogoEvent, 0, NULL},
{ NULL, NULL, NULL, 0, "<Separator>"},
{ NULL, "<control>W", CloseLogosWindow, 0, NULL},
{ NULL, NULL, NULL, 0, "<Branch>"},
{ NULL, "<control>V", FlipVerticalLogoEvent, 0, NULL},
};
-static void InitLogosMenu (void) {
+void InitLogosMenu (void) {
logosMenuItems[0].path = g_strdup(_("/_File"));
logosMenuItems[1].path = g_strdup(_("/File/_Open"));
logosMenuItems[2].path = g_strdup(_("/File/_Save"));
logosMenuItems[5].path = g_strdup(_("/File/_Get operator"));
logosMenuItems[6].path = g_strdup(_("/File/Get _logo"));
logosMenuItems[7].path = g_strdup(_("/File/Se_t logo"));
- logosMenuItems[8].path = g_strdup(_("/File/Sep2"));
- logosMenuItems[9].path = g_strdup(_("/File/_Close"));
- logosMenuItems[10].path = g_strdup(_("/_Edit"));
- logosMenuItems[11].path = g_strdup(_("/Edit/_Clear"));
- logosMenuItems[12].path = g_strdup(_("/Edit/_Invert"));
- logosMenuItems[13].path = g_strdup(_("/Edit/Sep3"));
- logosMenuItems[14].path = g_strdup(_("/Edit/_Up logo"));
- logosMenuItems[15].path = g_strdup(_("/Edit/_Down logo"));
- logosMenuItems[16].path = g_strdup(_("/Edit/_Left logo"));
- logosMenuItems[17].path = g_strdup(_("/Edit/_Right logo"));
- logosMenuItems[18].path = g_strdup(_("/Edit/Sep4"));
- logosMenuItems[19].path = g_strdup(_("/Edit/Flip _horizontal"));
- logosMenuItems[20].path = g_strdup(_("/Edit/Flip _vertical"));
+ logosMenuItems[8].path = g_strdup(_("/File/Se_nd logo"));
+ logosMenuItems[9].path = g_strdup(_("/File/Sep2"));
+ logosMenuItems[10].path = g_strdup(_("/File/_Close"));
+ logosMenuItems[11].path = g_strdup(_("/_Edit"));
+ logosMenuItems[12].path = g_strdup(_("/Edit/_Clear"));
+ logosMenuItems[13].path = g_strdup(_("/Edit/_Invert"));
+ logosMenuItems[14].path = g_strdup(_("/Edit/Sep3"));
+ logosMenuItems[15].path = g_strdup(_("/Edit/_Up logo"));
+ logosMenuItems[16].path = g_strdup(_("/Edit/_Down logo"));
+ logosMenuItems[17].path = g_strdup(_("/Edit/_Left logo"));
+ logosMenuItems[18].path = g_strdup(_("/Edit/_Right logo"));
+ logosMenuItems[19].path = g_strdup(_("/Edit/Sep4"));
+ logosMenuItems[20].path = g_strdup(_("/Edit/Flip _horizontal"));
+ logosMenuItems[21].path = g_strdup(_("/Edit/Flip _vertical"));
}
void GUI_CreateLogosWindow (void) {
/* realize top level window for logos */
GUI_LogosWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_policy(GTK_WINDOW(GUI_LogosWindow),1,1,1);
- gtk_window_set_title(GTK_WINDOW(GUI_LogosWindow),_("Logos"));
- gtk_signal_connect(GTK_OBJECT(GUI_LogosWindow),"delete_event",
- GTK_SIGNAL_FUNC(DeleteEvent),NULL);
+ gtk_window_set_wmclass(GTK_WINDOW(GUI_LogosWindow), "LogosWindow", "Xgnokii");
+ gtk_window_set_policy(GTK_WINDOW(GUI_LogosWindow), 1, 1, 1);
+ gtk_window_set_title(GTK_WINDOW(GUI_LogosWindow), _("Logos"));
+ gtk_signal_connect(GTK_OBJECT(GUI_LogosWindow), "delete_event",
+ GTK_SIGNAL_FUNC(DeleteEvent), NULL);
gtk_widget_realize(GUI_LogosWindow);
- CreateErrorDialog(&errorDialog,GUI_LogosWindow);
- CreateInfoDialog(&infoDialog,GUI_LogosWindow);
+ CreateErrorDialog(&errorDialog, GUI_LogosWindow);
+ CreateInfoDialog(&infoDialog, GUI_LogosWindow);
accelGroup = gtk_accel_group_new();
- gtk_accel_group_attach(accelGroup,GTK_OBJECT(GUI_LogosWindow));
+ gtk_accel_group_attach(accelGroup, GTK_OBJECT(GUI_LogosWindow));
/* create main vbox */
- vbox = gtk_vbox_new(FALSE,1);
- gtk_container_add(GTK_CONTAINER(GUI_LogosWindow),vbox);
+ vbox = gtk_vbox_new(FALSE, 1);
+ gtk_container_add(GTK_CONTAINER(GUI_LogosWindow), vbox);
gtk_widget_show(vbox);
- itemFactory = gtk_item_factory_new(GTK_TYPE_MENU_BAR,"<main>",accelGroup);
- gtk_item_factory_create_items(itemFactory,nMenuItems,logosMenuItems,NULL);
- menuBar = gtk_item_factory_get_widget(itemFactory,"<main>");
+ itemFactory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accelGroup);
+ gtk_item_factory_create_items(itemFactory, nMenuItems, logosMenuItems, NULL);
+ menuBar = gtk_item_factory_get_widget(itemFactory, "<main>");
- gtk_box_pack_start(GTK_BOX(vbox),menuBar,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox), menuBar, FALSE, FALSE, 0);
gtk_widget_show(menuBar);
/* toolbar */
- toolBar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL,GTK_TOOLBAR_ICONS);
- gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolBar),GTK_RELIEF_NORMAL);
- gtk_toolbar_set_style(GTK_TOOLBAR(toolBar),GTK_TOOLBAR_ICONS);
+ toolBar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
+ gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolBar), GTK_RELIEF_NORMAL);
+ gtk_toolbar_set_style(GTK_TOOLBAR(toolBar), GTK_TOOLBAR_ICONS);
- gtk_toolbar_append_item(GTK_TOOLBAR(toolBar),NULL,"Clear logo",NULL,
- NewPixmap(New_xpm,GUI_LogosWindow->window,
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolBar), NULL, _("Clear logo"), NULL,
+ NewPixmap(New_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- (GtkSignalFunc)ClearLogoEvent,toolBar);
+ (GtkSignalFunc)ClearLogoEvent, toolBar);
gtk_toolbar_append_space(GTK_TOOLBAR(toolBar));
- gtk_toolbar_append_item(GTK_TOOLBAR(toolBar),NULL,"Get logo",NULL,
- NewPixmap(Read_xpm,GUI_LogosWindow->window,
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolBar), NULL, _("Get logo"), NULL,
+ NewPixmap(Read_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- (GtkSignalFunc)GetLogoEvent,toolBar);
+ (GtkSignalFunc)GetLogoEvent, toolBar);
- gtk_toolbar_append_item(GTK_TOOLBAR(toolBar),NULL,"Set logo",NULL,
- NewPixmap(Send_xpm,GUI_LogosWindow->window,
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolBar), NULL, _("Set logo"), NULL,
+ NewPixmap(Send_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- (GtkSignalFunc)SetLogoEvent,toolBar);
+ (GtkSignalFunc)SetLogoEvent, toolBar);
+
+ gtk_toolbar_append_item(GTK_TOOLBAR(toolBar), NULL, _("Send logo"), NULL,
+ NewPixmap(SendSMS_xpm, GUI_LogosWindow->window,
+ &GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
+ (GtkSignalFunc)SendLogoEvent, toolBar);
gtk_toolbar_append_space(GTK_TOOLBAR(toolBar));
+ gtk_toolbar_append_item (GTK_TOOLBAR (toolBar), NULL, _("Import from file"), NULL,
+ NewPixmap(Open_xpm, GUI_LogosWindow->window,
+ &GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
+ (GtkSignalFunc) OpenLogo, NULL);
+ gtk_toolbar_append_item (GTK_TOOLBAR (toolBar), NULL, _("Export to file"), NULL,
+ NewPixmap(Save_xpm, GUI_LogosWindow->window,
+ &GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
+ (GtkSignalFunc) SaveLogo, NULL);
+
+ gtk_toolbar_append_space (GTK_TOOLBAR (toolBar));
+
buttonStartup = gtk_toolbar_append_element(GTK_TOOLBAR(toolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,NULL,NULL,"Startup logo",
- "",NewPixmap(Startup_logo_xpm,GUI_LogosWindow->window,
+ GTK_TOOLBAR_CHILD_RADIOBUTTON, NULL, NULL, _("Startup logo"),
+ "", NewPixmap(Startup_logo_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(LogoTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(LogoTypeEvent), NULL);
buttonOperator = gtk_toolbar_append_element(GTK_TOOLBAR(toolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,buttonStartup,NULL,"Operator logo",
- "",NewPixmap(Operator_logo_xpm,GUI_LogosWindow->window,
+ GTK_TOOLBAR_CHILD_RADIOBUTTON, buttonStartup, NULL, _("Operator logo"),
+ "", NewPixmap(Operator_logo_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(LogoTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(LogoTypeEvent), NULL);
buttonCaller = gtk_toolbar_append_element(GTK_TOOLBAR(toolBar),
GTK_TOOLBAR_CHILD_RADIOBUTTON,
buttonOperator,
- NULL,"Caller logo",
- "",NewPixmap(Caller_logo_xpm,GUI_LogosWindow->window,
+ NULL, _("Caller logo"),
+ "", NewPixmap(Caller_logo_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(LogoTypeEvent),NULL);
-
- buttonPicture = gtk_toolbar_append_element(GTK_TOOLBAR(toolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,
- buttonOperator,
- NULL,"Picture image",
- "",NewPixmap(Caller_logo_xpm,GUI_LogosWindow->window,
- &GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(LogoTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(LogoTypeEvent), NULL);
gtk_toolbar_append_space(GTK_TOOLBAR(toolBar));
networkCombo = gtk_combo_new();
- gtk_combo_set_use_arrows_always(GTK_COMBO(networkCombo),1);
- while (strcmp(GSM_Networks[i].Name,"unknown"))
- glistNetwork = g_list_insert_sorted(glistNetwork,GSM_Networks[i++].Name,
+ gtk_combo_set_use_arrows_always(GTK_COMBO(networkCombo), 1);
+ while (strcmp(GSM_Networks[i].Name, "unknown"))
+ glistNetwork = g_list_insert_sorted(glistNetwork, GSM_Networks[i++].Name,
(GCompareFunc)strcmp);
- gtk_combo_set_popdown_strings(GTK_COMBO(networkCombo),glistNetwork);
- gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(networkCombo)->entry),FALSE);
- gtk_toolbar_append_widget(GTK_TOOLBAR(toolBar),networkCombo,"","");
+ gtk_combo_set_popdown_strings(GTK_COMBO(networkCombo), glistNetwork);
+ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(networkCombo)->entry), FALSE);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(toolBar), networkCombo, "", "");
gtk_widget_show(networkCombo);
g_list_free(glistNetwork);
callerCombo = gtk_combo_new();
- gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(callerCombo)->entry),FALSE);
- gtk_toolbar_append_widget(GTK_TOOLBAR(toolBar),callerCombo,"","");
+ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(callerCombo)->entry), FALSE);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(toolBar), callerCombo, "", "");
gtk_widget_show(callerCombo);
- gtk_box_pack_start(GTK_BOX(vbox),toolBar,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox), toolBar, FALSE, FALSE, 0);
gtk_widget_show(toolBar);
/* vertical separator */
/* set GSM_Bitmap width,height needed for creating drawinArea
* we are starting, default is startupLogo
*/
- bitmap.type = GSM_7110StartupLogo;
- bitmap.height = 65;
- bitmap.width = 96;
+ bitmap.type = GSM_StartupLogo;
+ bitmap.height = 48;
+ bitmap.width = 84;
bitmap.size = bitmap.height * bitmap.width / 8;
- if (!strcmp(xgnokiiConfig.model,"7110")) { //7110
- GSM_ResizeBitmap(&bitmap,GSM_7110StartupLogo);
- } else if (!strcmp(xgnokiiConfig.model,"6210") || !strcmp(xgnokiiConfig.model,"6250")) { //6210,6250
- GSM_ResizeBitmap(&bitmap,GSM_6210StartupLogo);
- } else {
- GSM_ResizeBitmap(&bitmap,GSM_StartupLogo);
- }
drawingAreaWidth = bitmap.width * (POINTSIZE+1)+1;
drawingAreaHeight = bitmap.height * (POINTSIZE+1)+1;
gtk_toolbar_set_style(GTK_TOOLBAR(vertToolBar),GTK_TOOLBAR_ICONS);
buttonBrush = gtk_toolbar_append_element(GTK_TOOLBAR(vertToolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,NULL,NULL,"Brush tool",
- "",NewPixmap(Tool_brush_xpm,GUI_LogosWindow->window,
+ GTK_TOOLBAR_CHILD_RADIOBUTTON, NULL, NULL, _("Brush tool"),
+ "", NewPixmap(Tool_brush_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(ToolTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(ToolTypeEvent), NULL);
buttonLine = gtk_toolbar_append_element(GTK_TOOLBAR(vertToolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,buttonBrush,NULL,"Line tool",
- "",NewPixmap(Tool_line_xpm,GUI_LogosWindow->window,
+ GTK_TOOLBAR_CHILD_RADIOBUTTON, buttonBrush, NULL, _("Line tool"),
+ "", NewPixmap(Tool_line_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(ToolTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(ToolTypeEvent), NULL);
buttonRectangle = gtk_toolbar_append_element(GTK_TOOLBAR(vertToolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,buttonLine,NULL,"Rectangle tool",
- "",NewPixmap(Tool_rectangle_xpm,GUI_LogosWindow->window,
+ GTK_TOOLBAR_CHILD_RADIOBUTTON, buttonLine, NULL, _("Rectangle tool"),
+ "", NewPixmap(Tool_rectangle_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(ToolTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(ToolTypeEvent), NULL);
buttonFilledRectangle = gtk_toolbar_append_element(GTK_TOOLBAR(vertToolBar),
- GTK_TOOLBAR_CHILD_RADIOBUTTON,buttonRectangle,NULL,
- "Filled rectangle tool",
- "",NewPixmap(Tool_filled_rectangle_xpm,
+ GTK_TOOLBAR_CHILD_RADIOBUTTON, buttonRectangle, NULL,
+ _("Filled rectangle tool"),
+ "", NewPixmap(Tool_filled_rectangle_xpm,
GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- GTK_SIGNAL_FUNC(ToolTypeEvent),NULL);
+ GTK_SIGNAL_FUNC(ToolTypeEvent), NULL);
gtk_toolbar_append_space(GTK_TOOLBAR(vertToolBar));
- gtk_toolbar_append_item(GTK_TOOLBAR(vertToolBar),NULL,"Invert logo",NULL,
- NewPixmap(Edit_invert_xpm,GUI_LogosWindow->window,
+ gtk_toolbar_append_item(GTK_TOOLBAR(vertToolBar), NULL, _("Invert logo"), NULL,
+ NewPixmap(Edit_invert_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- (GtkSignalFunc)InvertLogoEvent,vertToolBar);
+ (GtkSignalFunc)InvertLogoEvent, vertToolBar);
- gtk_toolbar_append_item(GTK_TOOLBAR(vertToolBar),NULL,"Horizontal flip",NULL,
- NewPixmap(Edit_flip_horizontal_xpm,GUI_LogosWindow->window,
+ gtk_toolbar_append_item(GTK_TOOLBAR(vertToolBar), NULL, _("Horizontal flip"), NULL,
+ NewPixmap(Edit_flip_horizontal_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- (GtkSignalFunc)FlipHorizontalLogoEvent,vertToolBar);
+ (GtkSignalFunc)FlipHorizontalLogoEvent, vertToolBar);
- gtk_toolbar_append_item(GTK_TOOLBAR(vertToolBar),NULL,"Vertical flip",NULL,
- NewPixmap(Edit_flip_vertical_xpm,GUI_LogosWindow->window,
+ gtk_toolbar_append_item(GTK_TOOLBAR(vertToolBar), NULL, _("Vertical flip"), NULL,
+ NewPixmap(Edit_flip_vertical_xpm, GUI_LogosWindow->window,
&GUI_LogosWindow->style->bg[GTK_STATE_NORMAL]),
- (GtkSignalFunc)FlipVerticalLogoEvent,vertToolBar);
+ (GtkSignalFunc)FlipVerticalLogoEvent, vertToolBar);
gtk_box_pack_start(GTK_BOX(hbox),vertToolBar,FALSE,FALSE,0);
}
void GUI_ShowLogosWindow (void) {
+ /* Set network name taken from the phone */
+ GetNetworkInfoEvent(NULL);
+ /* if phone support caller groups, read callerGroups names */
+ if (phoneMonitor.supported & PM_CALLERGROUP) {
+ if (xgnokiiConfig.callerGroups[0] == NULL) {
+ GUI_Refresh();
+ GUI_InitCallerGroupsInf ();
+ }
+ if (!callersGroupsInitialized) GUI_RefreshLogosGroupsCombo ();
+ gtk_widget_show(buttonCaller);
+ gtk_widget_show(callerCombo);
+ } else {
+ /* if not supported, hide widget for handling callerGroups */
+ gtk_widget_hide(buttonCaller);
+ gtk_widget_hide(callerCombo);
+ }
- gtk_widget_show(buttonCaller);
- gtk_widget_show(callerCombo);
-
- if (xgnokiiConfig.callerGroups[0] == NULL) {
- GUI_Refresh();
- GUI_InitCallerGroupsInf ();
- }
+ /* Call to reset Startup logo size */
+ LogoTypeEvent(GUI_LogosWindow);
- if (!callersGroupsInitialized) GUI_RefreshLogosGroupsCombo ();
-
gtk_widget_show(GUI_LogosWindow);
if (!previewAvailable && showPreviewErrorDialog) {