--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/pim/agnadapter/src.s60/cpimeventadapteraccess.cpp Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,256 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Provides access to Agenda Model event adapters
+ *
+*/
+
+
+// INCLUDE FILES
+#include "cpimeventadapteraccess.h"
+#include "cpimapptadaptermanager.h"
+#include "cpimmemoadaptermanager.h"
+#include "cpimannivadaptermanager.h"
+#include "cpimagnapptadapter.h"
+#include "cpimagnmemoadapter.h"
+#include "cpimagnannivadapter.h"
+#include "mpimlocalizationmanager.h"
+#include "mpimlocalizationdata.h"
+#include "pimlocalizationids.h"
+#include "logger.h"
+
+// -----------------------------------------------------------------------------
+// CPIMEventAdapterAccess::CPIMEventAdapterAccess
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPIMEventAdapterAccess::CPIMEventAdapterAccess(
+ MPIMLocalizationManager* aLocalizationManager,
+ java::util::FunctionServer* aFuncServer) // not owned
+ :
+ iLocalizationManager(aLocalizationManager), iFuncServer(aFuncServer)
+{
+ JELOG2(EPim);
+}
+
+void CPIMEventAdapterAccess::ConstructL()
+{
+ JELOG2(EPim);
+ iEventListNames = new(ELeave) CDesCArrayFlat(KPIMNumberOfEventLists);
+
+ // will be left empty
+ iNoListNames = new(ELeave) CDesCArrayFlat(1);
+
+ // Order of lists matters:
+ // Appointments - Events (Memos) - Anniversaries
+ // See OpenEventListL().
+
+ iApptLocalizationData = iLocalizationManager->GetPIMLocalizationDataL(
+ KPIMLocalizationIdEvent, KPIMListNameIdAppointment);
+
+ iMemoLocalizationData = iLocalizationManager->GetPIMLocalizationDataL(
+ KPIMLocalizationIdEvent, KPIMListNameIdEvent);
+
+ iAnnivLocalizationData = iLocalizationManager->GetPIMLocalizationDataL(
+ KPIMLocalizationIdEvent, KPIMListNameIdAnniversary);
+
+ HBufC* listName = NULL; // reused
+
+ // Order of lists matters, see above.
+
+ listName = iApptLocalizationData->GetListNameL();
+ CleanupStack::PushL(listName);
+ iEventListNames->AppendL(*listName);
+ CleanupStack::PopAndDestroy(listName);
+
+ listName = iMemoLocalizationData->GetListNameL();
+ CleanupStack::PushL(listName);
+ iEventListNames->AppendL(*listName);
+ CleanupStack::PopAndDestroy(listName);
+
+ listName = iAnnivLocalizationData->GetListNameL();
+ CleanupStack::PushL(listName);
+ iEventListNames->AppendL(*listName);
+ CleanupStack::PopAndDestroy(listName);
+}
+
+// -----------------------------------------------------------------------------
+// CPIMEventAdapterAccess::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CPIMEventAdapterAccess* CPIMEventAdapterAccess::NewL(
+ MPIMLocalizationManager* aLocalizationManager,
+ java::util::FunctionServer* aFuncServer) // not owned
+{
+ JELOG2(EPim);
+ CPIMEventAdapterAccess * self =
+ new(ELeave) CPIMEventAdapterAccess(aLocalizationManager, aFuncServer);
+
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// destructor
+CPIMEventAdapterAccess::~CPIMEventAdapterAccess()
+{
+ JELOG2(EPim);
+ delete iEventListNames;
+ delete iNoListNames;
+ delete iApptLocalizationData;
+ delete iMemoLocalizationData;
+ delete iAnnivLocalizationData;
+}
+
+const CDesCArray& CPIMEventAdapterAccess::ListNamesL(
+ const TPIMListType aListType)
+{
+ JELOG2(EPim);
+ if (aListType == EPIMEventList)
+ {
+ return *iEventListNames;
+ }
+ else
+ {
+ // no Event or ToDo lists
+ return *iNoListNames;
+ }
+}
+
+TBool CPIMEventAdapterAccess::OpenContactListL(const TDesC* /*aListName*/,
+ MPIMContactAdapterManager** /*aRetAdapterManager*/,
+ MPIMContactListAdapter** /*aRetListAdapter*/, MPIMLocalizationData** /*aRetLocalizationData*/)
+{
+ JELOG2(EPim);
+ // no Contact lists
+ return EFalse;
+}
+
+TBool CPIMEventAdapterAccess::OpenEventListL(const TDesC* aListName,
+ MPIMEventAdapterManager** aRetAdapterManager,
+ MPIMEventListAdapter** aRetListAdapter,
+ MPIMLocalizationData** aRetLocalizationData)
+{
+ JELOG2(EPim);
+ // Open named Event list or the default list if no name given
+ TPIMLocalizationDataID listId = KPIMListNameIdAppointment; // default
+
+ // Order of lists is Appointments - Memos - Anniversaries
+
+ if (aListName)
+ {
+ TInt listNamePos(0);
+ if (0 == iEventListNames->Find(*aListName, listNamePos))
+ {
+ listId = TPIMLocalizationDataID(listNamePos);
+ }
+ else
+ {
+ // List not found
+ return EFalse;
+ }
+ }
+
+ // OK, we have now identified the list - open it
+
+ MPIMEventAdapterManager* adapterManager = NULL;
+ MPIMEventListAdapter* listAdapter = NULL;
+ MPIMLocalizationData* localizationData = NULL;
+
+ switch (listId)
+ {
+ case EPIMEventListAppointment:
+ {
+ adapterManager = CPIMApptAdapterManager::NewL(
+ (*iEventListNames)[listId]);
+ CleanupDeletePushL(adapterManager);
+
+ CPIMAgnApptAdapter* adapter = CPIMAgnApptAdapter::NewL(iFuncServer);
+ CleanupStack::PushL(adapter);
+
+ listAdapter = CPIMEventListAdapter::NewL(CCalEntry::EAppt, adapter,
+ iFuncServer);
+
+ CleanupStack::Pop(adapter);
+ CleanupStack::Pop(adapterManager);
+
+ localizationData = iApptLocalizationData;
+
+ break;
+ }
+ case EPIMEventListEvent:
+ {
+ adapterManager = CPIMMemoAdapterManager::NewL(
+ (*iEventListNames)[listId]);
+ CleanupDeletePushL(adapterManager);
+
+ CPIMAgnMemoAdapter* adapter = CPIMAgnMemoAdapter::NewL(iFuncServer);
+ CleanupStack::PushL(adapter);
+
+ listAdapter = CPIMEventListAdapter::NewL(CCalEntry::EEvent, adapter,
+ iFuncServer);
+
+ CleanupStack::Pop(adapter);
+ CleanupStack::Pop(adapterManager);
+
+ localizationData = iMemoLocalizationData;
+
+ break;
+ }
+ case EPIMEventListAnniversary:
+ {
+ adapterManager = CPIMAnnivAdapterManager::NewL(
+ (*iEventListNames)[listId]);
+ CleanupDeletePushL(adapterManager);
+
+ CPIMAgnAnnivAdapter* adapter = CPIMAgnAnnivAdapter::NewL(iFuncServer);
+ CleanupStack::PushL(adapter);
+
+ listAdapter = CPIMEventListAdapter::NewL(CCalEntry::EAnniv, adapter,
+ iFuncServer);
+
+ CleanupStack::Pop(adapter);
+ CleanupStack::Pop(adapterManager);
+
+ localizationData = iAnnivLocalizationData;
+
+ break;
+ }
+ default:
+ {
+ // We should never end up here (but if we do, the list name
+ // mappings are not OK)
+ User::Leave(KErrCorrupt);
+ }
+ }
+
+ *aRetAdapterManager = adapterManager;
+ *aRetListAdapter = listAdapter;
+ *aRetLocalizationData = localizationData;
+
+ return ETrue;
+}
+
+TBool CPIMEventAdapterAccess::OpenToDoListL(const TDesC* /*aListName*/,
+ MPIMToDoAdapterManager** /*aRetAdapterManager*/,
+ MPIMToDoListAdapter** /*aRetListAdapter*/, MPIMLocalizationData** /*aRetLocalizationData*/)
+{
+ JELOG2(EPim);
+ // no ToDo lists
+ return EFalse;
+}
+
+// End of File