You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
5.7 KiB
228 lines
5.7 KiB
/*
|
|
* s e s s i o n . c p p
|
|
*
|
|
* Purpose:
|
|
* Implements the OE-MOM 'Session' object
|
|
*
|
|
* History
|
|
*
|
|
* Copyright (C) Microsoft Corp. 1995, 1996.
|
|
*/
|
|
#include <pch.hxx>
|
|
#include "msoeobj.h"
|
|
|
|
#include "session.h"
|
|
#include "folders.h"
|
|
#include "instance.h"
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: Constructor
|
|
//
|
|
// Synopsis:
|
|
//
|
|
//
|
|
//---------------------------------------------------------------
|
|
COESession::COESession(IUnknown *pUnkOuter) : CBaseDisp(pUnkOuter)
|
|
{
|
|
Assert (g_pInstance);
|
|
CoIncrementInit("COESession::COESession", MSOEAPI_START_SHOWERRORS, NULL, NULL);
|
|
}
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: Destructor
|
|
//
|
|
// Synopsis:
|
|
//
|
|
//
|
|
//---------------------------------------------------------------
|
|
COESession::~COESession()
|
|
{
|
|
Assert (g_pInstance);
|
|
CoDecrementInit("COESession::COESession", NULL);
|
|
}
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: Init
|
|
//
|
|
// Synopsis:
|
|
// Constructor that can fail
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::Init()
|
|
{
|
|
return CBaseDisp::EnsureTypeLibrary((LPVOID *)(IOESession *)this, IID_IOESession);
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: PrivateQueryInterface
|
|
//
|
|
// Synopsis:
|
|
// Exposes supported interfaces
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::PrivateQueryInterface(REFIID riid, LPVOID *lplpObj)
|
|
{
|
|
if(!lplpObj)
|
|
return E_INVALIDARG;
|
|
|
|
*lplpObj = NULL;
|
|
|
|
if (IsEqualIID(riid, IID_IUnknown))
|
|
*lplpObj = (LPVOID)(IOESession *)this;
|
|
else if (IsEqualIID(riid, IID_IOESession))
|
|
*lplpObj = (LPVOID)(IOESession *)this;
|
|
else
|
|
return CBaseDisp::PrivateQueryInterface(riid, lplpObj);
|
|
|
|
AddRef();
|
|
return NOERROR;
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: get_folders
|
|
//
|
|
// Synopsis:
|
|
// Returns the rootnode folder collection, representing
|
|
// the top-most part of the OE heirarchy.
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::get_folders(IOEFolderCollection **p)
|
|
{
|
|
return CreateFolderCollection(FOLDERID_ROOT, p);
|
|
}
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: get_version
|
|
//
|
|
// Synopsis:
|
|
// Returns version information for OE.
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::get_version(BSTR *pbstr)
|
|
{
|
|
// BUGBUG: build from OE string and APPVER
|
|
*pbstr = SysAllocString(L"Outlook Express 6.0");
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: createMessage
|
|
//
|
|
// Synopsis:
|
|
// Creates a new message object not associcated with
|
|
// any folder, until it is saved or sent
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::createMessage(IOEMessage **ppNewMsg)
|
|
{
|
|
ReportError(CLSID_OESession, idsNYITitle);
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: get_inbox
|
|
//
|
|
// Synopsis:
|
|
// Allows fast access to the default inbox folder
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::get_inbox(IOEFolder **ppFolder)
|
|
{
|
|
ReportError(CLSID_OESession, idsNYITitle);
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: openFolder
|
|
//
|
|
// Synopsis:
|
|
// Quick access to a folder by ID
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::openFolder(LONG idFolder, IOEFolder **ppFolder)
|
|
{
|
|
ReportError(CLSID_OESession, idsNYITitle);
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: openMessage
|
|
//
|
|
// Synopsis:
|
|
// Quick access to a message by ID and folder
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::openMessage(LONG idFolder, LONG idMessage, IOEMessage **ppOEMsg)
|
|
{
|
|
ReportError(CLSID_OESession, idsNYITitle);
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: InterfaceSupportsErrorInfo
|
|
//
|
|
// Synopsis:
|
|
// Override CBaseDisp's method to provide error
|
|
// information
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT COESession::InterfaceSupportsErrorInfo(REFIID riid)
|
|
{
|
|
if (IsEqualIID(riid, IID_IOESession))
|
|
return S_OK;
|
|
|
|
return CBaseDisp::InterfaceSupportsErrorInfo(riid);
|
|
}
|
|
|
|
|
|
|
|
|
|
//+---------------------------------------------------------------
|
|
//
|
|
// Member: CreateInstance_OESession
|
|
//
|
|
// Synopsis:
|
|
// Class Factory helper for OE Session object
|
|
//
|
|
//---------------------------------------------------------------
|
|
HRESULT CreateInstance_OESession(IUnknown *pUnkOuter, IUnknown **ppUnknown)
|
|
{
|
|
// Locals
|
|
COESession *pNew=NULL;
|
|
HRESULT hr=S_OK;
|
|
|
|
pNew = new COESession(pUnkOuter);
|
|
if (!pNew)
|
|
return E_OUTOFMEMORY;
|
|
|
|
hr = pNew->Init();
|
|
if (FAILED(hr))
|
|
goto error;
|
|
|
|
*ppUnknown = (IUnknown *)(IOESession *)pNew;
|
|
pNew=NULL; // don't release
|
|
|
|
error:
|
|
ReleaseObj(pNew);
|
|
return hr;
|
|
}
|
|
|
|
|
|
|
|
|