locationlandmarksrefappfors60/Src/LandmarksApplicationEngine.cpp
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationlandmarksrefappfors60/Src/LandmarksApplicationEngine.cpp	Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,413 @@
+/*
+* Copyright (c) 2004-2005 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:  Implementation of the application engine component interface.
+*
+*/
+
+
+
+#include <EPos_CPosLandmarkDatabase.h>
+
+#include "LmRefApp.hrh"
+#include "LandmarksApplicationEngine.h"
+#include "LandmarksCommonData.h"
+#include "LandmarksEngine.h"
+#include "LandmarksCategoriesEngine.h"
+#include "LandmarksDbEventHandler.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::CLandmarksApplicationEngine
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CLandmarksApplicationEngine::CLandmarksApplicationEngine()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::ConstructL()
+    {
+    iDb = CPosLandmarkDatabase::OpenL();
+    iLandmarksEngine = CLandmarksEngine::NewL(*iDb);
+    iCategoriesEngine = CLandmarksCategoriesEngine::NewL(*iDb);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CLandmarksApplicationEngine* CLandmarksApplicationEngine::NewL()
+    {
+    CLandmarksApplicationEngine* self = 
+        new (ELeave) CLandmarksApplicationEngine();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+CLandmarksApplicationEngine::~CLandmarksApplicationEngine()
+    {
+    delete iLandmarksEngine;
+    delete iCategoriesEngine;
+    delete iDbEventHandler;
+    delete iDb;
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::NotifyViewActivated
+// The engine that corresponds to an active view must have higher priority than
+// engines corresponding to deactivated views.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::NotifyViewActivated(
+    TUid aViewId, 
+    TBool aIsActive)
+    {
+    if (aViewId.iUid == ELandmarksViewId)
+        {
+        if (aIsActive)
+            {
+            iLandmarksEngine->SetPrio(CActive::EPriorityStandard);
+            }
+        else
+            {
+            iLandmarksEngine->SetPrio(CActive::EPriorityLow);
+            }
+        }
+    else if (aViewId.iUid == ELandmarksCategoriesViewId)
+        {
+        if (aIsActive)
+            {
+            iCategoriesEngine->SetPrio(CActive::EPriorityStandard);
+            }
+        else
+            {
+            iCategoriesEngine->SetPrio(CActive::EPriorityLow);
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartInitializeDbIfNecessaryL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TBool CLandmarksApplicationEngine::StartInitializeDbIfNecessaryL(
+    MLandmarksOperationObserver* aObserver)
+    {
+    return iLandmarksEngine->StartInitializeDbIfNecessaryL(aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::AddDbObserverL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::AddDbObserverL(
+    MLandmarksDbObserver* aObserver)
+    {
+    if (!iDbEventHandler)
+        {
+        iDbEventHandler = new (ELeave) CLandmarksDbEventHandler(*iDb);
+        }
+    iDbEventHandler->AddObserverL(aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::LandmarkLC
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CPosLandmark* CLandmarksApplicationEngine::LandmarkLC(TPosLmItemId aItemId)
+    {
+    return iDb->ReadLandmarkLC(aItemId);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::CommitLandmarkL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::CommitLandmarkL(
+    const CPosLandmark& aLandmark)
+    {
+    // We need to cancel any search/read operation in any view engine. 
+    // Otherwise database will be locked.
+    iLandmarksEngine->Cancel();
+    iCategoriesEngine->Cancel();
+
+    iLandmarksEngine->CommitLandmarkL(aLandmark);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::DeleteLandmarkL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::DeleteLandmarkL(TPosLmItemId aItemId)
+    {
+    // We need to cancel any search/read operation in any view engine. 
+    // Otherwise database will be locked.
+    iLandmarksEngine->Cancel();
+    iCategoriesEngine->Cancel();
+
+    iLandmarksEngine->DeleteLandmarkL(aItemId);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::AddLandmarkL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::AddLandmarkL(CPosLandmark& aLandmark)
+    {
+    // We need to cancel any search/read operation in any view engine. 
+    // Otherwise database will be locked.
+    iLandmarksEngine->Cancel();
+    iCategoriesEngine->Cancel();
+
+    iLandmarksEngine->AddLandmarkL(aLandmark);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartSearchingLandmarksL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::StartSearchingLandmarksL(
+    MLandmarksOperationObserver* aObserver)
+    {
+    iLandmarksEngine->StartSearchingLandmarksL(aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartSearchingLandmarksL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::StartSearchingLandmarksL(
+    const TDesC& aSearchPattern, 
+    TBool aSearchOnlyInPreviousMatches,
+    MLandmarksOperationObserver* aObserver)
+    {
+    iLandmarksEngine->StartSearchingLandmarksL(
+        aSearchPattern, 
+        aSearchOnlyInPreviousMatches, 
+        aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::FetchLandmarkSearchResultL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+RArray<TPosLmItemId>* CLandmarksApplicationEngine::FetchLandmarkSearchResult()
+    {
+    return iLandmarksEngine->FetchSearchResult();
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartReadingLandmarksL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::StartReadingLandmarksL(
+    TInt aNrOfItemsToReadPerBundle,
+    MLandmarksOperationObserver* aObserver)
+    {
+    iLandmarksEngine->StartReadingLandmarksL(
+        aNrOfItemsToReadPerBundle, 
+        aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::FetchLandmarksLC
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CArrayPtr<CPosLandmark>* CLandmarksApplicationEngine::FetchLandmarksLC()
+    {
+    return iLandmarksEngine->FetchLandmarksLC();
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::CategoryLC
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CPosLandmarkCategory* CLandmarksApplicationEngine::CategoryLC(
+    TPosLmItemId aItemId)
+    {
+    return iCategoriesEngine->CategoryLC(aItemId);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::DeleteCategoryL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::DeleteCategoryL(TPosLmItemId aItemId)
+    {
+    // We need to cancel any search/read operation in any view engine. 
+    // Otherwise database will be locked.
+    iLandmarksEngine->Cancel();
+    iCategoriesEngine->Cancel();
+
+    iCategoriesEngine->DeleteCategoryL(aItemId);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::UpdateCategoryL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::UpdateCategoryL(
+    const CPosLandmarkCategory& aCategory)
+    {
+    // We need to cancel any search/read operation in any view engine. 
+    // Otherwise database will be locked.
+    iLandmarksEngine->Cancel();
+    iCategoriesEngine->Cancel();
+
+    iCategoriesEngine->UpdateCategoryL(aCategory);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::AddCategoryL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::AddCategoryL(CPosLandmarkCategory& aCategory)
+    {
+    // We need to cancel any search/read operation in any view engine. 
+    // Otherwise database will be locked.
+    iLandmarksEngine->Cancel();
+    iCategoriesEngine->Cancel();
+
+    iCategoriesEngine->AddCategoryL(aCategory);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartSearchingCategoriesL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::StartSearchingCategoriesL(
+    const TDesC& aSearchPattern, 
+    TBool aSearchOnlyInPreviousMatches,
+    MLandmarksOperationObserver* aObserver)
+    {
+    iCategoriesEngine->StartSearchingCategoriesL(
+        aSearchPattern, 
+        aSearchOnlyInPreviousMatches, 
+        aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartSearchingCategoriesL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::StartSearchingCategoriesL(
+    MLandmarksOperationObserver* aObserver)
+    {
+    iCategoriesEngine->StartSearchingCategoriesL(aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::FetchCategorySearchResult
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+RArray<TPosLmItemId>* CLandmarksApplicationEngine::FetchCategorySearchResult()
+    {
+    return iCategoriesEngine->FetchSearchResult();
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::StartReadingCategoriesL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CLandmarksApplicationEngine::StartReadingCategoriesL(
+    TInt aNrOfItemsToReadPerBundle,
+    MLandmarksOperationObserver* aObserver)
+    {
+    iCategoriesEngine->StartReadingCategoriesL(
+        aNrOfItemsToReadPerBundle, aObserver);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::FetchCategoriesLC
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CArrayPtr<CPosLandmarkCategory>* CLandmarksApplicationEngine::FetchCategoriesLC()
+    {
+    return iCategoriesEngine->FetchCategoriesLC();
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarksApplicationEngine::CategoriesL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CArrayPtr<CPosLandmarkCategory>* CLandmarksApplicationEngine::CategoriesL()
+    {
+    return iCategoriesEngine->CategoriesL();
+    }
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+HBufC* CLandmarksApplicationEngine::DatabaseUriLC()
+    {
+    return iDb->DatabaseUriLC();
+    }
+
+