summaryrefslogtreecommitdiffstats
path: root/plugins/contacts/symbian/contactsmodel/tsrc/asynaccess/inc/cntmodeltesterasynch.h
blob: 59cfe0aa35ded0950f62f5f7e2de6681cc094428 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
* Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
* Contact: http://www.qt-project.org/legal
* 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: 

*
*/

#ifndef __CCntModelTesterAsynch_H__
#define __CCntModelTesterAsynch_H__

#include <e32base.h>
#include <cntdef.h>
#include "t_utils2.h"

class CContactDatabase;
class CContactItemField;
class CCntModelTesterSetToneToContacts;
class CCntModelTesterAsynch;
	
// CLASS DECLARATION

//
// CTestConductor.
//

class CTestConductor : public CBase
	{
public:
	static CTestConductor* NewL();
	~CTestConductor();
	void SetTestError(TInt aTestError);

private:
	CTestConductor();
	void ConstructL();
	void RunTestsL();
private:
	RFs iFs;
	CLog* iLog;
	CContactDatabase* iDb;
	CRandomContactGenerator* iRandomGenerator;
	CCntModelTesterAsynch* iAsync;
	TInt iTestError;
	};

class CCntModelTesterAsynch : public CActive
    {
    friend class CTester;
    
    public:  // Interface		
        
        static CCntModelTesterAsynch* NewL(CLog& iLog);

		/**
         * Destructor.
         */
        ~CCntModelTesterAsynch();
        
        void IssueRequest();
        void SetSpeedDialL();
        void RemoveAndCreateFieldL();
        
    private: 
        CCntModelTesterAsynch(CLog& iLog);
        void ConstructL();
        void CreateContactsL();
        TContactItemId CreateContactL( CContactDatabase* aDb,
                                   const TDesC& aName, 
                                   const TDesC& aNumber);
        CContactItemField* CreateFieldLC(const TUid aMappingUId,
                                         TFieldType aFieldType, 
                                         const TDesC &aText);
    
    private:  // from CActive
	    void DoCancel();
        void RunL();
	    void Error(TInt aError);

    private:  // Data
		/// Ref. compression strategy
        CContactDatabase* iDb;
        CLog& iLog;
        CContactIdArray* iArray;
        CCntModelTesterSetToneToContacts* iOperation;
        CContactItem* iGroup;
    };
    
// Active object to Test Async open from two threads at once
class CTester : public CActive
	{
public:
	static CTester* NewL();
	~CTester();
	
private:
	enum TTest
		{
		EAsyncOpenNamed,
		EAsyncOpenedNamed=EAsyncOpenNamed+10,
		ESyncOpenNamed,
		ESyncOpenedNamed=ESyncOpenNamed+10,
		ENumTests
		};	


	CTester();
	void ConstructL();
	void NextTest();
	void RunL();      // From CActive.
	void DoCancel();  // From CActive.
	void Error(TInt aError);
private:
    CContactOpenOperation* iContactOpenOperation;
    TInt iCurrentTestNumber;
	CContactDatabase* iDb;
	};


// This class (CDbOpenLauncher) creates a thread to do async and sync opens 
class CDbOpenLauncher : public CBase	
	{
public:
	static void Create(const TDesC& aName, const TDesC& aViewName);

private:
	static void DoMainL(const TDesC& aName);
	static TInt LaunchThread(TAny* aAny);	
		
	class CViewer : public CBase
		{
	public: 
		static CViewer* NewL(const TDesC& aViewName);
		~CViewer();
	private: 
		void ConstructL(const TDesC& aViewName);
		
	private:
		CContactDatabase* iDatabase;
		CTester* tester;
		
	};
			
};   

#endif // __CCntModelTesterAsynch_H__

// End of File