|  | /* | 
|  | * 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);") |