// -------------------------------------------------------------------------------- // Acctutil.h // Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved // Steven J. Bailey // -------------------------------------------------------------------------------- #ifndef __ACCTUTIL_H #define __ACCTUTIL_H interface INotify; // -------------------------------------------------------------------------------- // Depends On // -------------------------------------------------------------------------------- #include "imnact.h" // -------------------------------------------------------------------------------- // IImnAdviseAccount // -------------------------------------------------------------------------------- class CImnAdviseAccount : public IImnAdviseAccount { private: ULONG m_cRef; ULONG m_cNNTP; INotify *m_pNotify; public: CImnAdviseAccount(void); ~CImnAdviseAccount(void); HRESULT Initialize(void); STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); STDMETHODIMP AdviseAccount(DWORD dwAdviseType, ACTX *pactx); void HandleAccountChange(ACCTTYPE AcctType, DWORD dwAN, LPTSTR pszAccount, LPTSTR pszOldName, DWORD dwServerTypes); }; // ----------------------------------------------------------------------------- // Account Menu // ----------------------------------------------------------------------------- typedef struct tagACCTMENU { BOOL fDefault, fThisAccount; UINT uidm; TCHAR szAccount[CCHMAX_ACCOUNT_NAME]; } ACCTMENU, *LPACCTMENU; typedef enum tagACCOUNTMENUTYPE { ACCTMENU_SEND, ACCTMENU_SENDRECV, ACCTMENU_SENDLATER } ACCOUNTMENUTYPE; HRESULT AcctUtil_HrCreateAccountMenu(ACCOUNTMENUTYPE type, HMENU hPopup, UINT uidmPopup, HMENU *phAccounts, LPACCTMENU *pprgMenu, ULONG *pcMenu, LPSTR pszThisAccount, BOOL fMail); HRESULT HrConnectAccount(HWND hwnd, IImnAccount *pAccount); HRESULT HrDisconnectAccount(HWND hwnd, BOOL fShutdown); HRESULT AcctUtil_GetServerCount(DWORD dwSrvTypes, DWORD *pcSrv); typedef struct tagNEWACCTINFO { FOLDERTYPE type; LPSTR pszAcctId; } NEWACCTINFO; class CNewAcctMonitor { public: CNewAcctMonitor(); ~CNewAcctMonitor(); STDMETHOD_(ULONG, AddRef)(THIS); STDMETHOD_(ULONG, Release)(THIS); void OnAdvise(ACCTTYPE atType, DWORD dwNotify, LPCSTR pszAcctId); void StartMonitor(void); void StopMonitor(HWND hwndParent); private: ULONG m_cRef; BOOL m_fMonitor; NEWACCTINFO *m_rgAccounts; ULONG m_cAlloc; ULONG m_cAccounts; }; extern CNewAcctMonitor *g_pNewAcctMonitor; void CheckIMAPDirty(LPSTR pszAccountID, HWND hwndParent, FOLDERID idServer, DWORD dwFlags); const DWORD CID_NOPROMPT = 0x00000001; // For CheckIMAPDirty dwFlags: do not prompt to reset list const DWORD CID_RESETLISTOK = 0x00000002; // For CheckIMAPDirty dwFlags: user gave permission to reset list void DoAccountListDialog(HWND hwnd, ACCTTYPE type); HRESULT AcctUtil_CreateSendReceieveMenu(HMENU hMenu, DWORD *pcItems); HRESULT AcctUtil_FreeSendReceieveMenu(HMENU hMenu, DWORD cItems); HRESULT AcctUtil_CreateAccountManagerForIdentity(GUID *puidIdentity, IImnAccountManager2 **ppAccountManager); void InitNewAcctMenu(HMENU hmenu); void FreeNewAcctMenu(HMENU hmenu); HRESULT HandleNewAcctMenu(HWND hwnd, HMENU hmenu, int id); #endif // __ACCTUTIL_H