/*
* Copyright (c) 2005-2009 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:
*
*/
/**
@file
@internalComponent
@released
*/
#ifndef CCNTPERMANENTDATA_H_
#define CCNTPERMANENTDATA_H_
#include <cntviewbase.h>
class CCntDbManagerController;
class CCntDbManager;
class CContactDefaultViewDefinition;
/**
This class manages permanent data created during Server start-up.
*/
class CCntPermanentData : public CActive, public MContactViewObserver
{
private:
enum TState
{
EStateInitial = 0,
EStateOpeningDb,
EStateOpeningView,
EStateFinished
};
public:
~CCntPermanentData();
void RunL();
void DoCancel();
TInt RunError(TInt aError);
void CompleteSelf(TInt aReason);
static CCntPermanentData* NewL(CCntDbManagerController& aController);
void StartDataCreationL();
TBool IsOnlyClientOfDbManager(CCntDbManager* manager) const;
void ReleaseDbManagerL(CCntDbManager* manager);
void HandleContactViewEvent(const CContactViewBase &aView, const TContactViewEvent &aEvent);
private:
CCntPermanentData(CCntDbManagerController& aController);
void ConstructL();
void Close();
TBool OpenNextViewL();
CContactViewBase* OpenViewFromDefinitionL(const CContactDefaultViewDefinition& aViewDef);
private:
TState iState;
CCntDbManagerController& iController;
CCntDbManager * iManager;
RPointerArray<CContactDefaultViewDefinition> iViewDefs;
RPointerArray<CContactViewBase> iViews; // This does not own the CContactViewBase, RPointerArray is
// only used since RArray<CContactViewBase&> does not compile.
};
#endif // CCNTPERMANENTDATA_H_