|
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__ |