187 // Fall through to panic, DoHandleQueryCompletedL can't handle this query type. |
190 // Fall through to panic, DoHandleQueryCompletedL can't handle this query type. |
188 default: |
191 default: |
189 Panic(EGlxPanicLogicError); |
192 Panic(EGlxPanicLogicError); |
190 break; |
193 break; |
191 } |
194 } |
|
195 #ifdef _DEBUG |
|
196 iStopTime.HomeTime(); |
|
197 GLX_DEBUG2("CGlxDataSourceTaskMdeAttributeMde:DoHandleQueryCompletedL() took %d us", |
|
198 (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); |
|
199 #endif |
192 } |
200 } |
193 |
201 |
194 // ---------------------------------------------------------------------------- |
202 // ---------------------------------------------------------------------------- |
195 // CGlxDataSourceTaskMdeAttribute::DoNextQueryL |
203 // CGlxDataSourceTaskMdeAttribute::DoNextQueryL |
196 // ---------------------------------------------------------------------------- |
204 // ---------------------------------------------------------------------------- |
397 aEntry->SetTObjectValueL(KMPXMediaColDetailSpaceId, |
405 aEntry->SetTObjectValueL(KMPXMediaColDetailSpaceId, |
398 KGlxDataSourceMdeImplementationUid); |
406 KGlxDataSourceMdeImplementationUid); |
399 } |
407 } |
400 else if ( request->Attributes()[i] == KGlxMediaCollectionInternalStartDate ) |
408 else if ( request->Attributes()[i] == KGlxMediaCollectionInternalStartDate ) |
401 { |
409 { |
|
410 GLX_DEBUG1("CGlxDataSourceTaskMdeAttributeMde::AddCollectionAttributesL - KGlxMediaCollectionInternalStartDate"); |
402 TGlxMediaId container = TGlxMediaId(KGlxCollectionRootId); |
411 TGlxMediaId container = TGlxMediaId(KGlxCollectionRootId); |
403 TGlxFilterProperties filterProperties = iFilterProperties; |
412 TGlxFilterProperties filterProperties = iFilterProperties; |
404 filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; |
413 filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; |
405 filterProperties.iSortDirection = EGlxFilterSortDirectionAscending; |
414 filterProperties.iSortDirection = EGlxFilterSortDirectionAscending; |
406 filterProperties.iOrigin = EGlxFilterOriginAll; |
415 filterProperties.iOrigin = EGlxFilterOriginAll; |
|
416 filterProperties.iMaxCount = 1 ; |
407 |
417 |
408 QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, |
418 QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, |
409 EQueryResultModeItem, container, |
419 EQueryResultModeItem, container, |
410 KGlxMediaCollectionInternalStartDate, aEntry, filterProperties); |
420 KGlxMediaCollectionInternalStartDate, aEntry, filterProperties); |
411 } |
421 } |
412 else if ( request->Attributes()[i] == KGlxMediaCollectionInternalEndDate ) |
422 else if ( request->Attributes()[i] == KGlxMediaCollectionInternalEndDate ) |
413 { |
423 { |
414 // not necessary to be requested, returned when StartDate requested |
424 GLX_DEBUG1("CGlxDataSourceTaskMdeAttributeMde::AddCollectionAttributesL - KGlxMediaCollectionInternalEndDate"); |
|
425 TGlxMediaId container = TGlxMediaId(KGlxCollectionRootId); |
|
426 TGlxFilterProperties filterProperties = iFilterProperties; |
|
427 filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; |
|
428 filterProperties.iSortDirection = EGlxFilterSortDirectionDescending; |
|
429 filterProperties.iOrigin = EGlxFilterOriginAll; |
|
430 filterProperties.iMaxCount = 1 ; |
|
431 |
|
432 QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, |
|
433 EQueryResultModeItem, container, |
|
434 KGlxMediaCollectionInternalEndDate, aEntry, filterProperties); |
415 } |
435 } |
416 else if ( request->Attributes()[i] == KGlxMediaGeneralSlideshowableContent ) |
436 else if ( request->Attributes()[i] == KGlxMediaGeneralSlideshowableContent ) |
417 { |
437 { |
418 aEntry->SetTObjectValueL(KGlxMediaGeneralSlideshowableContent, 0); |
438 aEntry->SetTObjectValueL(KGlxMediaGeneralSlideshowableContent, 0); |
419 } |
439 } |
1144 CMdEQuery* query = iQueries[0]; |
1164 CMdEQuery* query = iQueries[0]; |
1145 |
1165 |
1146 if( query->ResultMode() == EQueryResultModeItem ) |
1166 if( query->ResultMode() == EQueryResultModeItem ) |
1147 { |
1167 { |
1148 __ASSERT_DEBUG(( iQueryAttributes[0].iAttribute == |
1168 __ASSERT_DEBUG(( iQueryAttributes[0].iAttribute == |
1149 KGlxMediaCollectionInternalStartDate ), Panic(EGlxPanicIllegalState)); |
1169 KGlxMediaCollectionInternalStartDate || iQueryAttributes[0].iAttribute == |
|
1170 KGlxMediaCollectionInternalEndDate), Panic(EGlxPanicIllegalState)); |
1150 CMdEPropertyDef& creationDateDef = DataSource()->ObjectDef().GetPropertyDefL( |
1171 CMdEPropertyDef& creationDateDef = DataSource()->ObjectDef().GetPropertyDefL( |
1151 KPropertyDefNameCreationDate); |
1172 KPropertyDefNameCreationDate); |
1152 if (creationDateDef.PropertyType() != EPropertyTime) |
1173 if (creationDateDef.PropertyType() != EPropertyTime) |
1153 { |
1174 { |
1154 User::Leave(KErrCorrupt); |
1175 User::Leave(KErrCorrupt); |
1155 } |
1176 } |
1156 TTime startMonth(0); |
1177 TTime startMonth(0); |
1157 TTime endMonth(0); |
1178 TTime endMonth(0); |
|
1179 GLX_DEBUG2("CGlxDataSourceTaskMdeAttributeMde::DoHandleAttributeQueryCompletedL iQueries[0]->Count()=%d", iQueries[0]->Count()); |
|
1180 TInt timeIndex(0) ; |
1158 if(iQueries[0]->Count() ) |
1181 if(iQueries[0]->Count() ) |
1159 { |
1182 { |
1160 CMdEProperty* startTime; |
1183 GLX_DEBUG2("CGlxDataSourceTaskMdeAttributeMde::DoHandleAttributeQueryCompletedL query->Count()=%d", query->Count()); |
1161 CMdEObject& startObject = (CMdEObject&)query->ResultItem(0); |
1184 if(iQueryAttributes[0].iAttribute == KGlxMediaCollectionInternalStartDate) |
1162 TInt timeIndex = startObject.Property(creationDateDef, startTime); |
1185 { |
1163 if( KErrNotFound == timeIndex ) |
1186 CMdEProperty* startTime; |
1164 { |
1187 CMdEObject& startObject = (CMdEObject&)query->ResultItem(0); |
1165 User::Leave(KErrCorrupt); |
1188 TInt timeIndex = startObject.Property(creationDateDef, startTime); |
1166 } |
1189 if( KErrNotFound == timeIndex ) |
1167 startMonth = static_cast<CMdETimeProperty*>(startTime)->Value(); |
1190 { |
1168 CMdEProperty* endTime; |
1191 User::Leave(KErrCorrupt); |
1169 CMdEObject& endObject = (CMdEObject&)query->ResultItem(query->Count()-1); |
1192 } |
1170 timeIndex = endObject.Property(creationDateDef, endTime); |
1193 startMonth = static_cast<CMdETimeProperty*>(startTime)->Value(); |
1171 if( KErrNotFound == timeIndex ) |
1194 iQueryAttributes[0].iMedia->SetTObjectValueL( |
1172 { |
1195 KGlxMediaCollectionInternalStartDate, startMonth); |
1173 User::Leave(KErrCorrupt); |
1196 } |
1174 } |
1197 else if(iQueryAttributes[0].iAttribute == KGlxMediaCollectionInternalEndDate) |
1175 endMonth = static_cast<CMdETimeProperty*>(endTime)->Value(); |
1198 { |
1176 } |
1199 CMdEProperty* endTime; |
1177 iQueryAttributes[0].iMedia->SetTObjectValueL( |
1200 CMdEObject& endObject = (CMdEObject&)query->ResultItem(0); |
1178 KGlxMediaCollectionInternalStartDate, startMonth); |
1201 timeIndex = endObject.Property(creationDateDef, endTime); |
1179 iQueryAttributes[0].iMedia->SetTObjectValueL( |
1202 if( KErrNotFound == timeIndex ) |
1180 KGlxMediaCollectionInternalEndDate, endMonth); |
1203 { |
|
1204 User::Leave(KErrCorrupt); |
|
1205 } |
|
1206 endMonth = static_cast<CMdETimeProperty*>(endTime)->Value(); |
|
1207 iQueryAttributes[0].iMedia->SetTObjectValueL( |
|
1208 KGlxMediaCollectionInternalEndDate, endMonth); |
|
1209 } |
|
1210 } |
|
1211 else |
|
1212 { |
|
1213 iQueryAttributes[0].iMedia->SetTObjectValueL( |
|
1214 KGlxMediaCollectionInternalStartDate, startMonth); |
|
1215 iQueryAttributes[0].iMedia->SetTObjectValueL( |
|
1216 KGlxMediaCollectionInternalEndDate, endMonth); |
|
1217 } |
1181 } |
1218 } |
1182 else if( EQueryResultModeCount == query->ResultMode() ) |
1219 else if( EQueryResultModeCount == query->ResultMode() ) |
1183 { |
1220 { |
1184 iQueryAttributes[0].iMedia->SetTObjectValueL( |
1221 iQueryAttributes[0].iMedia->SetTObjectValueL( |
1185 iQueryAttributes[0].iAttribute, query->Count()); |
1222 iQueryAttributes[0].iAttribute, query->Count()); |