javaextensions/pim/agnadapter/src.s60/cpimtodoadapteraccess.cpp
changeset 21 2a9601315dfc
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/pim/agnadapter/src.s60/cpimtodoadapteraccess.cpp	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* 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 todo adapter
+ *
+*/
+
+
+// INCLUDE FILES
+#include "cpimtodoadapteraccess.h"
+#include "cpimtodoadaptermanager.h"
+#include "cpimtodolistadapter.h"
+#include "mpimlocalizationmanager.h"
+#include "mpimlocalizationdata.h"
+#include "pimlocalizationids.h"
+#include "logger.h"
+
+// -----------------------------------------------------------------------------
+// CPIMToDoAdapterAccess::CPIMToDoAdapterAccess
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPIMToDoAdapterAccess::CPIMToDoAdapterAccess(
+    MPIMLocalizationManager* aLocalizationManager,
+    java::util::FunctionServer* aFuncServer) :
+        iLocalizationManager(aLocalizationManager), iFuncServer(aFuncServer)
+{
+    JELOG2(EPim);
+}
+
+void CPIMToDoAdapterAccess::ConstructL()
+{
+    JELOG2(EPim);
+    iToDoLocalizationData = iLocalizationManager->GetPIMLocalizationDataL(
+                                KPIMLocalizationIdToDo);
+
+    iToDoListNames = new(ELeave) CDesCArrayFlat(KPIMNumberOfToDoLists);
+    iNoListNames = new(ELeave) CDesCArrayFlat(1);  // will be left empty
+
+    HBufC* listName = iToDoLocalizationData->GetListNameL();
+    CleanupStack::PushL(listName);
+    iToDoListNames->AppendL(*listName);
+    CleanupStack::PopAndDestroy(listName);
+}
+
+// -----------------------------------------------------------------------------
+// CPIMToDoAdapterAccess::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CPIMToDoAdapterAccess* CPIMToDoAdapterAccess::NewL(
+    MPIMLocalizationManager* aLocalizationManager,
+    java::util::FunctionServer* aFuncServer) // not owned
+{
+    JELOG2(EPim);
+    CPIMToDoAdapterAccess * self =
+        new(ELeave) CPIMToDoAdapterAccess(aLocalizationManager, aFuncServer);
+
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+}
+
+// destructor
+CPIMToDoAdapterAccess::~CPIMToDoAdapterAccess()
+{
+    JELOG2(EPim);
+    delete iToDoLocalizationData;
+    delete iToDoListNames;
+    delete iNoListNames;
+}
+
+const CDesCArray& CPIMToDoAdapterAccess::ListNamesL(
+    const TPIMListType aListType)
+{
+    JELOG2(EPim);
+    if (aListType == EPIMToDoList)
+    {
+        return *iToDoListNames;
+    }
+    else
+    {
+        // no Contact or Event lists
+        return *iNoListNames;
+    }
+}
+
+TBool CPIMToDoAdapterAccess::OpenContactListL(const TDesC* /*aListName*/,
+        MPIMContactAdapterManager** /*aRetAdapterManager*/,
+        MPIMContactListAdapter** /*aRetListAdapter*/, MPIMLocalizationData** /*aRetLocalizationData*/)
+{
+    JELOG2(EPim);
+    // no Contact lists
+    return EFalse;
+}
+
+TBool CPIMToDoAdapterAccess::OpenEventListL(const TDesC* /*aListName*/,
+        MPIMEventAdapterManager** /*aRetAdapterManager*/,
+        MPIMEventListAdapter** /*aRetListAdapter*/, MPIMLocalizationData** /*aRetLocalizationData*/)
+{
+    JELOG2(EPim);
+    // no Event lists
+    return EFalse;
+}
+
+TBool CPIMToDoAdapterAccess::OpenToDoListL(const TDesC* aListName,
+        MPIMToDoAdapterManager** aRetAdapterManager,
+        MPIMToDoListAdapter** aRetListAdapter,
+        MPIMLocalizationData** aRetLocalizationData)
+{
+    JELOG2(EPim);
+    // There is exactly one ToDo list, which is the default ToDo list.
+
+    // If name is given, check that it matches the existing list name
+    if (aListName && (*aListName != (*iToDoListNames)[0]))
+    {
+        // Not found
+        return EFalse;
+    }
+
+    // OK, got this far - Open the Todo list
+
+    MPIMToDoAdapterManager* adapterManager = CPIMToDoAdapterManager::NewL(
+                (*iToDoListNames)[0]);
+    CleanupDeletePushL(adapterManager);
+
+    MPIMToDoListAdapter* listAdapter = CPIMToDoListAdapter::NewL(iFuncServer);
+    CleanupStack::Pop(adapterManager);
+
+    MPIMLocalizationData* localizationData = iToDoLocalizationData;
+
+    // Return values
+    *aRetAdapterManager = adapterManager;
+    *aRetListAdapter = listAdapter;
+    *aRetLocalizationData = localizationData;
+
+    return ETrue;
+}
+
+//  End of File