summaryrefslogtreecommitdiffstats
path: root/plugins/contacts/symbian/contactsmodel/tsrc/t_utils2.h
blob: bfcab0cc3167531276f78b01f887c775894474d0 (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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
/*
* Copyright (c) 2001-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: 
*
*/


#ifndef __T_UTILS2_H__
#define __T_UTILS2_H__

#include <cntviewbase.h>
#include <coreappstest/testserver.h>

//
// Forward references.
//

class CContactItem;
class CContactDatabase;
class RTest;
class CContactTemplate;
//
// CLog.
//
class CTestRegister;

class CLog : public CBase
	{
public:
	static CLog* NewL(RTest& aTest,const TDesC& aLogFileName);
	~CLog();
	void Log(TRefByValue<const TDesC> aFmt,...);
	void LogLine(TRefByValue<const TDesC> aFmt,...);
	void LogLineNoEcho(TRefByValue<const TDesC> aFmt,...);
	void WriteLogToCommPortL();
	void IncVisualCounter();
	void EndVisualCounter();
private:
	CLog(RTest& aTest,const TDesC& aLogFileName);
	void ConstructL();
	TBool ReadLogLineL(TDes& aLine);
private:
	RTest& iTest;
	RFile iLogFile;
	TFileName iLogFileName;
	TInt iVisualCounter;
	CTestRegister* iFileRegister;
	};

class CContactChangeNotifier;
const TTimeIntervalMicroSeconds32 KDefaultEventConsumptionTimeout = 500000;
class CEventConsumer : public CTimer , MContactDbObserver
	{
public:
	static CEventConsumer* NewL(CContactDatabase& aDb, TCallBack aCallBack, TTimeIntervalMicroSeconds32 aEventTimeoutInterval = KDefaultEventConsumptionTimeout);
	~CEventConsumer();
	void Start();
private:
	void ConstructL(CContactDatabase& aDb);
	void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
	CEventConsumer(TCallBack aCallBack,TTimeIntervalMicroSeconds32 aEventTimeoutInterval);
	TInt RunError(TInt aError);

	void RunL();
private:
	TCallBack iCallBack;
	CContactChangeNotifier* iChangeNotifier;
	TTimeIntervalMicroSeconds32 iEventTimeoutInterval;
	};

/** Used by CRandomContactGenerator for custom random words*/
class MRandomWordGenerator
	{
public:
	virtual HBufC* WordLC() = 0;
	virtual ~MRandomWordGenerator();
	};

//
// CRandomContactGenerator.
//

class CRandomContactGenerator : public CBase
	{
public:
	static CRandomContactGenerator* NewL();
	static CRandomContactGenerator* NewL(MRandomWordGenerator* aFirstname, MRandomWordGenerator* aLastname= NULL, MRandomWordGenerator* aCompany = NULL);
	~CRandomContactGenerator();
	void SetDbL(CContactDatabase& aDb);
	TContactItemId AddTypicalRandomContactL();
	void AddAtypicalRandomContactL();
	TContactItemId AddTypicalContactForFilterL(TInt aBitWiseFilter);
	TContactItemId AddTypicalContactForFilterL(TInt aBitWiseFilter, TInt& aLeaveCode);
	TContactItemId AddTypicalContactForLocalViewPreferencesL(TContactViewPreferences aContactTypes);//creates a random contact that matches to criteria to be included in C
	TContactItemId AddTypicalContactForFilterL(TInt aBitWiseFilter, TUid aIMProtocol);
	TContactItemId AddTypicalRandomContactWithNamesL(const RArray<TInt>& iNames, TBool aWithMapping = EFalse);

	TPtrC PhoneMatch() const;
	TPtrC NameMatch() const;
	TPtrC EmailMatch() const;
private:
	CRandomContactGenerator();
	CRandomContactGenerator(MRandomWordGenerator* aFirstname, MRandomWordGenerator* aLastname, MRandomWordGenerator* aCompany );
	void ConstructL();
	void SetRandomAlphaString(TDes& aBuf,TInt aLength);
	void SetRandomNumericString(TDes& aBuf,TInt aLength);
	void SetRandomAlphaNumericString(TDes& aBuf,TInt aLength);
	void SetRandomWordL(TDes& aBuf, TInt32 aType );
	TText RandomAlphaCharCode();
	TText RandomNumericCharCode();
	TText RandomAlphaNumbericCharCode();
	TText RandomCharCode(TText aLowerBound,TText aUpperBound,TText aException);
	TText RandomCharCode(TText aLowerBound,TText aUpperBound);
private:
	CContactDatabase* iDb;
	CContactTemplate* iTemplate;
	MRandomWordGenerator* iFirstName;
	MRandomWordGenerator* iLastName;
	MRandomWordGenerator* iCoName;		// random company name generator
	TBuf<16> iPhoneMatch;
	TBuf<64> iNameMatch;
	TBuf<64> iEmailMatch;
	TInt64 iRandSeed;
	};


//
// CContactNameGenerator.
//
/*
class CContactNameGenerator : public CBase
	{
public:
	enum TSortOrder
		{
		ELastNameFirstName,
		EFirstNameLastName
		};
public:
	static CContactNameGenerator* NewL(RTest& aTest,CLog& aLog);
	~CContactNameGenerator();
	void SetDbL(CContactDatabase& aDb);
	void AddInitialContactsL();
	TInt AddSubsequentContactsL(TInt aWhich);
	void CheckSort(TSortOrder aOrder,TContactItemId aId,TInt aIndex);
	void CheckSortLowSubView(TSortOrder aOrder,TContactItemId aId,TInt aIndex,const TDesC& aHighBoundary);
	void CheckSortHighSubView(TSortOrder aOrder,TContactItemId aId,TInt aIndex,const TDesC& aLowBoundary);
	void CheckSortSubView(TSortOrder aOrder,TContactItemId aId,TInt aIndex,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
private:
	CContactNameGenerator(RTest& aTest,CLog& aLog);
	void ConstructL();
	TInt AddContactsL(const TDesC& aFile);
	TBool ReadNamePairL(RFile aFile,TDes& aFirstName,TDes& aLastName) const;
	void SortLists();
	static TInt CompareAscending(const TContact& aFirst, const TContact& aSecond);
	static TInt CompareDescending(const TContact& aFirst, const TContact& aSecond);
	TInt FindLow(TSortOrder aOrder,const TDesC& aLowBoundary);
	static TInt StaticAddContact(TAny* aSelf);
	TInt AddContactL();
private:
	RTest& iTest;
	CLog& iLog;
	RFs iFs;
	CContactDatabase* iDb;
	};
*/

//
// CTestContact.
//

class CTestContact : public CBase
	{
public:
	static CTestContact* NewL(CContactItem& aSeedContact);
	static CTestContact* NewLC(CContactItem& aSeedContact);
	~CTestContact();
	CContactItem& ContactItem();
	const TPtrC FirstNameL();
	const TPtrC LastNameL();
	const TPtrC CompanyNameL();
	const TPtrC JobTitleL();
	const TPtrC WorkPhoneL();
	const TPtrC WorkMobileL();
	const TPtrC HomePhoneL();
	const TPtrC HomeMobileL();
	const TPtrC FaxL();
	const TPtrC EmailAddressL();
	const TPtrC InternetAddressL();
	const TPtrC StreetL();
	const TPtrC TownL();
	const TPtrC CountyL();
	const TPtrC PostCodeL();
	const TPtrC CountryL();
	const TPtrC NotesL();
	void SetFirstNameL(const TDesC& aFirstName, TBool aIsPronunciation = EFalse);
	void SetLastNameL(const TDesC& aLastName, TBool aIsPronunciation = EFalse);
	void SetCompanyNameL(const TDesC& aCompanyName, TBool aIsPronunciation = EFalse);
	void SetJobTitleL(const TDesC& aJobTitle);
	void SetWorkPhoneL(const TDesC& aWorkPhone);
	void SetWorkMobileL(const TDesC& aWorkMobile);
	void SetHomePhoneL(const TDesC& aHomePhone);
	void SetHomeMobileL(const TDesC& aHomeMobile);
	void SetFaxL(const TDesC& aFax);
	void SetHomeEmailAddressL(const TDesC& aEmailAddress);
	void SetWorkEmailAddressL(const TDesC& aEmailAddress);

	void SetInternetAddressL(const TDesC& aInternetAddress);
	void SetStreetL(const TDesC& aStreet);
	void SetTownL(const TDesC& aTown);
	void SetCountyL(const TDesC& aCounty);
	void SetPostCodeL(const TDesC& aPostCode);
	void SetCountryL(const TDesC& aCountry);
	void SetNotesL(const TDesC& aNotes);
	void SetVoiceDialL(const TDesC& aVoiceDial);
	void SetRingToneL(const TDesC& aRingTone);
	void SetIMAddressL(const TDesC& aIMAddress, TUid aAddOnContentType);
	
	void SetTextFieldL(TFieldType aFieldType, const TDesC& aText);

private:
	CTestContact();
	void ConstructL(CContactItem& aSeedContact);
	const TPtrC TextFieldL(TFieldType aFieldType) const;
	const TPtrC TextFieldL(const CContentType& aTypesToMatch) const;
	void SetTextFieldL(const CContentType& aTypesToMatch,const TDesC& aText) const;
	void SetTextFieldL(TFieldType aFieldType, const TDesC& aText, TUid aAddOnContentType);
	CContactItemField& FindFieldL(TFieldType aFieldType) const;
	CContactItemField& FindFieldL(const CContentType& aTypesToMatch) const;
	TInt FindField(TFieldType aFieldType) const;
	void InsertTextFieldL(TUid aID, const TDesC& aStringOfStuff );
private:
	CContactItem* iContactItem;
	};

#endif