pimappservices/calendar/client/inc/calinstanceviewimpl.h
changeset 0 f979ecb2b13e
equal deleted inserted replaced
-1:000000000000 0:f979ecb2b13e
       
     1 // Copyright (c) 2005-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 #ifndef __CALINSTANCEVIEWIMPL_H__
       
    17 #define __CALINSTANCEVIEWIMPL_H__
       
    18 
       
    19 #include "agmids.h"
       
    20 #include "agmfilter.h"
       
    21 #include "calinstanceview.h"
       
    22 #include "calprogresscallback.h"
       
    23 class CAgnEntry;
       
    24 class CAgnEntryModel;
       
    25 class CAgnSimpleEntry;
       
    26 class CCalLiteEntry;
       
    27 class CCalSession;
       
    28 class CCalSessionImpl;
       
    29 class CCalInstance;
       
    30 class MCalProgressCallBack;
       
    31 class RAgendaServ;
       
    32 
       
    33 /** Implementation class for the CCalInstanceView.
       
    34 
       
    35 @internalComponent
       
    36 */
       
    37 
       
    38 NONSHARABLE_CLASS(CCalInstanceViewImpl) : public CBase, public MCalProgressCallBack
       
    39     {
       
    40 public:
       
    41 	static CCalInstanceViewImpl* NewL(CCalSession& aSession, MCalProgressCallBack* aProgressCallBack);
       
    42 	~CCalInstanceViewImpl();
       
    43 	static CCalInstanceViewImpl* NewL(RPointerArray<CCalSession>& aSessions, MCalProgressCallBack* aProgressCallBack);
       
    44 	CCalSessionImpl& CalSessionImpl() const;
       
    45 
       
    46 	void FindInstanceL(RPointerArray<CCalInstance>& aInstanceList, CalCommon::TCalViewFilter aCalViewFilter, const CalCommon::TCalTimeRange& aTimeRange) const;
       
    47 	void FindInstanceL(RPointerArray<CCalInstance>& aMatchedInstanceList, CalCommon::TCalViewFilter aCalViewFilter, const CalCommon::TCalTimeRange& aTimeRange, const CCalInstanceView::TCalSearchParams& aSearchParams) const;
       
    48 	
       
    49 	CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings& aSettings) const;
       
    50 	CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings& aSettings, TCalLocalUid aLocalUid, const TCalTime& aInstanceTime) const;
       
    51 	CCalInstanceIterator* FindInstanceByUidL(const TDesC8& aUid, const TCalTime& aInstanceTime) const;
       
    52 	CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings& aSettings, TCalInstanceId& aInstanceId) const;
       
    53 	CCalInstanceIterator* FindInstanceByUidL(TCalCollectionId aCollectionId, const TDesC8& aUid, const TCalTime& aInstanceTime) const;
       
    54 	
       
    55 	CCalInstance* FindInstanceL(TCalLocalUid aLocalId, const TCalTime& aInstanceTime) const;
       
    56 	CCalInstance* FindInstanceL(TCalInstanceId& aInstanceId) const;
       
    57 
       
    58 #ifdef SYMBIAN_SKIPPED_CALENDAR_ALARMS	
       
    59     void FindAlarmedInstanceL(RPointerArray<CCalInstance>& aAlarmedInstanceList,    
       
    60     						  TASShdAlarmedInstanceParams aAlarmedInstanceParams) const;
       
    61 #endif    
       
    62 	
       
    63 	void DeleteL(CCalInstance* aInstance, CalCommon::TRecurrenceRange aWhichInstances);
       
    64 					   
       
    65 	TCalTime NextInstanceL(CalCommon::TCalViewFilter aCalViewFilter, const TCalTime& aStartDate) const;
       
    66 	TCalTime PreviousInstanceL(CalCommon::TCalViewFilter aCalViewFilter, const TCalTime& aStartDate) const;
       
    67 	
       
    68 	static void DestroySimpleEntryArray(TAny* aPtr); //Cleanup function used to delete CAgnSimpleEntries.
       
    69 	static void CleanCalLiteEntries(TAny* aPtr);  //Cleanup function used to delete CCalLiteEntries.
       
    70 	CArrayFixSeg<TAgnInstance>* FindInstanceIdL(const CCalFindInstanceSettings& aCalFindInstanceSettings) const;
       
    71 	CCalInstance* CreateInstanceFromLiteEntryL(CCalLiteEntry& aLiteEntry, TAgnInstanceId& aInstanceId, TBool aCheckInstanceTime) const;
       
    72 	void FetchLiteEntriesFromIdsL(RArray<TAgnInstance>& aEntryIds, RPointerArray<CCalLiteEntry>& aCalLiteEntries, TLinearOrder<CCalLiteEntry>* aOrder) const;
       
    73 
       
    74 	CCalInstance* CreateInstanceL(CCalLiteEntry& aLiteEntry, const TCalTime& aInstanceTime) const;
       
    75 	CCalInstance* CreateInstanceL(const TAgnInstance& aInstanceId) const;
       
    76 	TBool IsValidInstanceL(const CAgnSimpleEntry& aEntry, const TCalTime& aInstanceTime) const;
       
    77 	void GetFileIdLC(RArray<TInt64>& aFiles)const;
       
    78 	void GetShortFileIdLC(RArray<TInt>& aFiles)const;
       
    79 	RAgendaServ& GetServ() const;
       
    80 	void IncrementsessionReferenceCount();
       
    81 	void DecrementSessionReferenceCount();
       
    82 	
       
    83 	
       
    84 private:
       
    85 	void Progress(TInt aPercentageCompleted);
       
    86 	void Completed(TInt aError);
       
    87 	TBool NotifyProgress();
       
    88 	CCalInstanceViewImpl(RAgendaServ& aAgendaServer);
       
    89 	void ConstructL(MCalProgressCallBack* aProgressCallBack, CCalSession& aSession);
       
    90 	void ConstructL(RPointerArray<CCalSession>& aSessions, MCalProgressCallBack* aProgressCallBack);
       
    91 	
       
    92 	void DeleteInstanceL(CAgnEntry& aEntry, const TAgnCalendarTime& aInstanceTime, CalCommon::TRecurrenceRange aWhichInstances);
       
    93 	void DoDeleteInstanceL(CAgnEntry& aEntry, const TAgnCalendarTime& aInstanceTime, CalCommon::TRecurrenceRange aWhichInstances);
       
    94 	
       
    95 	void FindInstancesFromIdsL(CArrayFixSeg<TAgnInstance>* aInstanceIds, RPointerArray<CCalInstance>& aInstanceArray) const;
       
    96 	static TInt CompareInstanceId(const TAgnInstance& aLeft, const TAgnInstance& aRight);
       
    97 	CCalSessionImpl* FindSession(TUint8 aShortFileId) const;
       
    98 
       
    99 	static TBool DefaultSortOnly(const CCalFindInstanceSettings& aSettings); 
       
   100 	
       
   101 	CCalInstanceIterator* DoFindInstanceL(const CCalFindInstanceSettings& aSettings, TCalLocalUid aLocalUid, const TCalTime& aInstanceTime, TUint8 aShortFileId) const;
       
   102 	CCalInstance* DoFindInstanceL(TCalLocalUid aLocalId, const TCalTime& aInstanceTime, TUint8 aShortFileId) const;
       
   103 
       
   104 private: 
       
   105 
       
   106 	RAgendaServ&		iAgendaServer;
       
   107 	TInt 					iCurrentFileToOpen;
       
   108 	MCalProgressCallBack* 	iCalProgressCallBack;
       
   109 	RPointerArray<CCalSessionImpl> iCalSessions;//Doesn't own the objects
       
   110 	};
       
   111 
       
   112 
       
   113 /**
       
   114 This Class is used for cleaning up sortentries when a leave happens,
       
   115 SimpleEntry should be deleted using SimpleEntryAllocator.
       
   116 Cleanup function DestroySimpleEntryArray() uses an object of this class.
       
   117 */
       
   118 class TCleanSimpleEntryArray
       
   119 {
       
   120 public:
       
   121 	TCleanSimpleEntryArray(RPointerArray<CAgnSimpleEntry>& aSimpleEntryArray, RAgendaServ& aAgendaServ);
       
   122 	CAgnSimpleEntry* GetSimpleEntryAt(TInt aPos);
       
   123 	RAgendaServ& GetAgendaServ();
       
   124 	TInt GetCount() const;
       
   125 	void CloseArray();
       
   126 private:
       
   127 	RPointerArray<CAgnSimpleEntry>& iSimpleEntryArray;
       
   128 	RAgendaServ&			iAgendaServer;
       
   129 };	
       
   130 
       
   131 #endif // __CALINSTANCEVIEW_H__