--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/cntmodel/inc/ccontactprivate.h Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,223 @@
+/**
+* Copyright (c) 1997-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 __CCONTACTPRIVATE_H__
+#define __CCONTACTPRIVATE_H__
+
+#include <cntitem.h>
+
+
+const TInt KNoValueSet = -1; // Used in CContactDatabase - not published.
+const TInt KFiveMins = 300000000; // Used in CContactDatabase - not published.
+
+
+class CPrivConverter;
+class CContactConverter;
+class CTextFieldMinimal;
+
+
+/**
+Base class for Contacts Model plug-ins.
+*/
+NONSHARABLE_CLASS(CContactPlugin) : public CBase
+ {
+public:
+ ~CContactPlugin();
+
+protected:
+ TUid LoadEComPluginFromInterface(TUid aInterfaceUid);
+ CContactPlugin();
+
+private:
+ RLibrary iDll;
+ };
+
+
+/**
+Class for all template related functionality.
+*/
+NONSHARABLE_CLASS(CCntTemplateCache) : public CBase
+ {
+public:
+ static CCntTemplateCache* NewL(RCntModel& aCntSvr);
+ ~CCntTemplateCache();
+ inline TContactItemId TemplateId()const {return iTemplateId;}
+ void MergeWithTemplateL(CContactItem& aContact, const CContactItemViewDef* aViewDef = NULL);
+ void RemoveTemplate(TContactItemId aId);
+ CContactItem& SystemTemplateL();
+
+private:
+ CContactItem& TemplateL(TContactItemId aId);
+ CCntTemplateCache(RCntModel& aCntSvr);
+ void DeleteEntry(TInt aIndex);
+ CContactItemViewDef& DefaultViewDefL();
+ void ResetSystemTemplate();
+
+private:
+ RPointerArray <CContactItem> iCache;
+ RCntModel& iCntSvr;
+ CContactItem* iSystemTemplate;
+ TContactItemId iTemplateId;
+ CContactItemViewDef* iViewDef;
+ };
+
+
+/**
+Contact item to vCard converter plug-in.
+*/
+NONSHARABLE_CLASS(CPrivConverter) : public CContactPlugin
+ {
+public:
+ static CPrivConverter* NewL(TUid aUid);
+ static CPrivConverter* NewL(TUid aUid, TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel);
+ TVCardVersion GetCurrentVersion() const;
+ TInt64 GetPBAPFilter() const;
+ TBool GetExportTel()const;
+ void LoadEComPluginL(TUid aUid, TInt64 aFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel);
+ void LoadEComPluginL(TUid aUid);
+ ~CPrivConverter();
+ inline CContactConverter* Converter() const;
+private:
+ TBool IsImplementationAvailableL(TUid aUid);
+private:
+ CContactConverter* iConverter;
+ TVCardVersion iVersion;
+ TInt64 iPBAPFilter;
+ TBool iExportTel;
+ };
+
+
+inline CContactConverter* CPrivConverter::Converter() const { return iConverter;}
+
+
+NONSHARABLE_CLASS(CSortArray) : public CBase
+ {
+public:
+ CSortArray();
+ ~CSortArray();
+ void AppendL(const TDesC &Text, TContactItemId aId);
+ void SortL(CContactDatabase::TSortPref::TOrder aOrder);
+ inline TInt Count() const;
+ TContactItemId Id(TInt aIndex) const;
+ HBufC *Text(TInt aIndex) const;
+ void Merge(CSortArray *aDuplicates,TInt aStartPos);
+
+private:
+ static TInt DefaultAlgorithmToCompareNames(const CTextFieldMinimal& aName1, const CTextFieldMinimal& aName2);
+
+private:
+ RPointerArray<CTextFieldMinimal> iArray;
+ };
+
+
+inline TInt CSortArray::Count() const {return(iArray.Count());}
+
+
+NONSHARABLE_CLASS(CTextFieldMinimal) : public CBase
+ {
+public:
+ ~CTextFieldMinimal();
+ inline CTextFieldMinimal() : iId(KNullContactId) {};
+ void ConstructL(const TDesC &aText, TContactItemId aId);
+
+public:
+ TContactItemId iId;
+ HBufC *iText;
+ };
+
+
+NONSHARABLE_CLASS(CCntIdleSorter) : public CBase
+ {
+public:
+ static CCntIdleSorter* NewL(CContactDatabase& aContactDatabase);
+ ~CCntIdleSorter();
+
+public:
+ // Access methods.
+ void ResetL();
+ void Cancel();
+ void StartSortingL(CArrayFix<CContactDatabase::TSortPref>* aSortOrder, TRequestStatus& aStatus);
+ void StartSortingL(CArrayFix<CContactDatabase::TSortPref>* aSortOrder, TRequestStatus& aStatus, MContactSortObserver& aObserver);
+
+private:
+ // Internal construction methods.
+ CCntIdleSorter();
+ CCntIdleSorter(CContactDatabase& aContactDatabase);
+ void ConstructL();
+
+private:
+ // Sort state.
+ enum TState {EReadContacts, ESortContacts};
+
+private:
+ static TInt SortCallBack(TAny* aThis);
+ TInt PeformSortStep();
+ TBool ReadContactsL(TInt aNumber = 4);
+ void SortListAndSaveL();
+ void CompleteRequest(TInt aError = KErrNone);
+ void ReportProgressL();
+
+private:
+ inline TInt& TotalCount() { return iTotalCount; }
+ inline TInt TotalCount() const { return iTotalCount; }
+ inline TInt& ReadSoFar() { return iReadSoFar; }
+ inline TInt ReadSoFar() const { return iReadSoFar; }
+ inline TBool& HasObserver() { return iHasObserver; }
+ inline TBool HasObserver() const { return iHasObserver; }
+
+private:
+ TBool iHasObserver;
+ TInt iTotalCount;
+ TInt iReadSoFar;
+
+ MContactSortObserver* iObserver;
+ CContactDatabase& iDb;
+ CArrayFix<CContactDatabase::TSortPref>* iSortOrder;
+ TRequestStatus* iStatus;
+
+ CIdle* iIdle;
+ TState iState;
+ CContactIdArray* iFinalItems;
+ CSortArray* iSortedList;
+ TContactItemId iCurrentId;
+ TBool iSortStarted;
+ };
+
+
+NONSHARABLE_CLASS (CDataBaseChangeObserver) : public CBase, public MContactDbObserver
+ {
+public:
+ void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
+ static CDataBaseChangeObserver* NewL(MContactDbPrivObserver& aPrivateObserver);
+ ~CDataBaseChangeObserver();
+
+private:
+ CDataBaseChangeObserver (MContactDbPrivObserver& aPrivateObserver);
+ MContactDbPrivObserver& iPrivateObserver;
+ };
+
+
+#endif //__CCONTACTPRIVATE_H__