diff options
Diffstat (limited to 'widgets/misc')
-rw-r--r-- | widgets/misc/ChangeLog | 23 | ||||
-rw-r--r-- | widgets/misc/e-dateedit.c | 114 | ||||
-rw-r--r-- | widgets/misc/e-dateedit.h | 3 |
3 files changed, 81 insertions, 59 deletions
diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index d8ebd49b07..8acf04c6eb 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,3 +1,26 @@ +2000-11-02 Federico Mena Quintero <federico@helixcode.com> + + * e-dateedit.h (EDateEditClass): Removed the "time_changed" + signal, since it was never being emitted in the first place. Time + values *are* both date and time together anyways, so whenever one + changes we should notify about the whole date/time value being + changed. + Renamed the remaining "date_changed" signal to just "changed". + + * e-dateedit.c (e_date_edit_class_init): Do not create the + "time_changed" signal; rename the other one to "changed". + (set_time): Moved the core functionality from + e_date_edit_set_time() to here. This function just sets the + widgets' values without emitting any signals. + (e_date_edit_set_time): Emit the "changed" signal unconditionally. + This is to be consistent with the rest of the GTK+ widgets, and it + actually makes writing client code easier. + (e_date_edit_new): Use set_time(). + (on_date_popup_now_button_clicked): Do not emit the signal here. + (on_date_popup_none_button_clicked): Likewise. + (e_date_edit_set_time_of_day): Emit the signal, since we do not + call e_date_edit_set_time(). + 2000-10-30 Kjartan Maraas <kmaraas@gnome.org> * e-calendar-item.c: #include <string.h> to get rid of warning. diff --git a/widgets/misc/e-dateedit.c b/widgets/misc/e-dateedit.c index 7c9c7582d8..272038f318 100644 --- a/widgets/misc/e-dateedit.c +++ b/widgets/misc/e-dateedit.c @@ -76,8 +76,7 @@ struct _EDateEditPrivate { }; enum { - DATE_CHANGED, - TIME_CHANGED, + CHANGED, LAST_SIGNAL }; @@ -163,19 +162,11 @@ e_date_edit_class_init (EDateEditClass *class) parent_class = gtk_type_class (gtk_hbox_get_type ()); - date_edit_signals [TIME_CHANGED] = - gtk_signal_new ("time_changed", + date_edit_signals [CHANGED] = + gtk_signal_new ("changed", GTK_RUN_FIRST, object_class->type, GTK_SIGNAL_OFFSET (EDateEditClass, - time_changed), - gtk_signal_default_marshaller, - GTK_TYPE_NONE, 0); - - date_edit_signals [DATE_CHANGED] = - gtk_signal_new ("date_changed", - GTK_RUN_FIRST, object_class->type, - GTK_SIGNAL_OFFSET (EDateEditClass, - date_changed), + changed), gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); @@ -186,8 +177,7 @@ e_date_edit_class_init (EDateEditClass *class) object_class->destroy = e_date_edit_destroy; - class->date_changed = NULL; - class->time_changed = NULL; + class->changed = NULL; } @@ -206,6 +196,50 @@ e_date_edit_init (EDateEdit *dedit) priv->upper_hour = 24; } +/* Sets the displayed date and time from a time_t value; does not emit any + * signals. + */ +static void +set_time (EDateEdit *dedit, time_t the_time) +{ + EDateEditPrivate *priv; + struct tm *mytm; + char buffer[40], *format; + + priv = dedit->_priv; + + if (the_time == -1) { + gtk_entry_set_text (GTK_ENTRY (priv->date_entry), _("None")); + disable_time_combo (dedit); + return; + } + + enable_time_combo (dedit); + + if (the_time == 0) + the_time = time (NULL); + + mytm = localtime (&the_time); + + /* Set the date */ + + /* This is a strftime() format for a short date. %m = month, %d = day + of month, %Y = year (all digits). */ + strftime (buffer, sizeof (buffer), _("%m/%d/%Y"), mytm); + gtk_entry_set_text (GTK_ENTRY (priv->date_entry), buffer); + + /* Set the time */ + if (priv->use_24_hour_format) + /* This is a strftime() format. %H = hour (0-23), %M = minute. */ + format = _("%H:%M"); + else + /* This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string. */ + format = _("%I:%M %p"); + + strftime (buffer, sizeof (buffer), format, mytm); + gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry), + buffer); +} /** * e_date_edit_new: @@ -223,7 +257,7 @@ e_date_edit_new (void) dedit = gtk_type_new (e_date_edit_get_type ()); create_children (dedit); - e_date_edit_set_time (dedit, 0); + set_time (dedit, 0); return GTK_WIDGET (dedit); } @@ -482,7 +516,7 @@ on_date_popup_date_selected (ECalendarItem *calitem, EDateEdit *dedit) enable_time_combo (dedit); - gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [DATE_CHANGED]); + gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [CHANGED]); hide_date_popup (dedit); } @@ -492,7 +526,6 @@ on_date_popup_now_button_clicked (GtkWidget *button, EDateEdit *dedit) { e_date_edit_set_time (dedit, time (NULL)); - gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [DATE_CHANGED]); hide_date_popup (dedit); } @@ -514,7 +547,7 @@ on_date_popup_today_button_clicked (GtkWidget *button, enable_time_combo (dedit); - gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [DATE_CHANGED]); + gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [CHANGED]); hide_date_popup (dedit); } @@ -524,7 +557,6 @@ on_date_popup_none_button_clicked (GtkWidget *button, EDateEdit *dedit) { e_date_edit_set_time (dedit, -1); - gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [DATE_CHANGED]); hide_date_popup (dedit); } @@ -697,45 +729,11 @@ e_date_edit_parse_date (EDateEdit *dedit, void e_date_edit_set_time (EDateEdit *dedit, time_t the_time) { - EDateEditPrivate *priv; - struct tm *mytm; - char buffer[40], *format; - + g_return_if_fail (dedit != NULL); g_return_if_fail (E_IS_DATE_EDIT (dedit)); - priv = dedit->_priv; - - if (the_time == -1) { - gtk_entry_set_text (GTK_ENTRY (priv->date_entry), _("None")); - disable_time_combo (dedit); - return; - } - - enable_time_combo (dedit); - - if (the_time == 0) - the_time = time (NULL); - - mytm = localtime (&the_time); - - /* Set the date */ - - /* This is a strftime() format for a short date. %m = month, %d = day - of month, %Y = year (all digits). */ - strftime (buffer, sizeof (buffer), _("%m/%d/%Y"), mytm); - gtk_entry_set_text (GTK_ENTRY (priv->date_entry), buffer); - - /* Set the time */ - if (priv->use_24_hour_format) - /* This is a strftime() format. %H = hour (0-23), %M = minute. */ - format = _("%H:%M"); - else - /* This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string. */ - format = _("%I:%M %p"); - - strftime (buffer, sizeof (buffer), format, mytm); - gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry), - buffer); + set_time (dedit, the_time); + gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals[CHANGED]); } @@ -818,6 +816,8 @@ e_date_edit_set_time_of_day (EDateEdit *dedit, strftime (buffer, sizeof (buffer), format, &mytm); gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry), buffer); + + gtk_signal_emit (GTK_OBJECT (dedit), date_edit_signals [CHANGED]); } diff --git a/widgets/misc/e-dateedit.h b/widgets/misc/e-dateedit.h index b616e7b581..903c64e732 100644 --- a/widgets/misc/e-dateedit.h +++ b/widgets/misc/e-dateedit.h @@ -60,8 +60,7 @@ struct _EDateEdit { struct _EDateEditClass { GtkHBoxClass parent_class; - void (*date_changed) (EDateEdit *dedit); - void (*time_changed) (EDateEdit *dedit); + void (* changed) (EDateEdit *dedit); }; guint e_date_edit_get_type (void); |