You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

192 lines
5.2 KiB

/*******************************************************************************
*
* $Id: pi-contact.h,v 1.12 2009/02/23 11:59:16 nicholas Exp $
*
* pi-contact.h: Translate Palm contact data formats
* Derived from a module of J-Pilot http://jpilot.org (jp-pi-contact.h 1.5)
*
* Rewrite Copyright 2006, 2007 Judd Montgomery
* Rewrite Copyright 2004, 2005 Joseph Carter
* Copyright 2003, 2004 Judd Montgomery
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
******************************************************************************/
/*
* Hints for uses of this library <= 1.11:
*
* appinfo->internal has changed from a pi_buffer_t to char array of fixed length.
*
* appinfo->labels has changed from a pi_buffer_t to an array of char
* arrays of fixed length, and is no longer 'opaque'.
*
* contact->reminder has changed from -1 for 'not set', to 0 for 'not
* set' and the reminder/advance duration is now in contact->advance.
*
* contact->picture has changed from a pi_buffer_t to a ContactPicture
*
* There is no longer a contact->pictype (if the picture exists, it's a JPEG.)
*
*/
#ifndef _PILOT_CONTACT_H_
#define _PILOT_CONTACT_H_
#include <pi-args.h>
#include <pi-appinfo.h>
#include <pi-buffer.h>
#include <time.h>
#define MAX_CONTACT_VERSION 11
#define NUM_CONTACT_ENTRIES 39
#define NUM_CONTACT_V10_LABELS 49
#define NUM_CONTACT_V11_LABELS 53
/* Blob types, or blob creator IDs, can range from BD00 - Bd09 for Contacts */
#define BLOB_TYPE_PICTURE_ID "Bd00"
#define MAX_CONTACT_BLOBS 10
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
contacts_v10,
contacts_v11
} contactsType;
/* Entry fields */
enum {
contLastname,
contFirstname,
contCompany,
contTitle,
contPhone1,
contPhone2,
contPhone3,
contPhone4,
contPhone5,
contPhone6,
contPhone7,
contIM1,
contIM2,
contWebsite,
contCustom1,
contCustom2,
contCustom3,
contCustom4,
contCustom5,
contCustom6,
contCustom7,
contCustom8,
contCustom9,
contAddress1,
contCity1,
contState1,
contZip1,
contCountry1,
contAddress2,
contCity2,
contState2,
contZip2,
contCountry2,
contAddress3,
contCity3,
contState3,
contZip3,
contCountry3,
contNote
};
/* Non-entry fields */
enum {
contBirthday = contNote + 1,
contPicture
};
struct ContactBlob {
/* type ranges from "Bd00" - "Bd09" */
char type[4];
int length;
unsigned char *data;
};
struct ContactPicture {
/* The picture pointer is only for convienience and
* will point to the 3rd byte of the last picture blob.
* The data will not need to be freed. The blob structure will. */
unsigned int dirty;
/* data points to blob data in jpeg format */
unsigned int length;
unsigned char *data;
};
struct Contact {
int phoneLabel[7];
int addressLabel[3];
int IMLabel[2];
int showPhone;
int birthdayFlag;
int reminder;
int advance;
int advanceUnits;
struct tm birthday;
char *entry[39];
struct ContactBlob *blob[MAX_CONTACT_BLOBS];
struct ContactPicture *picture;
};
struct ContactAppInfo {
contactsType type;
int num_labels;
struct CategoryAppInfo category;
char internal[26]; /* Palm has not documented what this is */
char labels[53][16]; /* Hairy to explain, obvious to look at */
/*int labelRenamed[53];*/ /* list of booleans showing which labels were modified */
int country;
int sortByCompany;
int numCustoms; /* Included for source compatibility with pi-contact.h <= 1.11 */
char customLabels[9][16]; /* Duplication of some labels, to greatly reduce hair */
char phoneLabels[8][16]; /* Duplication of some labels, to greatly reduce hair */
char addrLabels[3][16]; /* Duplication of some labels, to greatly reduce hair */
char IMLabels[5][16]; /* Duplication of some labels, to greatly reduce hair */
};
extern void free_Contact
PI_ARGS((struct Contact *));
extern int unpack_Contact
PI_ARGS((struct Contact *, pi_buffer_t *, contactsType));
extern int pack_Contact
PI_ARGS((struct Contact *, pi_buffer_t *, contactsType));
extern int unpack_ContactAppInfo
PI_ARGS((struct ContactAppInfo *, pi_buffer_t *));
extern int pack_ContactAppInfo
PI_ARGS((struct ContactAppInfo *, pi_buffer_t *));
extern void free_ContactAppInfo
PI_ARGS((struct ContactAppInfo *));
extern int Contact_add_blob
PI_ARGS((struct Contact *, struct ContactBlob *));
extern int Contact_add_picture
PI_ARGS((struct Contact *, struct ContactPicture *));
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _PILOT_CONTACT_H_ */