diff options
author | Damon Chaplin <damon@ximian.com> | 2001-08-17 07:37:38 +0800 |
---|---|---|
committer | Damon Chaplin <damon@src.gnome.org> | 2001-08-17 07:37:38 +0800 |
commit | b9b5aa0a0e5bbe9b7ed4eb45e37109ecf90d38c4 (patch) | |
tree | 3f8511620831134e115b24e08440ca5f1711d2d9 /calendar/gui/e-timezone-entry.c | |
parent | d103befa6dce296f571319c0b69700b1f06d4a83 (diff) | |
download | gsoc2013-evolution-b9b5aa0a0e5bbe9b7ed4eb45e37109ecf90d38c4.tar.gz gsoc2013-evolution-b9b5aa0a0e5bbe9b7ed4eb45e37109ecf90d38c4.tar.zst gsoc2013-evolution-b9b5aa0a0e5bbe9b7ed4eb45e37109ecf90d38c4.zip |
hide the timezone fields for all-day events. We will use DATE values for
2001-08-16 Damon Chaplin <damon@ximian.com>
* gui/dialogs/event-page.c: hide the timezone fields for all-day
events. We will use DATE values for these eventually, and these
don't have timezones associated with them. Currently we just use the
default timezone for all-day events, as a workaround until we have
DATE values working.
* gui/dialogs/comp-editor-util.c (comp_editor_new_date_edit): added
make_time_insensitive flag. Though we may not use it.
* gui/dialogs/event-page.glade: made the 'All day event' toggle
right-aligned, so it doesn't move when the other widgets are shown
and hidden.
* gui/e-timezone-entry.c (e_timezone_entry_set_default_timezone): new
function to set the default timezone of the widget. If the current
timezone setting matches the default then the entry field is hidden.
Most people won't use timezones so this makes the GUI simpler.
* gui/dialogs/event-page.c (init_widgets):
* gui/dialogs/task-page.c (init_widgets): set the default timezone
using the above function.
* gui/dialogs/task-page.c (task_page_fill_widgets): if the start date
or due date is not set, we use the default timezone, so the user
doesn't have to set this each time they set the date.
svn path=/trunk/; revision=12137
Diffstat (limited to 'calendar/gui/e-timezone-entry.c')
-rw-r--r-- | calendar/gui/e-timezone-entry.c | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/calendar/gui/e-timezone-entry.c b/calendar/gui/e-timezone-entry.c index 2b4f06af6d..1cc1e83676 100644 --- a/calendar/gui/e-timezone-entry.c +++ b/calendar/gui/e-timezone-entry.c @@ -38,6 +38,8 @@ #include "dialogs/e-timezone-dialog.h" #include "e-timezone-entry.h" +/* The timezone icon for the button. */ +#include "art/timezone-16.xpm" struct _ETimezoneEntryPrivate { /* This is the timezone set in e_timezone_entry_set_timezone(). @@ -53,6 +55,11 @@ struct _ETimezoneEntryPrivate { GtkWidget *entry; GtkWidget *button; + + /* This can be set to the default timezone. If the current timezone + setting in the ETimezoneEntry matches this, then the entry field + is hidden. This makes the user interface simpler. */ + icaltimezone *default_zone; }; @@ -73,6 +80,8 @@ static void on_button_clicked (GtkWidget *widget, static char* e_timezone_entry_get_display_name (icaltimezone *zone); +static void e_timezone_entry_set_entry_visibility (ETimezoneEntry *tentry); + static GtkHBoxClass *parent_class; static guint timezone_entry_signals[LAST_SIGNAL] = { 0 }; @@ -137,11 +146,16 @@ static void e_timezone_entry_init (ETimezoneEntry *tentry) { ETimezoneEntryPrivate *priv; + GdkColormap *colormap; + GdkPixmap *timezone_icon; + GdkBitmap *timezone_mask; + GtkWidget *pixmap; tentry->priv = priv = g_new0 (ETimezoneEntryPrivate, 1); priv->zone = NULL; priv->changed = FALSE; + priv->default_zone = NULL; priv->entry = gtk_entry_new (); gtk_entry_set_editable (GTK_ENTRY (priv->entry), FALSE); @@ -151,11 +165,18 @@ e_timezone_entry_init (ETimezoneEntry *tentry) gtk_signal_connect (GTK_OBJECT (priv->entry), "changed", GTK_SIGNAL_FUNC (on_entry_changed), tentry); - priv->button = gtk_button_new_with_label ("..."); + priv->button = gtk_button_new (); gtk_signal_connect (GTK_OBJECT (priv->button), "clicked", GTK_SIGNAL_FUNC (on_button_clicked), tentry); gtk_box_pack_start (GTK_BOX (tentry), priv->button, FALSE, FALSE, 0); gtk_widget_show (priv->button); + + colormap = gtk_widget_get_colormap (priv->button); + timezone_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &timezone_mask, NULL, timezone_16_xpm); + + pixmap = gtk_pixmap_new (timezone_icon, timezone_mask); + gtk_container_add (GTK_CONTAINER (priv->button), pixmap); + gtk_widget_show (pixmap); } @@ -233,6 +254,7 @@ on_button_clicked (GtkWidget *widget, } gtk_entry_set_text (GTK_ENTRY (priv->entry), display_name); + e_timezone_entry_set_entry_visibility (tentry); } gtk_object_unref (GTK_OBJECT (timezone_dialog)); @@ -287,6 +309,8 @@ e_timezone_entry_set_timezone (ETimezoneEntry *tentry, gtk_entry_set_text (GTK_ENTRY (priv->entry), zone ? e_timezone_entry_get_display_name (zone) : ""); + + e_timezone_entry_set_entry_visibility (tentry); } @@ -306,3 +330,45 @@ e_timezone_entry_get_display_name (icaltimezone *zone) return display_name; } + + +/* Sets the default timezone. If the current timezone matches this, then the + entry field is hidden. This is useful since most people do not use timezones + so it makes the user interface simpler. */ +void +e_timezone_entry_set_default_timezone (ETimezoneEntry *tentry, + icaltimezone *zone) +{ + ETimezoneEntryPrivate *priv; + + g_return_if_fail (E_IS_TIMEZONE_ENTRY (tentry)); + + priv = tentry->priv; + + priv->default_zone = zone; + + e_timezone_entry_set_entry_visibility (tentry); +} + + +static void +e_timezone_entry_set_entry_visibility (ETimezoneEntry *tentry) +{ + ETimezoneEntryPrivate *priv; + icaltimezone *zone; + gboolean show_entry = TRUE; + + priv = tentry->priv; + + if (priv->default_zone) { + zone = e_timezone_entry_get_timezone (tentry); + if (zone == priv->default_zone) + show_entry = FALSE; + } + + if (show_entry) + gtk_widget_show (priv->entry); + else + gtk_widget_hide (priv->entry); +} + |