#include "cdk.h" #include #include #include #define MAXGROUPS 100 #define GLINETYPECOUNT 9 /* * Declare some global variables. */ char *GCurrentGroup = (char *)NULL; char *GRCFile = (char *)NULL; char *GDBMDir = (char *)NULL; int GGroupModified = FALSE; int GPhoneListModified = FALSE; char *GLineType[] = {"Voice", "Cell", "Pager", "First FAX", "Second FAX", "Third FAX", "First Data Line", "Second Data Line", "Third Data Line"}; /* * Create some definitions. */ typedef enum {vVoice, vCell, vPager, vFAX1, vFAX2, vFAX3, vData1, vData2, vData3} ELineType; /* * Define the group record structure. */ struct _group_st { char *name; char *desc; char *dbm; }; typedef struct _group_st SRolodex; /* * Define a phone record structure; */ struct _record_st { char *name; ELineType lineType; char *phoneNumber; char *address; char *city; char *province; char *postalCode; char *desc; }; typedef struct _record_st SPhoneRecord; struct _phone_data_st { SPhoneRecord record[MAX_ITEMS]; int recordCount; }; typedef struct _phone_data_st SPhoneData; /* * Define the callback prototypes. */ int helpCB (EObjectType cdkType, void *object, void *clientData, chtype key); int groupInfoCB (EObjectType cdkType, void *object, void *clientData, chtype key); int insertPhoneEntryCB (EObjectType cdkType, void *object, void *clientData, chtype key); int deletePhoneEntryCB (EObjectType cdkType, void *object, void *clientData, chtype key); int phoneEntryHelpCB (EObjectType cdkType, void *object, void *clientData, chtype key); int entryPreProcessCB (EObjectType cdkType, void *object, void *clientData, chtype input); /* * These functions use/modify the rolodex RC file. */ int readRCFile (char *filename, SRolodex *groupInfo); int openNewRCFile (CDKSCREEN *screen, SRolodex *groups, int groupCount); int writeRCFile (CDKSCREEN *screen, char *file, SRolodex *groups, int count); int writeRCFileAs (CDKSCREEN *screen, SRolodex *groups, int count); /* * These functions use/modify rolodex phone groups. */ int addRolodexGroup (CDKSCREEN *screen, SRolodex *groups, int count); int deleteRolodexGroup (CDKSCREEN *screen, SRolodex *groups, int count); int pickRolodexGroup (CDKSCREEN *screen, char *title, SRolodex *groups, int count); void useRolodexGroup (CDKSCREEN *screen, char *name, char *desc, char *dbm); /* * These functions display misc information about the rolodex program. */ void displayRolodexStats (CDKSCREEN *screen, int groupCount); void aboutCdkRolodex (CDKSCREEN *screen); void displayPhoneInfo (CDKSCREEN *screen, SPhoneRecord record); /* * These functions use/modify phone data lists. */ int readPhoneDataFile (char *filename, SPhoneData *record); int savePhoneDataFile (char *filename, SPhoneData *record); int addPhoneRecord (CDKSCREEN *screen, SPhoneData *phoneData); int deletePhoneRecord (CDKSCREEN *screen, SPhoneData *phoneData); int getLargePhoneRecord (CDKSCREEN *screen, SPhoneRecord *phoneRecord); int getSmallPhoneRecord (CDKSCREEN *screen, SPhoneRecord *phoneRecord); /* * These functions allow us to print out phone numbers. */ void printGroupNumbers (CDKSCREEN *screen, SRolodex *groups, int count); int printGroup (SRolodex groupRecord, char *filename, char *printer);