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 } |
|
998 else |
|
999 { |
|
1000 iQueryActive = EFalse; |
|
1001 } |
994 |
1002 |
995 TN_DEBUG1( "CThumbAGProcessor::QueryL() - end" ); |
1003 TN_DEBUG1( "CThumbAGProcessor::QueryL() - end" ); |
996 } |
1004 } |
997 |
1005 |
998 |
1006 |
1034 CMdEObjectDef& audioObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject ); |
1042 CMdEObjectDef& audioObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject ); |
1035 |
1043 |
1036 CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject); |
1044 CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject); |
1037 iQueryPlaceholders = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this ); |
1045 iQueryPlaceholders = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this ); |
1038 |
1046 |
1039 iQueryPlaceholders->SetResultMode( EQueryResultModeItem ); |
1047 if(iQueryPlaceholders) |
1040 |
1048 { |
1041 CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions(); |
1049 iQueryPlaceholders->SetResultMode( EQueryResultModeItem ); |
1042 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1050 |
1043 |
1051 CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions(); |
1044 CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
1052 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1045 imagePHObjectCondition.SetPlaceholderOnly( ETrue ); |
1053 |
1046 imagePHObjectCondition.SetNotPresent( aPresent ); |
1054 CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
1047 |
1055 CleanupStack::PushL( &imagePHObjectCondition ); |
1048 CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
1056 imagePHObjectCondition.SetPlaceholderOnly( ETrue ); |
1049 videoPHObjectCondition.SetPlaceholderOnly( ETrue ); |
1057 imagePHObjectCondition.SetNotPresent( aPresent ); |
1050 videoPHObjectCondition.SetNotPresent( aPresent ); |
1058 |
1051 |
1059 CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
1052 CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1060 CleanupStack::PushL( &videoPHObjectCondition ); |
1053 audioPHObjectCondition.SetPlaceholderOnly( ETrue ); |
1061 videoPHObjectCondition.SetPlaceholderOnly( ETrue ); |
1054 audioPHObjectCondition.SetNotPresent( aPresent ); |
1062 videoPHObjectCondition.SetNotPresent( aPresent ); |
1055 |
1063 |
1056 iQueryPlaceholders->FindL(KMaxTInt, KMaxQueryBatchSize); |
1064 CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1057 |
1065 CleanupStack::PushL( &audioPHObjectCondition ); |
|
1066 audioPHObjectCondition.SetPlaceholderOnly( ETrue ); |
|
1067 audioPHObjectCondition.SetNotPresent( aPresent ); |
|
1068 |
|
1069 iQueryPlaceholders->FindL(KMdEQueryDefaultMaxCount, KMaxQueryBatchSize); |
|
1070 |
|
1071 CleanupStack::Pop(3, &imagePHObjectCondition ); |
|
1072 } |
|
1073 |
1058 TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" ); |
1074 TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" ); |
1059 } |
1075 } |
1060 |
1076 |
1061 |
1077 |
1062 // --------------------------------------------------------------------------- |
1078 // --------------------------------------------------------------------------- |
1286 iUnknown = ETrue; |
1302 iUnknown = ETrue; |
1287 iQueryActive = ETrue; |
1303 iQueryActive = ETrue; |
1288 |
1304 |
1289 QueryL( EGenerationItemActionResolveType ); |
1305 QueryL( EGenerationItemActionResolveType ); |
1290 } |
1306 } |
|
1307 else if ( iDeleteItemCount > 0 ) |
|
1308 { |
|
1309 TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails"); |
|
1310 // delete thumbs by URI |
|
1311 __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle)); |
|
1312 if(iTMSession) |
|
1313 { |
|
1314 TInt itemIndex(KErrNotFound); |
|
1315 |
|
1316 for(TInt i=0;i<iGenerationQueue.Count() || itemIndex == KErrNotFound;i++) |
|
1317 { |
|
1318 if(iGenerationQueue[i].iItemAction == EGenerationItemActionDelete) |
|
1319 { |
|
1320 itemIndex = i; |
|
1321 } |
|
1322 } |
|
1323 |
|
1324 if(itemIndex >= 0) |
|
1325 { |
|
1326 if(!iGenerationQueue[itemIndex].iUri) |
|
1327 { |
|
1328 //URI is invalid |
|
1329 TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid"); |
|
1330 iGenerationQueue.Remove( itemIndex ); |
|
1331 ActivateAO(); |
|
1332 return; |
|
1333 } |
|
1334 |
|
1335 TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S", iGenerationQueue[itemIndex].iUri); |
|
1336 CThumbnailObjectSource* source = NULL; |
|
1337 TRAPD(err, source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC)); |
|
1338 |
|
1339 if(err == KErrNone) |
|
1340 { |
|
1341 iTMSession->DeleteThumbnails( *source ); |
|
1342 } |
|
1343 delete source; |
|
1344 |
|
1345 delete iGenerationQueue[itemIndex].iUri; |
|
1346 iGenerationQueue[itemIndex].iUri = NULL; |
|
1347 iGenerationQueue.Remove( itemIndex ); |
|
1348 |
|
1349 iActiveCount++; |
|
1350 } |
|
1351 } |
|
1352 } |
1291 // no items in query queue, start new |
1353 // no items in query queue, start new |
1292 // select queue to process, priority by type |
1354 // select queue to process, priority by type |
1293 else if ( iModifyItemCount > 0 ) |
1355 else if ( iModifyItemCount > 0 ) |
1294 { |
1356 { |
1295 TN_DEBUG1( "void CThumbAGProcessor::RunL() update thumbnails"); |
1357 TN_DEBUG1( "void CThumbAGProcessor::RunL() update thumbnails"); |
1310 iUnknown = EFalse; |
1372 iUnknown = EFalse; |
1311 // query for object info |
1373 // query for object info |
1312 iQueryActive = ETrue; |
1374 iQueryActive = ETrue; |
1313 |
1375 |
1314 QueryL( EGenerationItemActionAdd ); |
1376 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 } |
1377 } |
1364 else if( i2ndAddItemCount > 0) |
1378 else if( i2ndAddItemCount > 0) |
1365 { |
1379 { |
1366 TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails"); |
1380 TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails"); |
1367 |
1381 |
1685 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE"); |
1699 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE"); |
1686 return; |
1700 return; |
1687 } |
1701 } |
1688 |
1702 |
1689 //check if forced run needs to continue |
1703 //check if forced run needs to continue |
1690 if ( iModifyItemCount || iUnknownItemCount > 0 ) |
1704 if ( (iModifyItemCount > 0 || iDeleteItemCount > 0 || iUnknownItemCount > 0) && !iMountTimer->IsActive()) |
1691 { |
1705 { |
|
1706 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - forced run"); |
1692 SetForceRun( ETrue ); |
1707 SetForceRun( ETrue ); |
1693 } |
1708 } |
1694 else |
1709 else |
1695 { |
1710 { |
1696 iModify = EFalse; |
1711 iModify = EFalse; |
1697 SetForceRun( EFalse ); |
1712 SetForceRun( EFalse ); |
1698 } |
1713 } |
1699 |
1714 |
1700 if( !IsActive() && !iShutdown && ((iActiveCount == 0 && !iQueryActive) || iForceRun )) |
1715 if( !IsActive() && !iShutdown && ((iActiveCount < KMaxDaemonRequests && !iQueryActive) || iForceRun )) |
1701 { |
1716 { |
1702 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - Activated"); |
1717 TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - Activated"); |
1703 SetActive(); |
1718 SetActive(); |
1704 TRequestStatus* statusPtr = &iStatus; |
1719 TRequestStatus* statusPtr = &iStatus; |
1705 User::RequestComplete( statusPtr, KErrNone ); |
1720 User::RequestComplete( statusPtr, KErrNone ); |
1878 |
1893 |
1879 CMdELogicCondition& rootCondition = iQueryAllItems->Conditions(); |
1894 CMdELogicCondition& rootCondition = iQueryAllItems->Conditions(); |
1880 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1895 rootCondition.SetOperator( ELogicConditionOperatorOr ); |
1881 |
1896 |
1882 CMdEObjectCondition& imageObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
1897 CMdEObjectCondition& imageObjectCondition = rootCondition.AddObjectConditionL(imageObjDef); |
|
1898 CleanupStack::PushL( &imageObjectCondition ); |
1883 |
1899 |
1884 CMdEObjectCondition& videoObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
1900 CMdEObjectCondition& videoObjectCondition = rootCondition.AddObjectConditionL(videoObjDef); |
|
1901 CleanupStack::PushL( &videoObjectCondition ); |
1885 |
1902 |
1886 CMdEObjectCondition& audioObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1903 CMdEObjectCondition& audioObjectCondition = rootCondition.AddObjectConditionL(audioObjDef); |
1887 |
1904 CleanupStack::PushL( &audioObjectCondition ); |
1888 iQueryAllItems->FindL(KMaxTInt, KMaxQueryBatchSize); |
1905 |
|
1906 iQueryAllItems->FindL(KMdEQueryDefaultMaxCount, KMaxQueryBatchSize); |
|
1907 |
|
1908 CleanupStack::Pop(3, &imageObjectCondition); |
1889 |
1909 |
1890 TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL - end" ); |
1910 TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL - end" ); |
1891 } |
1911 } |
1892 |
1912 |
1893 // ----------------------------------------------------------------------------- |
1913 // ----------------------------------------------------------------------------- |
2016 void CThumbAGProcessor::FormatNotification( TBool aFormat ) |
2036 void CThumbAGProcessor::FormatNotification( TBool aFormat ) |
2017 { |
2037 { |
2018 TN_DEBUG2( "CThumbAGProcessor::FormatNotification(%d)", aFormat ); |
2038 TN_DEBUG2( "CThumbAGProcessor::FormatNotification(%d)", aFormat ); |
2019 |
2039 |
2020 iFormatting = aFormat; |
2040 iFormatting = aFormat; |
|
2041 |
2021 if(!aFormat) |
2042 if(!aFormat) |
2022 { |
2043 { |
|
2044 //force update |
|
2045 UpdatePSValues(EFalse, ETrue); |
2023 ActivateAO(); |
2046 ActivateAO(); |
2024 } |
2047 } |
2025 } |
2048 } |
2026 |
2049 |
2027 // --------------------------------------------------------------------------- |
2050 // --------------------------------------------------------------------------- |
2126 { |
2149 { |
2127 TN_DEBUG3( "CThumbAGProcessor::UpdatePSValues() set KDaemonProcessing %d failed %d", daemonProcessing, ret); |
2150 TN_DEBUG3( "CThumbAGProcessor::UpdatePSValues() set KDaemonProcessing %d failed %d", daemonProcessing, ret); |
2128 } |
2151 } |
2129 } |
2152 } |
2130 |
2153 |
|
2154 TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() iPreviousItemsLeft == %d", iPreviousItemsLeft); |
|
2155 |
2131 if( itemsLeft != iPreviousItemsLeft) |
2156 if( itemsLeft != iPreviousItemsLeft) |
2132 { |
2157 { |
2133 TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() update KItemsleft == %d", itemsLeft); |
2158 TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() Set KItemsleft == %d", itemsLeft); |
2134 iPreviousItemsLeft = itemsLeft; |
2159 iPreviousItemsLeft = itemsLeft; |
2135 TInt ret = RProperty::Set(KTAGDPSNotification, KItemsleft, itemsLeft ); |
2160 TInt ret = RProperty::Set(KTAGDPSNotification, KItemsleft, itemsLeft ); |
2136 |
2161 |
2137 if(ret != KErrNone ) |
2162 if(ret != KErrNone ) |
2138 { |
2163 { |