Mostly finished ECardSimple.
2000-05-06 Christopher James Lahey <clahey@helixcode.com> * backend/ebook/e-card-simple.c, backend/ebook/e-card-simple.h: Mostly finished ECardSimple. * contact-editor/e-contact-editor.c: Changed this to match with some of the changes to ECardSimple. * gui/component/addressbook.c: Changed this to look for "addressbook.db" in the given directory if it doesn't find the file "uri". * gui/minicard/e-minicard.c, gui/minicard/e-minicard.h: Changed this to use ECardSimple. svn path=/trunk/; revision=2839
This commit is contained in:
committed by
Chris Lahey
parent
073f72e4f3
commit
989f36ec0e
@ -1,4 +1,20 @@
|
||||
2000-05-06 Christopher James Lahey <clahey@helixcode.com>
|
||||
|
||||
* backend/ebook/e-card-simple.c, backend/ebook/e-card-simple.h:
|
||||
Mostly finished ECardSimple.
|
||||
|
||||
* contact-editor/e-contact-editor.c: Changed this to match with
|
||||
some of the changes to ECardSimple.
|
||||
|
||||
* gui/component/addressbook.c: Changed this to look for
|
||||
"addressbook.db" in the given directory if it doesn't find the
|
||||
file "uri".
|
||||
|
||||
* gui/minicard/e-minicard.c, gui/minicard/e-minicard.h: Changed
|
||||
this to use ECardSimple.
|
||||
|
||||
2000-05-06 Chris Toshok <toshok@helixcode.com>
|
||||
|
||||
* gui/component/.cvsignore: ignore evolution-addressbook.pure
|
||||
|
||||
* gui/component/Makefile.am: add support for generating
|
||||
|
||||
@ -48,6 +48,67 @@ enum {
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
typedef enum _ECardSimpleInternalType ECardSimpleInternalType;
|
||||
typedef struct _ECardSimpleFieldData ECardSimpleFieldData;
|
||||
|
||||
enum _ECardSimpleInternalType {
|
||||
E_CARD_SIMPLE_INTERNAL_TYPE_STRING,
|
||||
E_CARD_SIMPLE_INTERNAL_TYPE_DATE,
|
||||
E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS,
|
||||
E_CARD_SIMPLE_INTERNAL_TYPE_PHONE,
|
||||
E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL,
|
||||
};
|
||||
|
||||
struct _ECardSimpleFieldData {
|
||||
ECardSimpleField field;
|
||||
char *ecard_field;
|
||||
char *name;
|
||||
char *short_name;
|
||||
int list_type_index;
|
||||
ECardSimpleInternalType type;
|
||||
};
|
||||
|
||||
/* This order must match the order in the .h. */
|
||||
|
||||
static ECardSimpleFieldData field_data[] =
|
||||
{
|
||||
{ E_CARD_SIMPLE_FIELD_FILE_AS, "file_as", "File As", "", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_FULL_NAME, "full_name", "Name", "Name", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_BIRTH_DATE, "birth_date", "Birth Date", "", 0, E_CARD_SIMPLE_INTERNAL_TYPE_DATE },
|
||||
{ E_CARD_SIMPLE_FIELD_URL, "url", "Web Site", "Url", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_ORG, "org", "Organization", "Org", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_ORG_UNIT, "org_unit", "Department", "Dep", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_OFFICE, "office", "Office", "Off", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_TITLE, "title", "Title", "Title", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_ROLE, "role", "Profession", "Prof", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_MANAGER, "manager", "Manager", "Man", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_ASSISTANT, "assistant", "Assistant", "Ass", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_NICKNAME, "nickname", "Nickname", "Nick", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_SPOUSE, "spouse", "Spouse", "Spouse", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_ANNIVERSARY, "anniversary", "Anniversary", "Anniv", 0, E_CARD_SIMPLE_INTERNAL_TYPE_DATE },
|
||||
{ E_CARD_SIMPLE_FIELD_FBURL, "fburl", "Free-busy URL", "FBUrl", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_NOTE, "note", "Note", "Note", 0, E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_BUSINESS, "", "Business", "Bus", E_CARD_SIMPLE_PHONE_ID_BUSINESS, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_BUSINESS_2, "", "Business 2", "Bus 2", E_CARD_SIMPLE_PHONE_ID_BUSINESS_2, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_BUSINESS_FAX, "", "Business Fax", "Bus Fax", E_CARD_SIMPLE_PHONE_ID_BUSINESS_FAX, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_CAR, "", "Car", "Car", E_CARD_SIMPLE_PHONE_ID_CAR, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_HOME, "", "Home", "Home", E_CARD_SIMPLE_PHONE_ID_HOME, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_HOME_2, "", "Home 2", "Home 2", E_CARD_SIMPLE_PHONE_ID_HOME_2, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_HOME_FAX, "", "Home Fax", "Home Fax", E_CARD_SIMPLE_PHONE_ID_HOME_FAX, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_ISDN, "", "ISDN", "ISDN", E_CARD_SIMPLE_PHONE_ID_ISDN, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_MOBILE, "", "Mobile", "Mobile", E_CARD_SIMPLE_PHONE_ID_MOBILE, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_OTHER, "", "Other", "Other", E_CARD_SIMPLE_PHONE_ID_OTHER, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_PAGER, "", "Pager", "Pager", E_CARD_SIMPLE_PHONE_ID_PAGER, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_PHONE_PRIMARY, "", "Primary", "Prim", E_CARD_SIMPLE_PHONE_ID_PRIMARY, E_CARD_SIMPLE_INTERNAL_TYPE_PHONE },
|
||||
{ E_CARD_SIMPLE_FIELD_ADDRESS_HOME, "", "Home", "Home", E_CARD_SIMPLE_ADDRESS_ID_BUSINESS, E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS },
|
||||
{ E_CARD_SIMPLE_FIELD_ADDRESS_BUSINESS, "", "Business", "Bus", E_CARD_SIMPLE_ADDRESS_ID_HOME, E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS },
|
||||
{ E_CARD_SIMPLE_FIELD_ADDRESS_OTHER, "", "Other", "Other", E_CARD_SIMPLE_ADDRESS_ID_OTHER, E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS },
|
||||
{ E_CARD_SIMPLE_FIELD_EMAIL, "", "Email", "Email", E_CARD_SIMPLE_EMAIL_ID_EMAIL, E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL },
|
||||
{ E_CARD_SIMPLE_FIELD_EMAIL_2, "", "Email 2", "Email 2", E_CARD_SIMPLE_EMAIL_ID_EMAIL_2, E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL },
|
||||
{ E_CARD_SIMPLE_FIELD_EMAIL_3, "", "Email 3", "Email 3", E_CARD_SIMPLE_EMAIL_ID_EMAIL_3, E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL },
|
||||
};
|
||||
|
||||
static void e_card_simple_init (ECardSimple *simple);
|
||||
static void e_card_simple_class_init (ECardSimpleClass *klass);
|
||||
|
||||
@ -79,12 +140,62 @@ ECardPhoneFlags phone_correspondences[] = {
|
||||
0xFF, /* E_CARD_SIMPLE_PHONE_ID_TTYTTD, */
|
||||
};
|
||||
|
||||
char *phone_names[] = {
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_ASSISTANT, */
|
||||
"Business",
|
||||
"Business 2",
|
||||
"Business Fax",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_CALLBACK, */
|
||||
"Car",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_COMPANY, */
|
||||
"Home",
|
||||
"Home 2",
|
||||
"Home Fax",
|
||||
"ISDN",
|
||||
"Mobile",
|
||||
"Other",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_OTHER_FAX, */
|
||||
"Pager",
|
||||
"Primary",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_RADIO, */
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_TELEX, */
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_TTYTTD, */
|
||||
};
|
||||
|
||||
char *phone_short_names[] = {
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_ASSISTANT, */
|
||||
"Bus",
|
||||
"Bus 2",
|
||||
"Bus Fax",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_CALLBACK, */
|
||||
"Car",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_COMPANY, */
|
||||
"Home",
|
||||
"Home 2",
|
||||
"Home Fax",
|
||||
"ISDN",
|
||||
"Mob",
|
||||
"Other",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_OTHER_FAX, */
|
||||
"Pag",
|
||||
"Prim",
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_RADIO, */
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_TELEX, */
|
||||
NULL, /* E_CARD_SIMPLE_PHONE_ID_TTYTTD, */
|
||||
};
|
||||
|
||||
ECardAddressFlags addr_correspondences[] = {
|
||||
E_CARD_ADDR_WORK, /* E_CARD_SIMPLE_ADDRESS_ID_BUSINESS, */
|
||||
E_CARD_ADDR_HOME, /* E_CARD_SIMPLE_ADDRESS_ID_HOME, */
|
||||
E_CARD_ADDR_POSTAL, /* E_CARD_SIMPLE_ADDRESS_ID_OTHER, */
|
||||
};
|
||||
|
||||
char *address_names[] = {
|
||||
"Business",
|
||||
"Home",
|
||||
"Other",
|
||||
};
|
||||
|
||||
/**
|
||||
* e_card_simple_get_type:
|
||||
* @void:
|
||||
@ -256,6 +367,12 @@ e_card_simple_class_init (ECardSimpleClass *klass)
|
||||
static void
|
||||
e_card_simple_destroy (GtkObject *object)
|
||||
{
|
||||
ECardSimple *simple;
|
||||
|
||||
simple = E_CARD_SIMPLE (object);
|
||||
|
||||
if (simple->card)
|
||||
gtk_object_unref(GTK_OBJECT(simple->card));
|
||||
}
|
||||
|
||||
|
||||
@ -667,27 +784,27 @@ e_card_simple_sync_card(ECardSimple *simple)
|
||||
}
|
||||
}
|
||||
|
||||
ECardPhone *e_card_simple_get_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id)
|
||||
const ECardPhone *e_card_simple_get_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id)
|
||||
{
|
||||
return simple->phone[id];
|
||||
}
|
||||
|
||||
char *e_card_simple_get_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id)
|
||||
const char *e_card_simple_get_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id)
|
||||
{
|
||||
return simple->email[id];
|
||||
}
|
||||
|
||||
ECardAddrLabel *e_card_simple_get_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id)
|
||||
const ECardAddrLabel *e_card_simple_get_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id)
|
||||
{
|
||||
return simple->address[id];
|
||||
}
|
||||
|
||||
void e_card_simple_set_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id,
|
||||
ECardPhone *phone)
|
||||
const ECardPhone *phone)
|
||||
{
|
||||
if (simple->phone[id])
|
||||
e_card_phone_free(simple->phone[id]);
|
||||
@ -696,7 +813,7 @@ void e_card_simple_set_phone (ECardSimple *simple,
|
||||
|
||||
void e_card_simple_set_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id,
|
||||
char *email)
|
||||
const char *email)
|
||||
{
|
||||
if (simple->email[id])
|
||||
g_free(simple->email[id]);
|
||||
@ -705,9 +822,120 @@ void e_card_simple_set_email (ECardSimple *simple,
|
||||
|
||||
void e_card_simple_set_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id,
|
||||
ECardAddrLabel *address)
|
||||
const ECardAddrLabel *address)
|
||||
{
|
||||
if (simple->address[id])
|
||||
e_card_address_label_free(simple->address[id]);
|
||||
simple->address[id] = e_card_address_label_copy(address);
|
||||
}
|
||||
|
||||
char *e_card_simple_get (ECardSimple *simple,
|
||||
ECardSimpleField field)
|
||||
{
|
||||
ECardSimpleInternalType type = field_data[field].type;
|
||||
const ECardAddrLabel *addr;
|
||||
const ECardPhone *phone;
|
||||
const char *string;
|
||||
ECardDate *date;
|
||||
switch(type) {
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_STRING:
|
||||
gtk_object_get(GTK_OBJECT(simple->card),
|
||||
field_data[field].ecard_field, &string,
|
||||
NULL);
|
||||
return g_strdup(string);
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_DATE:
|
||||
gtk_object_get(GTK_OBJECT(simple->card),
|
||||
field_data[field].ecard_field, &date,
|
||||
NULL);
|
||||
return NULL; /* FIXME!!!! */
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS:
|
||||
addr = e_card_simple_get_address(simple,
|
||||
field_data[field].list_type_index);
|
||||
if (addr)
|
||||
return g_strdup(addr->data);
|
||||
else
|
||||
return NULL;
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_PHONE:
|
||||
phone = e_card_simple_get_phone(simple,
|
||||
field_data[field].list_type_index);
|
||||
if (phone)
|
||||
return g_strdup(phone->number);
|
||||
else
|
||||
return NULL;
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL:
|
||||
string = e_card_simple_get_email(simple,
|
||||
field_data[field].list_type_index);
|
||||
return g_strdup(string);
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void e_card_simple_set (ECardSimple *simple,
|
||||
ECardSimpleField field,
|
||||
const char *data)
|
||||
{
|
||||
ECardSimpleInternalType type = field_data[field].type;
|
||||
ECardAddrLabel *address;
|
||||
ECardPhone *phone;
|
||||
switch(type) {
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_STRING:
|
||||
gtk_object_set(GTK_OBJECT(simple->card),
|
||||
field_data[field].ecard_field, data,
|
||||
NULL);
|
||||
break;
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_DATE:
|
||||
break; /* FIXME!!!! */
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_ADDRESS:
|
||||
address = e_card_address_label_new();
|
||||
address->data = (char *) data;
|
||||
e_card_simple_set_address(simple,
|
||||
field_data[field].list_type_index,
|
||||
address);
|
||||
address->data = NULL;
|
||||
e_card_address_label_free(address);
|
||||
break;
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_PHONE:
|
||||
phone = e_card_phone_new();
|
||||
phone->number = (char *) data;
|
||||
e_card_simple_set_phone(simple,
|
||||
field_data[field].list_type_index,
|
||||
phone);
|
||||
phone->number = NULL;
|
||||
e_card_phone_free(phone);
|
||||
break;
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL:
|
||||
e_card_simple_set_email(simple,
|
||||
field_data[field].list_type_index,
|
||||
data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ECardSimpleType e_card_simple_type (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_ADDRESS:
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_PHONE:
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_EMAIL:
|
||||
default:
|
||||
return E_CARD_SIMPLE_TYPE_STRING;
|
||||
case E_CARD_SIMPLE_INTERNAL_TYPE_DATE:
|
||||
return E_CARD_SIMPLE_TYPE_DATE;
|
||||
}
|
||||
}
|
||||
|
||||
const char *e_card_simple_get_name (ECardSimple *simple,
|
||||
ECardSimpleField field)
|
||||
{
|
||||
return field_data[field].name;
|
||||
}
|
||||
|
||||
const char *e_card_simple_get_short_name (ECardSimple *simple,
|
||||
ECardSimpleField field)
|
||||
{
|
||||
return field_data[field].short_name;
|
||||
}
|
||||
|
||||
@ -28,6 +28,8 @@
|
||||
typedef enum _ECardSimplePhoneId ECardSimplePhoneId;
|
||||
typedef enum _ECardSimpleEmailId ECardSimpleEmailId;
|
||||
typedef enum _ECardSimpleAddressId ECardSimpleAddressId;
|
||||
typedef enum _ECardSimpleType ECardSimpleType;
|
||||
typedef enum _ECardSimpleField ECardSimpleField;
|
||||
|
||||
enum _ECardSimplePhoneId {
|
||||
E_CARD_SIMPLE_PHONE_ID_ASSISTANT,
|
||||
@ -68,6 +70,49 @@ enum _ECardSimpleAddressId {
|
||||
E_CARD_SIMPLE_ADDRESS_ID_LAST
|
||||
};
|
||||
|
||||
enum _ECardSimpleType {
|
||||
E_CARD_SIMPLE_TYPE_STRING,
|
||||
E_CARD_SIMPLE_TYPE_DATE,
|
||||
};
|
||||
|
||||
enum _ECardSimpleField {
|
||||
E_CARD_SIMPLE_FIELD_FILE_AS,
|
||||
E_CARD_SIMPLE_FIELD_FULL_NAME,
|
||||
E_CARD_SIMPLE_FIELD_BIRTH_DATE,
|
||||
E_CARD_SIMPLE_FIELD_URL,
|
||||
E_CARD_SIMPLE_FIELD_ORG,
|
||||
E_CARD_SIMPLE_FIELD_ORG_UNIT,
|
||||
E_CARD_SIMPLE_FIELD_OFFICE,
|
||||
E_CARD_SIMPLE_FIELD_TITLE,
|
||||
E_CARD_SIMPLE_FIELD_ROLE,
|
||||
E_CARD_SIMPLE_FIELD_MANAGER,
|
||||
E_CARD_SIMPLE_FIELD_ASSISTANT,
|
||||
E_CARD_SIMPLE_FIELD_NICKNAME,
|
||||
E_CARD_SIMPLE_FIELD_SPOUSE,
|
||||
E_CARD_SIMPLE_FIELD_ANNIVERSARY,
|
||||
E_CARD_SIMPLE_FIELD_FBURL,
|
||||
E_CARD_SIMPLE_FIELD_NOTE,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_BUSINESS,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_BUSINESS_2,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_BUSINESS_FAX,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_CAR,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_HOME,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_HOME_2,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_HOME_FAX,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_ISDN,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_MOBILE,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_OTHER,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_PAGER,
|
||||
E_CARD_SIMPLE_FIELD_PHONE_PRIMARY,
|
||||
E_CARD_SIMPLE_FIELD_ADDRESS_HOME,
|
||||
E_CARD_SIMPLE_FIELD_ADDRESS_BUSINESS,
|
||||
E_CARD_SIMPLE_FIELD_ADDRESS_OTHER,
|
||||
E_CARD_SIMPLE_FIELD_EMAIL,
|
||||
E_CARD_SIMPLE_FIELD_EMAIL_2,
|
||||
E_CARD_SIMPLE_FIELD_EMAIL_3,
|
||||
E_CARD_SIMPLE_FIELD_LAST
|
||||
};
|
||||
|
||||
typedef struct _ECardSimple ECardSimple;
|
||||
typedef struct _ECardSimpleClass ECardSimpleClass;
|
||||
|
||||
@ -84,32 +129,51 @@ struct _ECardSimpleClass {
|
||||
GtkObjectClass parent_class;
|
||||
};
|
||||
|
||||
ECardSimple *e_card_simple_new (ECard *card);
|
||||
char *e_card_simple_get_id (ECardSimple *simple);
|
||||
void e_card_simple_set_id (ECardSimple *simple, const gchar *character);
|
||||
char *e_card_simple_get_vcard (ECardSimple *simple);
|
||||
|
||||
ECardSimple *e_card_simple_duplicate (ECardSimple *simple);
|
||||
ECardSimple *e_card_simple_new (ECard *card);
|
||||
char *e_card_simple_get_id (ECardSimple *simple);
|
||||
void e_card_simple_set_id (ECardSimple *simple,
|
||||
const gchar *character);
|
||||
char *e_card_simple_get_vcard (ECardSimple *simple);
|
||||
|
||||
ECardSimple *e_card_simple_duplicate (ECardSimple *simple);
|
||||
|
||||
char *e_card_simple_get (ECardSimple *simple,
|
||||
ECardSimpleField field);
|
||||
void e_card_simple_set (ECardSimple *simple,
|
||||
ECardSimpleField field,
|
||||
const char *data);
|
||||
|
||||
ECardSimpleType e_card_simple_type (ECardSimple *simple,
|
||||
ECardSimpleField field);
|
||||
const char *e_card_simple_get_name (ECardSimple *simple,
|
||||
ECardSimpleField field);
|
||||
const char *e_card_simple_get_short_name (ECardSimple *simple,
|
||||
ECardSimpleField field);
|
||||
|
||||
ECardPhone *e_card_simple_get_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id);
|
||||
char *e_card_simple_get_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id);
|
||||
ECardAddrLabel *e_card_simple_get_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id);
|
||||
void e_card_simple_set_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id,
|
||||
ECardPhone *phone);
|
||||
void e_card_simple_set_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id,
|
||||
char *email);
|
||||
void e_card_simple_set_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id,
|
||||
ECardAddrLabel *address);
|
||||
|
||||
void e_card_simple_sync_card (ECardSimple *simple);
|
||||
/* Use these only if building lists of specific types. It should be
|
||||
* easier to use the above if you consider a phone field to be the
|
||||
* same as any other field.
|
||||
*/
|
||||
const ECardPhone *e_card_simple_get_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id);
|
||||
const char *e_card_simple_get_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id);
|
||||
const ECardAddrLabel *e_card_simple_get_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id);
|
||||
void e_card_simple_set_phone (ECardSimple *simple,
|
||||
ECardSimplePhoneId id,
|
||||
const ECardPhone *phone);
|
||||
void e_card_simple_set_email (ECardSimple *simple,
|
||||
ECardSimpleEmailId id,
|
||||
const char *email);
|
||||
void e_card_simple_set_address (ECardSimple *simple,
|
||||
ECardSimpleAddressId id,
|
||||
const ECardAddrLabel *address);
|
||||
|
||||
void e_card_simple_sync_card (ECardSimple *simple);
|
||||
|
||||
/* Standard Gtk function */
|
||||
GtkType e_card_simple_get_type (void);
|
||||
GtkType e_card_simple_get_type (void);
|
||||
|
||||
#endif /* ! __E_CARD_SIMPLE_H__ */
|
||||
|
||||
@ -188,16 +188,11 @@ phone_entry_changed (GtkWidget *widget, EContactEditor *editor)
|
||||
} else
|
||||
return;
|
||||
string = gtk_entry_get_text(entry);
|
||||
phone = e_card_simple_get_phone(editor->simple, editor->phone_choice[which - 1]);
|
||||
if (phone) {
|
||||
g_free(phone->number);
|
||||
} else {
|
||||
phone = e_card_phone_new();
|
||||
e_card_simple_set_phone(editor->simple, editor->phone_choice[which - 1], phone);
|
||||
e_card_phone_free(phone);
|
||||
phone = e_card_simple_get_phone(editor->simple, editor->phone_choice[which - 1]);
|
||||
}
|
||||
phone->number = g_strdup(string);
|
||||
phone = e_card_phone_new();
|
||||
phone->number = string;
|
||||
e_card_simple_set_phone(editor->simple, editor->phone_choice[which - 1], phone);
|
||||
phone->number = NULL;
|
||||
e_card_phone_free(phone);
|
||||
set_fields(editor);
|
||||
}
|
||||
|
||||
@ -215,24 +210,16 @@ email_entry_changed (GtkWidget *widget, EContactEditor *editor)
|
||||
static void
|
||||
address_text_changed (GtkWidget *widget, EContactEditor *editor)
|
||||
{
|
||||
gchar *string;
|
||||
GtkEditable *editable = GTK_EDITABLE(widget);
|
||||
ECardAddrLabel *address;
|
||||
|
||||
if (editor->address_choice == -1)
|
||||
return;
|
||||
address = e_card_simple_get_address(editor->simple, editor->address_choice);
|
||||
if (address) {
|
||||
g_free(address->data);
|
||||
} else {
|
||||
address = e_card_address_label_new();
|
||||
e_card_simple_set_address(editor->simple, editor->address_choice, address);
|
||||
e_card_address_label_free(address);
|
||||
address = e_card_simple_get_address(editor->simple, editor->address_choice);
|
||||
}
|
||||
|
||||
string = gtk_editable_get_chars(editable, 0, -1);
|
||||
address->data = string;
|
||||
address = e_card_address_label_new();
|
||||
address->data = gtk_editable_get_chars(editable, 0, -1);
|
||||
e_card_simple_set_address(editor->simple, editor->address_choice, address);
|
||||
e_card_address_label_free(address);
|
||||
}
|
||||
|
||||
/* This function tells you whether name_to_style will make sense. */
|
||||
@ -944,7 +931,7 @@ set_address_field(EContactEditor *editor, int result)
|
||||
{
|
||||
GtkEditable *editable;
|
||||
int position;
|
||||
ECardAddrLabel *address;
|
||||
const ECardAddrLabel *address;
|
||||
if (result == -1)
|
||||
result = editor->address_choice;
|
||||
editor->address_choice = -1;
|
||||
|
||||
@ -442,7 +442,6 @@ set_prop (BonoboPropertyBag *bag,
|
||||
EBook *book;
|
||||
char *uri_file;
|
||||
char *uri_data;
|
||||
char *uri;
|
||||
|
||||
switch (arg_id) {
|
||||
|
||||
@ -461,12 +460,11 @@ set_prop (BonoboPropertyBag *bag,
|
||||
uri_file = g_concat_dir_and_file(view->uri + 7, "uri");
|
||||
|
||||
uri_data = e_read_file(uri_file);
|
||||
if (uri_data)
|
||||
uri = uri_data;
|
||||
else
|
||||
uri = view->uri;
|
||||
|
||||
if (!uri_data)
|
||||
uri_data = g_concat_dir_and_file(view->uri + 7, "addressbook.db");
|
||||
|
||||
if (! e_book_load_uri (book, uri, book_open_cb, view))
|
||||
if (! e_book_load_uri (book, uri_data, book_open_cb, view))
|
||||
{
|
||||
printf ("error calling load_uri!\n");
|
||||
}
|
||||
|
||||
@ -188,16 +188,11 @@ phone_entry_changed (GtkWidget *widget, EContactEditor *editor)
|
||||
} else
|
||||
return;
|
||||
string = gtk_entry_get_text(entry);
|
||||
phone = e_card_simple_get_phone(editor->simple, editor->phone_choice[which - 1]);
|
||||
if (phone) {
|
||||
g_free(phone->number);
|
||||
} else {
|
||||
phone = e_card_phone_new();
|
||||
e_card_simple_set_phone(editor->simple, editor->phone_choice[which - 1], phone);
|
||||
e_card_phone_free(phone);
|
||||
phone = e_card_simple_get_phone(editor->simple, editor->phone_choice[which - 1]);
|
||||
}
|
||||
phone->number = g_strdup(string);
|
||||
phone = e_card_phone_new();
|
||||
phone->number = string;
|
||||
e_card_simple_set_phone(editor->simple, editor->phone_choice[which - 1], phone);
|
||||
phone->number = NULL;
|
||||
e_card_phone_free(phone);
|
||||
set_fields(editor);
|
||||
}
|
||||
|
||||
@ -215,24 +210,16 @@ email_entry_changed (GtkWidget *widget, EContactEditor *editor)
|
||||
static void
|
||||
address_text_changed (GtkWidget *widget, EContactEditor *editor)
|
||||
{
|
||||
gchar *string;
|
||||
GtkEditable *editable = GTK_EDITABLE(widget);
|
||||
ECardAddrLabel *address;
|
||||
|
||||
if (editor->address_choice == -1)
|
||||
return;
|
||||
address = e_card_simple_get_address(editor->simple, editor->address_choice);
|
||||
if (address) {
|
||||
g_free(address->data);
|
||||
} else {
|
||||
address = e_card_address_label_new();
|
||||
e_card_simple_set_address(editor->simple, editor->address_choice, address);
|
||||
e_card_address_label_free(address);
|
||||
address = e_card_simple_get_address(editor->simple, editor->address_choice);
|
||||
}
|
||||
|
||||
string = gtk_editable_get_chars(editable, 0, -1);
|
||||
address->data = string;
|
||||
address = e_card_address_label_new();
|
||||
address->data = gtk_editable_get_chars(editable, 0, -1);
|
||||
e_card_simple_set_address(editor->simple, editor->address_choice, address);
|
||||
e_card_address_label_free(address);
|
||||
}
|
||||
|
||||
/* This function tells you whether name_to_style will make sense. */
|
||||
@ -944,7 +931,7 @@ set_address_field(EContactEditor *editor, int result)
|
||||
{
|
||||
GtkEditable *editable;
|
||||
int position;
|
||||
ECardAddrLabel *address;
|
||||
const ECardAddrLabel *address;
|
||||
if (result == -1)
|
||||
result = editor->address_choice;
|
||||
editor->address_choice = -1;
|
||||
|
||||
@ -122,6 +122,7 @@ e_minicard_init (EMinicard *minicard)
|
||||
minicard->has_focus = FALSE;
|
||||
|
||||
minicard->card = NULL;
|
||||
minicard->simple = e_card_simple_new(NULL);
|
||||
|
||||
e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(minicard), e_minicard_reflow);
|
||||
}
|
||||
@ -166,6 +167,9 @@ e_minicard_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
|
||||
e_minicard->card = E_CARD(GTK_VALUE_OBJECT (*arg));
|
||||
if (e_minicard->card)
|
||||
gtk_object_ref (GTK_OBJECT(e_minicard->card));
|
||||
gtk_object_set(GTK_OBJECT(e_minicard->simple),
|
||||
"card", e_minicard->card,
|
||||
NULL);
|
||||
remodel(e_minicard);
|
||||
e_canvas_item_request_reflow(item);
|
||||
break;
|
||||
@ -190,6 +194,7 @@ e_minicard_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
|
||||
GTK_VALUE_ENUM (*arg) = e_minicard->has_focus ? E_FOCUS_CURRENT : E_FOCUS_NONE;
|
||||
break;
|
||||
case ARG_CARD:
|
||||
e_card_simple_sync_card(e_minicard->simple);
|
||||
GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(e_minicard->card);
|
||||
break;
|
||||
default:
|
||||
@ -210,6 +215,8 @@ e_minicard_destroy (GtkObject *object)
|
||||
|
||||
if (e_minicard->card)
|
||||
gtk_object_unref (GTK_OBJECT(e_minicard->card));
|
||||
if (e_minicard->simple)
|
||||
gtk_object_unref (GTK_OBJECT(e_minicard->simple));
|
||||
|
||||
if (GTK_OBJECT_CLASS (parent_class)->destroy)
|
||||
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
||||
@ -427,117 +434,79 @@ e_minicard_resize_children( EMinicard *e_minicard )
|
||||
}
|
||||
|
||||
static void
|
||||
add_field (EMinicard *e_minicard, char *fieldname, char* field)
|
||||
field_changed (EText *text, EMinicard *e_minicard)
|
||||
{
|
||||
ECardSimpleType type;
|
||||
char *string;
|
||||
|
||||
type = GPOINTER_TO_INT
|
||||
(gtk_object_get_data(GTK_OBJECT(text),
|
||||
"EMinicard:field"));
|
||||
gtk_object_get(GTK_OBJECT(text),
|
||||
"text", &string,
|
||||
NULL);
|
||||
e_card_simple_set(e_minicard->simple,
|
||||
type,
|
||||
string);
|
||||
g_free(string);
|
||||
}
|
||||
|
||||
static void
|
||||
add_field (EMinicard *e_minicard, ECardSimpleField field)
|
||||
{
|
||||
GnomeCanvasItem *new_item;
|
||||
GnomeCanvasGroup *group;
|
||||
ECardSimpleType type;
|
||||
char *name;
|
||||
char *string;
|
||||
|
||||
group = GNOME_CANVAS_GROUP( e_minicard );
|
||||
|
||||
type = e_card_simple_type(e_minicard->simple, field);
|
||||
name = g_strdup_printf("%s:", e_card_simple_get_name(e_minicard->simple, field));
|
||||
string = e_card_simple_get(e_minicard->simple, field);
|
||||
|
||||
new_item = e_minicard_label_new(group);
|
||||
gnome_canvas_item_set( new_item,
|
||||
"width", e_minicard->width - 4.0,
|
||||
"fieldname", fieldname,
|
||||
"field", field,
|
||||
"fieldname", name,
|
||||
"field", string,
|
||||
NULL );
|
||||
gtk_signal_connect(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field),
|
||||
"changed", GTK_SIGNAL_FUNC(field_changed), e_minicard);
|
||||
gtk_object_set_data(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field),
|
||||
"EMinicard:field",
|
||||
GINT_TO_POINTER(field));
|
||||
e_minicard->fields = g_list_append( e_minicard->fields, new_item);
|
||||
e_canvas_item_move_absolute(new_item, 2, e_minicard->height);
|
||||
g_free(name);
|
||||
g_free(string);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
remodel( EMinicard *e_minicard )
|
||||
{
|
||||
if (e_minicard->card) {
|
||||
char *fname;
|
||||
int count = 0;
|
||||
if (e_minicard->simple) {
|
||||
ECardSimpleField field;
|
||||
char *file_as;
|
||||
char *url;
|
||||
char *org;
|
||||
char *title;
|
||||
char *role;
|
||||
ECardList *address_list;
|
||||
ECardList *phone_list;
|
||||
ECardList *email_list;
|
||||
file_as = e_card_simple_get(e_minicard->simple, E_CARD_SIMPLE_FIELD_FILE_AS);
|
||||
gnome_canvas_item_set( e_minicard->header_text,
|
||||
"text", file_as ? file_as : "",
|
||||
NULL );
|
||||
g_free(file_as);
|
||||
|
||||
ECardIterator *iterator;
|
||||
|
||||
GList *list;
|
||||
|
||||
for ( list = e_minicard->fields; list; list = g_list_next( list ) ) {
|
||||
gtk_object_destroy( GTK_OBJECT( list->data ) );
|
||||
}
|
||||
g_list_foreach(e_minicard->fields, (GFunc) gtk_object_destroy, NULL);
|
||||
g_list_free(e_minicard->fields);
|
||||
e_minicard->fields = NULL;
|
||||
|
||||
gtk_object_get(GTK_OBJECT(e_minicard->card),
|
||||
"full_name", &fname,
|
||||
"file_as", &file_as,
|
||||
"address", &address_list,
|
||||
"phone", &phone_list,
|
||||
"email", &email_list,
|
||||
"url", &url,
|
||||
"org", &org,
|
||||
"title", &title,
|
||||
"role", &role,
|
||||
NULL);
|
||||
|
||||
if (e_minicard->header_text) {
|
||||
if (file_as)
|
||||
gnome_canvas_item_set(e_minicard->header_text,
|
||||
"text", file_as,
|
||||
NULL);
|
||||
else
|
||||
gnome_canvas_item_set(e_minicard->header_text,
|
||||
"text", "",
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (fname)
|
||||
add_field(e_minicard, "Name:", fname);
|
||||
|
||||
if (org)
|
||||
add_field(e_minicard, "Company:", org);
|
||||
|
||||
if (title)
|
||||
add_field(e_minicard, "Title:", title);
|
||||
|
||||
if (role)
|
||||
add_field(e_minicard, "Profession:", role);
|
||||
|
||||
if (address_list) {
|
||||
for (iterator = e_card_list_get_iterator(address_list); e_card_iterator_is_valid(iterator); e_card_iterator_next(iterator)) {
|
||||
const ECardDeliveryAddress *address = e_card_iterator_get(iterator);
|
||||
if (address->flags & E_CARD_ADDR_WORK) {
|
||||
add_field(e_minicard, "Work Address:", address->city);
|
||||
} else if (address->flags & E_CARD_ADDR_HOME) {
|
||||
add_field(e_minicard, "Home Address:", address->city);
|
||||
} else {
|
||||
add_field(e_minicard, "Address:", address->city);
|
||||
}
|
||||
for(field = E_CARD_SIMPLE_FIELD_FULL_NAME; field != E_CARD_SIMPLE_FIELD_LAST && count < 5; field++) {
|
||||
if (e_card_simple_get(e_minicard->simple, field)) {
|
||||
add_field(e_minicard, field);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (phone_list) {
|
||||
for (iterator = e_card_list_get_iterator(phone_list); e_card_iterator_is_valid(iterator); e_card_iterator_next(iterator)) {
|
||||
const ECardPhone *phone = e_card_iterator_get(iterator);
|
||||
if (phone->flags & E_CARD_PHONE_WORK) {
|
||||
add_field(e_minicard, "Work Phone:", phone->number);
|
||||
} else if (phone->flags & E_CARD_PHONE_HOME) {
|
||||
add_field(e_minicard, "Home Phone:", phone->number);
|
||||
} else if (phone->flags & E_CARD_PHONE_CELL) {
|
||||
add_field(e_minicard, "Mobile Phone:", phone->number);
|
||||
} else {
|
||||
add_field(e_minicard, "Phone:", phone->number);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (email_list) {
|
||||
for (iterator = e_card_list_get_iterator(email_list); e_card_iterator_is_valid(iterator); e_card_iterator_next(iterator)) {
|
||||
add_field(e_minicard, "Email:", (char *) e_card_iterator_get(iterator));
|
||||
}
|
||||
}
|
||||
|
||||
if (url)
|
||||
add_field(e_minicard, "Web page:", url);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
|
||||
#include <gnome.h>
|
||||
#include <ebook/e-card.h>
|
||||
#include <ebook/e-card-simple.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -61,14 +62,14 @@ struct _EMinicard
|
||||
GnomeCanvasGroup parent;
|
||||
|
||||
/* item specific fields */
|
||||
/* ECard *card; */
|
||||
ECard *card;
|
||||
ECardSimple *simple;
|
||||
|
||||
GnomeCanvasItem *rect;
|
||||
GnomeCanvasItem *header_rect;
|
||||
GnomeCanvasItem *header_text;
|
||||
GList *fields; /* Of type GnomeCanvasItem. */
|
||||
|
||||
ECard *card;
|
||||
GList *fields; /* Of type GnomeCanvasItem. */
|
||||
guint needs_remodeling : 1;
|
||||
|
||||
gboolean has_focus;
|
||||
|
||||
@ -122,6 +122,7 @@ e_minicard_init (EMinicard *minicard)
|
||||
minicard->has_focus = FALSE;
|
||||
|
||||
minicard->card = NULL;
|
||||
minicard->simple = e_card_simple_new(NULL);
|
||||
|
||||
e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(minicard), e_minicard_reflow);
|
||||
}
|
||||
@ -166,6 +167,9 @@ e_minicard_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
|
||||
e_minicard->card = E_CARD(GTK_VALUE_OBJECT (*arg));
|
||||
if (e_minicard->card)
|
||||
gtk_object_ref (GTK_OBJECT(e_minicard->card));
|
||||
gtk_object_set(GTK_OBJECT(e_minicard->simple),
|
||||
"card", e_minicard->card,
|
||||
NULL);
|
||||
remodel(e_minicard);
|
||||
e_canvas_item_request_reflow(item);
|
||||
break;
|
||||
@ -190,6 +194,7 @@ e_minicard_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
|
||||
GTK_VALUE_ENUM (*arg) = e_minicard->has_focus ? E_FOCUS_CURRENT : E_FOCUS_NONE;
|
||||
break;
|
||||
case ARG_CARD:
|
||||
e_card_simple_sync_card(e_minicard->simple);
|
||||
GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(e_minicard->card);
|
||||
break;
|
||||
default:
|
||||
@ -210,6 +215,8 @@ e_minicard_destroy (GtkObject *object)
|
||||
|
||||
if (e_minicard->card)
|
||||
gtk_object_unref (GTK_OBJECT(e_minicard->card));
|
||||
if (e_minicard->simple)
|
||||
gtk_object_unref (GTK_OBJECT(e_minicard->simple));
|
||||
|
||||
if (GTK_OBJECT_CLASS (parent_class)->destroy)
|
||||
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
||||
@ -427,117 +434,79 @@ e_minicard_resize_children( EMinicard *e_minicard )
|
||||
}
|
||||
|
||||
static void
|
||||
add_field (EMinicard *e_minicard, char *fieldname, char* field)
|
||||
field_changed (EText *text, EMinicard *e_minicard)
|
||||
{
|
||||
ECardSimpleType type;
|
||||
char *string;
|
||||
|
||||
type = GPOINTER_TO_INT
|
||||
(gtk_object_get_data(GTK_OBJECT(text),
|
||||
"EMinicard:field"));
|
||||
gtk_object_get(GTK_OBJECT(text),
|
||||
"text", &string,
|
||||
NULL);
|
||||
e_card_simple_set(e_minicard->simple,
|
||||
type,
|
||||
string);
|
||||
g_free(string);
|
||||
}
|
||||
|
||||
static void
|
||||
add_field (EMinicard *e_minicard, ECardSimpleField field)
|
||||
{
|
||||
GnomeCanvasItem *new_item;
|
||||
GnomeCanvasGroup *group;
|
||||
ECardSimpleType type;
|
||||
char *name;
|
||||
char *string;
|
||||
|
||||
group = GNOME_CANVAS_GROUP( e_minicard );
|
||||
|
||||
type = e_card_simple_type(e_minicard->simple, field);
|
||||
name = g_strdup_printf("%s:", e_card_simple_get_name(e_minicard->simple, field));
|
||||
string = e_card_simple_get(e_minicard->simple, field);
|
||||
|
||||
new_item = e_minicard_label_new(group);
|
||||
gnome_canvas_item_set( new_item,
|
||||
"width", e_minicard->width - 4.0,
|
||||
"fieldname", fieldname,
|
||||
"field", field,
|
||||
"fieldname", name,
|
||||
"field", string,
|
||||
NULL );
|
||||
gtk_signal_connect(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field),
|
||||
"changed", GTK_SIGNAL_FUNC(field_changed), e_minicard);
|
||||
gtk_object_set_data(GTK_OBJECT(E_MINICARD_LABEL(new_item)->field),
|
||||
"EMinicard:field",
|
||||
GINT_TO_POINTER(field));
|
||||
e_minicard->fields = g_list_append( e_minicard->fields, new_item);
|
||||
e_canvas_item_move_absolute(new_item, 2, e_minicard->height);
|
||||
g_free(name);
|
||||
g_free(string);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
remodel( EMinicard *e_minicard )
|
||||
{
|
||||
if (e_minicard->card) {
|
||||
char *fname;
|
||||
int count = 0;
|
||||
if (e_minicard->simple) {
|
||||
ECardSimpleField field;
|
||||
char *file_as;
|
||||
char *url;
|
||||
char *org;
|
||||
char *title;
|
||||
char *role;
|
||||
ECardList *address_list;
|
||||
ECardList *phone_list;
|
||||
ECardList *email_list;
|
||||
file_as = e_card_simple_get(e_minicard->simple, E_CARD_SIMPLE_FIELD_FILE_AS);
|
||||
gnome_canvas_item_set( e_minicard->header_text,
|
||||
"text", file_as ? file_as : "",
|
||||
NULL );
|
||||
g_free(file_as);
|
||||
|
||||
ECardIterator *iterator;
|
||||
|
||||
GList *list;
|
||||
|
||||
for ( list = e_minicard->fields; list; list = g_list_next( list ) ) {
|
||||
gtk_object_destroy( GTK_OBJECT( list->data ) );
|
||||
}
|
||||
g_list_foreach(e_minicard->fields, (GFunc) gtk_object_destroy, NULL);
|
||||
g_list_free(e_minicard->fields);
|
||||
e_minicard->fields = NULL;
|
||||
|
||||
gtk_object_get(GTK_OBJECT(e_minicard->card),
|
||||
"full_name", &fname,
|
||||
"file_as", &file_as,
|
||||
"address", &address_list,
|
||||
"phone", &phone_list,
|
||||
"email", &email_list,
|
||||
"url", &url,
|
||||
"org", &org,
|
||||
"title", &title,
|
||||
"role", &role,
|
||||
NULL);
|
||||
|
||||
if (e_minicard->header_text) {
|
||||
if (file_as)
|
||||
gnome_canvas_item_set(e_minicard->header_text,
|
||||
"text", file_as,
|
||||
NULL);
|
||||
else
|
||||
gnome_canvas_item_set(e_minicard->header_text,
|
||||
"text", "",
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (fname)
|
||||
add_field(e_minicard, "Name:", fname);
|
||||
|
||||
if (org)
|
||||
add_field(e_minicard, "Company:", org);
|
||||
|
||||
if (title)
|
||||
add_field(e_minicard, "Title:", title);
|
||||
|
||||
if (role)
|
||||
add_field(e_minicard, "Profession:", role);
|
||||
|
||||
if (address_list) {
|
||||
for (iterator = e_card_list_get_iterator(address_list); e_card_iterator_is_valid(iterator); e_card_iterator_next(iterator)) {
|
||||
const ECardDeliveryAddress *address = e_card_iterator_get(iterator);
|
||||
if (address->flags & E_CARD_ADDR_WORK) {
|
||||
add_field(e_minicard, "Work Address:", address->city);
|
||||
} else if (address->flags & E_CARD_ADDR_HOME) {
|
||||
add_field(e_minicard, "Home Address:", address->city);
|
||||
} else {
|
||||
add_field(e_minicard, "Address:", address->city);
|
||||
}
|
||||
for(field = E_CARD_SIMPLE_FIELD_FULL_NAME; field != E_CARD_SIMPLE_FIELD_LAST && count < 5; field++) {
|
||||
if (e_card_simple_get(e_minicard->simple, field)) {
|
||||
add_field(e_minicard, field);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (phone_list) {
|
||||
for (iterator = e_card_list_get_iterator(phone_list); e_card_iterator_is_valid(iterator); e_card_iterator_next(iterator)) {
|
||||
const ECardPhone *phone = e_card_iterator_get(iterator);
|
||||
if (phone->flags & E_CARD_PHONE_WORK) {
|
||||
add_field(e_minicard, "Work Phone:", phone->number);
|
||||
} else if (phone->flags & E_CARD_PHONE_HOME) {
|
||||
add_field(e_minicard, "Home Phone:", phone->number);
|
||||
} else if (phone->flags & E_CARD_PHONE_CELL) {
|
||||
add_field(e_minicard, "Mobile Phone:", phone->number);
|
||||
} else {
|
||||
add_field(e_minicard, "Phone:", phone->number);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (email_list) {
|
||||
for (iterator = e_card_list_get_iterator(email_list); e_card_iterator_is_valid(iterator); e_card_iterator_next(iterator)) {
|
||||
add_field(e_minicard, "Email:", (char *) e_card_iterator_get(iterator));
|
||||
}
|
||||
}
|
||||
|
||||
if (url)
|
||||
add_field(e_minicard, "Web page:", url);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
|
||||
#include <gnome.h>
|
||||
#include <ebook/e-card.h>
|
||||
#include <ebook/e-card-simple.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -61,14 +62,14 @@ struct _EMinicard
|
||||
GnomeCanvasGroup parent;
|
||||
|
||||
/* item specific fields */
|
||||
/* ECard *card; */
|
||||
ECard *card;
|
||||
ECardSimple *simple;
|
||||
|
||||
GnomeCanvasItem *rect;
|
||||
GnomeCanvasItem *header_rect;
|
||||
GnomeCanvasItem *header_text;
|
||||
GList *fields; /* Of type GnomeCanvasItem. */
|
||||
|
||||
ECard *card;
|
||||
GList *fields; /* Of type GnomeCanvasItem. */
|
||||
guint needs_remodeling : 1;
|
||||
|
||||
gboolean has_focus;
|
||||
|
||||
Reference in New Issue
Block a user