photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp
equal
deleted
inserted
replaced
117 // ---------------------------------------------------------------------------- |
117 // ---------------------------------------------------------------------------- |
118 // |
118 // |
119 void CGlxDataSourceTaskMde::CancelRequest() |
119 void CGlxDataSourceTaskMde::CancelRequest() |
120 { |
120 { |
121 TRACER("CGlxDataSourceTaskMde::CancelRequest()"); |
121 TRACER("CGlxDataSourceTaskMde::CancelRequest()"); |
122 DestroyQueries(); |
|
123 iCancelled = ETrue; |
122 iCancelled = ETrue; |
|
123 DestroyQueries(); |
124 } |
124 } |
125 |
125 |
126 // ---------------------------------------------------------------------------- |
126 // ---------------------------------------------------------------------------- |
127 // CGlxDataSourceTaskMde::HandleQueryNewResults |
127 // CGlxDataSourceTaskMde::HandleQueryNewResults |
128 // ---------------------------------------------------------------------------- |
128 // ---------------------------------------------------------------------------- |
163 if (err == KErrNone) |
163 if (err == KErrNone) |
164 { |
164 { |
165 TRAP(err, HandleQueryCompletedL(aQuery)); |
165 TRAP(err, HandleQueryCompletedL(aQuery)); |
166 } |
166 } |
167 |
167 |
168 if (err != KErrNone) |
168 if (err != KErrNone && !iCancelled) |
169 { |
169 { |
170 HandleRequestComplete(err); |
170 HandleRequestComplete(err); |
171 } |
171 } |
172 } |
172 } |
173 |
173 |
441 aQuery.AppendOrderRuleL(orderRule); |
441 aQuery.AppendOrderRuleL(orderRule); |
442 break; |
442 break; |
443 } |
443 } |
444 case EGlxFilterSortOrderItemCount: |
444 case EGlxFilterSortOrderItemCount: |
445 { |
445 { |
446 //Order rule is not necessary for item count query |
446 //Order rule is needed for tags popularity |
|
447 TMdEOrderRule orderRule(EOrderRuleTypeUsageCount, aFilterProperties.iSortDirection == |
|
448 EGlxFilterSortDirectionAscending); |
|
449 aQuery.AppendOrderRuleL(orderRule); |
447 break; |
450 break; |
448 } |
451 } |
449 case EGlxFilterSortOrderCaptureDate: |
452 case EGlxFilterSortOrderCaptureDate: |
450 { |
453 { |
451 CMdEPropertyDef& creationDateProperty = aObjectDef.GetPropertyDefL( |
454 CMdEPropertyDef& creationDateProperty = aObjectDef.GetPropertyDefL( |
670 // |
673 // |
671 void CGlxDataSourceTaskMde::HandleQueryCompletedL(CMdEQuery& aQuery) |
674 void CGlxDataSourceTaskMde::HandleQueryCompletedL(CMdEQuery& aQuery) |
672 { |
675 { |
673 TRACER("CGlxDataSourceTaskMde::HandleQueryCompletedL()"); |
676 TRACER("CGlxDataSourceTaskMde::HandleQueryCompletedL()"); |
674 DoHandleQueryCompletedL(aQuery); |
677 DoHandleQueryCompletedL(aQuery); |
675 RemoveQuery(); |
678 |
|
679 // Both the function calls should be executed if any |
|
680 // request is not cancelled before completion. |
|
681 // All the pending Queries are already destroyed in CancelRequest. |
|
682 // Hence we do not have to call RemoveQuery here. That will lead to |
|
683 // User 130 crash. |
|
684 // DoNextQuery tries to get iQueries.Count(). Since iQueries is destroyed |
|
685 // in CancelRequest |
|
686 if (iCancelled) |
|
687 { |
|
688 GLX_LOG_INFO("***Query already Removed. Hence Return***"); |
|
689 return; |
|
690 } |
|
691 RemoveQuery(); |
676 DoNextQueryL(); |
692 DoNextQueryL(); |
677 } |
693 } |
678 |
694 |
679 // ---------------------------------------------------------------------------- |
695 // ---------------------------------------------------------------------------- |
680 // CGlxDataSourceTaskMde::DestroyQueries |
696 // CGlxDataSourceTaskMde::DestroyQueries |