From 0a52d890e3b75aa2d1fae3da6c206055cd723cc6 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Mon, 29 Oct 2001 12:31:45 +0000 Subject: Handle returning dates here. (e_card_simple_get_allow_newlines): New 2001-10-29 Christopher James Lahey * backend/ebook/e-card-simple.c, backend/ebook/e-card-simple.h (e_card_simple_get): Handle returning dates here. (e_card_simple_get_allow_newlines): New function. Returns whether it makes much sense to have newlines in this string. * gui/component/addressbook-config.c, gui/component/addressbook-config.h (addressbook_create_new_source): The first argument here should be const. * gui/component/addressbook-storage.c: Added #include "addressbook-config.h". * gui/widgets/e-minicard-label.c (e_minicard_label_event): On an escape here, cancel editing and remove the focus from the text. * gui/widgets/e-minicard.c (add_field): Set allow_newlines here. (field_activated): Stop editing on the activate signal and remove the focus from the text. Fixes Ximian bug #12286. svn path=/trunk/; revision=14335 --- addressbook/ChangeLog | 22 +++++++++++++++ addressbook/backend/ebook/e-card-simple.c | 37 ++++++++++++++++++++++++- addressbook/backend/ebook/e-card-simple.h | 2 ++ addressbook/gui/component/addressbook-config.c | 2 +- addressbook/gui/component/addressbook-config.h | 2 +- addressbook/gui/component/addressbook-storage.c | 5 ++-- addressbook/gui/widgets/e-minicard-label.c | 16 ++++++++++- addressbook/gui/widgets/e-minicard.c | 12 ++++++++ 8 files changed, 92 insertions(+), 6 deletions(-) (limited to 'addressbook') diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 3c4b184fba..2553bdbb44 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,25 @@ +2001-10-29 Christopher James Lahey + + * backend/ebook/e-card-simple.c, backend/ebook/e-card-simple.h + (e_card_simple_get): Handle returning dates here. + (e_card_simple_get_allow_newlines): New function. Returns whether + it makes much sense to have newlines in this string. + + * gui/component/addressbook-config.c, + gui/component/addressbook-config.h + (addressbook_create_new_source): The first argument here should + be const. + + * gui/component/addressbook-storage.c: Added #include + "addressbook-config.h". + + * gui/widgets/e-minicard-label.c (e_minicard_label_event): On an + escape here, cancel editing and remove the focus from the text. + + * gui/widgets/e-minicard.c (add_field): Set allow_newlines here. + (field_activated): Stop editing on the activate signal and remove + the focus from the text. Fixes Ximian bug #12286. + 2001-10-28 JP Rosevear * conduit/address-conduit.h: tidy diff --git a/addressbook/backend/ebook/e-card-simple.c b/addressbook/backend/ebook/e-card-simple.c index 9e6100b5f3..1a54ab00e6 100644 --- a/addressbook/backend/ebook/e-card-simple.c +++ b/addressbook/backend/ebook/e-card-simple.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "e-card-simple.h" @@ -772,10 +773,19 @@ char *e_card_simple_get (ECardSimple *simple, return NULL; case E_CARD_SIMPLE_INTERNAL_TYPE_DATE: if (simple->card) { + char buf[26]; + struct tm then; gtk_object_get(GTK_OBJECT(simple->card), field_data[field].ecard_field, &date, NULL); - return NULL; /* FIXME!!!! */ + then.tm_year = date->year; + then.tm_mon = date->month - 1; + then.tm_mday = date->day; + then.tm_hour = 12; + then.tm_min = 0; + then.tm_sec = 0; + e_strftime_fix_am_pm (buf, 26, _("%x"), &then); + return g_strdup (buf); } else return NULL; case E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS: @@ -1096,6 +1106,31 @@ const char *e_card_simple_get_name (ECardSimple *simple, return U_(field_data[field].name); } +gboolean +e_card_simple_get_allow_newlines (ECardSimple *simple, + ECardSimpleField field) +{ + ECardSimpleInternalType type = field_data[field].type; + switch(type) { + case E_CARD_SIMPLE_INTERNAL_TYPE_STRING: + case E_CARD_SIMPLE_INTERNAL_TYPE_PHONE: + case E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL: + case E_CARD_SIMPLE_INTERNAL_TYPE_BOOL: + case E_CARD_SIMPLE_INTERNAL_TYPE_DATE: + case E_CARD_SIMPLE_INTERNAL_TYPE_SPECIAL: + default: + switch (field) { + case E_CARD_SIMPLE_FIELD_NOTE: + return TRUE; + default: + return FALSE; + } + + case E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS: + return TRUE; + } +} + const char *e_card_simple_get_short_name (ECardSimple *simple, ECardSimpleField field) { diff --git a/addressbook/backend/ebook/e-card-simple.h b/addressbook/backend/ebook/e-card-simple.h index 4acc95cab8..1e20085708 100644 --- a/addressbook/backend/ebook/e-card-simple.h +++ b/addressbook/backend/ebook/e-card-simple.h @@ -178,6 +178,8 @@ const char *e_card_simple_get_name (ECardSimple ECardSimpleField field); const char *e_card_simple_get_short_name (ECardSimple *simple, ECardSimpleField field); +gboolean e_card_simple_get_allow_newlines (ECardSimple *simple, + ECardSimpleField field); /* Use these only if building lists of specific types. It should be diff --git a/addressbook/gui/component/addressbook-config.c b/addressbook/gui/component/addressbook-config.c index d21ec43d14..de65019a97 100644 --- a/addressbook/gui/component/addressbook-config.c +++ b/addressbook/gui/component/addressbook-config.c @@ -269,7 +269,7 @@ addressbook_config_source_with_gui (GladeXML *gui, AddressbookSource *source, Gt } void -addressbook_create_new_source (char *new_source, GtkWidget *parent) +addressbook_create_new_source (const char *new_source, GtkWidget *parent) { AddressbookSourceDialog *dialog; GladeXML *gui; diff --git a/addressbook/gui/component/addressbook-config.h b/addressbook/gui/component/addressbook-config.h index 48b797839f..b0adbd7330 100644 --- a/addressbook/gui/component/addressbook-config.h +++ b/addressbook/gui/component/addressbook-config.h @@ -26,6 +26,6 @@ #include "addressbook-storage.h" void addressbook_config (GNOME_Evolution_Shell shell); -void addressbook_create_new_source (char *new_source, GtkWidget *parent); +void addressbook_create_new_source (const char *new_source, GtkWidget *parent); #endif /* __ADDRESSBOOK_CONFIG_H__ */ diff --git a/addressbook/gui/component/addressbook-storage.c b/addressbook/gui/component/addressbook-storage.c index ec0dda84fc..647c21ef52 100644 --- a/addressbook/gui/component/addressbook-storage.c +++ b/addressbook/gui/component/addressbook-storage.c @@ -40,6 +40,8 @@ #include #endif +#include "addressbook-storage.h" + #include #include #include @@ -62,9 +64,8 @@ #include "e-util/e-unicode-i18n.h" #include "evolution-shell-component.h" -#include "evolution-storage.h" -#include "addressbook-storage.h" +#include "addressbook-config.h" #define ADDRESSBOOK_SOURCES_XML "addressbook-sources.xml" diff --git a/addressbook/gui/widgets/e-minicard-label.c b/addressbook/gui/widgets/e-minicard-label.c index 54779c4ea6..b59ff46ae3 100644 --- a/addressbook/gui/widgets/e-minicard-label.c +++ b/addressbook/gui/widgets/e-minicard-label.c @@ -20,13 +20,16 @@ */ #include + +#include "e-minicard-label.h" + #include #include #include #include #include #include -#include "e-minicard-label.h" +#include static void e_minicard_label_init (EMinicardLabel *card); static void e_minicard_label_class_init (EMinicardLabelClass *klass); @@ -300,6 +303,17 @@ e_minicard_label_event (GnomeCanvasItem *item, GdkEvent *event) switch( event->type ) { + case GDK_KEY_PRESS: + if (event->key.keyval == GDK_Escape) { + GnomeCanvasItem *parent; + + e_text_cancel_editing (E_TEXT (e_minicard_label->field)); + + parent = GNOME_CANVAS_ITEM (e_minicard_label)->parent; + if (parent) + e_canvas_item_grab_focus(parent, FALSE); + } + break; case GDK_FOCUS_CHANGE: { GdkEventFocus *focus_event = (GdkEventFocus *) event; diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 96ae2fad9e..8991d8c757 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -708,6 +708,13 @@ field_changed (EText *text, EMinicard *e_minicard) e_minicard->changed = TRUE; } +static void +field_activated (EText *text, EMinicard *e_minicard) +{ + e_text_stop_editing (text); + e_canvas_item_grab_focus (GNOME_CANVAS_ITEM (e_minicard), FALSE); +} + static void add_field (EMinicard *e_minicard, ECardSimpleField field, gdouble left_width) { @@ -745,6 +752,11 @@ add_field (EMinicard *e_minicard, ECardSimpleField field, gdouble left_width) NULL ); gtk_signal_connect(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field), "changed", GTK_SIGNAL_FUNC(field_changed), e_minicard); + gtk_signal_connect(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field), + "activate", GTK_SIGNAL_FUNC(field_activated), e_minicard); + gtk_object_set(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field), + "allow_newlines", e_card_simple_get_allow_newlines (e_minicard->simple, field), + NULL); gtk_object_set_data(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field), "EMinicard:field", GINT_TO_POINTER(field)); -- cgit