photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp
branchRCL_3
changeset 13 bcb43dc84c44
parent 12 ce1c7ad1f18b
child 15 191387a8b767
equal deleted inserted replaced
12:ce1c7ad1f18b 13:bcb43dc84c44
   108 // ----------------------------------------------------------------------------
   108 // ----------------------------------------------------------------------------
   109 //      
   109 //      
   110 void CGlxDataSourceTaskMdeAttributeMde::ExecuteRequestL()
   110 void CGlxDataSourceTaskMdeAttributeMde::ExecuteRequestL()
   111     {
   111     {
   112     TRACER("CGlxDataSourceTaskMdeAttribute::ExecuteRequestL()")    
   112     TRACER("CGlxDataSourceTaskMdeAttribute::ExecuteRequestL()")    
       
   113 #ifdef _DEBUG
       
   114     iStartTime.HomeTime(); 
       
   115 #endif
   113  
   116  
   114     CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
   117     CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
   115         
   118         
   116     __ASSERT_DEBUG(request->MediaIds().Count() > 0, User::Invariant());
   119     __ASSERT_DEBUG(request->MediaIds().Count() > 0, User::Invariant());
   117     
   120     
   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             }
   958             CMdEPropertyDef& xDimProperty = aItem->Def().GetPropertyDefL(
   978             CMdEPropertyDef& xDimProperty = aItem->Def().GetPropertyDefL(
   959                     KPropertyDefNameWidth);
   979                     KPropertyDefNameWidth);
   960             TInt xDimIndex = aItem->Property(xDimProperty, xDim);
   980             TInt xDimIndex = aItem->Property(xDimProperty, xDim);
   961             if( KErrNotFound == xDimIndex )
   981             if( KErrNotFound == xDimIndex )
   962                 {
   982                 {
   963                 //User::Leave(KErrCorrupt);
   983                 //Do nothing
   964                 }
   984                 }
   965             else
   985             else
   966                 {
   986                 {
   967                 dimensions.iWidth = static_cast<CMdEUint16Property*>(xDim)->Value();
   987                 dimensions.iWidth = static_cast<CMdEUint16Property*>(xDim)->Value();
   968                 }
   988                 }
   971             CMdEPropertyDef& yDimProperty = aItem->Def().GetPropertyDefL(
   991             CMdEPropertyDef& yDimProperty = aItem->Def().GetPropertyDefL(
   972                     KPropertyDefNameHeight);
   992                     KPropertyDefNameHeight);
   973             TInt yDimIndex = aItem->Property(yDimProperty, yDim);
   993             TInt yDimIndex = aItem->Property(yDimProperty, yDim);
   974             if( KErrNotFound == yDimIndex )
   994             if( KErrNotFound == yDimIndex )
   975                 {
   995                 {
   976                 //User::Leave(KErrCorrupt);
   996                 //Do nothing
   977                 }
   997                 }
   978             else
   998             else
   979                 {
   999                 {
   980                 dimensions.iHeight = static_cast<CMdEUint16Property*>(yDim)->Value();
  1000                 dimensions.iHeight = static_cast<CMdEUint16Property*>(yDim)->Value();
   981                 }
  1001                 }
  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());