/* * Copyright 2006 Robert Shearman for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "objidl.idl"; interface IImnAccount; cpp_quote("#ifndef HR_E") cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)") cpp_quote("#endif") cpp_quote("#ifndef HR_S") cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)") cpp_quote("#endif") typedef enum tagSMTPAUTHTYPE { SMTP_AUTH_NONE, SMTP_AUTH_SICILY, SMTP_AUTH_USE_POP3ORIMAP_SETTINGS, SMTP_AUTH_USE_SMTP_SETTINGS, } SMTPAUTHTYPE; const SHORT CCHMAX_ORG_NAME = 256; const SHORT CCHMAX_DISPLAY_NAME = 256; const SHORT CCHMAX_ACCOUNT_NAME = 256; const SHORT CCHMAX_SERVER_NAME = 256; const SHORT CCHMAX_PASSWORD = 256; const SHORT CCHMAX_USERNAME = 256; const SHORT CCHMAX_EMAIL_ADDRESS = 256; const SHORT CCHMAX_CONNECTOID = 256; const SHORT CCHMAX_SEARCH_BASE = 256; const SHORT CCHMAX_ROOT_FOLDER = 256; const SHORT CCHMAX_SIGNATURE = 16; const SHORT CCHMAX_SERVICE = 256; [ object, uuid(0A06BD31-166F-11D0-81B9-00C04FD85AB4), pointer_default(unique) ] interface IImnAdviseAccount : IUnknown { typedef enum { ACCT_NEWS, ACCT_MAIL, ACCT_DIR_SERV, ACCT_LAST } ACCTTYPE; typedef struct tagAccountContext { ACCTTYPE AcctType; LPSTR pszAccountID; LPSTR pszOldName; DWORD dwServerType; } ACTX; HRESULT AdviseAccount( [in] DWORD dwAdviseType, [in] ACTX *pAcctCtx); } [ object, uuid(8D0AED11-1638-11D0-81B9-00C04FD85AB4), pointer_default(unique) ] interface IImnAdviseMigrateServer : IUnknown { HRESULT MigrateServer( [in] DWORD dwSrvType, [in] IImnAccount *pAccount); } [ object, uuid(FD465483-1384-11D0-ABBD-0020AFDFD10A), pointer_default(unique) ] interface IImnEnumAccounts : IUnknown { HRESULT GetCount( [out] ULONG *pcItems); HRESULT SortByAccountName(); HRESULT GetNext( [out] IImnAccount **ppAccount); HRESULT Reset(); } [ object, uuid(FD465481-1384-11D0-ABBD-0020AFDFD10A), pointer_default(unique) ] interface IImnAccountManager : IUnknown { typedef struct tagACCTLISTINFO { DWORD cbSize; ACCTTYPE AcctTypeInit; DWORD dwAcctFlags; DWORD dwFlags; } ACCTLISTINFO; HRESULT Init( [in] IImnAdviseMigrateServer *pAdviseMigrateServer); HRESULT CreateAccountObject( [in] ACCTTYPE AcctType, [out] IImnAccount **ppAccount); HRESULT Enumerate( [in] DWORD dwSrvTypes, [out] IImnEnumAccounts **ppEnumAccounts); HRESULT GetAccountCount( [in] ACCTTYPE AcctType, [out] ULONG *pcServers); HRESULT FindAccount( [in] DWORD dwPropTag, [in] LPCSTR pszSearchData, [out] IImnAccount **ppAccount); HRESULT GetDefaultAccountName( [in] ACCTTYPE AcctType, [in,ref] LPSTR pszAccount, [in] ULONG cchMax); HRESULT ProcessNotification( [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam); HRESULT ValidateDefaultSendAccount(); HRESULT AccountListDialog( [in] HWND hwnd, [in] ACCTLISTINFO *pinfo); HRESULT Advise( [in] IImnAdviseAccount *pAdviseAccount, [out] DWORD *pdwConnection); HRESULT Unadvise( [in] DWORD dwConnection); HRESULT GetUniqueAccountName( [in] LPSTR szName, [in] UINT cch); HRESULT InitEx( [in] IImnAdviseMigrateServer *pAdviseMigrateServer, [in] DWORD dwFlags); } [ object, uuid(C43DFC6F-62BB-11D2-A727-00C04F79E7C8), pointer_default(unique) ] interface IImnAccountManager2 : IImnAccountManager { HRESULT InitUser( [in] IImnAdviseMigrateServer *pAdviseMigrateServer, [in] REFGUID rguidID, [in] DWORD dwFlags); HRESULT GetIncompleteAccount( [in] ACCTTYPE AcctType, [in,ref] LPSTR pszAccountId, [in] ULONG cchMax); HRESULT SetIncompleteAccount( [in] ACCTTYPE AcctType, [in] LPCSTR pszAccountId); } [ object, uuid(FD465484-1384-11D0-ABBD-0020AFDFD10A), pointer_default(unique) ] interface IPropertyContainer : IUnknown { typedef enum { TYPE_ERROR = 1000, TYPE_DWORD, TYPE_LONG, TYPE_WORD, TYPE_SHORT, TYPE_BYTE, TYPE_CHAR, TYPE_FILETIME, TYPE_STRING, TYPE_BINARY, TYPE_FLAGS, TYPE_STREAM, TYPE_WSTRING, TYPE_BOOL, TYPE_PASS, TYPE_LAST } PROPTYPE; cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") cpp_quote("#undef GetProp") cpp_quote("#undef SetProp") cpp_quote("#endif") HRESULT GetProp( [in] DWORD dwPropTag, [in,size_is(*pcb),ref] BYTE *pb, [in] ULONG *pcb); HRESULT GetPropDw( [in] DWORD dwPropTag, [out] DWORD *pdw); HRESULT GetPropSz( [in] DWORD dwPropTag, [in,ref] LPSTR psz, [in] ULONG cchMax); HRESULT SetProp( [in] DWORD dwPropTag, [in,size_is(cb)] BYTE *pb, [in] ULONG cb); HRESULT SetPropDw( [in] DWORD dwPropTag, [in] DWORD dw); HRESULT SetPropSz( [in] DWORD dwPropTag, [in] LPSTR psz); } [ object, uuid(FD465482-1384-11D0-ABBD-0020AFDFD10A), pointer_default(unique) ] interface IImnAccount : IPropertyContainer { HRESULT Exist(); HRESULT SetAsDefault(); HRESULT Delete(); HRESULT SaveChanges(); HRESULT GetAccountType( [out] ACCTTYPE *pAcctType); HRESULT GetServerTypes( [out] DWORD *pdwSrvTypes); HRESULT ShowProperties( [in] HWND hwnd, [in] DWORD dwFlags); HRESULT ValidateProperty( [in] DWORD dwPropTag, [in,size_is(cb)] BYTE *pb, [in] ULONG cb); HRESULT DoWizard( [in] HWND hwnd, [in] DWORD dwFlags); HRESULT DoImportWizard( [in] HWND hwnd, [in] CLSID clsid, [in] DWORD dwFlags); } cpp_quote("HRESULT WINAPI HrCreateAccountManager(IImnAccountManager **ppAccountManager);") cpp_quote("HRESULT WINAPI ValidEmailAddress(LPSTR lpAddress);")