ILSTEST.H

//**************************************************************************** 
//
// SKIPPY! sample for Microsoft NetMeeting SDK
//
// File: ilstest.h
// Content: The main header file.
//
// Copyright (c) Microsoft Corporation 1997
// All rights reserved
//
//****************************************************************************

#include <windows.h>
#include <windowsx.h>
#include <tchar.h>
#include <olectl.h>
#include "ils.h"
#include "resource.h"
#include <commctrl.h>
#include "oblist.h"
#include "notify.h"
#include <mapidefs.h>

//****************************************************************************
// General Constants
//****************************************************************************
//
#define SERVER_MENU_POS 1
#define SERVER_LIST_POS 2

#define MAX_NAME 260
#define MAX_SERVER_COUNT 20
#define MAX_USER_COUNT 20


#define WM_ILSTEST (WM_USER+100)
#define WM_IT_ENUM_NAMES_RESULT (WM_ILSTEST+0)
#define WM_IT_ENUM_USERS_RESULT (WM_ILSTEST+1)
#define WM_IT_RESOLVE_USER_RESULT (WM_ILSTEST+2)
#define WM_IT_RESOLVE_PROT_RESULT (WM_ILSTEST+3)

//****************************************************************************
// Macros
//****************************************************************************
//
#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))

//****************************************************************************
// Global Parameters
//****************************************************************************
//
extern HINSTANCE ghInstance;
extern HWND g_hwndMain;
extern LPILS_MAIN g_pIls;
extern IConnectionPoint *g_pcnp;

extern IIlsFilter *g_pProtFilter;
extern IIlsFilter *g_pUserFilter;

extern CHAR g_szServer[];
extern LPTSTR g_pszServer;
extern IIlsServer *g_pServer;
extern COBLIST *g_pServerList;
extern COBLIST *g_pUserList;

extern GUID g_GUID;

extern const TCHAR g_szAppID[];
extern const TCHAR g_szProtID[];

enum OBJECT_TYPE {PROTOCOL, USER};
enum FILTER_USAGE {USERFILTER, PROTFILTER};

#define NM_IN_A_CALL 400
#define NM_SEND_AUDIO 501
#define NM_SEND_VIDEO 503
#define NM_RESTRICTION 600


//****************************************************************************
// Useful data structures
//****************************************************************************
//

typedef struct tagServerNode
{
char szName[MAX_NAME];
IIlsServer *pSrv;
} SERVERNODE, *PSERVERNODE;

typedef struct tagUserInfo
{
char szFirstName[MAX_NAME];
char szLastName[MAX_NAME];
char szEmailName[MAX_NAME];
char szCity[MAX_NAME];
char szCountry[MAX_NAME];
char szComment[MAX_NAME*2];
char szIPAddress[MAX_NAME];
BOOLfModify;
} USERINFO, *PUSERINFO;

typedef struct tagILSUser {
IIlsUser *pu;
CIlsUserNotify *puNotify;
COBLIST *pProtList;
} USERNODE, *PUSERNODE;

typedef struct tagServerInfo {
LPTSTR szServerName;
LPTSTR szLogonName;
LPTSTR szPassword;
ILS_ENUM_AUTH_METHOD eam;
LPTSTR szDomain;
LPTSTR szCredential;
LPTSTR szBaseDN;
DWORD dwTimeout;
} SERVERINFO, *PSERVERINFO;

typedef struct tagFilterInfo {

ILS_STD_ATTR_NAME attName1;
LPTSTR szValue1;
ILS_FILTER_OP fOp1;

ILS_STD_ATTR_NAME attName2;
LPTSTR szValue2;
ILS_FILTER_OP fOp2;

ILS_FILTER_OP fOpComp;
FILTER_USAGE fUsage; // usage: USER, PROTOCOL
ILS_FILTER_TYPE fType; // type: SIMPLE, COMPOSITE

} FILTERINFO, *PFILTERINFO;

typedef struct tagProtocolInfo {

LPTSTR szProtName;
LPTSTR szProtMime;
ULONG uPortNumber;

} PROTOCOLINFO, *PPROTOCOLINFO;


typedef struct tagEnumProtocol {

USERNODE *pun;
IIlsProtocol *ppSelected;

} ENUMPROTINFO, *PENUMPROTINFO;


//****************************************************************************
// Function prototypes
//****************************************************************************
//
// **** from utils.cpp
void _cdecl MyTextOut (LPCTSTR szFmt, ...);
void ErrorMessage(HWND hwnd, LPCTSTR szPrefix, HRESULT hr);
LPTSTR AllocLPTSTR (ULONG cb);
HRESULT FreeLPTSTR (LPTSTR pszName);
HRESULT SetLPTSTR (LPTSTR *ppszName, LPCTSTR pszUserName);
HRESULT LPTSTR_to_BSTR (BSTR *pbstr, LPCTSTR psz);
HRESULT BSTR_to_LPTSTR (LPTSTR *ppsz, BSTR bstr);
LPCTSTR GetErrorString(HRESULT hr);
void DisplayStdAtt(void *pobj, ILS_STD_ATTR_NAME stdAttr, LPTSTR szDesc, OBJECT_TYPE ot);
void DisplayExtAtt(void *pobj, DWORD dwExtAttr, LPTSTR szDesc, OBJECT_TYPE ot);
BOOL InitTreeViewImageLists(HWND hwndTV);
HTREEITEM AddItemToTree(HWND hwndTV, LPSTR lpszItem, int nLevel);
VOID DisplayAboutBox(HWND hwnd);
HRESULT DisplayIlsNames(HWND hwnd, IEnumIlsNames *pEnum, LPTSTR szNames);
int StringFromGuid (REFIID riid, LPTSTR pszBuf);
int GetRadioButton(HWND hdlg, int idrFirst, int idrLast);
BOOL MyIsGoodString(LPTSTR psz);
HRESULT GetNMAttributesObject( IIlsMain *pIls, IIlsAttributes **ppa );




// **** from users.cpp
HRESULT DisplayIlsUsers(HWND hwnd, IEnumIlsUsers *pEnum);
HRESULT RegisterUser(HWND hwnd, IIlsUser *pu, IIlsServer *ps, LPTSTR szServerName);
HRESULT UnregisterUser(HWND hwnd, IIlsUser *pu, BOOL fSilent);
HRESULT EnumUsers(HWND hwnd, BOOL fShort);
HRESULT OnILSUserAdviseUnadvise(HWND hwnd, PUSERNODE pUserNode, BOOL fAdvise);
HRESULT DisplayIlsUserDialog(HWND hwnd, IIlsUser *pu);



// **** from svrinfo.cpp
int ServerDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT NewServerDialog(HWND hwnd);
HRESULT RemoveServerDialog(HWND hwnd);
void NewServerNode(IIlsServer *pServer, LPTSTR szName);
int ServerListDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
void SetServerInfo(HWND hwnd, IIlsServer *ps, PSERVERINFO psi);


// **** from usrinfo.cpp
HRESULT NewUserDialog(HWND hwnd);
HRESULT ModifyUserDialog(HWND hwnd);
HRESULT CloneUserDialog(HWND hwnd);
HRESULT RemoveUserDialog(HWND hwnd);
HRESULT RegUnregUserDialog(HWND hwnd, BOOL fRegister);
int UserNameDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT GetUserInfoDialog(HWND hwnd);
HRESULT GetUserInfoDialog(HWND hwnd, IIlsUser *pu);
int UserDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
void InitIlsUser(HWND hwnd, IIlsUser *pu);
void NewUserNode(PUSERNODE pUser);
void SetUserInfo(HWND hwnd, IIlsUser *pu, USERINFO *pUserInfo);
void GetUserInfo(HWND hwnd, IIlsUser *pu, USERINFO *pUserInfo);
void SaveUserInfo(HWND hwnd, PUSERINFO pui);
int UserListDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
void UnregisterAllUsers(HWND hwnd);
HRESULT ChangeAttribute(IIlsUser *pu, ILS_STD_ATTR_NAME attr, LPTSTR psz);



// **** from proto.cpp
HRESULT EnumUserProtocols(HWND hwnd, IIlsUser *pu);
int ProtocolDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
void CreateProtocolDialog(HWND hwnd);
void SaveProtInfo(HWND hwnd, PPROTOCOLINFO ppi);
void DestroyProtocolDialog(HWND hwnd);
int ProtoListDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT DisplayProtocolInfo(HWND hwnd, IIlsProtocol *pp);
HRESULT DisplayProtocol(HWND hwnd, IIlsUser *pu);
int ProtoNameDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);






// **** from attrib.cpp
HRESULT EnumUserExAttributes(HWND hwnd, IIlsUser *pu);


// **** from filter.cpp
HRESULT CreateFilterDialog(HWND hwnd, FILTER_USAGE fUsage);
int FilterDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT DestroyFilter(HWND hwnd, FILTER_USAGE fUsage);