summaryrefslogtreecommitdiffstats
path: root/plugins/contacts/symbian/contactsmodel/cntsrv/inc/ccntpermanentdata.h
blob: 3a9235e8e9ed30c622e07d82fe25cb1f822a626e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
* 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_