pimappservices/calendar/client/src/calattachmentmanagerimpl.cpp
changeset 0 f979ecb2b13e
equal deleted inserted replaced
-1:000000000000 0:f979ecb2b13e
       
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include "calattachmentmanagerimpl.h"
       
    17 #include <calsession.h>
       
    18 #include "calsessionimpl.h"
       
    19 #include "calcommonimpl.h"
       
    20 #include "calclient.h"
       
    21 
       
    22 // CCalAttachmentManagerImpl // 
       
    23 
       
    24 CCalAttachmentManagerImpl* CCalAttachmentManagerImpl::NewL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack)
       
    25 	{
       
    26 	CCalAttachmentManagerImpl* self = new (ELeave) CCalAttachmentManagerImpl(aSession);
       
    27 	CleanupStack::PushL(self);
       
    28 	self->ConstructL(aProgressCallBack);
       
    29 	CleanupStack::Pop(self);
       
    30 	return self;
       
    31 	}
       
    32 
       
    33 CCalAttachmentManagerImpl::CCalAttachmentManagerImpl(CCalSession& aSession) : 
       
    34 	iCalSessionImpl(aSession.Impl())
       
    35 	{
       
    36 	iCalSessionImpl.IncrementReferenceCount();
       
    37 	}
       
    38 
       
    39 void CCalAttachmentManagerImpl::ConstructL(MCalProgressCallBack& aProgressCallBack)
       
    40 	{
       
    41 	iCalSessionImpl.AsyncTaskManager().StartBuildIndexL(aProgressCallBack);
       
    42 	}
       
    43 	
       
    44 CCalAttachmentManagerImpl::~CCalAttachmentManagerImpl()
       
    45 	{
       
    46 	if(iCalSessionImpl.AsyncTaskManager().BuildingIndex())
       
    47 		{
       
    48 		iCalSessionImpl.AsyncTaskManager().Cancel();
       
    49 		}
       
    50 	iCalSessionImpl.DecrementReferenceCount();
       
    51 	}
       
    52 
       
    53 CCalAttachmentIteratorImpl* CCalAttachmentManagerImpl::FetchAttachmentsL(CCalAttachmentManager::TSortOrder aSortOrder) const
       
    54 	{
       
    55 	CCalAttachmentIteratorImpl* iteratorImpl = new (ELeave) CCalAttachmentIteratorImpl(iCalSessionImpl);
       
    56 	CleanupStack::PushL(iteratorImpl);
       
    57 	iCalSessionImpl.Server().FetchAttachmentsL(*iteratorImpl, aSortOrder, iCalSessionImpl.FileId());
       
    58 	CleanupStack::Pop(iteratorImpl);
       
    59 	return iteratorImpl;
       
    60 	}
       
    61 
       
    62 void CCalAttachmentManagerImpl::EntriesReferencingFileAttachmentL(RArray<TCalLocalUid>& aUids, const CAgnAttachment& aAttachment)
       
    63 	{
       
    64 	iCalSessionImpl.Server().EntriesReferencingFileAttachmentL(aUids, aAttachment, iCalSessionImpl.FileId());
       
    65 	}
       
    66 
       
    67 // CCalAttachmentIteratorImpl // 
       
    68 
       
    69 CCalAttachmentIteratorImpl::CCalAttachmentIteratorImpl(CCalSessionImpl& aSessionImpl)
       
    70 	: iCalSessionImpl(aSessionImpl)
       
    71 	{
       
    72 	}
       
    73 
       
    74 CCalAttachmentIteratorImpl::~CCalAttachmentIteratorImpl()
       
    75 	{
       
    76 	iArray.Reset();
       
    77 	}
       
    78 
       
    79 void CCalAttachmentIteratorImpl::AppendL(TCalAttachmentUid aId)
       
    80 	{
       
    81 	iArray.AppendL(aId);
       
    82 	iTotalAttachments = iArray.Count();
       
    83 	}
       
    84 
       
    85 TBool CCalAttachmentIteratorImpl::HasMore() const
       
    86 	{
       
    87 	return (iArray.Count() > 0);
       
    88 	}
       
    89 
       
    90 CCalAttachment* CCalAttachmentIteratorImpl::NextL()
       
    91 	{
       
    92 	CCalAttachment* calAttachment = NULL;
       
    93 	if (HasMore())
       
    94 		{
       
    95 		CAgnAttachment* agnAttachment = iCalSessionImpl.Server().FetchAttachmentByIdL(iArray[0], iCalSessionImpl.FileId());
       
    96 		if (agnAttachment)
       
    97 			{
       
    98 			CleanupStack::PushL(agnAttachment);
       
    99 			agnAttachment->SetFlag(CAgnAttachment::EOwnedByCalAttachment);
       
   100 			calAttachment = CCalAttachment::NewL(*agnAttachment, iCalSessionImpl);
       
   101 			CleanupStack::Pop(agnAttachment);
       
   102 			iArray.Remove(0);
       
   103 			}
       
   104 		else
       
   105 			{
       
   106 			// attachment may have been deleted since initial search
       
   107 			User::Leave(KErrNotFound); 
       
   108 			}
       
   109 		}
       
   110 	return calAttachment;
       
   111 	}
       
   112 
       
   113 TInt CCalAttachmentIteratorImpl::Count() const
       
   114 	{
       
   115 	return iTotalAttachments;
       
   116 	}