williamr@2: // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __MSVSTD_H__ williamr@2: #define __MSVSTD_H__ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: Specifies an entry in the Message Server index. williamr@2: @publishedAll williamr@2: @released williamr@2: @see #KMsvNullIndexEntryId williamr@2: @see #KMsvTempIndexEntryId williamr@2: @see #KMsvRootIndexEntryId williamr@2: @see #KMsvLocalServiceIndexEntryId williamr@2: @see #KMsvGlobalInBoxIndexEntryId williamr@2: @see #KMsvGlobalOutBoxIndexEntryId williamr@2: @see #KMsvDraftEntryId williamr@2: @see #KMsvSentEntryId williamr@2: @see #KMsvDeletedEntryFolderEntryId williamr@2: @see #KMsvUnknownServiceIndexEntryId williamr@2: */ williamr@2: typedef TInt32 TMsvId; williamr@2: williamr@2: /** Identifies an asynchronous messaging operation. williamr@2: williamr@2: This ID is unique within a williamr@2: Message Server session. The ID of an operation can be obtained from CMsvOperation::Id(). */ williamr@2: typedef TInt32 TMsvOp; williamr@2: williamr@2: /** Supplies the standard values for the message priority index entry field. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvPriority { williamr@2: /** High message priority */ williamr@2: EMsvHighPriority, williamr@2: /** Medium message priority */ williamr@2: EMsvMediumPriority, williamr@2: /** Low message priority */ williamr@2: EMsvLowPriority}; williamr@2: williamr@2: class CRichText; williamr@2: class CMsvStore; williamr@2: class CMsvEntry; williamr@2: class CMsvMove; williamr@2: class CMsvServer; williamr@2: class CMsvServerEntry; williamr@2: williamr@2: _LIT(KMsvDefaultFolder, "\\Private\\1000484b\\Mail\\"); williamr@2: _LIT(KMsvDefaultIndexFile, "\\Private\\1000484b\\Mail\\Index"); williamr@2: _LIT(KMsvDefaultFolder2, "\\Private\\1000484b\\Mail2\\"); williamr@2: _LIT(KMsvDefaultIndexFile2, "\\Private\\1000484b\\Mail2\\Index"); williamr@2: _LIT(KMsvDirectoryExt, "_S\\"); williamr@2: _LIT(KMsvBinaryFolderExt, "_F\\"); williamr@2: williamr@2: const TInt KFileNameFixedWidth=8; williamr@2: const TInt KMaxSubjectSkipStringLength=8; // For subject based email thread sorting williamr@2: _LIT(KSendAsRenderedImage, "Image"); williamr@2: williamr@2: // Server name and moving semaphore williamr@2: _LIT(KMsvServerName, "!MsvServer"); williamr@2: _LIT(KMsvMovingSemaphore, "MsvMovingSemaphore"); williamr@2: williamr@2: _LIT_SECURE_ID(KMsvServerId, 0x1000484B); williamr@2: williamr@2: williamr@2: /** Represents an entry in the Message Server index. williamr@2: williamr@2: MTM implementations and message client applications use it to access and manipulate williamr@2: index entry values. Note that a TMsvEntry is effectively a local cache of williamr@2: the index entry, and changes to it are not automatically written into the williamr@2: index. To commit changes to the Message Server, you need to call CMsvEntry::ChangeL() williamr@2: (or CMsvServerEntry::ChangeEntry()). williamr@2: williamr@2: To avoid repetition, the functions and data members are simply listed here, williamr@2: without detailed explanation of the fields. The public data members can be williamr@2: used to get and set the values of some index entry fields. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TMsvEntry williamr@2: { williamr@2: public: williamr@2: IMPORT_C TMsvEntry(); williamr@2: IMPORT_C TMsvEntry(const TMsvEntry& aEntry); williamr@2: IMPORT_C TMsvEntry& operator=(const TMsvEntry& aEntry); williamr@2: IMPORT_C TBool operator==(const TMsvEntry& aEntry) const; williamr@2: IMPORT_C TBool PermanentDataUnchanged(const TMsvEntry& aEntry) const; williamr@2: // williamr@2: IMPORT_C TMsvPriority Priority() const; williamr@2: IMPORT_C void SetPriority(TMsvPriority aPriority); williamr@2: // williamr@2: IMPORT_C void InternalizeL(RReadStream& aStream); williamr@2: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@2: // Read only for clients williamr@2: inline TMsvId Id() const; williamr@2: inline TMsvId Parent() const; williamr@2: inline TBool Owner() const; williamr@2: inline TBool Deleted() const; williamr@2: // Read & write for clients williamr@2: inline TBool Complete() const; williamr@2: inline void SetComplete(TBool aComplete); williamr@2: inline TBool New() const; williamr@2: inline void SetNew(TBool aNew); williamr@2: inline TBool Unread() const; williamr@2: inline void SetUnread(TBool aUnread); williamr@2: inline TBool Failed() const; williamr@2: inline void SetFailed(TBool aFailed); williamr@2: inline TBool Operation() const; williamr@2: inline void SetOperation(TBool aOperation); williamr@2: inline TBool Visible() const; williamr@2: inline void SetVisible(TBool aVisble); williamr@2: inline TBool MultipleRecipients() const; williamr@2: inline void SetMultipleRecipients(TBool aMultipleRecipient); williamr@2: inline TBool ReadOnly() const; williamr@2: inline void SetReadOnly(TBool aReadOnly); williamr@2: inline TBool StandardFolder() const; williamr@2: inline void SetStandardFolder(TBool aStanardFolder); williamr@2: inline TBool Attachment() const; williamr@2: inline void SetAttachment(TBool aAttachmentFlag); williamr@2: inline TBool Connected() const; williamr@2: inline void SetConnected(TBool aConnected); williamr@2: inline TBool InPreparation() const; williamr@2: inline void SetInPreparation(TBool aInPreparation); williamr@2: // williamr@2: inline TInt PcSyncCount() const; williamr@2: inline void DecPcSyncCount(); williamr@2: inline void IncPcSyncCount(); williamr@2: // williamr@2: inline TBool OffPeak() const; williamr@2: inline void SetOffPeak(TBool aOffPeak); williamr@2: inline TBool Scheduled() const; williamr@2: inline void SetScheduled(TBool aScheduled); williamr@2: inline TUint SendingState() const; williamr@2: inline void SetSendingState(TUint aSendingState); williamr@2: inline TBool PendingDelete() const; williamr@2: inline void SetPendingDelete(TBool aPendingDelete); williamr@2: williamr@2: /** This method sets bit 24 of iMtmData1, if you are using this bit elsewhere don't call this method.*/ williamr@2: inline void SetDeleteProtected(TBool aDeleteProtected); williamr@2: inline TBool DeleteProtected() const; williamr@2: /** This method sets bit 31 of iMtmData1, if you are using this bit elsewhere don't call this method.*/ williamr@2: inline void SetForwarded(TBool aForwarded); williamr@2: inline TBool Forwarded() const; williamr@2: /** This method sets bit 32 of iMtmData1, if you are using this bit elsewhere don't call this method.*/ williamr@2: inline void SetLocallyDeleted(TBool aLocallyDeleted); williamr@2: inline TBool LocallyDeleted() const; williamr@2: williamr@2: IMPORT_C TBool PendingConditions() const; williamr@2: IMPORT_C void SetPendingConditions(TBool aPendingConditions); williamr@2: // williamr@2: IMPORT_C TInt32 MtmData1() const; williamr@2: IMPORT_C TInt32 MtmData2() const; williamr@2: IMPORT_C TInt32 MtmData3() const; williamr@2: williamr@2: /** williamr@2: @internalTechnology williamr@2: */ williamr@2: IMPORT_C void SetMtmData1(TInt32 aMtmData); williamr@2: /** williamr@2: @internalTechnology williamr@2: */ williamr@2: IMPORT_C void SetMtmData2(TInt32 aMtmData); williamr@2: /** williamr@2: @internalTechnology williamr@2: */ williamr@2: IMPORT_C void SetMtmData3(TInt32 aMtmData); williamr@2: // williamr@2: protected: williamr@2: // only the server will be able to set the following williamr@2: inline void SetId(TMsvId aId); williamr@2: inline void SetParent(TMsvId aId); williamr@2: inline void SetOwner(TBool aAttachment); williamr@2: inline void SetDeleted(TBool aDeletedFlag); williamr@2: // williamr@2: inline TUint PersistedFlags() const; williamr@2: inline TUint TemporaryFlags() const; williamr@2: // williamr@2: private: williamr@2: void Copy(const TMsvEntry& aEntry); williamr@2: // williamr@2: private: williamr@2: TMsvId iId; williamr@2: TMsvId iParentId; williamr@2: TInt32 iData; williamr@2: TInt32 iPcSyncCount; williamr@2: TInt32 iReserved; // reserved for future proofing williamr@2: public: williamr@2: /** Service ID. */ williamr@2: TMsvId iServiceId; williamr@2: /** Related folder ID. */ williamr@2: TMsvId iRelatedId; williamr@2: /** Entry type */ williamr@2: TUid iType; williamr@2: /** MTM */ williamr@2: TUid iMtm; williamr@2: /** Time */ williamr@2: TTime iDate; williamr@2: /** Size */ williamr@2: TInt32 iSize; williamr@2: /** Error */ williamr@2: TInt32 iError; williamr@2: /** BIO message type */ williamr@2: TInt32 iBioType; williamr@2: // following three can be used by MTM williamr@2: /** MTM data 1: this can be used for any purpose by an MTM. This member must williamr@2: only be accessed through the predefined set and get functions. If you must williamr@2: write data to a bit that has no meaning in the predefined derived classes williamr@2: then you must derive your own class from TMsvEntry. williamr@2: */ williamr@2: TInt32 iMtmData1; williamr@2: /** MTM data 2: this can be used for any purpose by an MTM. This member must williamr@2: only be accessed through the predefined set and get functions. If you must williamr@2: write data to a bit that has no meaning in the predefined derived classes williamr@2: then you must derive your own class from TMsvEntry. williamr@2: */ williamr@2: TInt32 iMtmData2; williamr@2: /** MTM data 3: this can be used for any purpose by an MTM. This member must williamr@2: only be accessed through the predefined set and get functions. If you must williamr@2: write data to a bit that has no meaning in the predefined derived classes williamr@2: then you must derive your own class from TMsvEntry. williamr@2: */ williamr@2: TInt32 iMtmData3; williamr@2: public: williamr@2: // The TPtrC must be kept at end of class to simplify comparisons and initialisation williamr@2: /** Description */ williamr@2: TPtrC iDescription; williamr@2: /** Details */ williamr@2: TPtrC iDetails; williamr@2: // williamr@2: // williamr@2: private: williamr@2: // williamr@2: friend class CMsvEntry; williamr@2: friend class CMsvServer; williamr@2: friend class CMsvServerEntry; williamr@2: friend class CMsvClientEntry; williamr@2: friend class CMsvServerSession; williamr@2: friend class TMsvServerEntry; williamr@2: friend class CMsvServerIndex; williamr@2: friend class RMsvServerSession; williamr@2: friend class CMsvLocalCopyOperation; williamr@2: friend class CMsvMove; williamr@2: friend class CMsvIndexRebuild; williamr@2: friend class CMsvCopyEntry; williamr@2: friend class CMsvDelete; williamr@2: friend class CMsvIndexContext; williamr@2: friend class CMsvEntryArray; williamr@2: // williamr@2: private: williamr@2: // williamr@2: enum { KMsvEntryPriorityMask= 0x00000003, williamr@2: KMsvEntryHighPriority= 0x00000002, williamr@2: KMsvEntryMediumPriority= 0x00000001, williamr@2: KMsvEntryLowPriority= 0x00000000, williamr@2: KMsvEntryClearFlag= 0x00000000, williamr@2: KMsvOffPeakFlag= 0x00000004, williamr@2: KMsvEntryNotCompleteFlag= 0x00000008, williamr@2: KMsvEntryNewFlag= 0x00000010, williamr@2: KMsvEntryUnreadFlag= 0x00000020, williamr@2: KMsvEntryFailedFlag= 0x00000040, williamr@2: KMsvEntryOperationFlag= 0x00000080, williamr@2: KMsvEntryOwnerFlag= 0x00000100, williamr@2: KMsvEntryInvisibleFlag= 0x00000200, williamr@2: KMsvEntryMultipleRecipientFlag= 0x00000400, williamr@2: KMsvScheduledFlag= 0x00000800, williamr@2: KMsvEntryReadOnlyFlag= 0x00001000, williamr@2: KMsvEntryDeletedFlag= 0x00002000, williamr@2: KMsvEntryStandardFolderFlag= 0x00004000, williamr@2: KMsvEntryAttachmentFlag= 0x00008000, williamr@2: KMsvEntryInPreparationFlag= 0x00010000, williamr@2: KMsvSendingStateFlags= 0x001E0000, // Note: Sending state is shifted KMsvSendingStateShift places left williamr@2: KMsvEntryPersistedFlags= 0x00FFFFFF, williamr@2: KMsvEntryPendingConditionsFlag= 0x00800000, williamr@2: KMsvEntryTemporaryFlags= 0xFF000000, williamr@2: KMsvEntryConnectedFlag= 0x01000000, williamr@2: KMsvEntryPendingDeleteFlag= 0x02000000}; williamr@2: }; williamr@2: enum williamr@2: { williamr@2: KMsvEntryDeleteProtected= 0x800000, williamr@2: KMsvEntryForwarded= 0x40000000, williamr@2: KMsvEntryLocallyDeleted= 0x80000000 williamr@2: }; williamr@2: williamr@2: const TUint KMsvSendingStateShift=0x11; // Places to shift sending state williamr@2: williamr@2: /** Defines sending state flags. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvSendState williamr@2: { williamr@2: /** State unknown. */ williamr@2: KMsvSendStateUnknown = 0x0, williamr@2: /** Message will be sent on request. */ williamr@2: KMsvSendStateUponRequest = 0x1, williamr@2: /** Waiting to be sent. williamr@2: williamr@2: Messages in the outbox with this state can be sent automatically by the relevant williamr@2: MTM once an appropriate connection is established. */ williamr@2: KMsvSendStateWaiting = 0x2, williamr@2: /** Sending in progress. */ williamr@2: KMsvSendStateSending = 0x3, williamr@2: /** Sending scheduled. */ williamr@2: KMsvSendStateScheduled = 0x4, williamr@2: /** Resending. */ williamr@2: KMsvSendStateResend = 0x5, williamr@2: /** Sending suspended. */ williamr@2: KMsvSendStateSuspended = 0x6, williamr@2: /** Sending failed. */ williamr@2: KMsvSendStateFailed = 0x7, williamr@2: /** Sending complete. */ williamr@2: KMsvSendStateSent = 0x8, williamr@2: /** Not applicable. */ williamr@2: KMsvSendStateNotApplicable = 0x9 williamr@2: }; williamr@2: williamr@2: const TUint KMsvSendStateLast = KMsvSendStateNotApplicable; williamr@2: const TUint KMsvSendStateMax = 0x0F; williamr@2: williamr@2: /** Supplies values for bitmasks that allows the rapid setting or clearing of a williamr@2: number of TMsvEntry fields. williamr@2: williamr@2: The fields that can be manipulated are: williamr@2: williamr@2: 1. PC synchronisation williamr@2: williamr@2: 2. Visibility flag williamr@2: williamr@2: 3. Read flag williamr@2: williamr@2: 4. In-preparation flag williamr@2: williamr@2: 5. Connected flag williamr@2: williamr@2: 6. Pending deletion flag. williamr@2: williamr@2: 7. New flag williamr@2: williamr@2: @see TMsvEntry williamr@2: @see CMsvSession::ChangeAttributesL() williamr@2: @see CMsvServerEntry::ChangeAttributes() williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvAttribute { williamr@2: /** PC synchronisation field. */ williamr@2: KMsvPcSyncCountAttribute =0x00000001, williamr@2: /** Visibility flag field. */ williamr@2: KMsvVisibilityAttribute =0x00000200, williamr@2: /** Read flag field. */ williamr@2: KMsvUnreadAttribute =0x00000020, williamr@2: /** In-preparation field. */ williamr@2: KMsvInPreparationAttribute =0x00010000, williamr@2: /** Connected flag field. */ williamr@2: KMsvConnectedAttribute =0x01000000, williamr@2: /** Pending deletion flag. */ williamr@2: KMsvPendingDeleteAttribute =0x02000000, williamr@2: /** New flag field. */ williamr@2: KMsvNewAttribute =0x00000010}; williamr@2: williamr@2: /** Defines the sort order options for a TMsvSelectionOrdering object. Options williamr@2: are set through TMsvSelectionOrdering::SetSorting(). williamr@2: williamr@2: @see TMsvSelectionOrdering williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvSorting williamr@2: { williamr@2: /** Don't sort */ williamr@2: EMsvSortByNone=0, // Don't sort williamr@2: /** Date (earliest-latest) */ williamr@2: EMsvSortByDate, // Date (earliest-latest) williamr@2: /** Date (latest-earliest) */ williamr@2: EMsvSortByDateReverse, // Date (latest-earliest) williamr@2: /** Size (smallest-largest) */ williamr@2: EMsvSortBySize, // Size (smallest-largest) williamr@2: /** Size (largest-smallest) */ williamr@2: EMsvSortBySizeReverse, // Size (largest-smallest) williamr@2: /** To/From (A-Z folded) */ williamr@2: EMsvSortByDetails, // ToFrom (A-Z collated) williamr@2: /** To/From (Z-A folded) */ williamr@2: EMsvSortByDetailsReverse, // ToFrom (Z-A collated) williamr@2: /** Description (A-Z folded) */ williamr@2: EMsvSortByDescription, // Description (A-Z collated) williamr@2: /** Description (Z-A folded) */ williamr@2: EMsvSortByDescriptionReverse, // Description (Z-A collated) williamr@2: /** Sort by message ID. */ williamr@2: EMsvSortById, // Id (lowest-highest) williamr@2: /** Sort in reverse order by message ID. */ williamr@2: EMsvSortByIdReverse // Id (highest-lowest) williamr@2: }; williamr@2: williamr@2: /** Defines grouping order options for a TMsvEntrySelection object. Grouping options williamr@2: can be combined in a bitmask and set through the TMsvEntrySelection constructor williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvGrouping williamr@2: { williamr@2: /** No grouping */ williamr@2: KMsvNoGrouping=0, // No grouping williamr@2: /** Group by entry type, in order, services, folders, messages, attachments */ williamr@2: KMsvGroupByType=0x2, // Folder, Message, Attachment williamr@2: /** Place standard folders first, in the order they were created */ williamr@2: KMsvGroupByStandardFolders=0x6, // Standrad folders first (must have sorting by type set aswell) williamr@2: /** Group by message priority, in order, high, medium, then low */ williamr@2: KMsvGroupByPriority=0x8, // High, Mediem, Low williamr@2: /** Group by MTM, either in the order set by CMsvEntry::SetMtmListL() or by MTM williamr@2: Uid value */ williamr@2: KMsvGroupByMtm=0x10, // By increasing uid value williamr@2: }; williamr@2: williamr@2: /** Defines the sorting and grouping rules used to prepare a selection of entries. williamr@2: williamr@2: It is used in the interfaces of CMsvEntry and CMsvServerEntry to set the ordering williamr@2: of an entry's children. williamr@2: williamr@2: Firstly, the entries will be grouped, if the appropriate grouping option is williamr@2: set, by: williamr@2: williamr@2: 1. Standard folders: any entries marked as standard folders are placed first, williamr@2: in the order they were created. williamr@2: williamr@2: 2. Entry type: in the order services, folders, messages, attachments, unknown williamr@2: williamr@2: 3. Priority: in the order high, medium, then low williamr@2: williamr@2: 4. MTM: either in the MTM order set by CMsvEntry::SetMtmListL() or just in MTM williamr@2: Uid value williamr@2: williamr@2: Grouping options are simply Boolean flags that can be set on or off by functions williamr@2: of this class. williamr@2: williamr@2: Secondly, the order of entries within these groups is defined by a sorting williamr@2: order option. williamr@2: williamr@2: @see CMsvEntry williamr@2: @see CMsvServerEntry williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TMsvSelectionOrdering williamr@2: { williamr@2: public: williamr@2: IMPORT_C TMsvSelectionOrdering(); williamr@2: IMPORT_C TMsvSelectionOrdering(TInt aGroupingKey, TMsvSorting aSorting, TBool aShowInvisible=EFalse); williamr@2: IMPORT_C void InternalizeL(RReadStream& aStream); williamr@2: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@2: IMPORT_C TBool operator==(const TMsvSelectionOrdering& aOrdering) const; williamr@2: IMPORT_C void SetSubjectSkipString(const TDesC& aSubjectSkipString); williamr@2: IMPORT_C const TDesC& SubjectSkipString() const; williamr@2: williamr@2: // williamr@2: inline TMsvSorting Sorting() const; williamr@2: inline TBool GroupByType() const; williamr@2: inline TBool GroupStandardFolders() const; williamr@2: inline TBool GroupByPriority() const; williamr@2: inline TBool GroupByMtm() const; williamr@2: inline TBool ShowInvisibleEntries() const; williamr@2: inline TBool GroupingOn() const; williamr@2: // williamr@2: inline void SetGroupByType(TBool aFlag); williamr@2: inline void SetGroupStandardFolders(TBool aFlag); williamr@2: inline void SetGroupByPriority(TBool aFlag); williamr@2: inline void SetGroupByMtm(TBool aFlag); williamr@2: inline void SetShowInvisibleEntries(TBool aFlag); williamr@2: inline void SetSorting(TMsvSorting aSortType); williamr@2: williamr@2: // williamr@2: // williamr@2: private: williamr@2: williamr@2: enum TMsvGroupingPrivate williamr@2: { williamr@2: KMsvInvisibleFlag=0x1, williamr@2: KMsvStandardFolders=0x4, williamr@2: KMsvAllGroupingFlags=0x1e williamr@2: }; williamr@2: TInt iGrouping; williamr@2: TMsvSorting iSortType; williamr@2: TBuf iSubjectSkipString; williamr@2: }; williamr@2: williamr@2: const TInt KMsvInvisibleFlag=1; williamr@2: williamr@2: /** Encapsulates an array of entry IDs. williamr@2: williamr@2: An object of this type is commonly passed to a function to indicate the set williamr@2: of entries on which the function should operate. The array base class (CArrayFixFlat) williamr@2: provide methods to access, sort, and manipulate members of the array. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CMsvEntrySelection : public CArrayFixFlat williamr@2: { williamr@2: public: williamr@2: IMPORT_C CMsvEntrySelection(); williamr@2: IMPORT_C CMsvEntrySelection* CopyL() const; williamr@2: IMPORT_C CMsvEntrySelection* CopyLC() const; williamr@2: IMPORT_C TInt Find(TMsvId aId) const; williamr@2: }; williamr@2: williamr@2: /** Specifies a default service for a MTM. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TMsvDefaultService williamr@2: { williamr@2: public: williamr@2: /** MTM for which the default service is specified. */ williamr@2: TUid iMtm; williamr@2: /** ID of the default service. */ williamr@2: TMsvId iService; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: /** Used to query the Message Server for entries that match the specification defined williamr@2: in the filter. williamr@2: williamr@2: It allows a query to be performed on service, MTM, type and last change date. williamr@2: The filter also enables the specification of the order in which the entries williamr@2: are returned. williamr@2: williamr@2: @see CMsvSession::GetChildIdsL() williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CMsvEntryFilter : public CBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CMsvEntryFilter* NewLC(); williamr@2: IMPORT_C static CMsvEntryFilter* NewL(); williamr@2: // williamr@2: public: williamr@2: inline TMsvId Service() const; williamr@2: inline void SetService(TMsvId aServiceId); williamr@2: // williamr@2: inline TUid Mtm() const; williamr@2: inline void SetMtm(TUid aMtm); williamr@2: // williamr@2: inline TUid Type() const; williamr@2: inline void SetType(TUid aType); williamr@2: // williamr@2: inline const TTime& LastChangeDate() const; williamr@2: inline void SetLastChangeDate(const TTime& aLastChange); williamr@2: // williamr@2: inline const TMsvSelectionOrdering& Order() const; williamr@2: inline void SetOrder(const TMsvSelectionOrdering& aOrder); williamr@2: // williamr@2: inline TUid SortMtm() const; williamr@2: inline void SetSortMtm(TUid aSortMtm); williamr@2: // williamr@2: private: williamr@2: CMsvEntryFilter(); williamr@2: // williamr@2: private: williamr@2: TMsvId iServiceId; williamr@2: TUid iMtm; williamr@2: TUid iType; williamr@2: TTime iLastChange; williamr@2: TMsvSelectionOrdering iOrdering; williamr@2: TUid iSortMtm; williamr@2: }; williamr@2: williamr@2: // Error resolver leave codes -7000 to -7127 williamr@2: /** Defines error codes that relate to the Message Server. williamr@2: williamr@2: @see MMsvEntryObserver::EMsvContextInvalid williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvResolverLeave williamr@2: { williamr@2: /** There is no disk in the drive containing the Message Server index. */ williamr@2: KMsvMediaUnavailable = -7000, williamr@2: /** There is a disk in the drive containing the Message Server index, but it is williamr@2: the wrong one. */ williamr@2: KMsvMediaIncorrect = -7001, williamr@2: /** A CMsvEntry context is no longer valid because the location of the Message Server's williamr@2: index has changed. williamr@2: williamr@2: Such contexts will need refreshing by the client. williamr@2: williamr@2: @see MMsvEntryObserver::EMsvContextInvalid */ williamr@2: KMsvMediaChanged = -7002, williamr@2: KMsvIndexBackup = -7003, williamr@2: KMsvIndexRestore = -7004 williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif