20 #include <liwgenericparam.h> |
20 #include <liwgenericparam.h> |
21 #include <liwcommon.h> |
21 #include <liwcommon.h> |
22 #include "clandmarkobserver.h" |
22 #include "clandmarkobserver.h" |
23 #include "clandmarkiterable.h" |
23 #include "clandmarkiterable.h" |
24 #include "clandmarkcategoryiterable.h" |
24 #include "clandmarkcategoryiterable.h" |
|
25 #include "clandmarkmanagehandlers.h" |
25 #include "landmarkinterface.h" |
26 #include "landmarkinterface.h" |
26 #include "landmarkliwparams.hrh" |
27 #include "landmarkliwparams.hrh" |
27 #include "../../inc/serviceerrno.h" |
28 #include "../../inc/serviceerrno.h" |
28 |
29 |
29 // ============================ MEMBER FUNCTIONS =============================== |
30 // ============================ MEMBER FUNCTIONS =============================== |
47 CLandmarkObserver::CLandmarkObserver( CLandmarkInterface* aLmIface ) |
48 CLandmarkObserver::CLandmarkObserver( CLandmarkInterface* aLmIface ) |
48 : iLmIface(aLmIface) |
49 : iLmIface(aLmIface) |
49 { |
50 { |
50 } |
51 } |
51 |
52 |
|
53 CLandmarkObserver::~CLandmarkObserver() |
|
54 { |
|
55 delete iId; |
|
56 } |
52 // ----------------------------------------------------------------------------- |
57 // ----------------------------------------------------------------------------- |
53 // CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, |
58 // CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, |
54 // TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri ) |
59 // TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri ) |
55 // Pack the outputs and call the callback function. |
60 // Pack the outputs and call the callback function. |
56 // ----------------------------------------------------------------------------- |
61 // ----------------------------------------------------------------------------- |
57 // |
62 // |
58 void CLandmarkObserver::HandleLandmarkItemsL( CPosLmItemIterator* aIterator, |
63 void CLandmarkObserver::HandleLandmarkItemsL( CPosLmItemIterator* aIterator, |
59 TInt32 aTransactionId, TInt aError, const TDesC& aDatabaseUri ) |
64 TInt32 aTransactionId, TInt aError, CLandmarkHandler* aHandler ) |
60 { |
65 { |
61 TInt SapiErr = SErrNone; |
66 TInt SapiErr = SErrNone; |
62 //retrieve callback |
67 //retrieve callback |
63 MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId); |
68 MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId); |
64 if( !callback ) |
69 if( !callback ) |
79 callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList); |
84 callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList); |
80 } |
85 } |
81 else |
86 else |
82 { |
87 { |
83 //instantiate CLandmarkIterable |
88 //instantiate CLandmarkIterable |
84 CLiwIterable* iterable = CLandmarkIterable::NewL(aIterator,aDatabaseUri); |
89 TPtrC dbUri; |
85 CleanupClosePushL(*iterable); |
90 aHandler->GetDatabaseUri (dbUri ); |
|
91 CLandmarkIterable* iterable = CLandmarkIterable::NewL(aIterator,dbUri); |
|
92 iterable->PushL(); |
86 //pack to aOutParamList |
93 //pack to aOutParamList |
|
94 iterable->SetHandler(aHandler); |
87 eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr))); |
95 eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr))); |
88 eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable))); |
96 eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable))); |
89 callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList); |
97 callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList); |
90 CleanupStack::PopAndDestroy(iterable); |
98 CleanupStack::PopAndDestroy(iterable); |
91 } |
99 } |
98 // TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri ) |
106 // TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri ) |
99 // Pack the outputs and call the callback function. |
107 // Pack the outputs and call the callback function. |
100 // ----------------------------------------------------------------------------- |
108 // ----------------------------------------------------------------------------- |
101 // |
109 // |
102 void CLandmarkObserver::HandleCategoryItemsL( CPosLmItemIterator* aIterator, |
110 void CLandmarkObserver::HandleCategoryItemsL( CPosLmItemIterator* aIterator, |
103 TInt32 aTransactionId, TInt aError, const TDesC& aDatabaseUri ) |
111 TInt32 aTransactionId, TInt aError, CLandmarkHandler* aHandler ) |
104 { |
112 { |
105 TInt SapiErr = SErrNone; |
113 TInt SapiErr = SErrNone; |
106 //retrieve callback |
114 //retrieve callback |
107 MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId); |
115 MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId); |
108 if( !callback ) |
116 if( !callback ) |
123 callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList); |
131 callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList); |
124 } |
132 } |
125 else |
133 else |
126 { |
134 { |
127 //instantiate CLandmarkIterable |
135 //instantiate CLandmarkIterable |
128 CLiwIterable* iterable = CLandmarkCategoryIterable::NewL(aIterator,aDatabaseUri); |
136 TPtrC dbUri; |
129 CleanupClosePushL(*iterable); |
137 aHandler->GetDatabaseUri (dbUri ); |
|
138 CLandmarkCategoryIterable* iterable = CLandmarkCategoryIterable::NewL(aIterator,dbUri); |
|
139 iterable->PushL(); |
130 //pack to aOutParamList |
140 //pack to aOutParamList |
|
141 iterable->SetHandler(aHandler); |
131 eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr))); |
142 eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr))); |
132 eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable))); |
143 eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable))); |
133 callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList); |
144 callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList); |
134 CleanupStack::PopAndDestroy(iterable); |
145 CleanupStack::PopAndDestroy(iterable); |
135 } |
146 } |
136 CleanupStack::PopAndDestroy(inParamList); |
147 CleanupStack::PopAndDestroy(inParamList); |
137 CleanupStack::PopAndDestroy(eventParamList); |
148 CleanupStack::PopAndDestroy(eventParamList); |
138 } |
149 } |
139 |
150 |
|
151 void CLandmarkObserver::HandleAddItemsL(TPosLmItemId aId, |
|
152 TInt32 aTransactionId, TInt aError) |
|
153 { |
|
154 if (iId) |
|
155 { |
|
156 delete iId; |
|
157 iId = NULL; |
|
158 } |
|
159 TInt SapiErr = SErrNone; |
|
160 //retrieve callback |
|
161 MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId); |
|
162 if (!callback) |
|
163 { |
|
164 //how to flag error |
|
165 return; |
|
166 } |
|
167 //Create param list |
|
168 CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL(); |
|
169 CleanupStack::PushL(eventParamList); |
|
170 CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL(); |
|
171 CleanupStack::PushL(inParamList); |
|
172 |
|
173 if (aError != KErrNone) |
|
174 { |
|
175 SapiErr = iLmIface->SapiError(aError); |
|
176 eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant( |
|
177 (TInt32) SapiErr))); |
|
178 callback->HandleNotifyL(aTransactionId, KLiwEventError, |
|
179 *eventParamList, *inParamList); |
|
180 } |
|
181 else |
|
182 { |
|
183 iId = HBufC::NewL(KMaxIDStringLength); |
|
184 iId->Des().Num(aId, EDecimal); |
|
185 //pack to aOutParamList |
|
186 eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant( |
|
187 (TInt32) SapiErr))); |
|
188 eventParamList->AppendL(TLiwGenericParam(KReturnValue, TLiwVariant(iId))); |
|
189 callback->HandleNotifyL(aTransactionId, KLiwEventCompleted, |
|
190 *eventParamList, *inParamList); |
|
191 } |
|
192 CleanupStack::PopAndDestroy(inParamList); |
|
193 CleanupStack::PopAndDestroy(eventParamList); |
|
194 } |
|
195 |
|
196 void CLandmarkObserver::HandleItemsL(TInt32 aTransactionId, TInt aError) |
|
197 { |
|
198 TInt SapiErr = SErrNone; |
|
199 //retrieve callback |
|
200 MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId); |
|
201 if (!callback) |
|
202 { |
|
203 //how to flag error |
|
204 return; |
|
205 } |
|
206 //Create param list |
|
207 CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL(); |
|
208 CleanupStack::PushL(eventParamList); |
|
209 CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL(); |
|
210 CleanupStack::PushL(inParamList); |
|
211 |
|
212 if (aError != KErrNone) |
|
213 { |
|
214 SapiErr = iLmIface->SapiError(aError); |
|
215 eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant( |
|
216 (TInt32) SapiErr))); |
|
217 callback->HandleNotifyL(aTransactionId, KLiwEventError, |
|
218 *eventParamList, *inParamList); |
|
219 } |
|
220 else |
|
221 { |
|
222 //pack to aOutParamList |
|
223 eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant( |
|
224 (TInt32) SapiErr))); |
|
225 callback->HandleNotifyL(aTransactionId, KLiwEventCompleted, |
|
226 *eventParamList, *inParamList); |
|
227 } |
|
228 CleanupStack::PopAndDestroy(inParamList); |
|
229 CleanupStack::PopAndDestroy(eventParamList); |
|
230 } |
140 //End of file |
231 //End of file |