[gthumb/ext] validate date and time separately



commit 6b815fb1f9dacce3bb0045d3955b11a6f5eea55f
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Mon Oct 26 20:43:00 2009 +0100

    validate date and time separately

 gthumb/gth-time-selector.c |   23 ++++++++++++++---------
 gthumb/gth-time.c          |   14 ++++++++------
 gthumb/gth-time.h          |    2 +-
 3 files changed, 23 insertions(+), 16 deletions(-)
---
diff --git a/gthumb/gth-time-selector.c b/gthumb/gth-time-selector.c
index 7521200..0b385aa 100644
--- a/gthumb/gth-time-selector.c
+++ b/gthumb/gth-time-selector.c
@@ -187,24 +187,29 @@ update_date_from_view (GthTimeSelector *self)
 static void
 update_view_from_data (GthTimeSelector *self)
 {
-	GtkWidget *entry;
+	if (gth_time_valid (self->priv->date_time->time)) {
+		char      *text;
+		GtkWidget *entry;
 
-	if (gth_datetime_valid (self->priv->date_time)) {
-		char *text;
-
-		text = gth_datetime_strftime (self->priv->date_time, "%x");
-		gtk_entry_set_text (GTK_ENTRY (self->priv->date_entry), text);
-
-		entry = gtk_bin_get_child (GTK_BIN (self->priv->time_combo_box));
 		text = gth_datetime_strftime (self->priv->date_time, "%X");
+		entry = gtk_bin_get_child (GTK_BIN (self->priv->time_combo_box));
 		gtk_entry_set_text (GTK_ENTRY (entry), text);
 	}
 	else {
-		gtk_entry_set_text (GTK_ENTRY (self->priv->date_entry), "");
+		GtkWidget *entry;
 
 		entry = gtk_bin_get_child (GTK_BIN (self->priv->time_combo_box));
 		gtk_entry_set_text (GTK_ENTRY (entry), "");
 	}
+
+	if (g_date_valid (self->priv->date_time->date)) {
+		char *text;
+
+		text = gth_datetime_strftime (self->priv->date_time, "%x");
+		gtk_entry_set_text (GTK_ENTRY (self->priv->date_entry), text);
+	}
+	else
+		gtk_entry_set_text (GTK_ENTRY (self->priv->date_entry), "");
 }
 
 
diff --git a/gthumb/gth-time.c b/gthumb/gth-time.c
index f29ebce..7cb66f2 100644
--- a/gthumb/gth-time.c
+++ b/gthumb/gth-time.c
@@ -205,17 +205,19 @@ gth_datetime_from_exif_date (GthDateTime *dt,
 }
 
 
-gboolean
+void
 gth_datetime_from_struct_tm (GthDateTime *dt,
 			     struct tm   *tm)
 {
-	if (tm->tm_hour < 0) {
-		gth_datetime_clear (dt);
-	}
-	else {
+	if (tm->tm_hour < 0)
+		gth_time_clear (dt->time);
+	else
 		gth_time_set_hms (dt->time, tm->tm_hour, tm->tm_min, tm->tm_sec, 0);
+
+	if (tm->tm_year < 0)
+		g_date_clear (dt->date, 1);
+	else
 		g_date_set_dmy (dt->date, tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year);
-	}
 }
 
 
diff --git a/gthumb/gth-time.h b/gthumb/gth-time.h
index 9370cdb..d5eaabe 100644
--- a/gthumb/gth-time.h
+++ b/gthumb/gth-time.h
@@ -55,7 +55,7 @@ void          gth_datetime_clear           (GthDateTime *dt);
 gboolean      gth_datetime_valid           (GthDateTime *dt);
 gboolean      gth_datetime_from_exif_date  (GthDateTime *dt,
 					    const char  *exif_date);
-gboolean      gth_datetime_from_struct_tm  (GthDateTime *dt,
+void          gth_datetime_from_struct_tm  (GthDateTime *dt,
 					    struct tm   *tm);
 char *        gth_datetime_to_exif_date    (GthDateTime *dt);
 void          gth_datetime_to_struct_tm    (GthDateTime *dt,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]