/** * @file XTPCalendarCustomDataProvider.cpp * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ #include "stdafx.h" #include "Common/XTPCasting.h" #include "Common/XTPFramework.h" #include "Common/XTPSmartPtrInternalT.h" #include "Calendar/XTPCalendarDefines.h" #include "Calendar/XTPCalendarNotifications.h" #include "Calendar/XTPCalendarData.h" #include "Calendar/XTPCalendarCustomDataProvider.h" #include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif IMPLEMENT_DYNAMIC(CXTPCalendarCustomDataProvider, CXTPCalendarData) CXTPCalendarCustomDataProvider::CXTPCalendarCustomDataProvider() { m_typeProvider = xtpCalendarDataProviderCustom; SetCacheMode(xtpCalendarDPCacheModeOnRepeat); } CXTPCalendarCustomDataProvider::~CXTPCalendarCustomDataProvider() { } void CXTPCalendarCustomDataProvider::Close() { if (!IsOpen()) { CXTPCalendarData::Open(); } CXTPCalendarData::Close(); } CXTPCalendarEventsPtr CXTPCalendarCustomDataProvider::DoRetrieveDayEvents(COleDateTime dtDay) { CXTPCalendarEventsPtr ptrEvents; WPARAM wParam = XTPToWPARAM((XTP_DATE_VALUE)(double)dtDay); LPARAM lParam = (LPARAM)&ptrEvents; SendNotification(XTP_NC_CALENDAR_DoRetrieveDayEvents, wParam, lParam); return ptrEvents; } void CXTPCalendarCustomDataProvider::DoRemoveAllEvents() { SendNotification(XTP_NC_CALENDAR_DoRemoveAllEvents, 0, 0); } CXTPCalendarEventPtr CXTPCalendarCustomDataProvider::DoRead_Event(DWORD dwEventID) { CXTPCalendarEventPtr ptrEvent; WPARAM wParam = (WPARAM)dwEventID; LPARAM lParam = (LPARAM)&ptrEvent; SendNotification(XTP_NC_CALENDAR_DoRead_Event, wParam, lParam); return ptrEvent; } CXTPCalendarRecurrencePatternPtr CXTPCalendarCustomDataProvider::DoRead_RPattern(DWORD dwPatternID) { CXTPCalendarRecurrencePatternPtr ptrPattern; WPARAM wParam = (WPARAM)dwPatternID; LPARAM lParam = (LPARAM)&ptrPattern; SendNotification(XTP_NC_CALENDAR_DoRead_RPattern, wParam, lParam); return ptrPattern; } BOOL CXTPCalendarCustomDataProvider::DoCreate_Event(CXTPCalendarEvent* pEvent, DWORD& rdwNewEventID) { BOOL bResult = -1; XTP_CALENDAR_WPARAM2 wParamX2; wParamX2.wParam1 = (WPARAM)pEvent; wParamX2.wParam2 = (WPARAM)&rdwNewEventID; WPARAM wParam = (WPARAM)&wParamX2; LPARAM lParam = (LPARAM)&bResult; SendNotification(XTP_NC_CALENDAR_DoCreate_Event, wParam, lParam); return bResult > 0; } BOOL CXTPCalendarCustomDataProvider::DoUpdate_Event(CXTPCalendarEvent* pEvent) { BOOL bResult = -1; WPARAM wParam = (WPARAM)pEvent; LPARAM lParam = (LPARAM)&bResult; SendNotification(XTP_NC_CALENDAR_DoUpdate_Event, wParam, lParam); return bResult > 0; } BOOL CXTPCalendarCustomDataProvider::DoDelete_Event(CXTPCalendarEvent* pEvent) { BOOL bResult = -1; WPARAM wParam = (WPARAM)pEvent; LPARAM lParam = (LPARAM)&bResult; SendNotification(XTP_NC_CALENDAR_DoDelete_Event, wParam, lParam); return bResult > 0; } BOOL CXTPCalendarCustomDataProvider::DoCreate_RPattern(CXTPCalendarRecurrencePattern* pPattern, DWORD& rdwNewPatternID) { BOOL bResult = -1; XTP_CALENDAR_WPARAM2 wParamX2; wParamX2.wParam1 = (WPARAM)pPattern; wParamX2.wParam2 = (WPARAM)&rdwNewPatternID; WPARAM wParam = (WPARAM)&wParamX2; LPARAM lParam = (LPARAM)&bResult; SendNotification(XTP_NC_CALENDAR_DoCreate_RPattern, wParam, lParam); return bResult > 0; } BOOL CXTPCalendarCustomDataProvider::DoUpdate_RPattern(CXTPCalendarRecurrencePattern* pPattern) { BOOL bResult = -1; WPARAM wParam = (WPARAM)pPattern; LPARAM lParam = (LPARAM)&bResult; SendNotification(XTP_NC_CALENDAR_DoUpdate_RPattern, wParam, lParam); return bResult > 0; } BOOL CXTPCalendarCustomDataProvider::DoDelete_RPattern(CXTPCalendarRecurrencePattern* pPattern) { BOOL bResult = -1; WPARAM wParam = (WPARAM)pPattern; LPARAM lParam = (LPARAM)&bResult; SendNotification(XTP_NC_CALENDAR_DoDelete_RPattern, wParam, lParam); return bResult > 0; } CXTPCalendarEventsPtr CXTPCalendarCustomDataProvider::DoGetAllEvents_raw() { CXTPCalendarEventsPtr ptrEvents; WPARAM wParam = 0; LPARAM lParam = (LPARAM)&ptrEvents; SendNotification(XTP_NC_CALENDAR_DoGetAllEvents_raw, wParam, lParam); return ptrEvents; } CXTPCalendarEventsPtr CXTPCalendarCustomDataProvider::DoGetUpcomingEvents(COleDateTime dtFrom, COleDateTimeSpan spPeriod) { CXTPCalendarEventsPtr ptrEvents; XTP_CALENDAR_WPARAM2 wParamX2; wParamX2.wParam1 = (WPARAM)&dtFrom; wParamX2.wParam2 = (WPARAM)&spPeriod; WPARAM wParam = (WPARAM)&wParamX2; LPARAM lParam = (LPARAM)&ptrEvents; SendNotification(XTP_NC_CALENDAR_DoGetUpcomingEvents, wParam, lParam); return ptrEvents; }