17 // INCLUDES |
17 // INCLUDES |
18 #include <ccsclientconversation.h> |
18 #include <ccsclientconversation.h> |
19 #include <ccsconversationentry.h> |
19 #include <ccsconversationentry.h> |
20 #include "ccsconversationcache.h" |
20 #include "ccsconversationcache.h" |
21 #include "ccsconversationdeletehandler.h" |
21 #include "ccsconversationdeletehandler.h" |
22 #include "mcsconversationdeleteobserver.h" |
|
23 |
22 |
24 // ---------------------------------------------------------------------------- |
23 // ---------------------------------------------------------------------------- |
25 // CCsConversationDeleteHandler::NewL |
24 // CCsConversationDeleteHandler::NewL |
26 // Two Phase Construction |
25 // Two Phase Construction |
27 // ---------------------------------------------------------------------------- |
26 // ---------------------------------------------------------------------------- |
28 CCsConversationDeleteHandler* CCsConversationDeleteHandler:: |
27 CCsConversationDeleteHandler* CCsConversationDeleteHandler:: |
29 NewL(CCsConversationCache* aCache, MCsConversationDeleteObserver* aObserver) |
28 NewL(CCsConversationCache* aCache) |
30 { |
29 { |
31 CCsConversationDeleteHandler* self = |
30 CCsConversationDeleteHandler* self = |
32 new (ELeave) CCsConversationDeleteHandler(); |
31 new (ELeave) CCsConversationDeleteHandler(); |
33 CleanupStack::PushL(self); |
32 CleanupStack::PushL(self); |
34 self->ConstructL(aCache, aObserver); |
33 self->ConstructL(aCache); |
35 CleanupStack::Pop(self); // self |
34 CleanupStack::Pop(self); // self |
36 return self; |
35 return self; |
37 } |
36 } |
38 |
37 |
39 // ---------------------------------------------------------------------------- |
38 // ---------------------------------------------------------------------------- |
40 // Constructor |
39 // Constructor |
41 // ---------------------------------------------------------------------------- |
40 // ---------------------------------------------------------------------------- |
42 CCsConversationDeleteHandler::CCsConversationDeleteHandler(): |
41 CCsConversationDeleteHandler::CCsConversationDeleteHandler(): |
43 CActive(CActive::EPriorityLow) |
42 CActive(CActive::EPriorityLow), |
|
43 iState(EIdle), |
|
44 iConversationEntryList(NULL) |
44 { |
45 { |
45 CActiveScheduler::Add( this ); |
46 CActiveScheduler::Add( this ); |
46 } |
47 } |
47 |
48 |
48 // ---------------------------------------------------------------------------- |
49 // ---------------------------------------------------------------------------- |
49 // Constructor |
50 // Constructor |
50 // ---------------------------------------------------------------------------- |
51 // ---------------------------------------------------------------------------- |
51 void CCsConversationDeleteHandler::ConstructL(CCsConversationCache* aCache, |
52 void CCsConversationDeleteHandler::ConstructL(CCsConversationCache* aCache) |
52 MCsConversationDeleteObserver* aObserver) |
|
53 { |
53 { |
54 iCache = aCache; |
54 iCache = aCache; |
55 iState = EIdle; |
|
56 iObserver = aObserver; |
|
57 |
|
58 iConversationEntryList = new (ELeave)RPointerArray<CCsConversationEntry> (); |
|
59 iSession = CMsvSession::OpenSyncL(*this); |
55 iSession = CMsvSession::OpenSyncL(*this); |
60 } |
56 } |
61 |
57 |
62 // ---------------------------------------------------------------------------- |
58 // ---------------------------------------------------------------------------- |
63 // Destructor |
59 // Destructor |
64 // ---------------------------------------------------------------------------- |
60 // ---------------------------------------------------------------------------- |
65 CCsConversationDeleteHandler::~CCsConversationDeleteHandler() |
61 CCsConversationDeleteHandler::~CCsConversationDeleteHandler() |
66 { |
62 { |
|
63 // Make sure Aync request cancel. |
|
64 Cancel(); |
|
65 |
67 if(iSession) |
66 if(iSession) |
68 { |
67 { |
69 delete iSession; |
68 delete iSession; |
70 iSession = NULL; |
69 iSession = NULL; |
71 } |
70 } |
72 } |
71 |
|
72 if (iConversationEntryList) |
|
73 { |
|
74 iConversationEntryList->ResetAndDestroy(); |
|
75 iConversationEntryList->Close(); |
|
76 delete iConversationEntryList; |
|
77 iConversationEntryList = NULL; |
|
78 } |
|
79 } |
73 |
80 |
74 // ---------------------------------------------------------------------------- |
81 // ---------------------------------------------------------------------------- |
75 // Delete set of messages |
82 // Delete set of messages |
76 // ---------------------------------------------------------------------------- |
83 // ---------------------------------------------------------------------------- |
77 void CCsConversationDeleteHandler::DeleteL(TInt aConversationId) |
84 void CCsConversationDeleteHandler::DeleteL(TInt aConversationId) |
78 { |
85 { |
79 // Check if delete in progress |
86 // Check if delete in progress |
80 if ( iCache->IsDeleted(aConversationId) ) |
87 if ( iCache->IsDeleted(aConversationId) ) |
81 { |
88 { |
82 iObserver->DeleteInProgress(this); |
89 // Deletion is in progress for this conversation, so clean up this AO |
|
90 delete this; |
83 return; |
91 return; |
84 } |
92 } |
85 |
93 |
86 // Store conversationId currently being deleted. |
94 // Store conversationId currently being deleted. |
87 iConversationId = aConversationId; |
95 iConversationId = aConversationId; |