STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID, unsigned long flFlags, unsigned long ulReserved) { PRInt32 irv; nsCAutoString keyString((char *) lpszMessageID); nsMsgKey msgKey = keyString.ToInteger(&irv); if (irv) return SUCCESS_SUCCESS; MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) return ret; return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE; }
extern "C" PRBool MsgMarkMapiMessageRead (nsIMsgFolder *folder, nsMsgKey key, PRBool read) { PRBool success = FALSE; MsgMapiListContext *context = new MsgMapiListContext(); if (context) { if (NS_SUCCEEDED(context->OpenDatabase(folder))) { if (NS_SUCCEEDED(context->MarkRead (key, read))) success = TRUE; } delete context; } return success; }
STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID, unsigned long flFlags, unsigned long ulReserved) { nsresult irv; nsAutoCString keyString((char *) lpszMessageID); nsMsgKey msgKey = keyString.ToInteger(&irv); // XXX Why do we return success on failure? if (NS_FAILED(irv)) return SUCCESS_SUCCESS; MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) return ret; return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE; }
/* Return TRUE on success, FALSE on failure */ extern "C" PRBool MSG_DeleteMapiMessage(nsIMsgFolder *folder, nsMsgKey key) { PRBool success = FALSE; MsgMapiListContext *context = new MsgMapiListContext(); if (context) { if (NS_SUCCEEDED(context->OpenDatabase(folder))) { success = context->DeleteMessage(key); } delete context; } return success; }
STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType, LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved, unsigned char lpszMessageID[64]) { // // If this is true, then this is the first call to this FindNext function // and we should start the enumeration operation. // *lpszMessageID = '\0'; nsMAPIConfiguration * pMapiConfig = nsMAPIConfiguration::GetMAPIConfiguration() ; if (!pMapiConfig) { NS_ASSERTION(PR_FALSE, "failed to get config in findnext"); return NS_ERROR_FAILURE ; // get the singelton obj } MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) { NS_ASSERTION(PR_FALSE, "init context failed"); return ret; } NS_ASSERTION(listContext, "initContext returned null context"); if (listContext) { // NS_ASSERTION(PR_FALSE, "find next init context succeeded"); nsMsgKey nextKey = listContext->GetNext(); if (nextKey == nsMsgKey_None) { pMapiConfig->SetMapiListContext(aSession, NULL); delete listContext; return(MAPI_E_NO_MESSAGES); } // TRACE("MAPI: ProcessMAPIFindNext() Found message id = %d\n", nextKey); sprintf((char *) lpszMessageID, "%d", nextKey); } PR_LOG(MAPI, PR_LOG_DEBUG, ("CMapiImp::FindNext returning key %s\n", (char *) lpszMessageID)); return(SUCCESS_SUCCESS); }
STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID, unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage) { PRInt32 irv; nsCAutoString keyString((char *) lpszMessageID); PR_LOG(MAPI, PR_LOG_DEBUG, ("CMapiImp::ReadMail asking for key %s\n", (char *) lpszMessageID)); nsMsgKey msgKey = keyString.ToInteger(&irv); if (irv) { NS_ASSERTION(PR_FALSE, "invalid lpszMessageID"); return MAPI_E_INVALID_MESSAGE; } MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) { NS_ASSERTION(PR_FALSE, "init context failed in ReadMail"); return ret; } *lppMessage = listContext->GetMessage (msgKey, flFlags); NS_ASSERTION(*lppMessage, "get message failed"); return (*lppMessage) ? SUCCESS_SUCCESS : E_FAIL; }
STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID, unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage) { nsresult irv; nsAutoCString keyString((char *) lpszMessageID); MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::ReadMail asking for key %s\n", (char *) lpszMessageID)); nsMsgKey msgKey = keyString.ToInteger(&irv); if (NS_FAILED(irv)) { NS_ASSERTION(false, "invalid lpszMessageID"); return MAPI_E_INVALID_MESSAGE; } MsgMapiListContext *listContext; LONG ret = InitContext(aSession, &listContext); if (ret != SUCCESS_SUCCESS) { NS_ASSERTION(false, "init context failed in ReadMail"); return ret; } *lppMessage = listContext->GetMessage (msgKey, flFlags); NS_ASSERTION(*lppMessage, "get message failed"); return (*lppMessage) ? SUCCESS_SUCCESS : E_FAIL; }