00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#ifndef _MAPIHD_H_
00019
#define _MAPIHD_H_
00020
00021
#include <qmemarray.h>
00022
00023
#include "pab_xxport.h"
00024
00025
#define T_MS_ARRAY 0x1100 // Some sort of array
00026
#define T_MS_STRING ((unsigned long) 0x1e) // definitely a string
00027
00028
typedef unsigned long adr_t;
00029
typedef unsigned long content_t;
00030
typedef unsigned short pabsize_t;
00031
typedef unsigned char byte_t;
00032
typedef unsigned short word_t;
00033
typedef byte_t byte;
00034
00035
class pab;
00036
00037
class pabrec {
00038
private:
00039
char entry[1024];
00040 byte *_mem;
00041 word_t m_N;
00042 word_t *m_W;
00043
public:
00044 pabrec(pab &);
00045 ~pabrec();
00046
public:
00047 word_t N(
void) {
return m_N; }
00048 word_t operator[](
int i) {
return m_W[i]; }
00049
const char *getEntry(
int i);
00050
public:
00051 content_t read(word_t offset);
00052 };
00053
00054
typedef enum {
00055 pr_unknown,pr_notused,
00056 pr_givenname,pr_email,
00057 pr_firstname,pr_additionalname,pr_lastname,pr_title,
00058 pr_address,pr_town,pr_state,pr_zip,pr_country,
00059 pr_organization,pr_department,pr_subdep,pr_job,
00060 pr_tel,pr_fax,pr_modem,pr_mobile,pr_url,pr_talk,
00061 pr_notes,pr_birthday
00062 }
00063 pabrec_entry;
00064
00065
class mapitag_t
00066 {
00067
friend bool operator < (mapitag_t &,mapitag_t &);
00068
friend bool operator > (mapitag_t &,mapitag_t &);
00069
friend bool operator == (mapitag_t &,mapitag_t &);
00070
private:
00071 word_t _tag;
00072 word_t _type;
00073 content_t _order;
00074
public:
00075 mapitag_t(content_t tag,content_t order) { _tag=(word_t) tag;_type=(word_t) (tag>>16);_order=order; }
00076 mapitag_t() { _tag=0;_type=0;_order=0; }
00077
public:
00078 mapitag_t & operator = (mapitag_t & t) { _tag=t._tag;_type=t._type;_order=t._order;
return *
this; }
00079
public:
00080
bool isUsed(
void) {
return (_type==T_MS_STRING || (_type&T_MS_ARRAY)!=0) && _order!=0; }
00081 word_t literal(
void) {
return _tag; }
00082 content_t order(
void) {
return _order; }
00083 pabrec_entry matchTag(
void);
00084 };
00085
00086
bool operator < (mapitag_t & a,mapitag_t & b);
00087
bool operator > (mapitag_t & a,mapitag_t & b);
00088
bool operator == (mapitag_t & a,mapitag_t & b);
00089
00090
class pabfields_t
00091 {
00092
private:
00093
QMemArray<mapitag_t> tags,context_tags;
00094 pabrec *m_R;
00095
QString givenName,email,
00096 title,firstName,additionalName,lastName,
00097 address,town,state,zip,country,
00098 organization,department,subDep,job,
00099 tel,fax,modem,mobile,homepage,talk,
00100 comment,birthday;
00101
bool OK;
00102
private:
00103
bool isUsed(
int k);
00104 pabrec_entry isWhat(
int k);
00105 word_t literal(
int k);
00106 content_t order(
int k);
00107
public:
00108 pabfields_t(pabrec & R,
QWidget *parent);
00109
public:
00110 KABC::Addressee get( );
00111
bool isOK(
void) {
return OK; }
00112
bool isUsable(
void) {
return givenName!=
""; }
00113 };
00114
00115
00116
#endif
00117