956 |
956 |
957 TN_DEBUG3( "CThumbAGProcessor::QueryL() - fill end iGenerationQueue == %d, iQueryQueue == %d", iGenerationQueue.Count(), iQueryQueue.Count() ); |
957 TN_DEBUG3( "CThumbAGProcessor::QueryL() - fill end iGenerationQueue == %d, iQueryQueue == %d", iGenerationQueue.Count(), iQueryQueue.Count() ); |
958 |
958 |
959 CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject ); |
959 CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject ); |
960 iQuery = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this ); |
960 iQuery = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this ); |
961 iQuery->SetResultMode( EQueryResultModeItem ); |
961 |
962 |
962 if(iQuery) |
963 CMdELogicCondition& rootCondition = iQuery->Conditions(); |
963 { |
964 rootCondition.SetOperator( ELogicConditionOperatorAnd ); |
964 iQuery->SetResultMode( EQueryResultModeItem ); |
965 |
965 |
966 // add IDs |
966 CMdELogicCondition& rootCondition = iQuery->Conditions(); |
967 CleanupClosePushL( iQueryQueue ); |
967 rootCondition.SetOperator( ELogicConditionOperatorAnd ); |
968 rootCondition.AddObjectConditionL( iQueryQueue ); |
968 |
969 CleanupStack::Pop( &iQueryQueue ); |
969 // add IDs |
970 |
970 CleanupClosePushL( iQueryQueue ); |
971 // add object type conditions |
971 rootCondition.AddObjectConditionL( iQueryQueue ); |
972 if (!(iModify || iUnknown)) |
972 CleanupStack::Pop( &iQueryQueue ); |
973 { |
973 |
974 CMdELogicCondition& objDefCondition = rootCondition.AddLogicConditionL( ELogicConditionOperatorOr ); |
974 // add object type conditions |
975 |
975 if (!(iModify || iUnknown)) |
976 if (iAutoImage) |
976 { |
977 { |
977 CMdELogicCondition& objDefCondition = rootCondition.AddLogicConditionL( ELogicConditionOperatorOr ); |
978 CMdEObjectDef& imageDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject ); |
978 |
979 objDefCondition.AddObjectConditionL( imageDef ); |
979 if (iAutoImage) |
980 } |
980 { |
981 if (iAutoVideo) |
981 CMdEObjectDef& imageDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject ); |
982 { |
982 objDefCondition.AddObjectConditionL( imageDef ); |
983 CMdEObjectDef& videoDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject ); |
983 } |
984 objDefCondition.AddObjectConditionL( videoDef ); |
984 if (iAutoVideo) |
985 } |
985 { |
986 if (iAutoAudio) |
986 CMdEObjectDef& videoDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject ); |
987 { |
987 objDefCondition.AddObjectConditionL( videoDef ); |
988 CMdEObjectDef& audioDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject ); |
988 } |
989 objDefCondition.AddObjectConditionL( audioDef ); |
989 if (iAutoAudio) |
990 } |
990 { |
991 } |
991 CMdEObjectDef& audioDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject ); |
992 |
992 objDefCondition.AddObjectConditionL( audioDef ); |
993 iQuery->FindL(); |
993 } |
|
994 } |
|
995 |
|
996 iQuery->FindL(); |
|
997 } |
994 |
998 |
995 TN_DEBUG1( "CThumbAGProcessor::QueryL() - end" ); |
999 TN_DEBUG1( "CThumbAGProcessor::QueryL() - end" ); |
996 } |
1000 } |
997 |
1001 |
998 |
1002 |
1034 CMdEObjectDef& audioObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject ); |
1038 CMdEObjectDef& audioObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject ); |
1035 |
1039 |
1036 CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject); |
1040 CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject); |
1037 iQueryPlaceholders = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this ); |
1041 iQueryPlaceholders = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this ); |
1038 |
1042 |
1039 iQueryPlaceholders->SetResultMode( EQueryResultModeItem ); |
1043 if(iQueryPlaceholders) |
1040 |
1044 { |
1041 CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions(); |
1045 iQueryPlaceholders->SetResultMode( EQueryResultModeItem ); |
1042 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1046 |
1043 |
1047 CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions(); |
1044 CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
1048 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1045 imagePHObjectCondition.SetPlaceholderOnly( ETrue ); |
1049 |
1046 imagePHObjectCondition.SetNotPresent( aPresent ); |
1050 CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
1047 |
1051 CleanupStack::PushL( &imagePHObjectCondition ); |
1048 CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
1052 imagePHObjectCondition.SetPlaceholderOnly( ETrue ); |
1049 videoPHObjectCondition.SetPlaceholderOnly( ETrue ); |
1053 imagePHObjectCondition.SetNotPresent( aPresent ); |
1050 videoPHObjectCondition.SetNotPresent( aPresent ); |
1054 |
1051 |
1055 CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
1052 CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1056 CleanupStack::PushL( &videoPHObjectCondition ); |
1053 audioPHObjectCondition.SetPlaceholderOnly( ETrue ); |
1057 videoPHObjectCondition.SetPlaceholderOnly( ETrue ); |
1054 audioPHObjectCondition.SetNotPresent( aPresent ); |
1058 videoPHObjectCondition.SetNotPresent( aPresent ); |
1055 |
1059 |
1056 iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize); |
1060 CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1057 |
1061 CleanupStack::PushL( &audioPHObjectCondition ); |
|
1062 audioPHObjectCondition.SetPlaceholderOnly( ETrue ); |
|
1063 audioPHObjectCondition.SetNotPresent( aPresent ); |
|
1064 |
|
1065 iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize); |
|
1066 |
|
1067 CleanupStack::Pop(3, &imagePHObjectCondition ); |
|
1068 } |
|
1069 |
1058 TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" ); |
1070 TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" ); |
1059 } |
1071 } |
1060 |
1072 |
1061 |
1073 |
1062 // --------------------------------------------------------------------------- |
1074 // --------------------------------------------------------------------------- |
1286 iUnknown = ETrue; |
1298 iUnknown = ETrue; |
1287 iQueryActive = ETrue; |
1299 iQueryActive = ETrue; |
1288 |
1300 |
1289 QueryL( EGenerationItemActionResolveType ); |
1301 QueryL( EGenerationItemActionResolveType ); |
1290 } |
1302 } |
|
1303 else if ( iDeleteItemCount > 0 ) |
|
1304 { |
|
1305 TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails"); |
|
1306 // delete thumbs by URI |
|
1307 __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle)); |
|
1308 if(iTMSession) |
|
1309 { |
|
1310 TInt itemIndex(KErrNotFound); |
|
1311 |
|
1312 for(TInt i=0;i<iGenerationQueue.Count() || itemIndex == KErrNotFound;i++) |
|
1313 { |
|
1314 if(iGenerationQueue[i].iItemAction == EGenerationItemActionDelete) |
|
1315 { |
|
1316 itemIndex = i; |
|
1317 } |
|
1318 } |
|
1319 |
|
1320 if(itemIndex >= 0) |
|
1321 { |
|
1322 if(!iGenerationQueue[itemIndex].iUri) |
|
1323 { |
|
1324 //URI is invalid |
|
1325 TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid"); |
|
1326 iGenerationQueue.Remove( itemIndex ); |
|
1327 ActivateAO(); |
|
1328 return; |
|
1329 } |
|
1330 |
|
1331 TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S", iGenerationQueue[itemIndex].iUri); |
|
1332 CThumbnailObjectSource* source = NULL; |
|
1333 TRAPD(err, source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC)); |
|
1334 |
|
1335 if(err == KErrNone) |
|
1336 { |
|
1337 iTMSession->DeleteThumbnails( *source ); |
|
1338 } |
|
1339 delete source; |
|
1340 |
|
1341 delete iGenerationQueue[itemIndex].iUri; |
|
1342 iGenerationQueue[itemIndex].iUri = NULL; |
|
1343 iGenerationQueue.Remove( itemIndex ); |
|
1344 |
|
1345 iActiveCount++; |
|
1346 } |
|
1347 } |
|
1348 } |
1291 // no items in query queue, start new |
1349 // no items in query queue, start new |
1292 // select queue to process, priority by type |
1350 // select queue to process, priority by type |
1293 else if ( iModifyItemCount > 0 ) |
1351 else if ( iModifyItemCount > 0 ) |
1294 { |
1352 { |
1295 TN_DEBUG1( "void CThumbAGProcessor::RunL() update thumbnails"); |
1353 TN_DEBUG1( "void CThumbAGProcessor::RunL() update thumbnails"); |
1310 iUnknown = EFalse; |
1368 iUnknown = EFalse; |
1311 // query for object info |
1369 // query for object info |
1312 iQueryActive = ETrue; |
1370 iQueryActive = ETrue; |
1313 |
1371 |
1314 QueryL( EGenerationItemActionAdd ); |
1372 QueryL( EGenerationItemActionAdd ); |
1315 } |
|
1316 else if ( iDeleteItemCount > 0 ) |
|
1317 { |
|
1318 TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails"); |
|
1319 i2ndRound = EFalse; |
|
1320 iUnknown = EFalse; |
|
1321 // delete thumbs by URI |
|
1322 __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle)); |
|
1323 if(iTMSession) |
|
1324 { |
|
1325 TInt itemIndex(KErrNotFound); |
|
1326 |
|
1327 for(TInt i=0;i<iGenerationQueue.Count() || itemIndex == KErrNotFound;i++) |
|
1328 { |
|
1329 if(iGenerationQueue[i].iItemAction == EGenerationItemActionDelete) |
|
1330 { |
|
1331 itemIndex = i; |
|
1332 } |
|
1333 } |
|
1334 |
|
1335 if(itemIndex >= 0) |
|
1336 { |
|
1337 if(!iGenerationQueue[itemIndex].iUri) |
|
1338 { |
|
1339 //URI is invalid |
|
1340 TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid"); |
|
1341 iGenerationQueue.Remove( itemIndex ); |
|
1342 ActivateAO(); |
|
1343 return; |
|
1344 } |
|
1345 |
|
1346 TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S", iGenerationQueue[itemIndex].iUri); |
|
1347 CThumbnailObjectSource* source = NULL; |
|
1348 TRAPD(err, source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC)); |
|
1349 |
|
1350 if(err == KErrNone) |
|
1351 { |
|
1352 iTMSession->DeleteThumbnails( *source ); |
|
1353 } |
|
1354 delete source; |
|
1355 |
|
1356 delete iGenerationQueue[itemIndex].iUri; |
|
1357 iGenerationQueue[itemIndex].iUri = NULL; |
|
1358 iGenerationQueue.Remove( itemIndex ); |
|
1359 |
|
1360 iActiveCount++; |
|
1361 } |
|
1362 } |
|
1363 } |
1373 } |
1364 else if( i2ndAddItemCount > 0) |
1374 else if( i2ndAddItemCount > 0) |
1365 { |
1375 { |
1366 TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails"); |
1376 TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails"); |
1367 |
1377 |
1685 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE"); |
1695 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE"); |
1686 return; |
1696 return; |
1687 } |
1697 } |
1688 |
1698 |
1689 //check if forced run needs to continue |
1699 //check if forced run needs to continue |
1690 if ( iModifyItemCount || iUnknownItemCount > 0 ) |
1700 if ( (iModifyItemCount > 0 || iDeleteItemCount > 0 || iUnknownItemCount > 0) && !iMountTimer->IsActive()) |
1691 { |
1701 { |
|
1702 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - forced run"); |
1692 SetForceRun( ETrue ); |
1703 SetForceRun( ETrue ); |
1693 } |
1704 } |
1694 else |
1705 else |
1695 { |
1706 { |
1696 iModify = EFalse; |
1707 iModify = EFalse; |
1697 SetForceRun( EFalse ); |
1708 SetForceRun( EFalse ); |
1698 } |
1709 } |
1699 |
1710 |
1700 if( !IsActive() && !iShutdown && ((iActiveCount == 0 && !iQueryActive) || iForceRun )) |
1711 if( !IsActive() && !iShutdown && ((iActiveCount < KMaxDaemonRequests && !iQueryActive) || iForceRun )) |
1701 { |
1712 { |
1702 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - Activated"); |
1713 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - Activated"); |
1703 SetActive(); |
1714 SetActive(); |
1704 TRequestStatus* statusPtr = &iStatus; |
1715 TRequestStatus* statusPtr = &iStatus; |
1705 User::RequestComplete( statusPtr, KErrNone ); |
1716 User::RequestComplete( statusPtr, KErrNone ); |
1878 |
1889 |
1879 CMdELogicCondition& rootCondition = iQueryAllItems->Conditions(); |
1890 CMdELogicCondition& rootCondition = iQueryAllItems->Conditions(); |
1880 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1891 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1881 |
1892 |
1882 CMdEObjectCondition& imageObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
1893 CMdEObjectCondition& imageObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
|
1894 CleanupStack::PushL( &imageObjectCondition ); |
1883 |
1895 |
1884 CMdEObjectCondition& videoObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
1896 CMdEObjectCondition& videoObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
|
1897 CleanupStack::PushL( &videoObjectCondition ); |
1885 |
1898 |
1886 CMdEObjectCondition& audioObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1899 CMdEObjectCondition& audioObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
|
1900 CleanupStack::PushL( &audioObjectCondition ); |
1887 |
1901 |
1888 iQueryAllItems->FindL(KMaxTInt, KMaxQueryBatchSize); |
1902 iQueryAllItems->FindL(KMaxTInt, KMaxQueryBatchSize); |
|
1903 |
|
1904 CleanupStack::Pop(3, &imageObjectCondition); |
1889 |
1905 |
1890 TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL - end" ); |
1906 TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL - end" ); |
1891 } |
1907 } |
1892 |
1908 |
1893 // ----------------------------------------------------------------------------- |
1909 // ----------------------------------------------------------------------------- |
2016 void CThumbAGProcessor::FormatNotification( TBool aFormat ) |
2032 void CThumbAGProcessor::FormatNotification( TBool aFormat ) |
2017 { |
2033 { |
2018 TN_DEBUG2( "CThumbAGProcessor::FormatNotification(%d)", aFormat ); |
2034 TN_DEBUG2( "CThumbAGProcessor::FormatNotification(%d)", aFormat ); |
2019 |
2035 |
2020 iFormatting = aFormat; |
2036 iFormatting = aFormat; |
|
2037 |
2021 if(!aFormat) |
2038 if(!aFormat) |
2022 { |
2039 { |
|
2040 //force update |
|
2041 UpdatePSValues(EFalse, ETrue); |
2023 ActivateAO(); |
2042 ActivateAO(); |
2024 } |
2043 } |
2025 } |
2044 } |
2026 |
2045 |
2027 // --------------------------------------------------------------------------- |
2046 // --------------------------------------------------------------------------- |
2126 { |
2145 { |
2127 TN_DEBUG3( "CThumbAGProcessor::UpdatePSValues() set KDaemonProcessing %d failed %d", daemonProcessing, ret); |
2146 TN_DEBUG3( "CThumbAGProcessor::UpdatePSValues() set KDaemonProcessing %d failed %d", daemonProcessing, ret); |
2128 } |
2147 } |
2129 } |
2148 } |
2130 |
2149 |
|
2150 TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() iPreviousItemsLeft == %d", iPreviousItemsLeft); |
|
2151 |
2131 if( itemsLeft != iPreviousItemsLeft) |
2152 if( itemsLeft != iPreviousItemsLeft) |
2132 { |
2153 { |
2133 TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() update KItemsleft == %d", itemsLeft); |
2154 TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() Set KItemsleft == %d", itemsLeft); |
2134 iPreviousItemsLeft = itemsLeft; |
2155 iPreviousItemsLeft = itemsLeft; |
2135 TInt ret = RProperty::Set(KTAGDPSNotification, KItemsleft, itemsLeft ); |
2156 TInt ret = RProperty::Set(KTAGDPSNotification, KItemsleft, itemsLeft ); |
2136 |
2157 |
2137 if(ret != KErrNone ) |
2158 if(ret != KErrNone ) |
2138 { |
2159 { |