// CNTDEF.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#if !defined(__CNTDEF_H__)
#define __CNTDEF_H__

#if !defined(__E32BASE_H__)
#include <e32base.h>
#endif

#if !defined(__D32DBMS_H__)
#include <d32dbms.h>
#endif

#include "CntDef.hrh"

//#define CNTDB_GROUPS

typedef TInt32 TContactItemId;
typedef TUid TFieldType;
typedef TUint TStorageType;

const TContactItemId KNullContactId=-1;

const TUid KClipboardUidTypeVCard={0x100038f6};

const TUid KUidContactCard={0x10001309};
const TUid KUidContactGroup={0x1000130A};
const TUid KUidContactTemplate={0x1000130B};

//
const TUid KUidContactFieldAddress={KUidContactFieldAddressValue};
const TUid KUidContactFieldCompanyName={KUidContactFieldCompanyNameValue};
const TUid KUidContactFieldPhoneNumber={KUidContactFieldPhoneNumberValue};
const TUid KUidContactFieldGivenName={KUidContactFieldGivenNameValue};
const TUid KUidContactFieldFamilyName={KUidContactFieldFamilyNameValue};
const TUid KUidContactFieldAdditionalName={KUidContactFieldAdditionalNameValue};
const TUid KUidContactFieldSuffixName={KUidContactFieldSuffixNameValue};
const TUid KUidContactFieldPrefixName={KUidContactFieldPrefixNameValue};
const TUid KUidContactFieldHidden={KUidContactFieldHiddenValue};
const TUid KUidContactFieldDefinedText={KUidContactFieldDefinedTextValue};
const TUid KUidContactFieldEMail={KUidContactFieldEMailValue};
const TUid KUidContactFieldMsg={KUidContactFieldMsgValue};
const TUid KUidContactFieldSms={KUidContactFieldSmsValue};
const TUid KUidContactFieldFax={KUidContactFieldFaxValue};
const TUid KUidContactFieldNote={KUidContactFieldNoteValue};
const TUid KUidContactStorageInline={KUidContactFieldStorageInlineValue};
const TUid KUidContactFieldBirthday={KUidContactFieldBirthdayValue};
const TUid KUidContactFieldUrl={KUidContactFieldUrlValue};
//
const TUid KUidContactFieldNone={KUidContactFieldNoneValue};
const TUid KUidContactFieldMatchAll={0x110FFF22};

const TUid KUidContactFieldVCardMapADR={KIntContactFieldVCardMapADR};
const TUid KUidContactFieldVCardMapAGENT={KIntContactFieldVCardMapAGENT};
const TUid KUidContactFieldVCardMapBDAY={KIntContactFieldVCardMapBDAY};
const TUid KUidContactFieldVCardMapEMAILINTERNET={KIntContactFieldVCardMapEMAILINTERNET};
const TUid KUidContactFieldVCardMapGEO={KIntContactFieldVCardMapGEO};
const TUid KUidContactFieldVCardMapLABEL={KIntContactFieldVCardMapLABEL};
const TUid KUidContactFieldVCardMapLOGO={KIntContactFieldVCardMapLOGO};
const TUid KUidContactFieldVCardMapMAILER={KIntContactFieldVCardMapMAILER};
const TUid KUidContactFieldVCardMapNOTE={KIntContactFieldVCardMapNOTE};
const TUid KUidContactFieldVCardMapORG={KIntContactFieldVCardMapORG};
const TUid KUidContactFieldVCardMapPHOTO={KIntContactFieldVCardMapPHOTO};
const TUid KUidContactFieldVCardMapROLE={KIntContactFieldVCardMapROLE};
const TUid KUidContactFieldVCardMapSOUND={KIntContactFieldVCardMapSOUND};
const TUid KUidContactFieldVCardMapTEL={KIntContactFieldVCardMapTEL};
const TUid KUidContactFieldVCardMapTELFAX={KIntContactFieldVCardMapTELFAX};
const TUid KUidContactFieldVCardMapTITLE={KIntContactFieldVCardMapTITLE};
const TUid KUidContactFieldVCardMapURL={KIntContactFieldVCardMapURL};
const TUid KUidContactFieldVCardMapUnusedN={KIntContactFieldVCardMapUnusedN};
const TUid KUidContactFieldVCardMapUnusedFN={KIntContactFieldVCardMapUnusedFN};
const TUid KUidContactFieldVCardMapNotRequired={KIntContactFieldVCardMapNotRequired};
const TUid KUidContactFieldVCardMapUnknownXDash={KIntContactFieldVCardMapUnknownXDash};
const TUid KUidContactFieldVCardMapUnknown={KIntContactFieldVCardMapUnknown};
const TUid KUidContactFieldVCardMapUID={KIntContactFieldVCardMapUID};
const TUid KUidContactFieldVCardMapWORK={KIntContactFieldVCardMapWORK};
const TUid KUidContactFieldVCardMapHOME={KIntContactFieldVCardMapHOME};
const TUid KUidContactFieldVCardMapMSG={KIntContactFieldVCardMapMSG};
const TUid KUidContactFieldVCardMapVOICE={KIntContactFieldVCardMapVOICE};
const TUid KUidContactFieldVCardMapFAX={KIntContactFieldVCardMapFAX};
const TUid KUidContactFieldVCardMapPREF={KIntContactFieldVCardMapPREF};
const TUid KUidContactFieldVCardMapCELL={KIntContactFieldVCardMapCELL};
const TUid KUidContactFieldVCardMapPAGER={KIntContactFieldVCardMapPAGER};
const TUid KUidContactFieldVCardMapBBS={KIntContactFieldVCardMapBBS};
const TUid KUidContactFieldVCardMapMODEM={KIntContactFieldVCardMapMODEM};
const TUid KUidContactFieldVCardMapCAR={KIntContactFieldVCardMapCAR};
const TUid KUidContactFieldVCardMapISDN={KIntContactFieldVCardMapISDN};
const TUid KUidContactFieldVCardMapVIDEO={KIntContactFieldVCardMapVIDEO};
const TUid KUidContactFieldVCardMapDOM={KIntContactFieldVCardMapDOM};



_LIT(KVersitParamWork,"WORK");
_LIT(KVersitParamHome,"HOME");
_LIT(KVersitParamMsg,"MSG");
_LIT(KVersitParamVoice,"VOICE");
_LIT(KVersitParamFax,"FAX");
_LIT(KVersitParamPref,"PREF");
_LIT(KVersitParamCell,"CELL");
_LIT(KVersitParamPager,"PAGER");
_LIT(KVersitParamBbs,"BBS");
_LIT(KVersitParamModem,"MODEM");
_LIT(KVersitParamCar,"CAR");
_LIT(KVersitParamIsdn,"ISDN");
_LIT(KVersitParamVideo,"VIDEO");
_LIT(KVersitParamDom,"DOM");

class CContactIdArray : public CBase
	{
public:
	IMPORT_C static CContactIdArray* NewL();
	IMPORT_C static CContactIdArray* NewLC();
	IMPORT_C static CContactIdArray* NewL(const CContactIdArray* aArray);
	IMPORT_C static CContactIdArray* NewLC(const CContactIdArray* aArray);
	IMPORT_C ~CContactIdArray();
	inline const TContactItemId& operator[](TInt aIndex) const;
	inline TContactItemId& operator[](TInt aIndex);
	inline TInt Count() const;
	inline void Reset();
	IMPORT_C TInt Find(TContactItemId aId) const;
	IMPORT_C void AddL(TContactItemId aId);

	inline void Remove(TInt aIndex);
	inline void Remove(TInt aIndex,TInt aCount);
	inline void InsertL(TInt aIndex,TContactItemId aId);
	IMPORT_C void MoveL(TInt aOldIndex,TInt aNewIndex);
	IMPORT_C void ReverseOrder();
	IMPORT_C void InternalizeL(RReadStream& aStream);
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
private:
	CContactIdArray();
	void ConstructL();
	void CloneL(const CContactIdArray* aArray);
private:
	CArrayFixFlat<TContactItemId> *iIds;
	};
inline const TContactItemId& CContactIdArray::operator[](TInt aIndex) const
	{ return (*iIds)[aIndex]; }
inline TContactItemId& CContactIdArray::operator[](TInt aIndex)
	{ return (*iIds)[aIndex]; }
inline TInt CContactIdArray::Count() const
	{ return iIds->Count(); }
inline void CContactIdArray::Reset()
	{ iIds->Reset(); }
inline void CContactIdArray::Remove(TInt aIndex)
	{ iIds->Delete(aIndex); }
inline void CContactIdArray::Remove(TInt aIndex,TInt aCount)
	{ iIds->Delete(aIndex,aCount); }
inline void CContactIdArray::InsertL(TInt aIndex,TContactItemId aId)
	{ iIds->InsertL(aIndex,aId); }

#endif
