mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
298 lines
11 KiB
C++
298 lines
11 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
//
|
|
// This is a header file for the Address Book API support within
|
|
// Communicator.
|
|
//
|
|
// Written by: Rich Pizzarro (rhp@netscape.com)
|
|
//
|
|
#ifndef __ABAPI
|
|
#define __ABAPI
|
|
|
|
#include "nabapi.h" // for all address book defines
|
|
|
|
// These are very important for compatibility going forward...
|
|
#define NAB_VERSION_MAJOR 1 /* Major version number; changes with major code release number */
|
|
#define NAB_VERSION_MINOR 0 /* Minor version number; changes with point release number. */
|
|
|
|
#ifdef WIN16
|
|
typedef unsigned char UCHAR;
|
|
#endif
|
|
|
|
#define MAX_NAME_LEN 256
|
|
#define MAX_ADDRBOOK_NAME_LEN 512
|
|
#define MAX_CON 4 // Maximum NABAPI sessions supported
|
|
#define MAX_POINTERS 32
|
|
#define MAX_LDIF_SIZE 16000 // Max size for address book LDIF allocation stuff
|
|
#define MAX_LDIFSEARCH_SIZE 4096 // Max size for address book LDIF allocation stuff
|
|
|
|
#ifndef NABAPIDLL
|
|
|
|
#include "abcom.h" // For MSG_ & AB_ stuff...
|
|
#include "msgcom.h"
|
|
|
|
//
|
|
// The Address Book class that will act as the internal mechanism for
|
|
// Communicator to control multiple Address Book sessions.
|
|
//
|
|
class CNABConnection
|
|
{
|
|
protected:
|
|
LONG m_ID;
|
|
BOOL m_defaultConnection;
|
|
LONG m_sessionCount;
|
|
LONG m_nameIndex;
|
|
LONG m_nameTotalCount;
|
|
|
|
// Methods
|
|
public:
|
|
MSG_Pane *m_ContainerPane; // Container Pane...
|
|
AB_ContainerInfo **m_ContainerArray; // The array of container info pointers...
|
|
LONG m_ContainerArrayCount; // The count of the number of
|
|
// m_ContainerArray entries
|
|
MSG_Pane *m_AddressBookPane; // Container info for a particular addr book
|
|
|
|
CNABConnection ( LONG );
|
|
~CNABConnection ( );
|
|
|
|
// ID related methods
|
|
LONG GetID( ) { return m_ID; } ;
|
|
|
|
// Dealing with the default session...
|
|
BOOL IsDefault( ) { return m_defaultConnection; } ;
|
|
void SetDefault( BOOL flag ) { m_defaultConnection = flag; } ;
|
|
|
|
// For handling multiple sessions on a profile name...
|
|
LONG GetSessionCount( ) { return m_sessionCount; } ;
|
|
void IncrementSessionCount() { ++m_sessionCount; } ;
|
|
void DecrementSessionCount() { --m_sessionCount; } ;
|
|
|
|
// For enumerating names...
|
|
void SetNameIndex( LONG mIndex ) { m_nameIndex = mIndex; } ;
|
|
void IncrementNameIndex( ) { ++m_nameIndex; } ;
|
|
LONG GetNameIndex( ) { return m_nameIndex; };
|
|
|
|
void SetNameTotalCount( LONG mTotal ) { m_nameTotalCount = mTotal; } ;
|
|
LONG GetNameTotalCount( ) { return m_nameTotalCount; };
|
|
|
|
// For AB Calls...
|
|
BOOL RefreshABContainerList ( void );
|
|
AB_ContainerInfo *FindContainerInfo( LPSTR, LPSTR );
|
|
|
|
|
|
};
|
|
|
|
#endif // NABAPIDLL
|
|
|
|
//
|
|
// Defines needed for requests being made with the WM_COPYDATA call...
|
|
//
|
|
typedef enum {
|
|
NSCP_NABStartRequestID = 200,
|
|
NSCP_NAB_Open,
|
|
NSCP_NAB_Close,
|
|
NSCP_NAB_GetAddressBookList,
|
|
NSCP_NAB_GetDefaultAddressBook,
|
|
NSCP_NAB_CreatePersonalAddressBook,
|
|
NSCP_NAB_FreeMemory,
|
|
NSCP_NAB_SaveAddressBookToHTML,
|
|
NSCP_NAB_ImportLDIFFile,
|
|
NSCP_NAB_ExportLDIFFile,
|
|
NSCP_NAB_GetFirstAddressBookEntry,
|
|
NSCP_NAB_GetNextAddressBookEntry,
|
|
NSCP_NAB_FindAddressBookEntry,
|
|
NSCP_NAB_InsertAddressBookEntry,
|
|
NSCP_NAB_UpdateAddressBookEntry,
|
|
NSCP_NAB_DeleteAddressBookEntry,
|
|
NSCP_NABEndRequestID // Note: this is a marker for NAB IPC requests
|
|
} NSCP_NAB_IPC_REQUEST;
|
|
|
|
//
|
|
// This is to keep track of the pointers allocated in the MAPI DLL
|
|
// and deal with them correctly.
|
|
//
|
|
#define NAB_FLAT_MEMORY 0
|
|
#define NAB_ADDRBOOK_STRUCT 1
|
|
|
|
typedef struct {
|
|
LPVOID lpMem;
|
|
char memType;
|
|
} nabMemTrackerType;
|
|
|
|
//
|
|
// This is the generic message that WM_COPYDATA will send to the
|
|
// Communicator product to allow it to attach to shared memory.
|
|
// NOTE: On Win16, this will simply reference a pointer.
|
|
//
|
|
typedef struct {
|
|
char smemName[64]; // Name of shared memory
|
|
DWORD smemSize; // Size of shared memory
|
|
LPVOID lpsmem; // Will be really used in Win16 only
|
|
} NABIPCType;
|
|
|
|
//
|
|
// These are message specific structures that will be used for
|
|
// the various Address Book operations.
|
|
//
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
UINT_16 majorVerNumber;
|
|
UINT_16 minorVerNumber;
|
|
} NAB_OpenType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
} NAB_CloseType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
UINT_32 abookCount;
|
|
char blobFileName[_MAX_PATH]; // file name N abooks on disk
|
|
} NAB_GetAddressBookListType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
BOOL defaultFound;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookDesc[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
} NAB_GetDefaultAddressBookType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
} NAB_CreatePersonalAddressBookType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
// Return stuff
|
|
char HTMLFileName[_MAX_PATH]; // saved HTML file name
|
|
} NAB_SaveAddressBookToHTMLType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
BOOL deleteImportFile;
|
|
char LDIFFileName[_MAX_PATH]; // LDIF file to import
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
} NAB_ImportLDIFFileType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
char LDIFFileName[_MAX_PATH]; // LDIF file to export
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
} NAB_ExportLDIFFileType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
// Returned Values
|
|
NABUserID userID;
|
|
NABUpdateTime updateTime;
|
|
char userInfo[MAX_LDIF_SIZE];
|
|
} NAB_GetFirstAddressBookEntryType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
// Returned Values
|
|
NABUserID userID;
|
|
NABUpdateTime updateTime;
|
|
char userInfo[MAX_LDIF_SIZE];
|
|
} NAB_GetNextAddressBookEntryType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
// Input Values
|
|
char ldifSearchAttribute[MAX_LDIFSEARCH_SIZE];
|
|
// Output values
|
|
NABUserID userID;
|
|
NABUpdateTime updateTime;
|
|
char userInfo[MAX_LDIF_SIZE];
|
|
} NAB_FindAddressBookEntryType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
// Insert Value
|
|
char userInfo[MAX_LDIF_SIZE];
|
|
// Update Value
|
|
NABUserID userID;
|
|
} NAB_InsertAddressBookEntryType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
// Update Value
|
|
NABUserID userID;
|
|
char userInfo[MAX_LDIF_SIZE];
|
|
} NAB_UpdateAddressBookEntryType;
|
|
|
|
typedef struct {
|
|
DWORD ipcWorked; // Necessary for IPC check with Communicator
|
|
NABConnectionID abConnection;
|
|
// NABAddrBookDescType flattened
|
|
char reserved[16]; // future use
|
|
char abookName[MAX_ADDRBOOK_NAME_LEN]; // description of address book
|
|
char abookFileName[_MAX_PATH]; // file name of abooks on disk
|
|
// Delete user Value
|
|
NABUserID userID;
|
|
} NAB_DeleteAddressBookEntryType;
|
|
|
|
#endif // __ABAPI
|