Commit 81fbfe99 authored by Bruno Coudoin's avatar Bruno Coudoin

- new date system, untested.

	- Now in clockgame hours and minutes turns to the next one
	  or previous one when dragging
	  http://bugzilla.gnome.org/show_bug.cgi?id=368549
	- In shapegame, the green dot is now resseted properly
	  when the item is no more in sight (reported by Joshua N
Pritikin)
parent 7ccc9808
2006-11-02 Bruno Coudoin
- new date system, untested.
- Now in clockgame hours and minutes turns to the next one
or previous one when dragging
http://bugzilla.gnome.org/show_bug.cgi?id=368549
- In shapegame, the green dot is now resseted properly
when the item is no more in sight (reported by Joshua N Pritikin)
* configure.in:
* src/boards/clockgame.c: (display_hour), (item_event):
* src/boards/shapegame.c: (item_event):
* src/gcompris/board.c: (gc_board_init), (gc_board_check_file):
* src/gcompris/gcompris.c: (gc_activation_check),
(activation_enter_callback):
2006-10-31 Bruno Coudoin
- Fixed unaligned in the main menu the strategy icon
......
......@@ -122,6 +122,9 @@ AC_SUBST(GETTEXT_PACKAGE)
AM_GLIB_GNU_GETTEXT
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package name])
BUILD_DATE=`date +%y%m`
AC_DEFINE_UNQUOTED(BUILD_DATE,"$BUILD_DATE", [Date at which GCompris has been built])
dnl Define myprefix depending on wether our user gives us one or not
if test "x${prefix}" = "xNONE"; then
myprefix=${ac_default_prefix}
......
......@@ -297,6 +297,7 @@ static void display_hour(guint hour)
currentTime.hour=hour;
display_digital_time(digital_time_item, &currentTime);
display_digital_time(digital_time_item_s, &currentTime);
}
......@@ -691,12 +692,24 @@ item_event(GnomeCanvasItem *item, GdkEvent *event, gpointer data)
if(item==hour_item)
display_hour(angle * 6 / M_PI);
else if(item==minute_item)
{
{
if(currentTime.minute > 45 && angle * 30 / M_PI < 15)
currentTime.hour++;
if(currentTime.minute < 15 && angle * 30 / M_PI > 45)
currentTime.hour--;
display_minute(angle * 30 / M_PI);
display_hour(currentTime.hour);
}
else if(item==second_item)
{
if(currentTime.second > 45 && angle * 30 / M_PI < 15)
currentTime.minute++;
if(currentTime.second < 15 && angle * 30 / M_PI > 45)
currentTime.minute--;
display_second(angle * 30 / M_PI);
display_minute(currentTime.minute);
display_hour(currentTime.hour);
......
......@@ -31,7 +31,7 @@
#define SOUNDLISTFILE PACKAGE
#define UNDEFINED "Undefined"
#define SQUARE_LIMIT_DISTANCE 50.0
#define SQUARE_LIMIT_DISTANCE 100.0
static int gamewon;
......@@ -476,8 +476,6 @@ static gint key_press(guint keyval, gchar *commit_str, gchar *preedit_str)
return TRUE;
}
/*-------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------*/
......@@ -1159,6 +1157,19 @@ item_event(GnomeCanvasItem *item, GdkEvent *event, Shape *shape)
else
target_point_previous = targetshape->targetitem;
}
else
{
if(target_point_previous)
{
if(strcmp(shape->targetfile, UNDEFINED)==0)
gnome_canvas_item_set(GNOME_CANVAS_ITEM(target_point_previous),
"fill_color_rgba", POINT_COLOR_OFF,
NULL);
else
gc_item_focus_set(target_point_previous, FALSE);
}
target_point_previous = NULL;
}
}
break;
......
......@@ -29,7 +29,7 @@ static struct BoardPluginData *bp_data;
static gboolean get_board_playing(void);
#ifdef WIN32
extern gchar *keycode[];
int gc_activation_check(char *code);
extern BoardPlugin * get_advanced_colors_bplugin_info();
extern BoardPlugin * get_algebra_bplugin_info();
extern BoardPlugin * get_algebra_guesscount_bplugin_info();
......@@ -176,7 +176,7 @@ void gc_board_init(void)
void gc_board_init(void)
{
/* Fist make sure the module loading is supported on this platform */
/* First make sure the module loading is supported on this platform */
if (!g_module_supported())
g_error( _("Dynamic module loading is not supported. gcompris cannot load.\n") );
......@@ -220,16 +220,10 @@ gc_board_check_file(GcomprisBoard *gcomprisBoard)
return TRUE;
}
while(keycode[i++])
{
if(strncmp(properties->key, keycode[i-1], 5) == 0)
{
key_is_valid = 1;
}
}
key_is_valid = gc_activation_check(properties->key);
i = 0;
if(key_is_valid)
if(key_is_valid == 1)
{
while(static_boards[i++] != NULL) {
......
......@@ -61,20 +61,6 @@ void gc_terminate(int signum);
* For the Activation dialog
*/
#ifdef WIN32
/* List of keycodes */
gchar *keycode[] =
{
"83640",
"33251",
"99301",
"71848",
"79657",
"47561",
"84175",
"15987",
NULL
};
static void activation_enter_callback(GtkWidget *widget,
GtkWidget *entry );
static void activation_done();
......@@ -861,6 +847,53 @@ display_activation_dialog()
g_free(msg);
}
/**
* Return -1 if the code is not valid
* 0 if the code is valid but out of date
* 1 if the code is valid and under 2 years
*/
int gc_activation_check(char *code)
{
int value = 0;
int i;
char crc1 = 0;
char crc2 = 0;
char codeddate[4];
if(strlen(code) != 6)
return -1;
for(i=3; i>=0; i--)
{
value |= code[i] & 0x07;
value = value << 3;
crc1 = crc1 ^ code[i] & 0x07;
}
value = value >> 3;
crc1 = 0x30 | crc1;
crc2 = 0x30 | (code[2] ^ code[3]);
crc1 != code[4] ? return(-1);
crc2 != code[5] ? return(-1);
codeddate[3] = 0x30 | value & 0x000F;
value = value >> 4;
codeddate[2] = 0x30 | value & 0x0001;
value = value >> 1;
codeddate[1] = 0x30 | value & 0x000F;
value = value >> 4;
codeddate[0] = 0x30 | value & 0x0003;
codeddate[4] = '\0';
if(atoi(codeddate) + 200 >= atoi(BUILD_DATE))
return(1);
else
return(0);
}
/* Check the activation code
*
*/
......@@ -868,29 +901,18 @@ static void
activation_enter_callback( GtkWidget *entry,
GtkWidget *notused )
{
gchar *entry_text;
entry_text = (char *)gtk_entry_get_text(GTK_ENTRY(entry));
if(strlen(entry_text) == 5)
switch(gc_activation_check((char *)gtk_entry_get_text(GTK_ENTRY(entry))))
{
int i = 0;
while(keycode[i++])
{
if(strncmp(entry_text, keycode[i-1], 5) == 0)
{
g_free(properties->key);
properties->key=strdup( keycode[i-1]);
gc_prop_save(properties);
gc_menu_load();
gtk_entry_set_text(GTK_ENTRY(entry), "GOOD");
return;
}
}
case 1:
gtk_entry_set_text(GTK_ENTRY(entry), "GOOD");
break;
case 0:
gtk_entry_set_text(GTK_ENTRY(entry), "EXPIRE");
break;
case -1:
gtk_entry_set_text(GTK_ENTRY(entry), "WRONG");
break;
}
gtk_entry_set_text(GTK_ENTRY(entry), "WRONG");
}
/* Callback for the activation dialog
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment