cleanup some of the mapi error returns, attempt to fix idl for findnext, sr=mscott 108275

This commit is contained in:
bienvenu%nventure.com 2004-04-26 21:39:15 +00:00
Родитель e0c1daff6f
Коммит 913d69fe8b
4 изменённых файлов: 26 добавлений и 8 удалений

Просмотреть файл

@ -315,7 +315,7 @@ ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR
ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageType, ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageType,
LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved, LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
LPTSTR lpszMessageID) unsigned char lpszMessageID[64])
{ {
nsIMapi *pNsMapi = NULL; nsIMapi *pNsMapi = NULL;

Просмотреть файл

@ -110,7 +110,7 @@ interface nsIMapi : IUnknown
HRESULT FindNext( [in] unsigned long aSession, [in] ULONG ulUIParam, [in] LPTSTR lpszMessageType, HRESULT FindNext( [in] unsigned long aSession, [in] ULONG ulUIParam, [in] LPTSTR lpszMessageType,
[in] LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved, [in] LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
[in] [out] LPTSTR lpszMessageID ) ; [in] [out] char lpszMessageID[64] ) ;
HRESULT ReadMail( [in] unsigned long lhSession, [in] ULONG ulUIParam, [in] LPTSTR lpszMessageID, HRESULT ReadMail( [in] unsigned long lhSession, [in] ULONG ulUIParam, [in] LPTSTR lpszMessageID,
[in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage); [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);

Просмотреть файл

@ -172,6 +172,22 @@ STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_P
return hr; return hr;
} }
} }
else
{
// get default account
nsresult rv;
nsCOMPtr <nsIMsgAccountManager> accountManager =
do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv,MAPI_E_LOGIN_FAILURE);
nsCOMPtr <nsIMsgAccount> account;
nsCOMPtr <nsIMsgIdentity> identity;
rv = accountManager->GetDefaultAccount(getter_AddRefs(account));
NS_ENSURE_SUCCESS(rv,MAPI_E_LOGIN_FAILURE);
account->GetDefaultIdentity(getter_AddRefs(identity));
NS_ENSURE_SUCCESS(rv,MAPI_E_LOGIN_FAILURE);
identity->GetKey(&id_key);
}
// finally register(create) the session. // finally register(create) the session.
PRUint32 nSession_Id; PRUint32 nSession_Id;
@ -370,7 +386,7 @@ LONG CMapiImp::InitContext(unsigned long session, MsgMapiListContext **listConte
STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType, STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
LPTSTR lpszMessageID) unsigned char lpszMessageID[64])
{ {
// //
@ -410,7 +426,7 @@ STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam,
nsCAutoString keyString((char *) lpszMessageID); nsCAutoString keyString((char *) lpszMessageID);
nsMsgKey msgKey = keyString.ToInteger(&irv); nsMsgKey msgKey = keyString.ToInteger(&irv);
if (irv) if (irv)
return E_FAIL; return MAPI_E_INVALID_MESSAGE;
MsgMapiListContext *listContext; MsgMapiListContext *listContext;
LONG ret = InitContext(aSession, &listContext); LONG ret = InitContext(aSession, &listContext);
if (ret != SUCCESS_SUCCESS) if (ret != SUCCESS_SUCCESS)
@ -427,12 +443,12 @@ STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIPara
nsCAutoString keyString((char *) lpszMessageID); nsCAutoString keyString((char *) lpszMessageID);
nsMsgKey msgKey = keyString.ToInteger(&irv); nsMsgKey msgKey = keyString.ToInteger(&irv);
if (irv) if (irv)
return E_FAIL; return SUCCESS_SUCCESS;
MsgMapiListContext *listContext; MsgMapiListContext *listContext;
LONG ret = InitContext(aSession, &listContext); LONG ret = InitContext(aSession, &listContext);
if (ret != SUCCESS_SUCCESS) if (ret != SUCCESS_SUCCESS)
return ret; return ret;
return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : E_FAIL; return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE;
} }
STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage, STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
@ -613,6 +629,8 @@ lpnsMapiMessage MsgMapiListContext::GetMessage (nsMsgKey key, unsigned long flFl
message->lpszNoteText = (PRUnichar *) ConvertBodyToMapiFormat (msgHdr); message->lpszNoteText = (PRUnichar *) ConvertBodyToMapiFormat (msgHdr);
} }
if (! (flFlags & MAPI_PEEK))
m_db->MarkRead(key, PR_TRUE, nsnull);
} }
return message; return message;
} }
@ -668,7 +686,7 @@ void MsgMapiListContext::ConvertRecipientsToMapiFormat (nsIMsgHeaderParser *pars
{ {
mapiRecips[i].lpszAddress = (PRUnichar *) CoTaskMemAlloc(strlen(walkAddresses) + 1); mapiRecips[i].lpszAddress = (PRUnichar *) CoTaskMemAlloc(strlen(walkAddresses) + 1);
if (mapiRecips[i].lpszAddress) if (mapiRecips[i].lpszAddress)
strcpy((char *) mapiRecips[i].lpszAddress, walkAddresses);\ strcpy((char *) mapiRecips[i].lpszAddress, walkAddresses);
} }
walkAddresses += strlen (walkAddresses) + 1; walkAddresses += strlen (walkAddresses) + 1;
} }

Просмотреть файл

@ -78,7 +78,7 @@ public :
STDMETHODIMP FindNext( unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType, STDMETHODIMP FindNext( unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
LPTSTR lpszMessageID ); unsigned char lpszMessageID[64] );
STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID, STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage); unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);