/*
* Copyright (C) 2013 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: 
*
*/



#if !defined(__CNTSTD_H__)
#define __CNTSTD_H__

#if !defined(__E32DEF_H__)
#include <e32def.h>
#endif

const TInt KNumberOfNewTables = 8;//Used for discovering if we're opening an old version of cntmodel

_LIT(KContactTableName,"CONTACTS");
_LIT(KContactGroupTableName,"GROUPS");
_LIT(KContactGroupTableNameByGroup,"GROUPS2");
_LIT(KContactPrefTableName,"PREFERENCES");
_LIT(KContactPhoneMatchingTableName,"PHONE");
_LIT(KSyncTableName,"SYNC");

_LIT(KIdentifierColName,"CM_Id");
_LIT(KLastLastSyncColName,"CM_LastSyncDate");
_LIT(KUidStringColName,"CM_UIDString");
_LIT(KTypeColName,"CM_Type");
_LIT(KTemplateRefId,"CM_PrefTemplateRefId");
_LIT(KLastModifiedColName,"CM_Last_modified");
_LIT(KCreationDateColName,"CM_ContactCreationDate");
_LIT(KAttributesColName,"CM_Attributes");
_LIT(KTextFieldsColName,"CM_TextBlob");
_LIT(KFieldHeaderColName, "CM_Header");
_LIT(KSearchableTextColName,"CM_SearchableText");
_LIT(KPhoneMatchingColName,"CM_PhoneMatching");
_LIT(KPhoneMatchingColNameTwo,"CM_ExtendedPhoneMatching");
_LIT(KItemsContainedColName,"CM_Members");
_LIT(KGroupMembersName,"CM_GroupMembers");
_LIT(KReplicationCountColName,"CM_ReplicationCount");
_LIT(KPrefId,"CM_PrefId");
_LIT(KPrefTemplateId,"CM_PrefTemplateId");
_LIT(KPrefTemplateFileVersion,"CM_PrefFileVer");
_LIT(KPrefFileId,"CM_PrefFileId");
_LIT(KContactTableIdIndex,"cnt_id_index");
_LIT(KSyncTableIdIndex,"sync_id_index");
_LIT(KContactGroupIndex,"cnt_group_index");
_LIT(KContactGroupIndexByGroupId,"cnt_group_index2");
_LIT(KContactPhoneMatchingIndex,"cnt_phone_index");
_LIT(KPrefCreationDate,"CM_creationdate");
_LIT(KPrefOwnCardId,"CM_PrefOwnCardId");
_LIT(KPrefCardTemplateId,"CM_PrefCardTemplateId");
_LIT(KPrefGroupIdList,"CM_PrefGroupIdList");
_LIT(KPrefCardTemplatePrefId,"CM_PrefCardTemplatePrefId");
_LIT(KPrefMachineUniqueId,"CM_MachineUID");
_LIT(KPrefSortOrder,"CM_PrefSortOrder");
_LIT(KContactHintField,"CM_HintField");

_LIT(KContactExtHintField, "CM_ExtHintField");

//LPD//Identity TABLE
_LIT(KIdentityTableName, "IDENTITYTABLE");
_LIT(KParentCMID, "Parent_CMID");
_LIT(KFirstNameColName,"CM_FirstName");
_LIT(KLastNameColName,"CM_LastName");
_LIT(KCompanyNameColName,"CM_CompanyName");
_LIT(KFirstNamePronunciationColName,"CM_FirstNmPrn");
_LIT(KLastNamePronunciationColName,"CM_LastNmPrn");
_LIT(KCompanyNamePronunciationColName,"CM_CompanyNmPrn");
_LIT(KIdentityIdIndex, "IdentityIdIndex");

//Email Table
_LIT(KEMailTableName, "EMAILTABLE");
_LIT(KEMailParentCMID, "EmailParent_CMID");///
_LIT(KEMailFieldID, "EMail_FieldID");////Together these match a unique id.
_LIT(KEMailAddress,"EMailAddress");
_LIT(KEMailIdentityIdIndex, "EmailIdentityIdIndex");

//SQL Literals
_LIT(KASC,"ASC");
_LIT(KDESC,"DESC");

//Asych Sort Consts
//Values for sort window
const TInt KSortWindowForeSlots=5;
const TInt KSortWindowRearSlots=0;

//const TInt KMaxPhoneNumberLenghForSearch=50;
_LIT(KSelectStringFromEmailTable,"SELECT EmailParent_CMID FROM EMAILTABLE WHERE EMailAddress LIKE '%S'");
_LIT(KSelectAddressFromEmailTableByCntID,"SELECT EMailAddress FROM EMAILTABLE WHERE EmailParent_CMID = %d");

//Find String Sql lits
//_LIT(KSelectStringFromIdentityTable,"SELECT Parent_CMID FROM IDENTITYTABLE WHERE (CM_FirstName LIKE '%S') OR (CM_LastName LIKE '%S') OR (CM_CompanyName LIKE '%S')");
_LIT(KSelectStringFromIdentityTable,"SELECT * FROM IDENTITYTABLE WHERE (CM_FirstName LIKE '%S') OR (CM_LastName LIKE '%S') OR (CM_CompanyName LIKE '%S') OR (CM_FirstNmPrn LIKE '%S') OR (CM_LastNmPrn LIKE '%S') OR (CM_CompanyNmPrn LIKE '%S')");

//_LIT(KSelectStringFromIdentityTableWhere,"SELECT Parent_CMID FROM IDENTITYTABLE WHERE ");
_LIT(KSelectStringFromIdentityTableWhere,"SELECT * FROM IDENTITYTABLE WHERE ");

_LIT(KSelectAllIdsFromIdentity,"SELECT Parent_CMID, CM_Type FROM IDENTITYTABLE");//Gives an unsorted list of contact ids for every contact
_LIT(KSelectStringForTextDefSearch,"SELECT Parent_CMID,CM_FirstName,CM_LastName,CM_CompanyName,CM_FirstNmPrn,CM_LastNmPrn,CM_CompanyNmPrn,CM_Type FROM IDENTITYTABLE WHERE ");

_LIT(KLeftBracket,"(");
_LIT(KLikeString," LIKE '");
_LIT(KLikeStringRight,"')");
_LIT(KOR," OR ");

_LIT(KNullBlobTextField," ");



_LIT(KSqlDeleteFromTableFormat,"DELETE FROM %S WHERE %S=%d");


enum TCntModelPanic
	{
	ECntPanicInvalidColumnName,
	ECntPanicInvalidColumnIndex,
	ECntPanicInvalidItemType,
	ECntPanicInvalidItemIndex,
	ECntPanicDbmsResourceNotFreed,
	ECntPanicNullFieldDefinition,
	ECntPanicInvalidFieldContentType,
	ECntPanicViewIsEmpty,
	ECntPanicDuplicateViewFields,
	ECntPanicFieldDoesNotExist,
	ECntPanicNullPointer,
	ECntPanicDuplicateIds,
	ECntPanicInternalSortError,
	ECntPanicUnhandledUid,
	ECntPanicFieldTypeIndex,
	ECntPanicInvalidStorageType,
	ECntPanicStorageAlreadyAllocated,
	ECntPanicServerNotFound,
	ECntPanicSystemTemplate,
	ECntPanicAgentNotNull,
	ECntPanicTemplateNotEmpty,
	ECntPanicItemAlreadyExists,
	ECntPanicInvalidSortArray,
	ECntPanicPhoneMatchLength,
	ECntPanicDuffGroup,
	ECntPanicInvalidSpeedDialContactId,
	ECntPanicInvalidSpeedDialIndex,
	ECntPanicInvalidViewIndex,
	ECntPanicInvalidIndexForSubView,
	ECntPanicInvalidIndexForConcatenatedView,
	ECntPanicViewNotReady,
	ECntPanicNoViewIndexMatchCriteria,
	ECntPanicUnderlyingViewUnsorted,
	ECntPanicAsyncViewNotificationPending,
	ECntPanicObserverNotFound,
	ECntPanicComponentViewNotFound,
	ECntPanicInvalidFieldText,
	ECntPanicFieldTextNotInitialised,
	ECntPanicUnableToRestartServer,
	ECntPanicFilterableFieldMaxNumberInUse,
	ECntPanicFieldTextNotBlank,
	ECntPanicInvalidConnectionId,
	ECntPanicAPIRemoved,
	ECntPanicDuplicateBackupEvent,
	ECntPanicDuplicateRestoreEvent,
	ECntPanicUnexpectedEndofRestoreEvent,
	ECntPanicFieldBufferNotAllocated,
	ECntPanicFieldBufferAllocError,
	ECntPanicFieldBufferWrongSize,
	ECntPanicViewSorterStateMachine,
	ECntPhonebookSyncObserverList,
	ECntPanicContactsLeftLocked,
	ECntPanicLast
	};

GLREF_C void Panic(TCntModelPanic aPanic);



#endif
