--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappservices/calendar/client/src/calattachmentmanager.cpp Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,160 @@
+// Copyright (c) 2006-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:
+//
+
+#include "calattachmentmanagerimpl.h"
+
+/** Create a new attachment manager.
+@param aSession An open calendar session to be used.
+@param aProgressCallBack The class to be called back when the attachment manager is created.
+Note that if an entry view or instance view has been created already, then this callback will happen immediately.
+@pre A calendar file has been opened on a calendar session.
+@post Once the callback is complete, the attachment manager will be constructed and ready for use.
+@return A pointer to a new attachment manager.
+@publishedPartner
+@released
+@capability None
+*/
+EXPORT_C CCalAttachmentManager* CCalAttachmentManager::NewL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack)
+ {
+ CCalAttachmentManager* self = new (ELeave) CCalAttachmentManager();
+ CleanupStack::PushL(self);
+ self->ConstructL(aSession, aProgressCallBack);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CCalAttachmentManager::CCalAttachmentManager()
+ {
+ }
+
+/** Destructor for the attachment manager.
+@publishedPartner
+@released
+@pre An attachment manager has been constructed
+@post The attachment manager is destroyed
+@capability None
+*/
+EXPORT_C CCalAttachmentManager::~CCalAttachmentManager()
+ {
+ delete iAttachmentManagerImpl;
+ }
+
+void CCalAttachmentManager::ConstructL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack)
+ {
+ iAttachmentManagerImpl = CCalAttachmentManagerImpl::NewL(aSession, aProgressCallBack);
+ }
+
+/** Fetches the details of all unique file attachments referenced from entries within the calendar store, sorted as specified.
+This does not include URI attachments.
+Note that the full attachment data is not loaded in this operation, only the metadata for each of the file attachments.
+If an attachment is referenced by more than one entry, it will appear only once in the iterator.
+@param aSortOrder The order in which to sort the attachments.
+@return A pointer to an iterator of attachments. The caller takes ownership.
+@pre None
+@post A new attachment iterator is returned containing the sorted file attachments.
+@publishedPartner
+@released
+@capability ReadUserData
+*/
+EXPORT_C CCalAttachmentIterator* CCalAttachmentManager::FetchAttachmentsL(TSortOrder aSortOrder) const
+ {
+ CCalAttachmentIteratorImpl* impl = iAttachmentManagerImpl->FetchAttachmentsL(aSortOrder);
+ CleanupStack::PushL(impl);
+ CCalAttachmentIterator* iterator = new (ELeave) CCalAttachmentIterator(*impl);
+ CleanupStack::Pop(impl);
+ return iterator;
+ }
+
+/** Fetches the local UIDs of all entries in the database that reference this file attachment.
+This does nothing if a URI attachment is passed in, or if the file attachment has not been stored in the calendar database yet.
+@param aUids On return, an array of local UIDs of all the entries that contain this file attachment.
+@param aAttachment The file attachment object whose referencing entries will be returned.
+@leave KErrArgument The attachment is not a file attachment - i.e. of type CCalAttachment::EFile.
+@pre None
+@post None
+@publishedPartner
+@released
+@capability ReadUserData
+*/
+EXPORT_C void CCalAttachmentManager::EntriesReferencingFileAttachmentL(RArray<TCalLocalUid>& aUids, const CCalAttachment& aAttachment) const
+ {
+ __ASSERT_ALWAYS(aAttachment.Type() == CCalAttachment::EFile, User::Leave(KErrArgument));
+ iAttachmentManagerImpl->EntriesReferencingFileAttachmentL(aUids, aAttachment.Impl());
+ }
+
+//
+// CCalAttachmentIterator //
+//
+
+// This takes ownership of aIterator
+CCalAttachmentIterator::CCalAttachmentIterator(CCalAttachmentIteratorImpl& aIterator) :
+ iAttachmentIteratorImpl(&aIterator)
+ {
+ }
+
+/** Destructor.
+Clears resources of the attachment iterator.
+@pre An attachment iterator has been constructed from a CCalAttachmentManager::FetchAttachmentsL call.
+@post The iterator is destroyed.
+@publishedPartner
+@released
+@capability None
+*/
+EXPORT_C CCalAttachmentIterator::~CCalAttachmentIterator()
+ {
+ delete iAttachmentIteratorImpl;
+ }
+
+/** Checks to see if there are more attachments in the iterator.
+If there are, the next one can be fetched by calling NextL.
+@return ETrue if there are more attachments, EFalse if not.
+@pre None
+@post None
+@publishedPartner
+@released
+@capability None
+*/
+EXPORT_C TBool CCalAttachmentIterator::HasMore() const
+ {
+ return iAttachmentIteratorImpl->HasMore();
+ }
+
+/** Returns the next attachment in the iterator, or NULL if there are no more attachments.
+@return A pointer to a new attachment object. Ownership is returned. NULL if the iterator has finished.
+@leave KErrNotFound if an attachment has been deleted since the original search that returned the iterator of attachments.
+Otherwise one of the system-wide error codes.
+@pre None
+@post The iterator moves to the next attachment in its results list.
+@publishedPartner
+@released
+@capability None
+*/
+EXPORT_C CCalAttachment* CCalAttachmentIterator::NextL()
+ {
+ return iAttachmentIteratorImpl->NextL();
+ }
+
+/** Returns the total number of attachments in the iterator.
+@return The number of attachments.
+@pre None
+@post None
+@publishedPartner
+@released
+@capability None
+*/
+EXPORT_C TInt CCalAttachmentIterator::Count() const
+ {
+ return iAttachmentIteratorImpl->Count();
+ }