/*++ Copyright (c) 2000 Microsoft Corporation Module Name: FaxSender.cpp Abstract: Implementation of Fax Sender Interface Author: Iv Garber (IvG) Apr, 2000 Revision History: --*/ #include "stdafx.h" #include "FaxComEx.h" #include "FaxSender.h" #include "..\..\inc\FaxUIConstants.h" // //===================== GET SENDER PROFILE ===================================== // STDMETHODIMP CFaxSender::GetSenderProfile( FAX_PERSONAL_PROFILE *pSenderProfile ) /*++ Routine name : CFaxSender::GetSenderProfile Routine description: Fills the pSenderProfile with the data of the object. Author: Iv Garber (IvG), May, 2000 Arguments: pSenderProfile [out] - the FAX_PERSONAL_PROFILE struct to fill Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::GetSenderProfile"), hr); // // First fill the Recipient's fields // hr = m_Recipient.GetRecipientProfile(pSenderProfile); if (FAILED(hr)) { CALL_FAIL(GENERAL_ERR, _T("m_Recipient.GetRecipientProfile(pSenderProfile)"), hr); return hr; } // // now add Sender's fields // pSenderProfile->lptstrCity = m_bstrCity; pSenderProfile->lptstrCompany = m_bstrCompany; pSenderProfile->lptstrCountry = m_bstrCountry; pSenderProfile->lptstrEmail = m_bstrEmail; pSenderProfile->lptstrState = m_bstrState; pSenderProfile->lptstrTitle = m_bstrTitle; pSenderProfile->lptstrTSID = m_bstrTSID; pSenderProfile->lptstrZip = m_bstrZipCode; pSenderProfile->lptstrHomePhone = m_bstrHomePhone; pSenderProfile->lptstrDepartment = m_bstrDepartment; pSenderProfile->lptstrBillingCode = m_bstrBillingCode; pSenderProfile->lptstrOfficePhone = m_bstrOfficePhone; pSenderProfile->lptstrOfficeLocation = m_bstrOfficeLocation; pSenderProfile->lptstrStreetAddress = m_bstrStreetAddress; return hr; } // //============== PUT SENDER PROFILE ============================================ // STDMETHODIMP CFaxSender::PutSenderProfile( FAX_PERSONAL_PROFILE *pSenderProfile ) /*++ Routine name : CFaxSender::PutSenderProfile Routine description: Receives FAX_PERSONAL_PROFILE structure and fills the Object's fields. Author: Iv Garber (IvG), May, 2000 Arguments: pSenderProfile [in] - the data to put into the object's variables Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::PutSenderProfile"), hr); // // First put the Recipient fields // hr = m_Recipient.PutRecipientProfile(pSenderProfile); if (FAILED(hr)) { // // PutRecipientProfile handles the error case // CALL_FAIL(GENERAL_ERR, _T("m_Recipient.PutRecipientProfile(pSenderProfile)"), hr); return hr; } // // Now set Sender's fields // m_bstrCity = pSenderProfile->lptstrCity; m_bstrCompany = pSenderProfile->lptstrCompany; m_bstrCountry = pSenderProfile->lptstrCountry; m_bstrEmail = pSenderProfile->lptstrEmail; m_bstrHomePhone = pSenderProfile->lptstrHomePhone; m_bstrState = pSenderProfile->lptstrState; m_bstrZipCode = pSenderProfile->lptstrZip; m_bstrTitle = pSenderProfile->lptstrTitle; m_bstrTSID = pSenderProfile->lptstrTSID; m_bstrBillingCode = pSenderProfile->lptstrBillingCode; m_bstrDepartment = pSenderProfile->lptstrDepartment; m_bstrStreetAddress = pSenderProfile->lptstrStreetAddress; m_bstrOfficePhone = pSenderProfile->lptstrOfficePhone; m_bstrOfficeLocation = pSenderProfile->lptstrOfficeLocation; if ((pSenderProfile->lptstrCity && !m_bstrCity) || (pSenderProfile->lptstrCompany && !m_bstrCompany) || (pSenderProfile->lptstrCountry && !m_bstrCountry) || (pSenderProfile->lptstrEmail && !m_bstrEmail) || (pSenderProfile->lptstrHomePhone && !m_bstrHomePhone) || (pSenderProfile->lptstrState && !m_bstrState) || (pSenderProfile->lptstrZip && !m_bstrZipCode) || (pSenderProfile->lptstrTSID && !m_bstrTSID) || (pSenderProfile->lptstrBillingCode && !m_bstrBillingCode) || (pSenderProfile->lptstrDepartment && !m_bstrDepartment) || (pSenderProfile->lptstrStreetAddress && !m_bstrStreetAddress) || (pSenderProfile->lptstrOfficePhone && !m_bstrOfficePhone) || (pSenderProfile->lptstrOfficeLocation && !m_bstrOfficeLocation)) { // // Not enough memory // hr = E_OUTOFMEMORY; CALL_FAIL(MEM_ERR, _T("CComBSTR::operator=()"), hr); } return hr; } // //==================== DEFAULT SENDER =================================== // STDMETHODIMP CFaxSender::LoadDefaultSender ( ) /*++ Routine name : CFaxSender::LoadDefaultSender Routine description: Load Default Sender Information from the local Registry Author: Iv Garber (IvG), Apr, 2000 Arguments: NONE Return Value: Standard HRESULT code --*/ { FAX_PERSONAL_PROFILE DefaultSenderProfile; HRESULT hr; DBG_ENTER (TEXT("CFaxSender::LoadDefaultSender"), hr); DefaultSenderProfile.dwSizeOfStruct = sizeof(FAX_PERSONAL_PROFILE); hr = FaxGetSenderInformation(&DefaultSenderProfile); if (FAILED(hr)) { // // Failed to get Sender Information // AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); CALL_FAIL(GENERAL_ERR, _T("FaxGetSenderInformation()"), hr); return hr; } hr = PutSenderProfile(&DefaultSenderProfile); if (FAILED(hr)) { // // Not Enough Memory // AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); // // no return, we still need to free information // } HRESULT hr1 = FaxFreeSenderInformation(&DefaultSenderProfile); if (FAILED(hr1)) { hr = hr1; CALL_FAIL(GENERAL_ERR, _T("FaxFreeSenderInformation()"), hr); return hr; } return hr; } // // SaveAs // STDMETHODIMP CFaxSender::SaveDefaultSender ( ) /*++ Routine name : CFaxSender::SaveDefaultSender Routine description: Save current Profile as the Default in the Local Registry Author: Iv Garber (IvG), Apr, 2000 Arguments: NONE Return Value: Standard HRESULT code --*/ { FAX_PERSONAL_PROFILE DefaultSenderProfile; HRESULT hr; DBG_ENTER (TEXT("CFaxSender::SaveDefaultSender"), hr); hr = GetSenderProfile(&DefaultSenderProfile); ATLASSERT(SUCCEEDED(hr)); hr = FaxSetSenderInformation(&DefaultSenderProfile); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); CALL_FAIL(GENERAL_ERR, _T("FaxSetSenderInformation()"), hr); return hr; } return hr; } // //==================== INTERFACE SUPPORT ERROR INFO ===================== // STDMETHODIMP CFaxSender::InterfaceSupportsErrorInfo ( REFIID riid ) /*++ Routine name : CFaxSender::InterfaceSupportsErrorInfo Routine description: ATL's implementation of Support Error Info Author: Iv Garber (IvG), Apr, 2000 Arguments: riid [in] - Interface ID Return Value: Standard HRESULT code --*/ { static const IID* arr[] = { &IID_IFaxSender }; for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++) { if (InlineIsEqualGUID(*arr[i],riid)) return S_OK; } return S_FALSE; } // //==================== CREATE ======================================== // HRESULT CFaxSender::Create ( IFaxSender **ppSender ) /*++ Routine name : CFaxSender::Create Routine description: Static function to create the Fax Sender Instance Author: Iv Garber (IvG), Apr, 2000 Arguments: ppSender [out] -- the new Fax Sender Instance Return Value: Standard HRESULT code --*/ { CComObject *pClass; HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::Create"), hr); hr = CComObject::CreateInstance(&pClass); if (FAILED(hr)) { // // Failed to create Instance // CALL_FAIL(GENERAL_ERR, _T("CComObject::CreateInstance()"), hr); return hr; } hr = pClass->QueryInterface(__uuidof(IFaxSender), (void **) ppSender); if (FAILED(hr)) { CALL_FAIL(GENERAL_ERR, _T("QueryInterface()"), hr); return hr; } return hr; } // //==================== BILLING CODE ======================================== // STDMETHODIMP CFaxSender::get_BillingCode( BSTR *pbstrBillingCode ) /*++ Routine name : CFaxSender::get_BillingCode Routine description: return Billing Code Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrBillingCode [out] - the Billing Code Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_BillingCode"), hr); hr = GetBstr(pbstrBillingCode, m_bstrBillingCode); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_BillingCode ( BSTR bstrBillingCode ) /*++ Routine name : CFaxSender::put_BillingCode Routine description: Set Billing Code Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrBillingCode [in] - new Billing Code value Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_BillingCode"), hr, _T("%s"), bstrBillingCode); m_bstrBillingCode = bstrBillingCode; if (bstrBillingCode && !m_bstrBillingCode) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== CITY ======================================== // STDMETHODIMP CFaxSender::get_City( BSTR *pbstrCity ) /*++ Routine name : CFaxSender::get_City Routine description: return City Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrCity [out] - the City Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_City"), hr); hr = GetBstr(pbstrCity, m_bstrCity); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_City ( BSTR bstrCity ) /*++ Routine name : CFaxSender::put_City Routine description: Set City Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrCity [in] - new City value Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_City"), hr, _T("%s"), bstrCity); m_bstrCity = bstrCity; if (!m_bstrCity && bstrCity) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== COMPANY ======================================== // STDMETHODIMP CFaxSender::get_Company( BSTR *pbstrCompany ) /*++ Routine name : CFaxSender::get_Company Routine description: return Company Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrCompany [out] - the Company Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_Company"), hr); hr = GetBstr(pbstrCompany, m_bstrCompany); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_Company ( BSTR bstrCompany ) /*++ Routine name : CFaxSender::put_Company Routine description: Set Company Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrCompany [in] - new Company value Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_Company"), hr, _T("%s"), bstrCompany); m_bstrCompany = bstrCompany; if (!m_bstrCompany && bstrCompany) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== COUNTRY ======================================== // STDMETHODIMP CFaxSender::get_Country( BSTR *pbstrCountry ) /*++ Routine name : CFaxSender::get_Country Routine description: return Country Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrCountry [out] - the Country Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_Country"), hr); hr = GetBstr(pbstrCountry, m_bstrCountry); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_Country ( BSTR bstrCountry ) /*++ Routine name : CFaxSender::put_Country Routine description: Set Country Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrCountry [in] - new Country value Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_Country"), hr, _T("%s"), bstrCountry); m_bstrCountry = bstrCountry; if (!m_bstrCountry && bstrCountry) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== DEPARTMENT ======================================== // STDMETHODIMP CFaxSender::get_Department( BSTR *pbstrDepartment ) /*++ Routine name : CFaxSender::get_Department Routine description: return Department Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrDepartment [out] - the Department Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_Department"), hr); hr = GetBstr(pbstrDepartment, m_bstrDepartment); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_Department ( BSTR bstrDepartment ) /*++ Routine name : CFaxSender::put_Department Routine description: Set Department Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrDepartment [in] - new Department value Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_Department"), hr, _T("%s"), bstrDepartment); m_bstrDepartment = bstrDepartment; if (!m_bstrDepartment && bstrDepartment) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== EMAIL ======================================== // STDMETHODIMP CFaxSender::get_Email( BSTR *pbstrEmail ) /*++ Routine name : CFaxSender::get_Email Routine description: return Email Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrEmail [out] - the Email Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_Email"), hr); hr = GetBstr(pbstrEmail, m_bstrEmail); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_Email ( BSTR bstrEmail ) /*++ Routine name : CFaxSender::put_Email Routine description: Set Email Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrEmail [in] - new Email value Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_Email"), hr, _T("%s"), bstrEmail); m_bstrEmail = bstrEmail; if (!m_bstrEmail && bstrEmail) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== HOME PHONE ======================================== // STDMETHODIMP CFaxSender::get_HomePhone( BSTR *pbstrHomePhone ) /*++ Routine name : CFaxSender::get_HomePhone Routine description: return HomePhone Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrHomePhone [out] - the HomePhone Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_HomePhone"), hr); hr = GetBstr(pbstrHomePhone, m_bstrHomePhone); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_HomePhone ( BSTR bstrHomePhone ) /*++ Routine name : CFaxSender::put_HomePhone Routine description: Set HomePhone Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrHomePhone [in] - new HomePhone Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_HomePhone"), hr, _T("%s"), bstrHomePhone); m_bstrHomePhone = bstrHomePhone; if (!m_bstrHomePhone && bstrHomePhone) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== TSID ======================================== // STDMETHODIMP CFaxSender::get_TSID( BSTR *pbstrTSID ) /*++ Routine name : CFaxSender::get_TSID Routine description: return TSID Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrTSID [out] - the TSID Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_TSID"), hr); hr = GetBstr(pbstrTSID, m_bstrTSID); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_TSID ( BSTR bstrTSID ) /*++ Routine name : CFaxSender::put_TSID Routine description: Set TSID Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrTSID [in] - new TSID Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_TSID"), hr, _T("%s"), bstrTSID); if (SysStringLen(bstrTSID) > FXS_TSID_CSID_MAX_LENGTH) { // // Out of the Range // hr = E_INVALIDARG; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFRANGE, IID_IFaxSender, hr); CALL_FAIL(GENERAL_ERR, _T("TSID is too long"), hr); return hr; } m_bstrTSID = bstrTSID; if (!m_bstrTSID && bstrTSID) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== OFFICE PHONE ======================================== // STDMETHODIMP CFaxSender::get_OfficePhone( BSTR *pbstrOfficePhone ) /*++ Routine name : CFaxSender::get_OfficePhone Routine description: return OfficePhone Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrOfficePhone [out] - the OfficePhone Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_OfficePhone"), hr); hr = GetBstr(pbstrOfficePhone, m_bstrOfficePhone); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_OfficePhone ( BSTR bstrOfficePhone ) /*++ Routine name : CFaxSender::put_OfficePhone Routine description: Set OfficePhone Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrOfficePhone [in] - new OfficePhone Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_OfficePhone"), hr, _T("%s"), bstrOfficePhone); m_bstrOfficePhone = bstrOfficePhone; if (!m_bstrOfficePhone && bstrOfficePhone) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== OFFICE LOCATION ======================================== // STDMETHODIMP CFaxSender::get_OfficeLocation( BSTR *pbstrOfficeLocation ) /*++ Routine name : CFaxSender::get_OfficeLocation Routine description: return OfficeLocation Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrOfficeLocation [out] - the OfficeLocation Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_OfficeLocation"), hr); hr = GetBstr(pbstrOfficeLocation, m_bstrOfficeLocation); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_OfficeLocation ( BSTR bstrOfficeLocation ) /*++ Routine name : CFaxSender::put_OfficeLocation Routine description: Set OfficeLocation Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrOfficeLocation [in] - new OfficeLocation Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_OfficeLocation"), hr, _T("%s"), bstrOfficeLocation); m_bstrOfficeLocation = bstrOfficeLocation; if (!m_bstrOfficeLocation && bstrOfficeLocation) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== STATE ======================================== // STDMETHODIMP CFaxSender::get_State( BSTR *pbstrState ) /*++ Routine name : CFaxSender::get_State Routine description: return State Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrState [out] - the State Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_State"), hr); hr = GetBstr(pbstrState, m_bstrState); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_State ( BSTR bstrState ) /*++ Routine name : CFaxSender::put_State Routine description: Set State Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrState [in] - new State Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_State"), hr, _T("%s"), bstrState); m_bstrState = bstrState; if (!m_bstrState && bstrState) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== STREET ADDRESS ======================================== // STDMETHODIMP CFaxSender::get_StreetAddress ( BSTR *pbstrStreetAddress ) /*++ Routine name : CFaxSender::get_StreetAddress Routine description: return StreetAddress Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrStreetAddress [out] - the StreetAddress Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_StreetAddress"), hr); hr = GetBstr(pbstrStreetAddress, m_bstrStreetAddress); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_StreetAddress ( BSTR bstrStreetAddress ) /*++ Routine name : CFaxSender::put_StreetAddress Routine description: Set StreetAddress Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrStreetAddress [in] - new StreetAddress Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_StreetAddress"), hr, _T("%s"), bstrStreetAddress); m_bstrStreetAddress = bstrStreetAddress; if (!m_bstrStreetAddress && bstrStreetAddress) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== TITLE ======================================== // STDMETHODIMP CFaxSender::get_Title ( BSTR *pbstrTitle ) /*++ Routine name : CFaxSender::get_Title Routine description: return Title Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrTitle [out] - the Title Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_Title"), hr); hr = GetBstr(pbstrTitle, m_bstrTitle); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_Title ( BSTR bstrTitle ) /*++ Routine name : CFaxSender::put_Title Routine description: Set Title Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrTitle [in] - new Title Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_Title"), hr, _T("%s"), bstrTitle); m_bstrTitle = bstrTitle; if (!m_bstrTitle && bstrTitle) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== ZIP CODE ======================================== // STDMETHODIMP CFaxSender::get_ZipCode ( BSTR *pbstrZipCode ) /*++ Routine name : CFaxSender::get_ZipCode Routine description: return ZipCode Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrZipCode [out] - the ZipCode Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (TEXT("CFaxSender::get_ZipCode"), hr); hr = GetBstr(pbstrZipCode, m_bstrZipCode); if (FAILED(hr)) { AtlReportError(CLSID_FaxSender, GetErrorMsgId(hr), IID_IFaxSender, hr); return hr; } return hr; } STDMETHODIMP CFaxSender::put_ZipCode ( BSTR bstrZipCode ) /*++ Routine name : CFaxSender::put_ZipCode Routine description: Set ZipCode Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrZipCode [in] - new ZipCode Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_ZipCode"), hr, _T("%s"), bstrZipCode); m_bstrZipCode = bstrZipCode; if (!m_bstrZipCode && bstrZipCode) { // // Not enough memory // hr = E_OUTOFMEMORY; AtlReportError(CLSID_FaxSender, IDS_ERROR_OUTOFMEMORY, IID_IFaxSender, hr); CALL_FAIL(MEM_ERR, _T("CComBSTR::operator="), hr); return hr; } return hr; } // //==================== FAX NUMBER ======================================== // STDMETHODIMP CFaxSender::get_FaxNumber( BSTR *pbstrFaxNumber ) /*++ Routine name : CFaxSender::get_FaxNumber Routine description: return FaxNumber Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrFaxNumber [out] - the FaxNumber Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::get_FaxNumber"), hr); hr = m_Recipient.get_FaxNumber(pbstrFaxNumber); return hr; } STDMETHODIMP CFaxSender::put_FaxNumber ( BSTR bstrFaxNumber ) /*++ Routine name : CFaxSender::put_FaxNumber Routine description: Set FaxNumber Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrFaxNumber [in] - new Fax Number Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxSender::put_FaxNumber"), hr, _T("%s"), bstrFaxNumber); hr = m_Recipient.put_FaxNumber(bstrFaxNumber); return hr; } // //==================== NAME ======================================== // STDMETHODIMP CFaxSender::get_Name( BSTR *pbstrName ) /*++ Routine name : CFaxSender::get_Name Routine description: return Name Author: Iv Garber (IvG), Apr, 2000 Arguments: pbstrName [out] - the Name Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::get_Name"), hr); hr = m_Recipient.get_Name(pbstrName); return hr; } STDMETHODIMP CFaxSender::put_Name ( BSTR bstrName ) /*++ Routine name : CFaxSender::put_Name Routine description: Set Name Author: Iv Garber (IvG), Apr, 2000 Arguments: bstrName [in] - new Name Return Value: Standard HRESULT code --*/ { HRESULT hr = S_OK; DBG_ENTER (_T("CFaxSender::put_Name"), hr, _T("%s"), bstrName); hr = m_Recipient.put_Name(bstrName); return hr; }