mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbabstractalbum.cpp
branchRCL_3
changeset 40 cb96c29156b2
parent 26 70a8526f03f2
equal deleted inserted replaced
31:a12246c97fcc 40:cb96c29156b2
    76 //
    76 //
    77 CMPXDbAbstractAlbum::~CMPXDbAbstractAlbum()
    77 CMPXDbAbstractAlbum::~CMPXDbAbstractAlbum()
    78     {
    78     {
    79     MPX_FUNC("CMPXDbAbstractAlbum::~CMPXDbAbstractAlbum");
    79     MPX_FUNC("CMPXDbAbstractAlbum::~CMPXDbAbstractAlbum");
    80 #ifdef RD_MPX_TNM_INTEGRATION
    80 #ifdef RD_MPX_TNM_INTEGRATION
    81     delete iTNManager;
    81     if (iTNManager)
       
    82         delete iTNManager;
    82 #endif //RD_MPX_TNM_INTEGRATION
    83 #endif //RD_MPX_TNM_INTEGRATION
    83     }
    84     }
    84 
    85 
    85 // ----------------------------------------------------------------------------
    86 // ----------------------------------------------------------------------------
    86 // CMPXDbAbstractAlbum::GetDriveIdL
    87 // CMPXDbAbstractAlbum::GetDriveIdL
   220         CleanupStack::PopAndDestroy(uri);
   221         CleanupStack::PopAndDestroy(uri);
   221         }  
   222         }  
   222     }
   223     }
   223 
   224 
   224 // ----------------------------------------------------------------------------
   225 // ----------------------------------------------------------------------------
       
   226 // Remove abstractalbums which have no songs associated.
       
   227 // ----------------------------------------------------------------------------
       
   228 //
       
   229 void CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL()
       
   230     {
       
   231     MPX_FUNC("CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL");
       
   232     
       
   233     RArray<TUint32> iItemsIds;
       
   234     CleanupClosePushL(iItemsIds);
       
   235     
       
   236     //get all abstractalbum with no songs associated.
       
   237     GetAllItemsWithNoSongL(iItemsIds);
       
   238     TInt count = iItemsIds.Count();
       
   239     TInt err = KErrNone;
       
   240     if (count)
       
   241         {           	
       
   242         MPX_DEBUG2("CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL, abstractalbum count[%d] ", iItemsIds.Count());
       
   243         CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL();
       
   244         CleanupStack::PushL(itemChangedMessages);
       
   245 
       
   246         //go through each one to delete
       
   247         for (TInt i=0; i< count; i++)
       
   248             {
       
   249             TRAP(err, RemoveAbstractAlbumL(iItemsIds[i], *itemChangedMessages, EFalse));
       
   250             if (err != KErrNone)
       
   251                 {
       
   252                 MPX_DEBUG2("CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL, error happens when delete abstractalbum, err ", err);
       
   253                 }
       
   254             }
       
   255        CleanupStack::PopAndDestroy(itemChangedMessages);
       
   256        }
       
   257     CleanupStack::PopAndDestroy(&iItemsIds);
       
   258   }
       
   259 
       
   260 // ----------------------------------------------------------------------------
       
   261 // Remove .alb entry from AbstractAlnum table, TN table if .alb files deleted 
       
   262 // from file manager when refresh library
       
   263 // ----------------------------------------------------------------------------
       
   264 //
       
   265 void CMPXDbAbstractAlbum::AbstractAlbumCleanUpL()
       
   266     {
       
   267     MPX_FUNC("CMPXDbAbstractAlbum::AbstractAlbumCleanUpL");
       
   268     RArray<TMPXAttribute> attributes;
       
   269     CleanupClosePushL(attributes);
       
   270     attributes.AppendL(KMPXMediaGeneralUri);
       
   271     CMPXMediaArray* mediaArray = CMPXMediaArray::NewL();
       
   272     CleanupStack::PushL(mediaArray);
       
   273     
       
   274     GetAllCategoryItemsL(attributes.Array(), *mediaArray);
       
   275 
       
   276     TInt count(mediaArray->Count());
       
   277     if (count)
       
   278         {      
       
   279         CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL();
       
   280         CleanupStack::PushL(itemChangedMessages);
       
   281         for (TInt i = 0; i < count; i++)
       
   282             {
       
   283             CMPXMedia* element = mediaArray->AtL(i);
       
   284             const TDesC& uri = element->ValueText(KMPXMediaGeneralUri);                                 
       
   285 
       
   286             //check if the file exists in file system
       
   287             if (!(BaflUtils::FileExists(iFs, uri)))
       
   288                 {
       
   289                 //generate abstractalbum UID with the Uri
       
   290                 TUint32 abstractAlbumId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, uri, EFalse));
       
   291                 RemoveAbstractAlbumL(abstractAlbumId, *itemChangedMessages, ETrue);             
       
   292                 }
       
   293             }
       
   294             CleanupStack::PopAndDestroy(itemChangedMessages);
       
   295         }
       
   296         CleanupStack::PopAndDestroy(mediaArray);       
       
   297         CleanupStack::PopAndDestroy(&attributes);     
       
   298     }
       
   299 
       
   300 // ----------------------------------------------------------------------------
   225 // CMPXDbAbstractAlbum::RemoveAbstractAlbumL
   301 // CMPXDbAbstractAlbum::RemoveAbstractAlbumL
   226 // ----------------------------------------------------------------------------
   302 // ----------------------------------------------------------------------------
   227 //
   303 //
   228 void CMPXDbAbstractAlbum::RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, 
   304 void CMPXDbAbstractAlbum::RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, 
   229     CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted)
   305     CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted)
   253 //
   329 //
   254 void CMPXDbAbstractAlbum::HandleTNL( const TDesC& aOldPath,
   330 void CMPXDbAbstractAlbum::HandleTNL( const TDesC& aOldPath,
   255         const TDesC& aNewPath, TInt aPriority )
   331         const TDesC& aNewPath, TInt aPriority )
   256   {
   332   {
   257   MPX_FUNC("CMPXDbAbstractAlbum::HandleTNL");
   333   MPX_FUNC("CMPXDbAbstractAlbum::HandleTNL");
   258 
   334   if (!iTNManager)
       
   335       {
       
   336       CreateTNMSessionL();
       
   337       }
   259   if (aNewPath.Compare(KNullDesC)==0 && aOldPath.Compare(KNullDesC)!=0)
   338   if (aNewPath.Compare(KNullDesC)==0 && aOldPath.Compare(KNullDesC)!=0)
   260       {         
   339       {         
   261       // remove from thumbnail database table
   340       // remove from thumbnail database table
   262       MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, delete TN");  
   341       MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, delete TN");  
   263       CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
   342       CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
   264                aOldPath, KImageFileType );
   343                aOldPath, KImageFileType );
   265       iTNManager->DeleteThumbnails( *source );
   344       iTNManager->DeleteThumbnails( *source );
       
   345           
   266       CleanupStack::PopAndDestroy( source );
   346       CleanupStack::PopAndDestroy( source );
   267       }
   347       }
   268    else if (aNewPath.Compare(KNullDesC)!=0)
   348    else if (aNewPath.Compare(KNullDesC)!=0)
   269       {
   349       {
   270       //rename thumbnail
   350       //rename thumbnail
   271       MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, rename TN");
   351       MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, rename Thumbnail entry in Thumbnail table");
   272       iTNManager->RenameThumbnailsL( aOldPath,  aNewPath, aPriority );
   352     
       
   353       iTNManager->RenameThumbnailsL( aOldPath,  aNewPath, aPriority );  
   273       //after rename, reset flag
   354       //after rename, reset flag
   274       iRenameTN = EFalse;
   355       iRenameTN = EFalse;
   275       }
   356       }
   276  }
   357  }
   277 
   358 
   529 //
   610 //
   530 CMPXDbAbstractAlbum::CMPXDbAbstractAlbum(
   611 CMPXDbAbstractAlbum::CMPXDbAbstractAlbum(
   531     CMPXDbManager& aDbManager,
   612     CMPXDbManager& aDbManager,
   532     TMPXGeneralCategory aCategory, RFs& aFs) :
   613     TMPXGeneralCategory aCategory, RFs& aFs) :
   533     CMPXDbCategory(aDbManager, aCategory),
   614     CMPXDbCategory(aDbManager, aCategory),
       
   615     iTNManager(NULL),
   534     iFs(aFs)
   616     iFs(aFs)
   535     {
   617     {
   536     MPX_FUNC("CMPXDbAbstractAlbum::CMPXDbAbstractAlbum");
   618     MPX_FUNC("CMPXDbAbstractAlbum::CMPXDbAbstractAlbum");
   537     }
   619     }
   538 
   620 
   543 void CMPXDbAbstractAlbum::ConstructL()
   625 void CMPXDbAbstractAlbum::ConstructL()
   544     {
   626     {
   545     MPX_FUNC("CMPXDbAbstractAlbum::ConstructL");
   627     MPX_FUNC("CMPXDbAbstractAlbum::ConstructL");
   546 
   628 
   547     BaseConstructL();
   629     BaseConstructL();
   548 #ifdef RD_MPX_TNM_INTEGRATION
       
   549     // Create Thumbnail Manager instance. This object is the observer.
       
   550     iTNManager = CThumbnailManager::NewL( *this );
       
   551     iRenameTN = EFalse;
   630     iRenameTN = EFalse;
   552 #endif //RD_MPX_TNM_INTEGRATION
       
   553     }
   631     }
   554 
   632 
   555 
   633 
   556 
   634 
   557 // ---------------------------------------------------------------------------
   635 // ---------------------------------------------------------------------------
   570 // ---------------------------------------------------------------------------
   648 // ---------------------------------------------------------------------------
   571 void CMPXDbAbstractAlbum::ThumbnailReady( TInt /*aError*/,
   649 void CMPXDbAbstractAlbum::ThumbnailReady( TInt /*aError*/,
   572         MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ )
   650         MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ )
   573     {
   651     {
   574     }
   652     }
       
   653 
       
   654 // ---------------------------------------------------------------------------
       
   655 // CMPXDbAbstractAlbum::CreateTNMSessionL
       
   656 // Create thumbnail session
       
   657 // ---------------------------------------------------------------------------    
       
   658 void CMPXDbAbstractAlbum::CreateTNMSessionL()
       
   659     {
       
   660     if(!iTNManager)
       
   661         {
       
   662         iTNManager = CThumbnailManager::NewL( *this );
       
   663         }
       
   664     }
   575 // End of File
   665 // End of File