gecko-dev/cmd/winfe/abapi.h
1998-06-25 05:50:45 +00:00

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