# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1272375277 -10800 # Node ID a1247965635c09cf674651216333ba6faa1d1d6d # Parent c54d95799c80f4046d8f1bac095757881fd2b508 Revision: 201015 Kit: 201017 diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/app/inc/mpxappui.h --- a/mpxmusicplayer/app/inc/mpxappui.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/app/inc/mpxappui.h Tue Apr 27 16:34:37 2010 +0300 @@ -307,7 +307,7 @@ * * @param aParameter AIW parameter passed in by other applications */ - TBool IsBrowserClosed(const TDesC8& aParameter); + TBool IsBrowserClosedL(const TDesC8& aParameter); /** * Brings the browser to the foreground. @@ -658,17 +658,17 @@ * * @param aVolume volume value. */ - void SetVolume( const TInt aVolume ); + void SetVolumeL( const TInt aVolume ); /** * Mutes the playback volume. */ - void MuteVolume(); + void MuteVolumeL(); /** * Unmutes the playback volume. */ - void UnMuteVolume(); + void UnMuteVolumeL(); /** * Translates Playback commands to MPX commands @@ -681,7 +681,7 @@ * * @param music player need memory */ - void CheckAvailableMemory( TInt aNeedMemory ); + void CheckAvailableMemoryL( TInt aNeedMemory ); #ifdef FF_OOM_MONITOR2_COMPONENT /** diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/app/src/mpxPDcommandhandler.cpp --- a/mpxmusicplayer/app/src/mpxPDcommandhandler.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/app/src/mpxPDcommandhandler.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -102,7 +102,7 @@ TRAP_IGNORE( iPdPlaybackUtility->RemoveObserverL( *this ) ); TRAP_IGNORE( iPdPlaybackUtility->CommandL( EPbCmdStop ) ); TRAP_IGNORE( iPdPlaybackUtility->CommandL( EPbCmdClose ) ); - iPdPlaybackUtility->PlayerManager().ClearSelectPlayersL(); + TRAP_IGNORE( iPdPlaybackUtility->PlayerManager().ClearSelectPlayersL() ); iPdPlaybackUtility->Close(); } if ( iViewUtility ) diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/app/src/mpxappui.cpp --- a/mpxmusicplayer/app/src/mpxappui.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/app/src/mpxappui.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -259,7 +259,7 @@ #ifdef FF_OOM_MONITOR2_COMPONENT CheckAvailableMemoryByOomL( KLowestMemoryNeeded ); #else - CheckAvailableMemory( KLowestMemoryNeeded ); + CheckAvailableMemoryL( KLowestMemoryNeeded ); #endif //FF_OOM_MONITOR2_COMPONENT if ( !IsEmbedded() ) @@ -383,7 +383,7 @@ { MPX_DEBUG1( "-->CMPXAppUi::~CMPXAppUi()" ); #ifdef FF_OOM_MONITOR2_COMPONENT - SetMpxOomPriorityL( ROomMonitorSession::EOomPriorityNormal ); + TRAP_IGNORE( SetMpxOomPriorityL( ROomMonitorSession::EOomPriorityNormal ) ); #endif //FF_OOM_MONITOR2_COMPONENT if ( !IsEmbedded() ) @@ -749,6 +749,7 @@ { case EPbCmdSetVolume: { + TRAP_IGNORE( TMPXPlaybackState playerState( EPbStateNotInitialised ); playerState = iPlaybackUtility->StateL(); if ( !MPXUser::IsCallOngoing( KMPXCallTypeGenericVoice ) || @@ -769,16 +770,18 @@ { if ( aData != iCurrentVolume ) { - SetVolume( aData ); + SetVolumeL( aData ); } // popup volume control even if volume didn't change HandlePopupL( EPbCmdSetVolume ); } } + ); break; } case EPbCmdMuteVolume: { + TRAP_IGNORE( TMPXPlaybackState playerState( EPbStateNotInitialised ); playerState = iPlaybackUtility->StateL(); if ( !MPXUser::IsCallOngoing( KMPXCallTypeGenericVoice ) || @@ -796,14 +799,16 @@ // or if we're actively playing during call if ( IsForeground() || EPbStatePlaying == playerState || EPbStatePlaying == pdPlayerState ) { - MuteVolume(); + MuteVolumeL(); HandlePopupL( EPbCmdMuteVolume ); } } + ); break; } case EPbCmdUnMuteVolume: { + TRAP_IGNORE( TMPXPlaybackState playerState( EPbStateNotInitialised ); playerState = iPlaybackUtility->StateL(); if ( !MPXUser::IsCallOngoing( KMPXCallTypeGenericVoice ) || @@ -821,10 +826,11 @@ } if ( IsForeground() || EPbStatePlaying == playerState || EPbStatePlaying == pdPlayerState ) { - UnMuteVolume(); + UnMuteVolumeL(); HandlePopupL( EPbCmdUnMuteVolume ); } } + ); break; } default: @@ -838,15 +844,15 @@ // music is foreground app and not displaying // dialogs or the options menu if ( iView ) - { - MPX_DEBUG2( "CMPXAppUi::HandleMediaKeyCommand sending command %d to view", MPXCmdForPbCmd(aCommand) ); - iView->HandleCommandL( MPXCmdForPbCmd(aCommand) ); + { + MPX_TRAPD( err, iView->HandleCommandL( MPXCmdForPbCmd(aCommand) ) ); + MPX_DEBUG3( "CMPXAppUi::HandleMediaKeyCommand sending command %d to view err%d", MPXCmdForPbCmd(aCommand), err ); } } else { TMPXPlaybackState playerState( EPbStateNotInitialised ); - playerState = iPlaybackUtility->StateL(); + MPX_TRAPD( err, playerState = iPlaybackUtility->StateL() ); if ( foregroundApp && IsDisplayingDialog() ) { // displaying dialog in the foreground @@ -859,13 +865,13 @@ { // In playing/paused state, all media keys are active. // Now playing view is not bring to foreground. - // Seeking forward/backwards is also "playing" - MPX_DEBUG2( "CMPXAppUi::HandleMediaKeyCommand Dialog displaying, sending command %d to DoHandleMediaKeyCommandL", aCommand ); - DoHandleMediaKeyCommandL( aCommand ); + // Seeking forward/backwards is also "playing" + MPX_TRAP( err, DoHandleMediaKeyCommandL( aCommand ) ); + MPX_DEBUG3( "CMPXAppUi::HandleMediaKeyCommand Dialog displaying, sending command %d to DoHandleMediaKeyCommandL err%d", aCommand, err ); } else { - MPX_DEBUG2( "CMPXAppUi::HandleMediaKeyCommand Dialog displaying, inactive state, command %d ignored", aCommand ); + MPX_DEBUG3( "CMPXAppUi::HandleMediaKeyCommand Dialog displaying, inactive state, command %d, err%d ignored", aCommand , err ); } } else @@ -876,21 +882,21 @@ EPbStateSeekingForward == playerState || EPbStateSeekingBackward == playerState ) { - MPX_DEBUG2( "CMPXAppUi::HandleMediaKeyCommand Menu displaying/not foreground, sending command %d to DoHandleMediaKeyCommandL", aCommand ); - DoHandleMediaKeyCommandL( aCommand ); + MPX_TRAP( err, DoHandleMediaKeyCommandL( aCommand ) ); + MPX_DEBUG3( "CMPXAppUi::HandleMediaKeyCommand Menu displaying/not foreground, sending command %d to DoHandleMediaKeyCommandL err%d", aCommand, err ); } else if ( ( aCommand == EPbCmdPlay || aCommand == EPbCmdPlayPause ) && iView ) { if ( !foregroundApp ) - { - MPX_DEBUG2( "CMPXAppUi::HandleMediaKeyCommand Menu displaying/not foreground, active idle foreground, sending command %d to DoHandleMediaKeyCommandL", aCommand ); + { // not foreground, play without loading playback view - DoHandleMediaKeyCommandL( aCommand ); + MPX_TRAP( err, DoHandleMediaKeyCommandL( aCommand ) ); + MPX_DEBUG3( "CMPXAppUi::HandleMediaKeyCommand Menu displaying/not foreground, active idle foreground, sending command %d to DoHandleMediaKeyCommandL err%d", aCommand, err ); } else - { - MPX_DEBUG2( "CMPXAppUi::HandleMediaKeyCommand Menu displaying/not foreground, sending command %d to view", aCommand ); - iView->HandleCommandL( MPXCmdForPbCmd(aCommand) ); + { + MPX_TRAP( err, iView->HandleCommandL( MPXCmdForPbCmd(aCommand) ) ); + MPX_DEBUG3( "CMPXAppUi::HandleMediaKeyCommand Menu displaying/not foreground, sending command %d to view err%d", aCommand, err ); } } else if ( aCommand == EPbCmdPlay || aCommand == EPbCmdPlayPause ) @@ -2012,32 +2018,28 @@ } else if ( op == EMcMsgDiskRemoved ) { - if ( !IsEmbedded() ) + TBool usbDiskRemovalEvent( EFalse ); + if ( (op == EMcMsgDiskRemoved) && iIsUsbOnGoing ) { - TBool usbDiskRemovalEvent(EFalse); - if ( (op == EMcMsgDiskRemoved) && iIsUsbOnGoing ) - { - usbDiskRemovalEvent = ETrue; - } - else - { - MPX_DEBUG1( "CMPXAppUi::HandleBroadcastMessageL. MMC ejected and the application needs to close." ); - RunAppShutter(); - return; - } + usbDiskRemovalEvent = ETrue; + } + else + { + MPX_DEBUG1( "CMPXAppUi::HandleBroadcastMessageL. MMC ejected and the application needs to close." ); + RunAppShutter(); + return; + } CMPXCollectionPath* cPath = iCollectionUtility->Collection().PathL ( ); CleanupStack::PushL ( cPath ); if ( cPath->Levels ( )> 1 && !iFormattingOnGoing && !usbDiskRemovalEvent && iCurrentViewType.iUid != KMPXPluginTypePlaybackUid ) { - - cPath->Back ( ); - iCollectionUtility->Collection().OpenL ( *cPath ); - - } - CleanupStack::PopAndDestroy ( cPath ); + cPath->Back(); + iCollectionUtility->Collection().OpenL( *cPath ); + } + CleanupStack::PopAndDestroy( cPath ); } // Re-open the collection view after a refresh // and after album art or metadata dialog or add songs editor dialog closes @@ -3939,7 +3941,7 @@ ASSERT(!IsEmbedded());////browser should not send messages to music player if it is not RootApp. if ( aMessageParameters.Length() ) { - if ( IsBrowserClosed(aMessageParameters) ) + if ( IsBrowserClosedL(aMessageParameters) ) { if ( iAppStartedByBrowser ) { @@ -4016,7 +4018,7 @@ // Convert param to 8-bit. HBufC8* param8 = HBufC8::NewLC( param.Length() ); param8->Des().Copy( param ); - if ( IsBrowserClosed(*param8) ) + if ( IsBrowserClosedL(*param8) ) { Exit(); } @@ -4284,10 +4286,10 @@ } #ifdef RD_BROWSER_PROGRESSIVE_DOWNLOAD // ----------------------------------------------------------------------------- -// CMPXAppUi::IsBrowserClosed +// CMPXAppUi::IsBrowserClosedL // ----------------------------------------------------------------------------- // -TBool CMPXAppUi::IsBrowserClosed( +TBool CMPXAppUi::IsBrowserClosedL( const TDesC8& aParams ) { TBool ret(EFalse); @@ -4353,10 +4355,10 @@ } // ----------------------------------------------------------------------------- -// CMPXAppUi::SetVolume +// CMPXAppUi::SetVolumeL // ----------------------------------------------------------------------------- // -void CMPXAppUi::SetVolume( const TInt aVolume ) +void CMPXAppUi::SetVolumeL( const TInt aVolume ) { CMPXCommand* cmd( CMPXCommand::NewL() ); CleanupStack::PushL( cmd ); @@ -4375,10 +4377,10 @@ } // ----------------------------------------------------------------------------- -// CMPXAppUi::MuteVolume +// CMPXAppUi::MuteVolumeL // ----------------------------------------------------------------------------- // -void CMPXAppUi::MuteVolume() +void CMPXAppUi::MuteVolumeL() { CMPXCommand* cmd( CMPXCommand::NewL() ); CleanupStack::PushL( cmd ); @@ -4396,10 +4398,10 @@ } // ----------------------------------------------------------------------------- -// CMPXAppUi::UnMuteVolume +// CMPXAppUi::UnMuteVolumeL // ----------------------------------------------------------------------------- // -void CMPXAppUi::UnMuteVolume() +void CMPXAppUi::UnMuteVolumeL() { CMPXCommand* cmd( CMPXCommand::NewL() ); CleanupStack::PushL( cmd ); @@ -4482,10 +4484,10 @@ } // ----------------------------------------------------------------------------- -// CMPXAppUi::CheckAvailableMemory +// CMPXAppUi::CheckAvailableMemoryL // ----------------------------------------------------------------------------- // -void CMPXAppUi::CheckAvailableMemory( TInt aNeedMemory ) +void CMPXAppUi::CheckAvailableMemoryL( TInt aNeedMemory ) { TMemoryInfoV1Buf info; UserHal::MemoryInfo(info); diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/commonui/inc/mpxfilenamequerydlg.h --- a/mpxmusicplayer/commonui/inc/mpxfilenamequerydlg.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/commonui/inc/mpxfilenamequerydlg.h Tue Apr 27 16:34:37 2010 +0300 @@ -60,6 +60,11 @@ * @see CAknTextQueryDialog */ TBool OkToExitL( TInt aButtonId ); + + /** + * @see CAknTextQueryDialog + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); private: /** diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/commonui/src/mpxcommonuihelper.cpp --- a/mpxmusicplayer/commonui/src/mpxcommonuihelper.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/commonui/src/mpxcommonuihelper.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -1364,6 +1364,26 @@ usingGlobalNote = ETrue; break; } + case KMPXErrorExpiredRights: + { + // if cannot retrieve value from aMedia, use invalid_group error + if( !aMedia ) + { + errorText = StringLoader::LoadLC( R_MPX_INVALID_GROUP_TEXT ); + } + else + { + if ( aMedia->IsSupported( KMPXMediaGeneralTitle ) ) + { + const TDesC& trackTitle( aMedia->ValueText( + KMPXMediaGeneralTitle ) ); + errorText = StringLoader::LoadLC( + R_MPX_DRM_EXPIRED_PLAYBACK, + trackTitle ); + } + } + break; + } case KErrLocked: errorText = StringLoader::LoadLC( R_MPX_CANNOT_PROCEED_WITH_OPERATION ); break; diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/commonui/src/mpxfilenamequerydlg.cpp --- a/mpxmusicplayer/commonui/src/mpxfilenamequerydlg.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/commonui/src/mpxfilenamequerydlg.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -228,6 +228,26 @@ } // ----------------------------------------------------------------------------- +// CMPXFileNameQueryDlg::OfferKeyEventL +// +// ----------------------------------------------------------------------------- +// +TKeyResponse CMPXFileNameQueryDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) + { + TKeyResponse response = EKeyWasNotConsumed; + // consume 'enter' so it won't acknowledge the dialog + if ( aType == EEventKey && aKeyEvent.iCode == EKeyEnter ) + { + response = EKeyWasConsumed; + } + else + { + response = CAknTextQueryDialog::OfferKeyEventL(aKeyEvent, aType); + } + return response; + } + +// ----------------------------------------------------------------------------- // CMPXFileNameQueryDlg::IsValidName // ----------------------------------------------------------------------------- // diff -r c54d95799c80 -r a1247965635c mpxmusicplayer/mediakeyhandler/src/mpxmediakeyhandlerimp.cpp --- a/mpxmusicplayer/mediakeyhandler/src/mpxmediakeyhandlerimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxmusicplayer/mediakeyhandler/src/mpxmediakeyhandlerimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -472,7 +472,7 @@ } } - if( iMuted && aValue > 0 ) // unmute + if( !iMuted && aValue > 0 ) // unmute { iMuted = EFalse; iCurrentVol = aValue; @@ -1107,15 +1107,18 @@ case ERemConCoreApiVolumeDown: { iTimer->Cancel(); - - MMPXPlaybackUtility* pbUtil = MMPXPlaybackUtility::UtilityL( KPbModeActivePlayer ); - CleanupClosePushL(*pbUtil); - + MMPXPlaybackUtility* pbUtil( NULL ); + MPX_TRAPD( err, pbUtil = MMPXPlaybackUtility::UtilityL( KPbModeActivePlayer )); + if( err != KErrNone ) + { + MPX_DEBUG2( "CMPXMediaKeyHandlerImp::MrccatoCommand ERemConCoreApiVolumeDown leave err%d", err ); + break; + } TMPXPlaybackState playerState( EPbStateNotInitialised ); - playerState = pbUtil->StateL(); - - CleanupStack::PopAndDestroy(pbUtil); - + TRAP_IGNORE( playerState = pbUtil->StateL()); + pbUtil->Close(); + pbUtil = NULL; + if( playerState == EPbStatePlaying || IsAppForeground() ) { iIncreaseVol = (aOperationId == ERemConCoreApiVolumeUp ? ETrue: EFalse); diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/inc/mpxdbmanager.h --- a/mpxplugins/serviceplugins/collectionplugins/inc/mpxdbmanager.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/inc/mpxdbmanager.h Tue Apr 27 16:34:37 2010 +0300 @@ -391,7 +391,7 @@ * @param aSize - On return, the total size of the databases on the RAM drive. * @return TInt System error. */ - TInt GetTotalRamDatabasesSize(TInt& aSize); + TInt GetTotalRamDatabasesSizeL(TInt& aSize); /** * Remove dummy file diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -777,11 +777,19 @@ { if (iDatabaseHandles[i].iDrive == aDrive) { + TBool inTransaction = InTransaction(); TInt transactionCount = iTransactionCount; - if (iTransactionCount > 0) + iTransactionCount = 0; + + if (inTransaction) //if the transaction is ongoing, try committing { - iTransactionCount = 0; - DoCommitL(); + //if transaction committing fails, try roll-back + TInt error = iDatabase.Exec( KCommitTransaction ); + if ( error != KErrNone ) + { + //The error is ignored since we can't do nothing about it + iDatabase.Exec( KRollbackTransaction ); + } } #ifdef __RAMDISK_PERF_ENABLE @@ -811,8 +819,9 @@ MPX_DEBUG2("CMPXDbManager::CloseDatabaseL found %d", aDrive); CloseDatabaseAtIndexL( i ); } - - if (transactionCount > 0) + + //Let MTP handle the transcation if there is any + if ( inTransaction ) { DoBeginL(); iTransactionCount = transactionCount; @@ -2806,7 +2815,7 @@ else { TInt size=0; - TInt err = GetTotalRamDatabasesSize(size); + TInt err = GetTotalRamDatabasesSizeL(size); if ( err || (size > iMaximumAllowedRAMDiskSpaceToCopy) ) { // Databases using too much RAM space, copy back to normal drive and continue to harvest. @@ -2965,7 +2974,7 @@ // CMPXDbManager::GetTotalRamDatabasesSize // --------------------------------------------------------------------------- // -TInt CMPXDbManager::GetTotalRamDatabasesSize(TInt& aSize) +TInt CMPXDbManager::GetTotalRamDatabasesSizeL(TInt& aSize) { MPX_FUNC("CMPXDbManager::GetTotalRamDatabasesSize"); TInt err = KErrNotSupported; @@ -2993,21 +3002,21 @@ filename.Format(KSecurePath, User::Identity().iUid, temp); CleanupStack::PopAndDestroy(temp); dbFilename.Append(filename); - MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSize - Database name = %S", &dbFilename); + MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSizeL - Database name = %S", &dbFilename); TEntry entry; err = iFs.Entry( dbFilename, entry ); if ( (err != KErrNone) && (err != KErrNotFound) ) { break; } - MPX_DEBUG3("CMPXDbManager::GetTotalRamDatabasesSize - Size of Db %S = %d", &dbFilename, entry.iSize); + MPX_DEBUG3("CMPXDbManager::GetTotalRamDatabasesSizeL - Size of Db %S = %d", &dbFilename, entry.iSize); // sum up size size += entry.iSize; } aSize = size; - MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSize - Total Size of Dbs = %d", size); + MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSizeL - Total Size of Dbs = %d", size); #endif //__RAMDISK_PERF_ENABLE - MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSize - Return err = %d", err); + MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSizeL - Return err = %d", err); return err; } diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbabstractalbum.h --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbabstractalbum.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbabstractalbum.h Tue Apr 27 16:34:37 2010 +0300 @@ -50,7 +50,7 @@ * @return New CMPXDbCategory instance. */ static CMPXDbAbstractAlbum* NewL(CMPXDbManager& aDbManager, - TMPXGeneralCategory aCategory); + TMPXGeneralCategory aCategory, RFs& aFs); /** * Two-phased constructor. @@ -59,7 +59,7 @@ * @return New CMPXDbCategory instance on the cleanup stack. */ static CMPXDbAbstractAlbum* NewLC(CMPXDbManager& aDbManager, - TMPXGeneralCategory aCategory); + TMPXGeneralCategory aCategory, RFs& aFs); /** * Destructor @@ -84,9 +84,17 @@ * into consideration when generating the unique row id * @return The unique id of the row added. */ - TUint32 AddItemL( const TDesC& aName, const TDesC& aAlbumArtist, const TDesC& aGenre, TInt aDriveId, TBool& aNewRecord, - TBool aCaseSensitive = ETrue); - + TUint32 AddItemL( const TDesC& aUri, const TDesC& aName, const TDesC& aAlbumArtist, TInt aDriveId, TBool& aNewRecord, + TBool aCaseSensitive = EFalse); + + /** + * Add existing item to table with same entry fields values except new Uri. + * @param aOldId: existing item Id + * @param newUri: new Uri + * @return The unique id of the row added. + */ + TUint32 AddUpdatedItemL(TUint32 aOldId, const TDesC& newUri); + /** * Decrement the number of songs for the item. If the count gets to 0, remove * the item. @@ -103,13 +111,17 @@ */ void DecrementSongsForCategoryL(TUint32 aId, TInt aDriveId, CMPXMessageArray* aItemChangedMessages, TBool& aItemExist, TBool aMtpInUse); - + /** - * Remove a abstractalbum and return its URI - * @param aAbstractAlbumId identifies the abstractalbum - * @return HBufC containing the URI. Ownership is transferred. + * Remove a abstractalbum, remove entry from AbstractAlbum table, + * Thumbnail table, corresponding alb from file system + * @param aAbstractAlbumId ID of the abstractalbum to remove + * @param aItemChangedMessages a list of change events as a result of the + * abstractalbum removal + * @param aFileDeleted indicate if alb file already deleted from file system */ - HBufC* DeleteAbstractAlbumL(TUint32 aAbstractAlbumId, TInt aDriveId = 0); + void RemoveAbstractAlbumL(TUint32 aAbstractalbumId, + CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted); /** * Update a category item. @@ -120,6 +132,29 @@ * category was updated */ void UpdateItemL(TUint32 aId, const CMPXMedia& aMedia, TInt aDriveId, CMPXMessageArray* aItemChangedMessages); + + /** + * Delete or Rename Thumbnail from TN DB by calling Thumbnail manager + * Rename Thumbnail if aNewPath is not NULL, otherwise Delete Thumbnail + * @param aOldPath: old Uri + * @param aNewPath: new Uri + * @param aPriority: priority pass to Thumbnail manager + */ + void HandleTNL( const TDesC& aOldPath, const TDesC& aNewPath = KNullDesC, TInt aPriority =0 ); + + /** + * Get the uri field for a given ID. + * @param aId identifies the abstractalbum item + * @return uri that matches aId. Ownership is abandoned. + */ + HBufC* GetUriL(TUint32 aId); + + /** + * Get Ids of albstractalbum with no song associated. + * Rename Thumbnail if aNewPath is not NULL, otherwise Delete Thumbnail + * @param aItemsIds: array of Ids for abstractalbums which have no song associated. + */ + void GetAllItemsWithNoSongL(RArray& aItemsIds); private: @@ -142,35 +177,37 @@ */ void GenerateAbstractAlbumFieldsValuesL(const CMPXMedia& aMedia, CDesCArray& aFields, CDesCArray& aValues); - + + /** + * Remove a abstractalbum from AbstractAlbum table + * @param aAbstractAlbumId identifies the abstractalbum + * @param aDriveId drive Id + */ + void DeleteAbstractAlbumEntryL(TUint32 aAbstractAlbumId, TInt aDriveId = 0); + /** * @see MMPXTable */ virtual void CreateTableL(RSqlDatabase& aDatabase, TBool aCorruptTable); - - /** * @see MMPXTable */ virtual TBool CheckTableL(RSqlDatabase& aDatabase); - - - + /** * C++ constructor. * @param aDbManager database manager to use for database interactions * @param aCategory identifies the category */ - CMPXDbAbstractAlbum(CMPXDbManager& aDbManager, TMPXGeneralCategory aCategory); + CMPXDbAbstractAlbum(CMPXDbManager& aDbManager, TMPXGeneralCategory aCategory, RFs& aFs); /** * Second phase constructor. */ void ConstructL(); - - + /** * MThumbnailManagerObserver */ @@ -180,7 +217,7 @@ * MThumbnailManagerObserver */ void ThumbnailReady( - TInt aError, + TInt aError, MThumbnailData& aThumbnail, TThumbnailRequestId aId ); public: @@ -191,9 +228,9 @@ enum TAbstractAlbumColumns { EAbstractAlbumUniqueId = KMPXTableDefaultIndex, + EAbstractAlbumUri, EAbstractAlbumName, EAbstractAlbumArtist, - EAbstractAlbumGenre, EAbstractAlbumSongCount, EAbstractAlbumVolumeId, EAbstractAlbumFieldCount @@ -201,6 +238,8 @@ private: // Data CThumbnailManager* iTNManager; + TBool iRenameTN; + RFs& iFs; }; #endif // MPXDBAbstractAlbum_H diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbhandler.h --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbhandler.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbhandler.h Tue Apr 27 16:34:37 2010 +0300 @@ -124,12 +124,13 @@ * @return playlist Id of the playlist */ TUint32 AddSongToPlaylistL(const CMPXMedia& aMedia); -#ifdef ABSTRACTAUDIOALBUM_INCLUDED +#ifdef ABSTRACTAUDIOALBUM_INCLUDED /** * Add an abstractalbum to the collection * @param aMedia abstractalbum media object with URI of the abstractalbum. + * @param aMessageArray change event message to notify client of the changes * @return abstractalbum Id of the abstractalbum created - */ + */ TUint32 AddAbstractAlbumL(const CMPXMedia& aMedia, CMPXMessageArray* aMessageArray=NULL); #endif // ABSTRACTAUDIOALBUM_INCLUDED /** @@ -142,19 +143,30 @@ */ CMPXDbActiveTask::TChangeVisibility UpdateSongL(const CMPXMedia& aMedia, CMPXMessageArray& aItemChangedMessages); -#ifdef ABSTRACTAUDIOALBUM_INCLUDED +#ifdef ABSTRACTAUDIOALBUM_INCLUDED /** - * Update songs info for songs associated with abstractalbum + * Update abstractalbum info to AbstractAlbum table and Songs associated with abstractalbum * in the music collection database - * @param aMedia songDetails object which contains file path, + * @param aMedia media object + * @param aItemChangedMessages a list of change events as a result of the + * song update + * @return ETrue if UI visible change else EFalse + */ + CMPXDbActiveTask::TChangeVisibility UpdateAbstractAlbumL(const CMPXMedia& aMedia, + CMPXMessageArray& aItemChangedMessages); + + /** + * Update all songs which associate with AbstractAlbum to new AbstractAlbum info + * in the collection + * @param aMedia media object which contains file path, * artist, composer, name(title), track, etc... * @param aItemChangedMessages a list of change events as a result of the * song update * @return ETrue if UI visible change else EFalse - */ - CMPXDbActiveTask::TChangeVisibility UpdateAbstractAlbumSongsL(const CMPXMedia& aMedia, + */ + CMPXDbActiveTask::TChangeVisibility UpdateSongsAbstractAlbumInfoL(const CMPXMedia& aMedia, CMPXMessageArray& aItemChangedMessages); -#endif // ABSTRACTAUDIOALBUM_INCLUDED +#endif // ABSTRACTAUDIOALBUM_INCLUDED /** * Update playlist info in the music collection database * @param aMedia playlist details object which contains file path, @@ -241,15 +253,16 @@ CMPXMessageArray& aItemChangedMessages); #ifdef ABSTRACTAUDIOALBUM_INCLUDED /** - * Remove a abstractalbum This will remove all the songs from the abstractalbum + * Remove a abstractalbum, remove entry from AbstractAlbum table, + * Thumbnail table, corresponding alb from file system * @param aAbstractAlbumId ID of the abstractalbum to remove - * @param aUriArray a descriptor array to contain the URI of the deleted file * @param aItemChangedMessages a list of change events as a result of the * abstractalbum removal + * @param aFileDeleted indicate if alb file already deleted from file system */ - void RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages); -#endif // ABSTRACTAUDIOALBUM_INCLUDED + void RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, + CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted); +#endif // ABSTRACTAUDIOALBUM_INCLUDED /** * Remove a song from the specified playlist. @@ -878,17 +891,8 @@ */ void DoRemovePlaylistL(TUint32 aPlaylistId, CDesCArray& aUriArray, CMPXMessageArray& aItemChangedMessages); -#ifdef ABSTRACTAUDIOALBUM_INCLUDED - /** - * Deletes a specified abstractalbum. - * @param aAbstractAlbumId the abstractalbum to be deleted. - * @param aUriArray on return contains the URIs of the items deleted. - * @param aItemChangedMessages on return contains changed messages for all - * affected items - */ - void DoRemoveAbstractAlbumL(TUint32 aAbstractalbumId, CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages); -#endif // ABSTRACTAUDIOALBUM_INCLUDED + + /** * Deletes a song from a playlist. * @param aPlaylistId identifies the playlist. @@ -901,6 +905,22 @@ void DoRemoveSongFromPlaylistL(TUint32 aPlaylistId, const TMPXItemId& aSongId, TInt aOrdinal, CMPXMessageArray& aItemChangedMessages); +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + /** + * Remove all abstractalbum items with no songs associated, + * TN and .alb files also removed. + * + */ + void RemoveAbstractAlbumsWithNoSongL(); + + /** + /* When refresh library, Remove .alb entry from AbstractAlnum table, TN table if .alb files deleted + /* from file manager + */ + void AbstractAlbumCleanUpL(); + +#endif // ABSTRACTAUDIOALBUM_INCLUDED + /** * Deletes all song records marked as deleted. */ @@ -1008,10 +1028,11 @@ * @see MMPXDbMusicObserver */ virtual TUint32 AddCategoryItemL(TMPXGeneralCategory aCategory, - const TDesC& aName, TInt aDriveId, + const TDesC& aName, + TInt aDriveId, CMPXMessageArray* aItemChangedMessages, TBool& aItemExist, - const TDesC& aAlbumArtist=KNullDesC, - const TDesC& aGenre=KNullDesC); + const TDesC& aUri, + const TDesC& aAlbumArtist=KNullDesC); #else /** @@ -1045,7 +1066,7 @@ * @see MMPXDbMusicObserver */ virtual void HandlePlaybackTimeModifiedL(CMPXMessageArray& aItemChangedMessages); -#ifdef ABSTRACTAUDIOALBUM_INCLUDED +#ifdef ABSTRACTAUDIOALBUM_INCLUDED /** * @see MMPXDbMusicObserver */ diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbmusic.h --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbmusic.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbmusic.h Tue Apr 27 16:34:37 2010 +0300 @@ -421,14 +421,13 @@ #ifdef ABSTRACTAUDIOALBUM_INCLUDED - /** + /** * Returns all songs for a given abstractalbum. - * @param aDrive drive ID AbstractAlbum stored * @param aAbstractAlbumId abstractalbum to get the songs for * @param aAttrs attributes to be retrieved * @param aMediaArray returns the song attributes. */ - void GetAllSongsForAbstractAlbumL(TInt aDrive, TInt aAbstractAlbumId, + void GetAllSongsForAbstractAlbumL(TUint aAbstractAlbumId, const TArray& aAttrs, CMPXMediaArray& aMediaArray); #endif // ABSTRACTAUDIOALBUM_INCLUDED /** @@ -679,8 +678,8 @@ CMPXMessageArray* aItemChangedMessages, TUint32& aItemId); TBool UpdateCategoryFieldL(TMPXGeneralCategory aCategory, const CMPXMedia& aMedia, - const TMPXAttribute& aAttribute, TUint32 aOldId, TInt aDriveId, - CMPXMessageArray* aItemChangedMessages, TUint32& aItemId, TUint32 aArtistId); + const TMPXAttribute& aAttribute, TUint32 aOldId, TInt aDriveId, + CMPXMessageArray* aItemChangedMessages, TUint32& aItemId, TUint32 aArtistId); /** * Checks if extra attributes are required. The "standard attribute set includes: * EMPXMediaGeneralId, EMPXMediaGeneralType, EMPXMediaGeneralCategory, @@ -696,7 +695,7 @@ * @return ETrue if the media contains one or more supported attribute; * otherwise EFalse. */ - TBool IsSupported(const CMPXMedia& aMedia); + TBool IsSupported(const CMPXMedia& aMedia); private: // from MMPXTable @@ -734,8 +733,8 @@ * Column indexes in the music table */ enum TMusicColumns - { - EMusicUniqueId = KMPXTableDefaultIndex, + { + EMusicUniqueId = KMPXTableDefaultIndex, EMusicDbFlag, EMusicVolumeId, EMusicTitle, diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbpluginqueries.h --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbpluginqueries.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbpluginqueries.h Tue Apr 27 16:34:37 2010 +0300 @@ -155,7 +155,7 @@ _LIT(KQueryMusicGetMostPlayed, "SELECT Music.*,Artist.Name,Album.Name,Genre.Name,Composer.Name FROM :dbname.Music,:dbname.Artist,:dbname.Album,:dbname.Genre,:dbname.Composer WHERE Music.Deleted=0 AND Music.PlayCount<>0 AND Music.Album=Album.UniqueId AND Music.Artist=Artist.UniqueId AND Music.Genre=Genre.UniqueId AND Music.Composer=Composer.UniqueId ORDER BY PlayCount DESC, TimePlayed DESC LIMIT %u"); _LIT(KQueryMusicGetRecentlyAdded, "SELECT Music.*,Artist.Name,Album.Name,Genre.Name,Composer.Name FROM :dbname.Music,:dbname.Artist,:dbname.Album,:dbname.Genre,:dbname.Composer WHERE Music.Deleted=0 AND (julianday(Music.TimeAdded)>julianday('now','-7 days')) AND Music.Album=Album.UniqueId AND Music.Artist=Artist.UniqueId AND Music.Genre=Genre.UniqueId AND Music.Composer=Composer.UniqueId ORDER BY 11 DESC"); #ifdef ABSTRACTAUDIOALBUM_INCLUDED -_LIT(KQueryMusicGetSongsForAbstractAlbum,"SELECT Music.*,AbstractAlbum.Name FROM :dbname.Music,:dbname.AbstractAlbum WHERE Music.Deleted=0 AND Music.AbstractAlbum=AbstractAlbum.UniqueId AND AbstractAlbum.UniqueId=%u"); +_LIT(KQueryMusicGetSongsForAbstractAlbum,"SELECT Music.*,AbstractAlbum.Uri FROM :dbname.Music,:dbname.AbstractAlbum WHERE Music.Deleted=0 AND Music.AbstractAlbum=AbstractAlbum.UniqueId AND AbstractAlbum.UniqueId=%u"); #endif // ABSTRACTAUDIOALBUM_INCLUDED _LIT(KQueryMusicSong, "SELECT UniqueId,DbFlag,VolumeId,Title,0,'',0,Location FROM :dbname.Music WHERE %S"); _LIT(KQueryMusicFindAll, "SELECT Music.*,Artist.Name,Album.Name,Genre.Name,Composer.Name FROM :dbname.Music,:dbname.Artist,:dbname.Album,:dbname.Genre,:dbname.Composer WHERE %S AND Music.Album=Album.UniqueId AND Music.Artist=Artist.UniqueId AND Music.Genre=Genre.UniqueId AND Music.Composer=Composer.UniqueId %S"); @@ -268,7 +268,7 @@ _LIT(KAuxiliaryCheckTable, "SELECT Id,Version,TimeRefreshed,TimeSynced,Corrupt,SaveDeletedRecordCount FROM AUXILIARY"); #ifdef ABSTRACTAUDIOALBUM_INCLUDED _LIT(KQueryAuxiliaryInsert, "INSERT INTO Auxiliary(Id,Version,Corrupt) VALUES(0,'6.5.0',%u)"); -#else +#else _LIT(KQueryAuxiliaryInsert, "INSERT INTO Auxiliary(Id,Version,Corrupt) VALUES(0,'6.4.0',%u)"); #endif // ABSTRACTAUDIOALBUM_INCLUDED _LIT(KQueryAuxiliarySetTime, "UPDATE :dbname.Auxiliary SET TimeRefreshed='%S', Corrupt=0"); @@ -427,7 +427,7 @@ L"Name TEXT COLLATE NOCASE," L"SongCount INTEGER," L"Artist INTEGER," - L"Art TEXT)"); + L"Art TEXT)"); _LIT(KAlbumCheckTable,"SELECT UniqueId,Name,SongCount,Artist,Art FROM Album"); @@ -458,16 +458,17 @@ // _LIT(KAbstractAlbumCreateTable,"CREATE TABLE AbstractAlbum(" L"UniqueId INTEGER PRIMARY KEY," + L"Uri TEXT," L"Name TEXT COLLATE NOCASE," L"AlbumArtist TEXT," - L"Genre TEXT," L"SongCount INTEGER," L"VolumeId INTEGER)"); -_LIT(KAbstractAlbumCheckTable,"SELECT UniqueId,Name,SongCount,VolumeId FROM AbstractAlbum"); +_LIT(KAbstractAlbumCheckTable,"SELECT UniqueId,Uri,Name,AlbumArtist,SongCount,VolumeId FROM AbstractAlbum"); _LIT(KCriterionAbstractAlbumVolumeId, "VolumeId=%u"); -_LIT(KQueryAbstractAlbumInsert, "INSERT INTO :dbname.AbstractAlbum(UniqueId,Name,AlbumArtist,Genre,SongCount,VolumeId) VALUES(%u,'%S','%S','%S',%u,%u)"); +_LIT(KQueryAbstractAlbumInsert, "INSERT INTO :dbname.AbstractAlbum(UniqueId,Uri,Name,AlbumArtist,SongCount,VolumeId) VALUES(%u,'%S','%S','%S',%u,%u)"); _LIT(KQueryAbstractAlbumUpdate, "UPDATE :dbname.AbstractAlbum SET %S WHERE UniqueId=%u"); _LIT(KCriterionCategoryVolumeId, "SELECT VolumeId FROM :dbname.AbstractAlbum WHERE UniqueId=%u"); +_LIT(KQueryAbstractAlbumsWithNoSong, "SELECT * FROM :dbname.AbstractAlbum WHERE SongCount=0"); #endif // ABSTRACTAUDIOALBUM_INCLUDED #endif // MPXDBPLUGINQUERIES_H diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbabstractalbum.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbabstractalbum.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbabstractalbum.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -37,9 +37,6 @@ // CONSTANTS - - - // ============================ MEMBER FUNCTIONS ============================== // ---------------------------------------------------------------------------- @@ -48,11 +45,11 @@ // CMPXDbAbstractAlbum* CMPXDbAbstractAlbum::NewL( CMPXDbManager& aDbManager, - TMPXGeneralCategory aCategory) + TMPXGeneralCategory aCategory, RFs& aFs) { MPX_FUNC("CMPXDbAbstractAlbum::NewL"); - CMPXDbAbstractAlbum* self = CMPXDbAbstractAlbum::NewLC(aDbManager, aCategory); + CMPXDbAbstractAlbum* self = CMPXDbAbstractAlbum::NewLC(aDbManager, aCategory, aFs); CleanupStack::Pop(self); return self; } @@ -63,11 +60,11 @@ // CMPXDbAbstractAlbum* CMPXDbAbstractAlbum::NewLC( CMPXDbManager& aDbManager, - TMPXGeneralCategory aCategory) + TMPXGeneralCategory aCategory, RFs& aFs) { MPX_FUNC("CMPXDbAbstractAlbum::NewLC"); - CMPXDbAbstractAlbum* self = new (ELeave) CMPXDbAbstractAlbum(aDbManager, aCategory); + CMPXDbAbstractAlbum* self = new (ELeave) CMPXDbAbstractAlbum(aDbManager, aCategory, aFs); CleanupStack::PushL(self); self->ConstructL(); return self; @@ -103,9 +100,9 @@ // ---------------------------------------------------------------------------- // TUint32 CMPXDbAbstractAlbum::AddItemL( + const TDesC& aUri, const TDesC& aName, const TDesC& aAlbumArtist, - const TDesC& aGenre, TInt aDriveId, TBool& aNewRecord, TBool aCaseSensitive) @@ -113,19 +110,21 @@ MPX_FUNC("CMPXDbAbstractAlbum::AddItemL"); TUint32 rowId(MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), EMPXAbstractAlbum, - aName, aCaseSensitive)); - + aUri, aCaseSensitive)); + aNewRecord = !CategoryItemExistsL(aDriveId, rowId); + if ( aNewRecord ) { + HBufC* uri = MPXDbCommonUtil::ProcessSingleQuotesLC(aUri); HBufC* name = MPXDbCommonUtil::ProcessSingleQuotesLC(aName); HBufC* albumartist = MPXDbCommonUtil::ProcessSingleQuotesLC(aAlbumArtist); - HBufC* genre = MPXDbCommonUtil::ProcessSingleQuotesLC(aGenre); - - iDbManager.ExecuteQueryL(aDriveId, KQueryAbstractAlbumInsert, rowId, name, albumartist, genre, 0, MPXDbCommonUtil::GetVolIdMatchDriveIdL(iDbManager.Fs(), aDriveId)); - CleanupStack::PopAndDestroy(3, name); + + iDbManager.ExecuteQueryL(aDriveId, KQueryAbstractAlbumInsert, rowId, uri, name, albumartist, 0, MPXDbCommonUtil::GetVolIdMatchDriveIdL(iDbManager.Fs(), aDriveId)); + CleanupStack::PopAndDestroy(3, uri); } else { + MPX_DEBUG1("CMPXDbAbstractAlbum::AddItemL, increase song count for abstractalbum"); // increment the number of songs for the category HBufC* query = PreProcessStringLC(KQueryCategoryIncrementSongCount); iDbManager.ExecuteQueryL(aDriveId, *query, rowId); @@ -135,7 +134,36 @@ return rowId; } +// ---------------------------------------------------------------------------- +// CMPXDbAbstractAlbum::AddUpdatedItemL +// ---------------------------------------------------------------------------- +// +TUint32 CMPXDbAbstractAlbum::AddUpdatedItemL(TUint32 aOldId, const TDesC& newUri) + { + MPX_FUNC("CMPXDbAbstractAlbum::AddUpdatedItemL"); + iRenameTN = ETrue; + + //get the existing item based on aOldId + HBufC* query = NULL; + query = PreProcessStringLC(KQueryCategoryItem); + RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(*query, aOldId)); + CleanupStack::PopAndDestroy(query); + + CleanupClosePushL(recordset); + TBool newRecord(ETrue); + if (recordset.Next() != KSqlAtRow) + { + User::Leave(KErrNotFound); + } + //save the existing entry fields values for renaming purpose + const TDesC& name(MPXDbCommonUtil::GetColumnTextL (recordset, EAbstractAlbumName)); + const TDesC& albumartist(MPXDbCommonUtil::GetColumnTextL (recordset, EAbstractAlbumArtist)); + TUint32 itemId = AddItemL(newUri, name, albumartist, GetDriveIdL(aOldId), newRecord, EFalse); + CleanupStack::PopAndDestroy(&recordset); + + return itemId; + } // ---------------------------------------------------------------------------- // CMPXDbAbstractAlbum::DecrementSongsForCategoryL @@ -151,8 +179,7 @@ MPX_FUNC("CMPXDbAbstractAlbum::DecrementSongsForCategoryL"); TInt songCount = GetSongsCountL(aDriveId, aId); - // if just one song uses this category. Use <= just in case - //while MTP connection, just decrease songCount in DB, do not do deletion. + //while MTP connection, just decrease songCount in DB, do not do deletion. if ( songCount > 0 ) { aItemExist = ETrue; @@ -162,74 +189,91 @@ CleanupStack::PopAndDestroy(query); songCount--; } - - if ((songCount == 0) && !aMtpInUse) + if (songCount == 0) { - HBufC* uri = DeleteAbstractAlbumL(aId, aDriveId); - MPX_DEBUG1("CMPXDbAbstractAlbum::DeleteAbstractAlbumL,implicitly delete AbstractAlbum Object when it has 0 references"); - aItemExist = EFalse; - if (aItemChangedMessages) + //get uri + HBufC* uri = GetUriL(aId); + CleanupStack::PushL(uri); + + if (!aMtpInUse) + { + DeleteAbstractAlbumEntryL(aId, aDriveId); + MPX_DEBUG1("CMPXDbAbstractAlbum::DecrementSongsForCategoryL,implicitly delete AbstractAlbum Object when it has 0 references"); + aItemExist = EFalse; + if (aItemChangedMessages) + { + // add the item changed message + MPXDbCommonUtil::AddItemChangedMessageL(*aItemChangedMessages, aId, EMPXItemDeleted, + EMPXAbstractAlbum, KDBPluginUid); + } + //delete .alb file from file system + TInt err = BaflUtils::DeleteFile(iFs, *uri); + if(KErrNone != err) + { + MPX_DEBUG2("CMPXDbAbstractAlbum::DecrementSongsForCategoryL,File not deleted from file system with err=%d", err); + } + } + if(!iRenameTN) + { + HandleTNL(*uri); + } + CleanupStack::PopAndDestroy(uri); + } + } + +// ---------------------------------------------------------------------------- +// CMPXDbAbstractAlbum::RemoveAbstractAlbumL +// ---------------------------------------------------------------------------- +// +void CMPXDbAbstractAlbum::RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, + CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted) + { + MPX_FUNC("CMPXDbAbstractAlbum::RemoveAbstractAlbumL"); + HBufC* uri = GetUriL(aAbstractAlbumId); + CleanupStack::PushL(uri); + + DeleteAbstractAlbumEntryL(aAbstractAlbumId); + HandleTNL(*uri); + if (!aFileDeleted) + { + TInt err = BaflUtils::DeleteFile(iFs, *uri); + if(KErrNone != err) { - // add the item changed message - MPXDbCommonUtil::AddItemChangedMessageL(*aItemChangedMessages, aId, EMPXItemDeleted, - EMPXAbstractAlbum, KDBPluginUid); - } - delete uri; - } + MPX_DEBUG2("CMPXDbAbstractAlbum::RemoveAbstractAlbumL,File not deleted from file system with err=%d", err); + } + } + MPXDbCommonUtil::AddItemChangedMessageL(aItemChangedMessages, aAbstractAlbumId, EMPXItemDeleted, EMPXAbstractAlbum, KDBPluginUid); + CleanupStack::PopAndDestroy(uri); } // ---------------------------------------------------------------------------- -// CMPXDbAbstractAlbum::DeleteAbstractAlbumL +// CMPXDbAbstractAlbum::HandleTNL // ---------------------------------------------------------------------------- // -HBufC* CMPXDbAbstractAlbum::DeleteAbstractAlbumL( - TUint32 aAbstractAlbumId, TInt aDriveId) - { - MPX_FUNC("CMPXDbAbstractAlbum::DeleteAbstractAlbumL"); +void CMPXDbAbstractAlbum::HandleTNL( const TDesC& aOldPath, + const TDesC& aNewPath, TInt aPriority ) + { + MPX_FUNC("CMPXDbAbstractAlbum::HandleTNL"); - //before delete category, get the abstract album path - HBufC* uri = GetNameL(aAbstractAlbumId); - // delete the category - if (uri) - { - CleanupStack::PushL(uri); - - if (aDriveId) - DeleteCategoryL(aAbstractAlbumId, aDriveId); - else - { - TInt drive = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), - ExecuteIntQueryL(KCriterionCategoryVolumeId, aAbstractAlbumId)); - DeleteCategoryL(aAbstractAlbumId, drive); - } -//delete abstract album .alb from TN table -#ifdef RD_MPX_TNM_INTEGRATION - // remove from thumbnail database table - CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( - *uri, KImageFileType ); - iTNManager->DeleteThumbnails( *source ); - CleanupStack::PopAndDestroy( source ); -#endif //RD_MPX_TNM_INTEGRATION - - - //delete abstract album .alb file from file system - RFs rFs; - User::LeaveIfError( rFs.Connect() ); - CleanupClosePushL( rFs ); - - TInt err = BaflUtils::DeleteFile(rFs, *uri); - if(KErrNone != err) - { - MPX_DEBUG2("CMPXDbAbstractAlbum::DeleteAbstractAlbumL,File not deleted from file system with err=%d", err); - } - - CleanupStack::PopAndDestroy( &rFs ); - } - - CleanupStack::Pop(uri); - return uri; - } + if (aNewPath.Compare(KNullDesC)==0 && aOldPath.Compare(KNullDesC)!=0) + { + // remove from thumbnail database table + MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, delete TN"); + CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( + aOldPath, KImageFileType ); + iTNManager->DeleteThumbnails( *source ); + CleanupStack::PopAndDestroy( source ); + } + else if (aNewPath.Compare(KNullDesC)!=0) + { + //rename thumbnail + MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, rename TN"); + iTNManager->RenameThumbnailsL( aOldPath, aNewPath, aPriority ); + //after rename, reset flag + iRenameTN = EFalse; + } + } // ---------------------------------------------------------------------------- @@ -262,12 +306,34 @@ MPXDbCommonUtil::AddItemAlbumChangedMessageL(*aItemChangedMessages, aId, EMPXItemModified, EMPXAbstractAlbum, KDBPluginUid, ETrue, 0 ); } - CleanupStack::PopAndDestroy(setStr); CleanupStack::PopAndDestroy(values); CleanupStack::PopAndDestroy(fields); } + +// ---------------------------------------------------------------------------- +// CMPXDbAbstractAlbum::GetUriL +// ---------------------------------------------------------------------------- +// +HBufC* CMPXDbAbstractAlbum::GetUriL( + TUint32 aId) + { + MPX_FUNC("CMPXDbAbstractAlbum::GetUriL"); + + RSqlStatement recordset(GetCategoryRecordL(aId)); + CleanupClosePushL(recordset); + + if (recordset.Next() != KSqlAtRow) + { + User::LeaveIfError(KErrNotFound); + } + HBufC* uri = MPXDbCommonUtil::GetColumnTextL(recordset, EAbstractAlbumUri).AllocL(); + CleanupStack::PopAndDestroy(&recordset); + return uri; + } + + // ---------------------------------------------------------------------------- // CMPXDbAbstractAlbum::UpdateMediaL // ---------------------------------------------------------------------------- @@ -277,41 +343,41 @@ const TArray& aAttrs, CMPXMedia& aMedia) { - MPX_FUNC("CMPXDbAbstractAlbum::UpdateMediaL"); + MPX_FUNC("CMPXDbAbstractAlbum::UpdateMediaL"); - TInt count(aAttrs.Count()); - for (TInt i = 0; i < count; ++i) - { - TInt contentId(aAttrs[i].ContentId()); - TUint attributeId(aAttrs[i].AttributeId()); + TInt count(aAttrs.Count()); + for (TInt i = 0; i < count; ++i) + { + TInt contentId(aAttrs[i].ContentId()); + TUint attributeId(aAttrs[i].AttributeId()); if (contentId == KMPXMediaIdGeneral) { if (attributeId & EMPXMediaGeneralId) { + MPX_DEBUG1(" EMPXMediaGeneralId"); aMedia.SetTObjectValueL(KMPXMediaGeneralId, aRecord.ColumnInt64(EAbstractAlbumUniqueId)); } if (attributeId & EMPXMediaGeneralTitle) { + MPX_DEBUG1(" EMPXMediaGeneralTitle"); TPtrC title(MPXDbCommonUtil::GetColumnTextL(aRecord, EAbstractAlbumName)); aMedia.SetTextValueL(KMPXMediaGeneralTitle, title); MPX_DEBUG2(" AbstractAlbumName[%S]", &title); - } + } if (attributeId & EMPXMediaGeneralCount) { + MPX_DEBUG1(" EMPXMediaGeneralCount"); TInt songCount = GetSongsCountL(KDbManagerAllDrives, aRecord.ColumnInt64(EAbstractAlbumUniqueId)); aMedia.SetTObjectValueL(KMPXMediaGeneralCount, songCount ); } - if (attributeId & EMPXMediaGeneralDrive) - { + if (attributeId & EMPXMediaGeneralDrive || + (attributeId & EMPXMediaGeneralUri)) + { TUint32 volId(aRecord.ColumnInt64(EAbstractAlbumVolumeId)); TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId); - - // LTAN-7GH6BZ, crash if eject memory card when adding song to existing AbstractAlbum - // due to special timing issue, it is possible drive number is -1 and create a - // panic when use for TDriveUnit MPX_DEBUG3("volId = %d, driveId = %d", volId, driveId); // handle possibly delay from framework notification @@ -321,63 +387,100 @@ User::Leave(KErrNotReady); } TDriveUnit driveUnit(driveId); - - aMedia.SetTextValueL(KMPXMediaGeneralDrive, driveUnit.Name()); + if (attributeId & EMPXMediaGeneralUri) + { + TPtrC uri(MPXDbCommonUtil::GetColumnTextL(aRecord, EAbstractAlbumUri)); + aMedia.SetTextValueL(KMPXMediaGeneralUri, uri); + MPX_DEBUG2(" AbstractAlbum URI[%S]", &uri); + } + if (attributeId & EMPXMediaGeneralDrive) + { + aMedia.SetTextValueL(KMPXMediaGeneralDrive, driveUnit.Name()); + } + } + } // end if contentId == KMPXMediaIdGeneral - } - } // end if contentId == KMPXMediaIdGeneral else if ( contentId == KMPXMediaIdMusic) { if (attributeId & EMPXMediaMusicAlbumArtist) - { + { + MPX_DEBUG1(" EMPXMediaMusicAlbumArtist"); TPtrC albumartist(MPXDbCommonUtil::GetColumnTextL(aRecord, EAbstractAlbumArtist)); aMedia.SetTextValueL(KMPXMediaMusicAlbumArtist, albumartist); - - - MPX_DEBUG2(" albumartist[%S]", &albumartist); - } - if (attributeId & EMPXMediaMusicGenre) - { - TPtrC genre(MPXDbCommonUtil::GetColumnTextL(aRecord, EAbstractAlbumGenre)); - aMedia.SetTextValueL(KMPXMediaMusicGenre, genre); - MPX_DEBUG2(" Genre[%S]", &genre); } } - + } // end for aMedia.SetTObjectValueL(KMPXMediaGeneralType, EMPXItem); aMedia.SetTObjectValueL(KMPXMediaGeneralCategory, EMPXAbstractAlbum); } +// ---------------------------------------------------------------------------- +// CMPXDbAbstractAlbum::GetAllItemsWithNoSongL +// ---------------------------------------------------------------------------- +// +void CMPXDbAbstractAlbum::GetAllItemsWithNoSongL(RArray& aItemsIds) + { + MPX_FUNC("CMPXDbAbstractAlbum::GetAllItemsWithNoSongL"); + RSqlStatement recordset(iDbManager.ExecuteSelectQueryL(KQueryAbstractAlbumsWithNoSong)); + CleanupClosePushL(recordset); + + TInt err(KErrNone); + while ((err = recordset.Next()) == KSqlAtRow) + { + TUint32 uniqueID(recordset.ColumnInt64(EAbstractAlbumUniqueId)); + aItemsIds.AppendL(uniqueID); + } + CleanupStack::PopAndDestroy(&recordset); + if (err!= KSqlAtEnd) + { + User::Leave(KErrCorrupt); + } + } + // ---------------------------------------------------------------------------- -// CMPXDbAbstractAlbum::GenerateAlbumFieldsValuesL +// CMPXDbAbstractAlbum::GenerateAbstractAlbumFieldsValuesL // ---------------------------------------------------------------------------- // void CMPXDbAbstractAlbum::GenerateAbstractAlbumFieldsValuesL(const CMPXMedia& aMedia, CDesCArray& aFields, CDesCArray& aValues) { MPX_FUNC("CMPXDbAbstractAlbum::GenerateAbstractAlbumFieldsValuesL"); -//support Winlogo use case - if (aMedia.IsSupported(KMPXMediaGeneralTitle)) + //support Winlogo use case + if (aMedia.IsSupported(KMPXMediaGeneralTitle)) { TPtrC truncatedName(aMedia.ValueText(KMPXMediaGeneralTitle).Left(KMCMaxTextLen)); MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCCategoryName, truncatedName); } -//support Winlogo use case - if (aMedia.IsSupported(KMPXMediaMusicAlbumArtist)) + //support Winlogo use case + if (aMedia.IsSupported(KMPXMediaMusicAlbumArtist)) { TPtrC truncatedAlbumArtist(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicAlbumArtist, truncatedAlbumArtist); } - if (aMedia.IsSupported(KMPXMediaMusicGenre)) + } + +// ---------------------------------------------------------------------------- +// CMPXDbAbstractAlbum::DeleteAbstractAlbumEntryL +// ---------------------------------------------------------------------------- +// +void CMPXDbAbstractAlbum::DeleteAbstractAlbumEntryL( + TUint32 aAbstractAlbumId, TInt aDriveId) + { + MPX_FUNC("CMPXDbAbstractAlbum::DeleteAbstractAlbumEntryL"); + + //delete entry from table + if (aDriveId) + DeleteCategoryL(aAbstractAlbumId, aDriveId); + else { - TPtrC truncatedGenre(aMedia.ValueText(KMPXMediaMusicGenre).Left(KMCMaxTextLen)); - MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicGenre, truncatedGenre); + TInt drive = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), + ExecuteIntQueryL(KCriterionCategoryVolumeId, aAbstractAlbumId)); + DeleteCategoryL(aAbstractAlbumId, drive); } } - // ---------------------------------------------------------------------------- // CMPXDbAlbum::CreateTableL // ---------------------------------------------------------------------------- @@ -420,8 +523,9 @@ // CMPXDbAbstractAlbum::CMPXDbAbstractAlbum( CMPXDbManager& aDbManager, - TMPXGeneralCategory aCategory) : - CMPXDbCategory(aDbManager, aCategory) + TMPXGeneralCategory aCategory, RFs& aFs) : + CMPXDbCategory(aDbManager, aCategory), + iFs(aFs) { MPX_FUNC("CMPXDbAbstractAlbum::CMPXDbAbstractAlbum"); } @@ -438,26 +542,27 @@ #ifdef RD_MPX_TNM_INTEGRATION // Create Thumbnail Manager instance. This object is the observer. iTNManager = CThumbnailManager::NewL( *this ); + iRenameTN = EFalse; #endif //RD_MPX_TNM_INTEGRATION } // --------------------------------------------------------------------------- -// CMPXDbAbstractAlbum::ThumbnailReady +// CMPXDbAbstractAlbum::ThumbnailReady // Callback but not used here // --------------------------------------------------------------------------- -void CMPXDbAbstractAlbum::ThumbnailPreviewReady( +void CMPXDbAbstractAlbum::ThumbnailPreviewReady( MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ ) { } - + // --------------------------------------------------------------------------- // CMPXDbAbstractAlbum::ThumbnailReady // Callback but not used here // --------------------------------------------------------------------------- -void CMPXDbAbstractAlbum::ThumbnailReady( TInt /*aError*/, +void CMPXDbAbstractAlbum::ThumbnailReady( TInt /*aError*/, MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ ) { } diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbcategory.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbcategory.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbcategory.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -212,14 +212,19 @@ #endif //RD_MPX_COLLECTION_CACHE } #ifdef ABSTRACTAUDIOALBUM_INCLUDED - else if (criterion == KMPXMediaGeneralUri) - { - TUint32 itemId(MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), iCategory, - aCriteria.ValueText(KMPXMediaGeneralUri), (iCategory != EMPXGenre))); - HBufC* critStr = PreProcessStringLC(KCriterionCategoryUniqueId); - MPXDbCommonUtil::AddSqlCriterionL(*criteriaArray, *critStr, itemId); - CleanupStack::PopAndDestroy(critStr); - } + else if (criterion == KMPXMediaGeneralUri) + { + //only Genre and AbstractAlbum are not case sensitive + TBool caseSensitive = ETrue; + if ((iCategory == EMPXGenre) || (iCategory == EMPXAbstractAlbum)) + caseSensitive = EFalse; + + TUint32 itemId(MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), iCategory, + aCriteria.ValueText(KMPXMediaGeneralUri), caseSensitive)); + HBufC* critStr = PreProcessStringLC(KCriterionCategoryUniqueId); + MPXDbCommonUtil::AddSqlCriterionL(*criteriaArray, *critStr, itemId); + CleanupStack::PopAndDestroy(critStr); + } else if (criterion == KMPXMediaGeneralDrive) { const TDesC& drive(aCriteria.ValueText(KMPXMediaGeneralDrive)); @@ -257,8 +262,12 @@ const TUint32 aId, TInt aDriveId, CMPXMessageArray* aItemChangedMessages, - TBool& aItemExist, - TBool /*aMTPInUse*/) + TBool& aItemExist +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + , + TBool /*aMTPInUse*/ +#endif //ABSTRACTAUDIOALBUM_INCLUDED +) { MPX_FUNC("CMPXDbCategory::DecrementSongsForCategoryL"); diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -178,9 +178,9 @@ iDbAlbum = CMPXDbAlbum::NewL(*iDbManager, EMPXAlbum, *this); iDbGenre = CMPXDbGenre::NewL(*iDbManager, EMPXGenre); iDbComposer = CMPXDbComposer::NewL(*iDbManager, EMPXComposer); -#ifdef ABSTRACTAUDIOALBUM_INCLUDED - iDbAbstractAlbum = CMPXDbAbstractAlbum::NewL(*iDbManager, EMPXAbstractAlbum); -#endif // ABSTRACTAUDIOALBUM_INCLUDED +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + iDbAbstractAlbum = CMPXDbAbstractAlbum::NewL(*iDbManager, EMPXAbstractAlbum, iFs); +#endif // ABSTRACTAUDIOALBUM_INCLUDED iAutoPlaylist = CMPXDbAutoPlaylist::NewL(*iDbManager, iFs, iResource); iDbAuxiliary = CMPXDbAuxiliary::NewL(*iDbManager); @@ -315,24 +315,22 @@ MPX_FUNC("CMPXDbHandler::AddAbstractAlbumL"); BeginTransactionL(); - // TUint32 abstractAlbumId(0); TBool newRecord(EFalse); TInt err(KErrNone); TDriveUnit drive(aMedia.ValueText(KMPXMediaGeneralUri)); - TPtrC name(aMedia.ValueText(KMPXMediaGeneralUri).Left(KMCMaxTextLen)); + TPtrC uri(aMedia.ValueText(KMPXMediaGeneralUri).Left(KMCMaxTextLen)); + TPtrC name(aMedia.ValueText(KMPXMediaGeneralTitle).Left(KMCMaxTextLen)); TPtrC albumartist(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); - TPtrC genre(aMedia.ValueText(KMPXMediaMusicGenre).Left(KMCMaxTextLen)); - - //only insert to AbstractAlbum table when it is new item - TUint32 abstractAlbumId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, name, (EMPXAbstractAlbum!=EMPXGenre))); - + + //only insert to AbstractAlbum table when it is new item + TUint32 abstractAlbumId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, uri, EFalse)); + newRecord = !iDbAbstractAlbum->CategoryItemExistsL(drive, abstractAlbumId); - - - if (newRecord) + + if (newRecord) { - MPX_TRAP(err, abstractAlbumId = iDbAbstractAlbum->AddItemL( name, albumartist, genre, drive, newRecord, (EMPXAbstractAlbum != EMPXGenre))); + MPX_TRAP(err, abstractAlbumId = iDbAbstractAlbum->AddItemL(uri, name, albumartist, drive, newRecord, EFalse)); if (iOutOfDisk && (err == KErrNotFound)) { err = KErrDiskFull; @@ -345,57 +343,134 @@ } EndTransactionL(err); - return abstractAlbumId; + return abstractAlbumId; } // ---------------------------------------------------------------------------- -// Update all songs which associate with AbstractAlbum in the collection +// Update abstractalbum info to AbstractAlbum table and all songs which associate +// with AbstractAlbum in the collection // ---------------------------------------------------------------------------- // -CMPXDbActiveTask::TChangeVisibility CMPXDbHandler::UpdateAbstractAlbumSongsL( +CMPXDbActiveTask::TChangeVisibility CMPXDbHandler::UpdateAbstractAlbumL( const CMPXMedia& aMedia, CMPXMessageArray& aItemChangedMessages) { - MPX_FUNC("CMPXDbHandler::UpdateAbstractAlbumSongsL"); + MPX_FUNC("CMPXDbHandler::UpdateAbstractAlbumL"); CMPXDbActiveTask::TChangeVisibility visibleChange(CMPXDbActiveTask::ENotVisibile); - + TUint32 itemId(0); if (aMedia.IsSupported(KMPXMediaGeneralUri)) { - const TDesC& art(aMedia.ValueText (KMPXMediaGeneralUri)); - - TBool existRecord(EFalse); + const TDesC& uri(aMedia.ValueText (KMPXMediaGeneralUri)); TDriveUnit drive(aMedia.ValueText(KMPXMediaGeneralUri)); - TUint32 rowId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, art, (EMPXAbstractAlbum != EMPXGenre))); - //check if abstractAlbum in ABSTRACTALBUM table before update songs - existRecord = iDbAbstractAlbum->CategoryItemExistsL(drive, rowId); - - //update songs associated with abstractalbum only when abstractalbum associated already - //in the AbstractAlbum table - if (existRecord) - { - if (aMedia.IsSupported(KMPXMediaArrayContents)) + + //get Id based on new uri + itemId = MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, uri, EFalse); + if (!itemId) + { + User::Leave(KErrNotSupported); + } + + //if updating to new item, need do renaming for AbstractAlbum: delete old one and insert a new entry to AbstractAlbum table + //if a new item, need update songs associated and renaming albstractalbum table + if (aMedia.IsSupported(KMPXMediaGeneralId)) + { + MPX_DEBUG1("CMPXDbHandler::UpdateAbstractAlbumL, rename case"); + + BeginTransactionL(); + //get old id, for renaming + TInt err(KErrNone); + TUint32 oldId = (aMedia.ValueTObjectL(KMPXMediaGeneralId)).iId2; + if (oldId && (oldId != itemId) ) //pass the old UID for renaming, do not care if new itemId exist or not { - - CMPXMediaArray* mediaArray = aMedia.Value(KMPXMediaArrayContents); - User::LeaveIfNull(mediaArray); + //get old Uri based on old Id + HBufC* oldUri = iDbAbstractAlbum->GetUriL(oldId); + CleanupStack::PushL(oldUri); + + //add and update new item to AbstractAlbum table + //old existing item field values need to be saved and added when adding new item + MPX_TRAP(err, itemId = iDbAbstractAlbum->AddUpdatedItemL(oldId, uri )); + + if (iOutOfDisk && (err == KErrNotFound)) + { + err = KErrDiskFull; + } + + MPXDbCommonUtil::AddItemChangedMessageL(aItemChangedMessages, itemId, EMPXItemInserted, + EMPXAbstractAlbum, KDBPluginUid); + + //find and update all songs associated with oldId + RArray songAttributes; + CleanupClosePushL(songAttributes); + songAttributes.AppendL(KMPXMediaGeneralId); + + CMPXMediaArray* mediaArray = CMPXMediaArray::NewL(); + CleanupStack::PushL(mediaArray); + + //get all songs associated + MPX_TRAP(err, iDbMusic->GetAllSongsForAbstractAlbumL(oldId, songAttributes.Array(), *mediaArray)); + if (err == KErrNotFound) + { + // Leave with KErrNotFound + MPX_DEBUG1("CMPXDbHandler::UpdateAbstractAlbumL, leave with not found"); + User::Leave(KErrNotFound); + } + TInt count(mediaArray->Count()); + MPX_DEBUG2("CMPXDbHandler::UpdateAbstractAlbumL, [%d] songs associated", count); + //go through all songs for updating for (TInt i = 0; i < count; i++) { - CMPXMedia* element = mediaArray->AtL(i); - element->SetTextValueL(KMPXMediaMusicAlbumArtFileName, art ); - visibleChange = UpdateSongL(*element, aItemChangedMessages); + CMPXMedia* song = mediaArray->AtL(i); + song->SetTextValueL(KMPXMediaMusicAlbumArtFileName, uri ); + visibleChange = UpdateSongL(*song, aItemChangedMessages); } - } - else - { - iDbAbstractAlbum->UpdateItemL(rowId, aMedia, drive, &aItemChangedMessages); + CleanupStack::PopAndDestroy(mediaArray); + CleanupStack::PopAndDestroy(&songAttributes); + + //rename TN + iDbAbstractAlbum->HandleTNL(*oldUri, uri, 0); + CleanupStack::PopAndDestroy(oldUri); } - } + EndTransactionL(err); + }//renaming + + //check if abstractAlbum exist in ABSTRACTALBUM table before update it + else if (iDbAbstractAlbum->CategoryItemExistsL(drive, itemId)) + { + //support updating Name, AlbumArtist fields for AbstractAlbum table + iDbAbstractAlbum->UpdateItemL(itemId, aMedia, drive, &aItemChangedMessages); + } } return visibleChange; -} + } + +// ---------------------------------------------------------------------------- +// Update all songs which associate with AbstractAlbum to new AbstractAlbum info +// in the collection +// ---------------------------------------------------------------------------- +// +CMPXDbActiveTask::TChangeVisibility CMPXDbHandler::UpdateSongsAbstractAlbumInfoL( + const CMPXMedia& aMedia, + CMPXMessageArray& aItemChangedMessages) + { + MPX_FUNC("CMPXDbHandler::UpdateSongsAbstractAlbumInfoL"); + const TDesC& uri(aMedia.ValueText (KMPXMediaGeneralUri)); + //need to update songs information to music table + CMPXMediaArray* mediaArray = aMedia.Value(KMPXMediaArrayContents); + User::LeaveIfNull(mediaArray); + TInt count(mediaArray->Count()); + CMPXDbActiveTask::TChangeVisibility visibleChange(CMPXDbActiveTask::ENotVisibile); + for (TInt i = 0; i < count; i++) + { + CMPXMedia* mediaSong = mediaArray->AtL(i); + mediaSong->SetTextValueL(KMPXMediaMusicAlbumArtFileName, uri ); + visibleChange = UpdateSongL(*mediaSong, aItemChangedMessages); + } + return visibleChange; + } #endif // ABSTRACTAUDIOALBUM_INCLUDED + // ---------------------------------------------------------------------------- // Update a song in the collection // ---------------------------------------------------------------------------- @@ -589,40 +664,10 @@ // void CMPXDbHandler::RemoveAbstractAlbumL( TUint32 aAbstractAlbumId, - CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages) + CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted) { MPX_FUNC("CMPXDbHandler::RemoveAbstractAlbumL"); - - BeginTransactionL(); - MPX_TRAPD(err, DoRemoveAbstractAlbumL(aAbstractAlbumId, aUriArray, aItemChangedMessages)); - EndTransactionL(err); - } - -// ---------------------------------------------------------------------------- -// Remove specified abstractalbum -// ---------------------------------------------------------------------------- -// -void CMPXDbHandler::DoRemoveAbstractAlbumL( - TUint32 aAbstractAlbumId, - CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages) - { - MPX_FUNC("CMPXDbHandler::DoRemoveAbstractAlbumL"); - - - HBufC* uri(iDbAbstractAlbum->DeleteAbstractAlbumL(aAbstractAlbumId)); - if (uri) - { - CleanupStack::PushL(uri); - aUriArray.AppendL(*uri); - CleanupStack::PopAndDestroy(uri); - } - - MPXDbCommonUtil::AddItemChangedMessageL(aItemChangedMessages, aAbstractAlbumId, EMPXItemDeleted, - EMPXAbstractAlbum, KDBPluginUid); - - + iDbAbstractAlbum->RemoveAbstractAlbumL(aAbstractAlbumId, aItemChangedMessages, aFileDeleted); } #endif // ABSTRACTAUDIOALBUM_INCLUDED @@ -889,7 +934,7 @@ const TDesC& aUri) { MPX_FUNC("CMPXDbHandler::GetAbstractAlbumIdMatchingUriL"); - return MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, aUri, ETrue); + return MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, aUri, EFalse); } #endif // ABSTRACTAUDIOALBUM_INCLUDED @@ -1501,7 +1546,6 @@ iOutOfDisk = ETrue; } } - #ifdef __RAMDISK_PERF_ENABLE iDbManager->CopyDBsToRamL(); #endif //__RAMDISK_PERF_ENABLE @@ -1527,6 +1571,13 @@ curTime.HomeTime(); SetLastRefreshedTimeL(curTime); } + +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + //for AbstractAlbum garbage collection + //can not leave + TRAP_IGNORE( AbstractAlbumCleanUpL() ); +#endif + #ifdef __RAMDISK_PERF_ENABLE iDbManager->CopyDBsFromRamL(); #endif //__RAMDISK_PERF_ENABLE @@ -1567,15 +1618,24 @@ iMtpInUse = EFalse; iOpOnDbCount = 0; iDbManager->CommitL(); + TInt err = KErrNone; + #ifdef __RAMDISK_PERF_ENABLE - TRAPD(err, iDbManager->CopyDBsFromRamL()); + TRAP(err, iDbManager->CopyDBsFromRamL()); if ( err != KErrNone ) { MPX_DEBUG2("CMPXDbHandler::MtpEndL error=%d", err); } #endif //__RAMDISK_PERF_ENABLE - + +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + TRAP(err, RemoveAbstractAlbumsWithNoSongL()); + if ( err != KErrNone ) + { + MPX_DEBUG2("CMPXDbHandler::MtpEndL error happened when cleanup albstractalbum with no songs association[%d]", err); + } +#endif MPX_DEBUG1("<--CMPXDbHandler::MtpEndL"); } @@ -2302,6 +2362,84 @@ MPXDbCommonUtil::AddItemChangedMessageL(aItemChangedMessages, aSongId, EMPXItemDeleted, EMPXSong, KDBPluginUid); } + +#ifdef ABSTRACTAUDIOALBUM_INCLUDED +// ---------------------------------------------------------------------------- +// Remove abstractalbums which have no songs associated. +// ---------------------------------------------------------------------------- +// +void CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL() + { + MPX_FUNC("CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL"); + + BeginTransactionL(); + RArray iItemsIds; + CleanupClosePushL(iItemsIds); + //get all abstractalbum with no songs associated. + iDbAbstractAlbum->GetAllItemsWithNoSongL(iItemsIds); + TInt count = iItemsIds.Count(); + TInt err = KErrNone; + if (count) + { + MPX_DEBUG2("CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL, abstractalbum count[%d] ", iItemsIds.Count()); + CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); + CleanupStack::PushL(itemChangedMessages); + + //go through each one to delete + for (TInt i=0; i< count; i++) + { + TRAP(err, RemoveAbstractAlbumL(iItemsIds[i], *itemChangedMessages, EFalse)); + if (err != KErrNone) + { + MPX_DEBUG2("CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL, error happens when delete abstractalbum, err ", err); + } + } + CleanupStack::PopAndDestroy(itemChangedMessages); + } + CleanupStack::PopAndDestroy(&iItemsIds); + EndTransactionL(err); + } + +// ---------------------------------------------------------------------------- +// Remove .alb entry from AbstractAlnum table, TN table if .alb files deleted +// from file manager when refresh library +// ---------------------------------------------------------------------------- +// +void CMPXDbHandler::AbstractAlbumCleanUpL() + { + MPX_FUNC("CMPXDbHandler::AbstractAlbumCleanUpL"); + RArray attributes; + CleanupClosePushL(attributes); + attributes.AppendL(KMPXMediaGeneralUri); + CMPXMediaArray* mediaArray = CMPXMediaArray::NewL(); + CleanupStack::PushL(mediaArray); + + iDbAbstractAlbum->GetAllCategoryItemsL(attributes.Array(), *mediaArray); + + TInt count(mediaArray->Count()); + if (count) + { + CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); + CleanupStack::PushL(itemChangedMessages); + for (TInt i = 0; i < count; i++) + { + CMPXMedia* element = mediaArray->AtL(i); + const TDesC& uri = element->ValueText(KMPXMediaGeneralUri); + + //check if the file exists in file system + if (!(BaflUtils::FileExists(iFs, uri))) + { + //generate abstractalbum UID with the Uri + TUint32 abstractAlbumId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, uri, EFalse)); + RemoveAbstractAlbumL(abstractAlbumId, *itemChangedMessages, ETrue); + } + } + CleanupStack::PopAndDestroy(itemChangedMessages); + } + CleanupStack::PopAndDestroy(mediaArray); + CleanupStack::PopAndDestroy(&attributes); + } +#endif //ABSTRACTAUDIOALBUM_INCLUDED // ---------------------------------------------------------------------------- // CMPXDbHandler::DoCleanupDeletedRecordsL @@ -2425,8 +2563,7 @@ TInt attrCount(aAttrs.Count()); if ( attrCount > 1 || (attrCount == 1 && !(aAttrs[0] == KMPXMediaGeneralId)) ) { - TInt abstractAlbumDrive(iDbAbstractAlbum->GetDriveIdL(abstractAlbumId)); - MPX_TRAPD(err, iDbMusic->GetAllSongsForAbstractAlbumL(abstractAlbumDrive, abstractAlbumId, aAttrs, aMediaArray)); + MPX_TRAPD(err, iDbMusic->GetAllSongsForAbstractAlbumL( abstractAlbumId, aAttrs, aMediaArray)); if (err == KErrNotFound) { // @@ -2987,9 +3124,9 @@ TInt aDriveId, CMPXMessageArray* aItemChangedMessages, TBool& aItemExist -#ifdef ABSTRACTAUDIOALBUM_INCLUDED - ,const TDesC& aAlbumArtist, - const TDesC& aGenre +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + ,const TDesC& aUri + ,const TDesC& aAlbumArtist #endif // ABSTRACTAUDIOALBUM_INCLUDED ) { @@ -2998,21 +3135,28 @@ MPX_PERF_START(CMPXDbHandler_AddCategoryItemL); TBool newRecord(EFalse); -#ifdef ABSTRACTAUDIOALBUM_INCLUDED - TUint32 id(0); +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + TUint32 id(0); //for AbstractAlbum, SetAbstractAlbum, associate songs with abstractalbum. //only called with newRecord as EFalse //increment songCount if id exist in AbstractAlbum table, otherwise do nothing. + + //only Genre, AbstractAlbum are not case sensitive + TBool caseSensitive = ETrue; + if ((aCategory == EMPXGenre) || (aCategory == EMPXAbstractAlbum)) + caseSensitive = EFalse; + if (aCategory == EMPXAbstractAlbum) - { - id = iDbAbstractAlbum->AddItemL( aName, aAlbumArtist, aGenre, aDriveId, newRecord, (aCategory != EMPXGenre)); - } + { + id = iDbAbstractAlbum->AddItemL(aUri, aName, aAlbumArtist, aDriveId, newRecord, caseSensitive); + } else { - id = DbCategoryL(aCategory)->AddItemL(aName, aDriveId, newRecord, (aCategory != EMPXGenre)); -#else + id = DbCategoryL(aCategory)->AddItemL(aName, aDriveId, newRecord, caseSensitive); +#else TUint32 id(DbCategoryL(aCategory)->AddItemL(aName, aDriveId, newRecord, (aCategory != EMPXGenre))); #endif // ABSTRACTAUDIOALBUM_INCLUDED + if (newRecord && aItemChangedMessages) { MPXDbCommonUtil::AddItemChangedMessageL(*aItemChangedMessages, id, EMPXItemInserted, @@ -3022,7 +3166,7 @@ // and it is NOT a new record, // we should send the item number changed message else if ( ( aCategory == EMPXGenre || aCategory == EMPXComposer ) && - !newRecord && aItemChangedMessages ) + !newRecord && aItemChangedMessages ) { MPXDbCommonUtil::AddItemChangedMessageL(*aItemChangedMessages, id, EMPXItemModified, aCategory, KDBPluginUid); @@ -3032,7 +3176,6 @@ } #endif // ABSTRACTAUDIOALBUM_INCLUDED MPX_PERF_END(CMPXDbHandler_AddCategoryItemL); - return id; } @@ -3220,10 +3363,10 @@ // ---------------------------------------------------------------------------------------------------------- // CMPXDbHandler::HandleGetAlbumNameForSongL // ---------------------------------------------------------------------------------------------------------- -// +// HBufC* CMPXDbHandler::HandleGetAlbumNameFromIdL(TUint32 aId) { - return iDbAbstractAlbum->GetNameL(aId); + return iDbAbstractAlbum->GetUriL(aId); } #endif // ABSTRACTAUDIOALBUM_INCLUDED // End of file diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbmusic.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbmusic.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbmusic.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -112,7 +112,7 @@ iObserver(aObserver) #ifdef ABSTRACTAUDIOALBUM_INCLUDED ,iArtNeedUpdated(ETrue) -#endif +#endif { MPX_FUNC("CMPXDbMusic::CMPXDbMusic"); } @@ -260,19 +260,19 @@ if(iArtNeedUpdated) { #endif // ABSTRACTAUDIOALBUM_INCLUDED - // Update Album table - if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) || aMedia.IsSupported(KMPXMediaMusicArtist)) - { - TUint32 albumId = recordset.ColumnInt64(EMusicAlbum); - iObserver.UpdateCategoryItemL(EMPXAlbum, albumId, aMedia, driveUnit, aItemChangedMessages); - } + // Update Album table + if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) || aMedia.IsSupported(KMPXMediaMusicArtist)) + { + TUint32 albumId = recordset.ColumnInt64(EMusicAlbum); + iObserver.UpdateCategoryItemL(EMPXAlbum, albumId, aMedia, driveUnit, aItemChangedMessages); + } - // Update Artist table - if ( aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) ) - { - TUint32 artistId = recordset.ColumnInt64(EMusicArtist); - iObserver.UpdateCategoryItemL(EMPXArtist, artistId, aMedia, driveUnit, aItemChangedMessages); - } + // Update Artist table + if ( aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) ) + { + TUint32 artistId = recordset.ColumnInt64(EMusicArtist); + iObserver.UpdateCategoryItemL(EMPXArtist, artistId, aMedia, driveUnit, aItemChangedMessages); + } #ifdef ABSTRACTAUDIOALBUM_INCLUDED } iArtNeedUpdated = ETrue; //reset flag @@ -822,13 +822,12 @@ // ---------------------------------------------------------------------------- // void CMPXDbMusic::GetAllSongsForAbstractAlbumL( - TInt aDrive, - TInt aAbstractAlbumId, + TUint aAbstractAlbumId, const TArray& aAttrs, CMPXMediaArray& aMediaArray) { - MPX_FUNC("CMPXDbMusic::GetAllSongsL"); - ExecuteMediaQueryL(aDrive, aAttrs, aMediaArray, KQueryMusicGetSongsForAbstractAlbum(), aAbstractAlbumId); + MPX_FUNC("CMPXDbMusic::GetAllSongsForAbstractAlbumL"); + ExecuteMediaQueryL(aAttrs, aMediaArray, KQueryMusicGetSongsForAbstractAlbum(), aAbstractAlbumId); } #endif // ABSTRACTAUDIOALBUM_INCLUDED @@ -1866,12 +1865,12 @@ #ifdef ABSTRACTAUDIOALBUM_INCLUDED TParsePtrC parse(albumArtFilename); TPtrC ext(parse.Ext()); - //set flag to false, so .alb will not overwrite art field in album, artist table - // when song with embedded art - if ((ext.CompareF(KAbstractAlbumExt)== 0) && containEmbeddedArt) - { - iArtNeedUpdated = EFalse; - } + //set flag to false, so .alb will not overwrite art field in album, artist table + // when song with embedded art + if ((ext.CompareF(KAbstractAlbumExt)== 0) && containEmbeddedArt) + { + iArtNeedUpdated = EFalse; + } if ( ((ext.CompareF(KAbstractAlbumExt)== 0) && !containEmbeddedArt) || (ext.CompareF(KAbstractAlbumExt)!= 0)) { @@ -2020,7 +2019,7 @@ } // end switch } // end for - // get the current artist/album/genre/composer + // get the current artist/album/genre/composer/abstractalbum // this is required because the recordset may be reused by the code below TUint32 artistId(0); TUint32 albumId(0); @@ -2267,7 +2266,13 @@ { // validate the drive letter, TDriveUnit panics if given drive isn't between // 'A' to 'Z' - TDriveUnit driveUnit(aCriteria.ValueText(KMPXMediaGeneralDrive)); + const TDesC& drive = aCriteria.ValueText(KMPXMediaGeneralDrive); + TInt driveInt = 0; + if( drive == KNullDesC || RFs::CharToDrive( drive[0], driveInt )!= KErrNone ) + { + User::Leave(KErrArgument); + } + TDriveUnit driveUnit(drive); MPXDbCommonUtil::AddSqlCriterionL(*sqlCriteria, KCriterionMusicVolume, MPXDbCommonUtil::GetVolIdMatchDriveIdL(iDbManager.Fs(), driveUnit)); volumeAdded = ETrue; @@ -2389,9 +2394,20 @@ TPtrC name(aMedia.ValueText(aAttribute).Left(KMCMaxTextLen)); // construct the new ID for the category record +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + // genre and abstractalbum are not case sensitive + TBool caseSensitive = ETrue; + if ((aCategory == EMPXGenre) || (aCategory == EMPXAbstractAlbum)) + caseSensitive = EFalse; + + aItemId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), aCategory, + name, caseSensitive); + +#else // only genre is not case sensitive aItemId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), aCategory, name, (aCategory != EMPXGenre)); +#endif if (!aOldId || (aOldId != aItemId)) { // only add if the ID changed, @@ -2401,20 +2417,28 @@ { if (aMedia.ValueTObjectL(KMPXMediaGeneralCategory) == EMPXSong ) { - iObserver.AddCategoryItemL(aCategory, name, aDriveId, - aItemChangedMessages, itemAdded, KNullDesC, KNullDesC); + iObserver.AddCategoryItemL(aCategory, KNullDesC, aDriveId, + aItemChangedMessages, itemAdded, name, KNullDesC); } else - { - TPtrC albumartist(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); - //get AlbumArt, Genre for AbstractAlbum - MPX_DEBUG2(" Music albumartist[%S]", &albumartist); - TPtrC genre(aMedia.ValueText(KMPXMediaMusicGenre).Left(KMCMaxTextLen)); - MPX_DEBUG2(" Music Genre[%S]", &genre); - - // ignore the return value - iObserver.AddCategoryItemL(aCategory, name, aDriveId, - aItemChangedMessages, itemAdded, albumartist, genre); + { + TPtrC albumartist(KNullDesC); + TPtrC abstractAlbumName(KNullDesC); + if (aMedia.IsSupported(KMPXMediaMusicAlbumArtist) ) + { + albumartist.Set(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); + //get AlbumArt AbstractAlbum + MPX_DEBUG2(" albumartist[%S]", &albumartist); + } + if (aMedia.IsSupported(KMPXMediaGeneralTitle) ) + { + abstractAlbumName.Set(aMedia.ValueText(KMPXMediaGeneralTitle).Left(KMCMaxTextLen)); + MPX_DEBUG2(" abstractAlbumName[%S]", &abstractAlbumName); + } + // ignore the return value + + iObserver.AddCategoryItemL(aCategory, abstractAlbumName, aDriveId, + aItemChangedMessages, itemAdded, name, albumartist); } } else @@ -2429,24 +2453,29 @@ } else { +#ifdef ABSTRACTAUDIOALBUM_INCLUDED + // genre and abstractalbum are not case sensitive + aItemId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), aCategory, KNullDesC, + (aCategory != EMPXGenre)&&(aCategory != EMPXAbstractAlbum)); +#else // only genre is not case sensitive aItemId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), aCategory, KNullDesC, (aCategory != EMPXGenre)); +#endif if (!aOldId || (aOldId != aItemId)) { #ifdef ABSTRACTAUDIOALBUM_INCLUDED if(aCategory == EMPXAbstractAlbum) - { - //get AlbumArt, Genre for AbstractAlbum + { + //get AlbumArt for AbstractAlbum TPtrC albumartist(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); - MPX_DEBUG2(" Music albumartist[%S]", &albumartist); - TPtrC genre(aMedia.ValueText(KMPXMediaMusicGenre).Left(KMCMaxTextLen)); - MPX_DEBUG2(" Music Genre[%S]", &genre); - + MPX_DEBUG2(" Music albumartist[%S]", &albumartist); + TPtrC abstractAlbumName(aMedia.ValueText(KMPXMediaGeneralTitle).Left(KMCMaxTextLen)); + MPX_DEBUG2(" Music abstractAlbumName[%S]", &abstractAlbumName); // ignore the return value - iObserver.AddCategoryItemL(aCategory, KNullDesC, aDriveId, - aItemChangedMessages, itemAdded, albumartist, genre); - } + iObserver.AddCategoryItemL(aCategory, abstractAlbumName, aDriveId, + aItemChangedMessages, itemAdded, KNullDesC, albumartist); + } else #endif // ABSTRACTAUDIOALBUM_INCLUDED { @@ -2457,12 +2486,8 @@ updated = ETrue; } } -#ifdef ABSTRACTAUDIOALBUM_INCLUDED - //no need to delete old item for abstractalbum - if (aOldId && (aOldId != aItemId) && (aCategory != EMPXAbstractAlbum)) -#else - if (aOldId && (aOldId != aItemId)) -#endif // ABSTRACTAUDIOALBUM_INCLUDED + + if (aOldId && (aOldId != aItemId)) { iObserver.DeleteSongForCategoryL(aCategory, aOldId, aDriveId, aItemChangedMessages, itemNotRemoved); diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplugin.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplugin.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplugin.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -2590,11 +2590,11 @@ mediaId = iDbHandler->GetPlaylistIdMatchingUriL(uri); iDbHandler->RemovePlaylistL(mediaId, *fp, *itemChangedMessages); } -#ifdef ABSTRACTAUDIOALBUM_INCLUDED +#ifdef ABSTRACTAUDIOALBUM_INCLUDED else if (category == EMPXAbstractAlbum ) { mediaId = iDbHandler->GetAbstractAlbumIdMatchingUriL(uri); - iDbHandler->RemoveAbstractAlbumL(mediaId, *fp, *itemChangedMessages); + iDbHandler->RemoveAbstractAlbumL(mediaId, *itemChangedMessages, EFalse); } #endif // ABSTRACTAUDIOALBUM_INCLUDED else @@ -3530,18 +3530,14 @@ case EMPXAbstractAlbum: { if (aMedia.IsSupported(KMPXMediaGeneralUri)) - { - + { + //add abstractalbum to AbstractAlbum table itemId = iDbHandler->AddAbstractAlbumL(aMedia, &aMessageArray); - + + //in case aMedia as mediaArray which contains songs as arrayContents, need to update all songs associated if ( aMedia.IsSupported(KMPXMediaArrayContents)) { - //need to update songs information to music table - CMPXMediaArray* array = aMedia.Value(KMPXMediaArrayContents); - if (array->Count()) - { - iDbHandler->UpdateAbstractAlbumSongsL(aMedia, aMessageArray); - } + iDbHandler->UpdateSongsAbstractAlbumInfoL(aMedia, aMessageArray); } } else @@ -3719,7 +3715,20 @@ #ifdef ABSTRACTAUDIOALBUM_INCLUDED case EMPXAbstractAlbum: { - visibleChange = iDbHandler->UpdateAbstractAlbumSongsL(aMedia, aMessageArray); + //update all songes which associate with ABSTRACTALBUM + if (aMedia.IsSupported(KMPXMediaGeneralUri)) + { + //in case aMedia as mediaArray which contains songs as arrayContents, need to update all songs associated + if ( aMedia.IsSupported(KMPXMediaArrayContents)) + { + iDbHandler->UpdateSongsAbstractAlbumInfoL(aMedia, aMessageArray); + } + //only update field values in abstractalbum table, or renaming (change uri) for abstractalbum table + else + { + visibleChange = iDbHandler->UpdateAbstractAlbumL(aMedia, aMessageArray); + } + } } break; #endif // ABSTRACTAUDIOALBUM_INCLUDED diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/inc/mpxdbpodcast.h --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/inc/mpxdbpodcast.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/inc/mpxdbpodcast.h Tue Apr 27 16:34:37 2010 +0300 @@ -148,13 +148,16 @@ * @param aEpisodeId the ID of the episode to be removed * @param aUriArray on return contains the URI of the deleted episode * @param aItemChangedMessages on return contains changed messages + * @param IsAdd denotes whether DeleteEpisodeL is called as part of + * adding an episode or deleting an episode ,if called as part of adding + * pass ETrue else if part of deletion pass EFalse. * @param aDeleteRecord indicates whether the client has explictly requested * to delete the records from the database. If ETrue, records * associated with the media will be deleted from the database; * if EFalse, the record will be marked as deleted only. */ void DeleteEpisodeL(TUint32 aEpisodeId, CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages, TBool aDeleteRecord); + CMPXMessageArray& aItemChangedMessages, TBool IsAdd, TBool aDeleteRecord); /** * Remove episodes matching a category from the Podcast table @@ -618,6 +621,8 @@ * @param aRecordset episode record to be removed * @param aUriArray, on return will be filled with all the paths that were removed * @param aItemChangedMessages: change events as result of the episode removal + * @param IsAdd denotes whether DoDeleteEpisodeL is called as part of + * adding an episode or deleting an episode. * @param aDeleteRecord: indicates whether the client has explictly requested * to delete the records from the database. If ETrue, records * associated with the media will be deleted from the database; @@ -626,7 +631,7 @@ * @return Error code. */ void DoDeleteEpisodeL(RSqlStatement& aRecordset, CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages, TBool aDeleteRecord = EFalse); + CMPXMessageArray& aItemChangedMessages, TBool IsAdd, TBool aDeleteRecord = EFalse); /** * Constructs the fields and corresponding values to be written into the Podcast diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/src/mpxdbpodcast.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/src/mpxdbpodcast.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/src/mpxdbpodcast.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -144,7 +144,16 @@ CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); CleanupStack::PushL( itemChangedMessages ); - DeleteEpisodeL( episodeId, *fp, *itemChangedMessages, ETrue ); + //Isadd is passed as true as its called from AddEpisodeL + //IsAdd true means dont decrement the episode count from tables like + //Artist Genere, Album, and Composer , which is not needed when + //DeleteEpisodeL is called as part of Add operation + TRAPD( err, DeleteEpisodeL( episodeId, *fp, *itemChangedMessages, ETrue, ETrue ) ); + + if ( err != KErrNone ) // EpisodeExistL has found a record from a previously deleted episode, cleanup it now + { + iDbManager.ExecuteQueryL( aDrive, KQueryPodcastDelete(), episodeId ); + } CleanupStack::PopAndDestroy( itemChangedMessages ); CleanupStack::PopAndDestroy( fp ); @@ -187,7 +196,7 @@ void CMPXDbPodcast::DeleteEpisodeL( TUint32 aEpisodeId, CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages, + CMPXMessageArray& aItemChangedMessages, TBool IsAdd, TBool aDeleteRecord) { MPX_FUNC("CMPXDbPodcast::DeleteEpisodeL"); @@ -199,7 +208,7 @@ { User::Leave(KErrNotFound); } - DoDeleteEpisodeL(recordset, aUriArray, aItemChangedMessages, aDeleteRecord); + DoDeleteEpisodeL(recordset, aUriArray, aItemChangedMessages, IsAdd, aDeleteRecord); CleanupStack::PopAndDestroy(&recordset); } @@ -1224,7 +1233,7 @@ void CMPXDbPodcast::DoDeleteEpisodeL( RSqlStatement& aRecordset, CDesCArray& aUriArray, - CMPXMessageArray& aItemChangedMessages, + CMPXMessageArray& aItemChangedMessages, TBool IsAdd , TBool aDeleteRecord) { MPX_FUNC("CMPXDbPodcast::DoDeleteEpisodeL"); @@ -1235,22 +1244,28 @@ aUriArray.AppendL(*uri); TDriveUnit driveUnit(*uri); CleanupStack::PopAndDestroy(uri); - - // process the author - iObserver.DeleteEpisodeForCategoryL(EMPXArtist, aRecordset.ColumnInt64(EPodcastArtist), - driveUnit, &aItemChangedMessages); + + //if adding then dont delete episode category + if(!IsAdd) + { + // process the author + iObserver.DeleteEpisodeForCategoryL(EMPXArtist, aRecordset.ColumnInt64(EPodcastArtist), + driveUnit, &aItemChangedMessages ); + + // process the title + iObserver.DeleteEpisodeForCategoryL(EMPXAlbum, aRecordset.ColumnInt64(EPodcastAlbum), + driveUnit, &aItemChangedMessages); + + // process the genre + iObserver.DeleteEpisodeForCategoryL(EMPXGenre, aRecordset.ColumnInt64(EPodcastGenre), + driveUnit, &aItemChangedMessages); + + // process the composer + iObserver.DeleteEpisodeForCategoryL(EMPXComposer, aRecordset.ColumnInt64(EPodcastComposer), + driveUnit, &aItemChangedMessages); + } + - // process the title - iObserver.DeleteEpisodeForCategoryL(EMPXAlbum, aRecordset.ColumnInt64(EPodcastAlbum), - driveUnit, &aItemChangedMessages); - - // process the genre - iObserver.DeleteEpisodeForCategoryL(EMPXGenre, aRecordset.ColumnInt64(EPodcastGenre), - driveUnit, &aItemChangedMessages); - - // process the composer - iObserver.DeleteEpisodeForCategoryL(EMPXComposer, aRecordset.ColumnInt64(EPodcastComposer), - driveUnit, &aItemChangedMessages); // add a change event for removing the episode itself TUint32 episodeId(aRecordset.ColumnInt64(EPodcastUniqueId)); diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/src/mpxpodcastdbhandler.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/src/mpxpodcastdbhandler.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitepodcastdbplugin/src/mpxpodcastdbhandler.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -1211,8 +1211,9 @@ } #endif - // delete the episode - iDbPodcast->DeleteEpisodeL(aEpisodeId, aUriArray, aItemChangedMessages, deleteRecord); + // delete the episode + // IsAdd is passed EFalse to ensure the episode count will be decremented + iDbPodcast->DeleteEpisodeL(aEpisodeId, aUriArray, aItemChangedMessages, EFalse, deleteRecord); } // ---------------------------------------------------------------------------- diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/playbackplugins/localaudio/src/mpxlocalaudioplayback.cpp --- a/mpxplugins/serviceplugins/playbackplugins/localaudio/src/mpxlocalaudioplayback.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/playbackplugins/localaudio/src/mpxlocalaudioplayback.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -435,10 +435,28 @@ { // Re-init audio effects MPX_DEBUG1("CMPXLocalAudioPlayback::CommandL EPbApplyEffect"); + iAudioEffects->DestroyAudioEffect(); if( ( aData == KAudioEffectsID || aData == KEqualizerID ) && ( EStateInitialised == iState ) ) { - TRAP_IGNORE( iAudioEffects->CreateAudioEffectsL() ); + TRAPD(err, iAudioEffects->CreateAudioEffectsL() ); + if(err) + { + MPX_DEBUG2("EPbApplyEffect err = %d", err); + TRAPD(err, iAudioEffects->CreateAudioEffectsL() ); + if(err) + { + MPX_DEBUG2("EPbApplyEffect again err = %d", err); + } + else + { + MPX_DEBUG1("EPbApplyEffect again set"); + } + } + else + { + MPX_DEBUG1("EPbApplyEffect set"); + } iAudioEffectsOn = ETrue; } break; diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/playbackplugins/progressdownloadsb/inc/mpxprogressdownloadsb.h --- a/mpxplugins/serviceplugins/playbackplugins/progressdownloadsb/inc/mpxprogressdownloadsb.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/playbackplugins/progressdownloadsb/inc/mpxprogressdownloadsb.h Tue Apr 27 16:34:37 2010 +0300 @@ -208,7 +208,7 @@ void ResetEnhancedMediaClient(); - void MoveDownloadedFileToMusicFolderL(); + void MoveDownloadedFileToMusicFolder(); /** * Consumes the rights for the current media according diff -r c54d95799c80 -r a1247965635c mpxplugins/serviceplugins/playbackplugins/progressdownloadsb/src/mpxprogressdownloadsb.cpp --- a/mpxplugins/serviceplugins/playbackplugins/progressdownloadsb/src/mpxprogressdownloadsb.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/serviceplugins/playbackplugins/progressdownloadsb/src/mpxprogressdownloadsb.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -341,7 +341,7 @@ if ( !iFileSaved ) { iDrmMediaUtility->Close(); // release file handle so we can move file. - MoveDownloadedFileToMusicFolderL(); + MoveDownloadedFileToMusicFolder(); } } iDrmMediaUtility->Close(); @@ -357,7 +357,7 @@ if ( !iFileSaved ) { iDrmMediaUtility->Close(); // release file handle so we can move file. - MoveDownloadedFileToMusicFolderL(); + MoveDownloadedFileToMusicFolder(); } } iDrmMediaUtility->Close(); @@ -646,7 +646,7 @@ RApaLsSession aps; error = aps.Connect(); // always fail in console test - if ( KErrNone == error ) + if ( iPdPath != NULL && KErrNone == error ) { CleanupClosePushL(aps); TUid ignore; @@ -669,7 +669,7 @@ { TRAP( err, metaDataUtility->OpenFileL( *iFileHandle, iMimeType.Des8() ) ); } - else + else if ( iPdPath != NULL ) { TRAP( err, metaDataUtility->OpenFileL( *iPdPath, iMimeType.Des8() ) ); } @@ -680,7 +680,7 @@ { TRAP( err, metaDataUtility->OpenFileL( *iFileHandle ) ); } - else + else if( iPdPath != NULL ) { TRAP( err, metaDataUtility->OpenFileL( *iPdPath ) ); } @@ -791,7 +791,7 @@ break; } case EMetaDataJpeg: - if ( attrM & EMPXMediaMusicAlbumArtFileName ) + if ( ( iPdPath != NULL ) && attrM & EMPXMediaMusicAlbumArtFileName ) { media->SetTextValueL( TMPXAttribute(KMPXMediaIdMusic,EMPXMediaMusicAlbumArtFileName), @@ -814,7 +814,7 @@ } - if (attrG & EMPXMediaGeneralUri) + if ( ( iPdPath != NULL ) && attrG & EMPXMediaGeneralUri) { media->SetTextValueL( TMPXAttribute(KMPXMediaIdGeneral,EMPXMediaGeneralUri), @@ -851,7 +851,7 @@ } - if (attrG & EMPXMediaGeneralSize) + if ( ( iPdPath != NULL ) && attrG & EMPXMediaGeneralSize) { RFs fs; User::LeaveIfError(fs.Connect()); @@ -1029,7 +1029,7 @@ { ConsumeRights( ContentAccess::EPause ); } - MoveDownloadedFileToMusicFolderL(); + MoveDownloadedFileToMusicFolder(); } } else if ( event->GetErrorCode() == KErrDied || event->GetErrorCode() == KErrInUse || @@ -1204,7 +1204,7 @@ (iState == EStateInitialising && iErrorOfStreamClosedEvent == KErrCANoRights)) && !iFileSaved ) { - MoveDownloadedFileToMusicFolderL(); + MoveDownloadedFileToMusicFolder(); } iErrorOfStreamClosedEvent = KErrNone ; @@ -1246,7 +1246,12 @@ { delete iPdPath; iPdPath = NULL; - iPdPath = iMovedFileName.AllocL(); + MPX_TRAPD( err, iPdPath = iMovedFileName.AllocL() ); + if( err != KErrNone ) + { + MPX_DEBUG2("iPdPath = iMovedFileName.AllocL() with leave err=%d", err ); + break; + } iFileSaved = ETrue; } else @@ -1258,7 +1263,12 @@ iMAudioProgDLSource->FileName( ptr ); delete iPdPath; iPdPath = NULL; - iPdPath = ptr.AllocL(); + MPX_TRAPD(err, iPdPath = ptr.AllocL() ); + if( err != KErrNone ) + { + MPX_DEBUG2("iPdPath = ptr.AllocL() with leave err=%d", err ); + break; + } iFileSaved = ETrue; } } @@ -1393,13 +1403,30 @@ changed = ETrue; } } - + // Change setting in cenrep - if ( aVolume != iVolumeWatcher->CurrentValueL() ) + TInt currentVol( 0 ); + MPX_TRAPD( volError, currentVol = iVolumeWatcher->CurrentValueL() ); + if ( volError == KErrNone && aVolume != currentVol ) { - iVolumeWatcher->SetValueL( aVolume ); + MPX_TRAP( volError, iVolumeWatcher->SetValueL( aVolume ) ); + if( aVolume == 0 ) + { + MPX_TRAP( volError, iMuteWatcher->SetValueL( ETrue ) ); + } + else if( aVolume > 0 ) + { + TBool currentMute( EFalse ); + + MPX_TRAP( volError, currentMute = iMuteWatcher->CurrentValueL() ); + if( volError == KErrNone && currentMute ) + { + MPX_TRAP( volError, iMuteWatcher->SetValueL( EFalse ) ); + } + } } + // Notify observer if value changed if ( changed ) { @@ -1468,16 +1495,16 @@ // CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolderL // ----------------------------------------------------------------------------- // -void CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolderL() +void CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolder() { - if ( iFileSaved || + if ( iFileSaved || iPdPath == NULL || ( (*iPdPath).Length() == 0 ) || iMAudioProgDLSource->GetDownloadStatus() == MProgDLSource::EDeleted ) { return; } - MPX_DEBUG1("CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolderL() entering"); + MPX_DEBUG1("CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolder() entering"); TParse parse; parse.Set(*iPdPath,NULL,NULL); TPtrC drive = parse.Drive(); @@ -1494,7 +1521,7 @@ iFileSaved = ETrue; } - MPX_DEBUG1("CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolderL() exiting"); + MPX_DEBUG1("CMPXProgressDownloadSB::MoveDownloadedFileToMusicFolder() exiting"); } // ---------------------------------------------------------------------------- diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/inc/mpxcommonplaybackviewimp.h --- a/mpxplugins/viewplugins/inc/mpxcommonplaybackviewimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/inc/mpxcommonplaybackviewimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: MPX common playback view implementation -* Version : %version: da1mmcf#41.1.6.1.1.1.12 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: e003sa33#41.1.6.1.1.1.13 % << Don't touch! Updated by Synergy at check-out. * */ @@ -120,7 +120,7 @@ * * @param aPlaybackState Current playback state. */ - IMPORT_C virtual void UpdatePlaybackState( + IMPORT_C virtual void UpdatePlaybackStateL( TMPXPlaybackState aPlaybackState ); /** @@ -292,7 +292,7 @@ /** * Checks if UPnP AP is defined */ - IMPORT_C virtual TBool IsUpnpVisible(); + IMPORT_C virtual TBool IsUpnpVisibleL(); /** * Displays the available players in the Play via submenu @@ -612,7 +612,7 @@ /** * Updates the middle (play/pause) toolbar control key icon based on playback state */ - IMPORT_C void UpdateToolbar(); + IMPORT_C void UpdateToolbarL(); /** * Launch Metadata Dialog to show the file details diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/inc/mpxupnpplaybackdialog.h --- a/mpxplugins/viewplugins/inc/mpxupnpplaybackdialog.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/inc/mpxupnpplaybackdialog.h Tue Apr 27 16:34:37 2010 +0300 @@ -105,7 +105,7 @@ * * @param aPlaybackState Current playback state. */ - void UpdatePlaybackState( + void UpdatePlaybackStateL( TMPXPlaybackState aPlaybackState ); /** @@ -460,21 +460,21 @@ * * @param aVolume volume value. */ - void SetVolume( const TInt aVolume ); + void SetVolumeL( const TInt aVolume ); /** * Mutes the playback volume. */ - void MuteVolume(); + void MuteVolumeL(); /** * Unmutes the playback volume. */ - void UnMuteVolume(); + void UnMuteVolumeL(); /** * Update toolbar. */ - void UpdateToolbar(); + void UpdateToolbarL(); /** * From MAknToolbarObserver * Processes user commands. diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewcontainer.cpp --- a/mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewcontainer.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewcontainer.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -120,13 +120,13 @@ if ( index != KErrNotFound ) { // Update the previous item as not playing anymore - iCommonContainer->DrawLbxItem( index ); + iCommonContainer->DrawLbxItemL( index ); } index = iLbxArray->GetPlaybackIndex(); if ( index != KErrNotFound ) { // Update new item as playing - iCommonContainer->DrawLbxItem( index ); + iCommonContainer->DrawLbxItemL( index ); } } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewimp.cpp --- a/mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -1432,7 +1432,7 @@ } iContainer->Common()->SetLbxCurrentItemIndexAndDraw( currentItem ); //show new indicator - iContainer->Common()->DrawLbxItem(currentItem); + iContainer->Common()->DrawLbxItemL(currentItem); UpdateReorderNaviPaneL(); } @@ -2009,7 +2009,7 @@ #ifdef UPNP_INCLUDED if ( iUpnpCopyCommand && iUpnpFrameworkSupport) { - returnValue = iUpnpCopyCommand->IsAvailableL(); + TRAP_IGNORE( returnValue = iUpnpCopyCommand->IsAvailableL() ); } #endif return returnValue; @@ -6342,7 +6342,7 @@ if (!(aResourceId == R_AVKON_MENUPANE_MARKABLE_LIST && usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive)) { // Custom handling of menu pane for markable lists - iContainer->Common()->HandleMarkableListDynInitMenuPane( + iContainer->Common()->HandleMarkableListDynInitMenuPaneL( aResourceId, aMenuPane ); } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/data/mpxcollectionviewhg.rss --- a/mpxplugins/viewplugins/views/collectionviewhg/data/mpxcollectionviewhg.rss Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/data/mpxcollectionviewhg.rss Tue Apr 27 16:34:37 2010 +0300 @@ -1653,7 +1653,7 @@ CBA_BUTTON { id = EAknSoftkeyYes; - txt = qtn_mus_sk1_play; + txt = ""; }, CBA_BUTTON { @@ -1663,7 +1663,7 @@ CBA_BUTTON { id = EAknSoftkeyYes; - txt = qtn_mus_sk1_play; + txt = ""; } }; } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/group/mpxcollectionviewhg.mmp --- a/mpxplugins/viewplugins/views/collectionviewhg/group/mpxcollectionviewhg.mmp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/group/mpxcollectionviewhg.mmp Tue Apr 27 16:34:37 2010 +0300 @@ -46,7 +46,8 @@ SOURCE mpxcollectionviewhglistboxarray.cpp SOURCE mpxcollectionviewhgplaylisthelper.cpp SOURCE mpxcollectionviewhgtnloader.cpp -SOURCE mpxpopuplist.cpp +SOURCE mpxpopuplist.cpp +SOURCE mpxcollectionviewhgswitchbuffer.cpp START RESOURCE ../data/mpxcollectionviewhg.rss HEADER diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgimp.h --- a/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -128,7 +128,7 @@ * * @param aMedia Album to be stored */ - void SaveSelectedAlbum (CMPXMedia &aMedia); + void SaveSelectedAlbumL (CMPXMedia &aMedia); /** * Restores selected album. @@ -282,7 +282,7 @@ * * @return ETrue if visible, EFalse otherwise */ - TBool IsUpnpVisible(); + TBool IsUpnpVisibleL(); /** * Displays the available players in the Play via submenu @@ -878,7 +878,6 @@ * Display information about MusicPlayer version. */ void DisplayAboutDlgL() const; - /* * Internal functions to show the Educating user URI. */ diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgswitchbuffer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgswitchbuffer.h Tue Apr 27 16:34:37 2010 +0300 @@ -0,0 +1,92 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Defines a container for buffer switch handling. +* +*/ + +#ifndef MPXCOLLECTIONVIEWHGSWITCHBUFFER_H_ +#define MPXCOLLECTIONVIEWHGSWITCHBUFFER_H_ + +#include + +class CHgScroller; +class CHgVgMediaWall; +class CGulIcon; + +NONSHARABLE_CLASS(CMPXCollectionViewHgSwitchBuffer) : public CBase + { +public: + + static CMPXCollectionViewHgSwitchBuffer* CreateBufferLC( CHgScroller& aScroller ); + + static CMPXCollectionViewHgSwitchBuffer* CreateBufferLC( CHgVgMediaWall& aMediaWall ); + + virtual ~CMPXCollectionViewHgSwitchBuffer(); + +public: + void FillFromBufferL( CHgVgMediaWall& aMediaWall ); + void FillFromBufferL( CHgScroller& aScroller, TSize aSize ); + void SetIndexOffset( TInt aOffset ); + +protected: + CMPXCollectionViewHgSwitchBuffer(); + +protected: + void AddToBufferL( CGulIcon& aIcon, TInt aIndex ); + +private: + NONSHARABLE_CLASS( CBufferItem ) : public CBase + { + public: + CBufferItem(CGulIcon* aIcon, TInt aIndex) + : iIcon( aIcon ), iIndex( aIndex ) + { + + } + + virtual ~CBufferItem() + { + delete iIcon; + iIcon = NULL; + } + + /** + * + */ + CGulIcon* GetIcon() + { + CGulIcon* icon = iIcon; + iIcon = NULL; + return icon; + } + + /** + * + */ + TInt Index() + { + return iIndex; + } + + private: + CGulIcon* iIcon; + TInt iIndex; + }; + + RPointerArray iBuffer; + TInt iOffset; + }; + + +#endif /* MPXCOLLECTIONVIEWHGSWITCHBUFFER_H_ */ diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgtnloader.h --- a/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgtnloader.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgtnloader.h Tue Apr 27 16:34:37 2010 +0300 @@ -74,7 +74,7 @@ TInt FindLoadingById(TThumbnailRequestId aId, TBool aRemove = EFalse); TInt FindLoadingByIndex(TInt aIndex, TBool aRemove = EFalse); static TInt LoadThumbnail( TAny* aSelf ); - void LoadNextTN(); + void LoadNextTNL(); static TInt ResumeCallback(TAny* aPtr); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/inc/mpxselectedalbumhandler.h --- a/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxselectedalbumhandler.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxselectedalbumhandler.h Tue Apr 27 16:34:37 2010 +0300 @@ -31,7 +31,7 @@ * @since S60 5.2 * @param aMedia Album to be stored */ - virtual void SaveSelectedAlbum (CMPXMedia &aMedia) = 0; + virtual void SaveSelectedAlbumL (CMPXMedia &aMedia) = 0; /** * Restores selected album. diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgcontainer.cpp --- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgcontainer.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgcontainer.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -81,6 +81,7 @@ #include "mpxcbahandler.h" #include "mpxselectedalbumhandler.h" #include "mpxpopuplist.h" +#include "mpxcollectionviewhgswitchbuffer.h" // CONSTANTS _LIT( KMPXCollectionViewRscPath, "mpxcollectionviewhg.rsc" ); @@ -98,7 +99,7 @@ #ifdef __WINS__ const TInt KMPXListBufferSizeWithMediaWall = 20; #else -const TInt KMPXListBufferSizeWithMediaWall = 80; +const TInt KMPXListBufferSizeWithMediaWall = 40; #endif const TInt KMPXMaxFileLength = 256; const TReal KIconFactor = 0.7; @@ -294,7 +295,7 @@ { return MAknsControlContext::SupplyMopObject(aId, iBgContext ); } - + return CCoeControl::MopSupplyObject(aId); } @@ -765,7 +766,7 @@ TRect clientRect = ((CAknView*)iView)->ClientRect(); SetRect( clientRect ); iBgContext->SetRect(((CAknAppUi*)iCoeEnv->AppUi())->ApplicationRect()); - + // call HandleLbxItemAdditionL HandleLbxItemAdditionL(); } @@ -1191,9 +1192,9 @@ HandleLbxItemRemovalL(); TViewType prevViewType = iCurrentViewType; - + ResolveCurrentViewType( count ); - + iThumbnailReqMap.Reset(); if (ShuffleItemPresent()) iShuffleItem = 1; @@ -1220,13 +1221,13 @@ if( !iLayoutSwitch ) { - // We only need to use this for one transition coming - // from playback view. - TBool pbv = (iPreviousViewId == TUid::Uid(KMPXPluginTypePlaybackUid)) ? ETrue : EFalse; - if ( pbv ) - { + // We only need to use this for one transition coming + // from playback view. + TBool pbv = (iPreviousViewId == TUid::Uid(KMPXPluginTypePlaybackUid)) ? ETrue : EFalse; + if ( pbv ) + { iPreviousViewId = TUid::Uid(0); - } + } BeginFullScreenAnimation( pbv ); } @@ -1235,8 +1236,10 @@ case EMPXViewMediawall: { TMPXPlaybackState pbState( iPlaybackUtility->StateL() ); - if ( pbState == EPbStatePlaying || pbState == EPbStatePaused ) + if ( pbState == EPbStatePlaying || pbState == EPbStatePaused || pbState == EPbStateStopped ) + { RestoreSelectedAlbumItemL(mediaArray); + } PrepareMediaWallL(mediaArray, count); iOpenAlbumTracks = EFalse; break; @@ -1245,9 +1248,11 @@ { RestoreSelectedAlbumItemL(mediaArray); PrepareMediaWallWithListL( mediaArray, count ); - // We need to adjust the CBA for this view. - if( iCbaHandler ) - iCbaHandler->UpdateCba(); + // We need to adjust the CBA for this view. + if( iCbaHandler ) + { + iCbaHandler->UpdateCba(); + } break; } case EMPXViewList: @@ -1463,23 +1468,24 @@ { MPX_FUNC( "CMPXCollectionViewHgContainer::ResizeListL" ); TInt mediaCount = aMediaArray.Count(); - + if( iListWidget ) { - TRect clientRect = ((CAknView*)iView)->ClientRect(); + TRect clientRect = ((CAknView*)iView)->ClientRect(); TInt mediaIndex = MediaIndex(iListWidget->SelectedIndex()); + mediaIndex = ( KErrNotFound == mediaIndex ) ? iListWidget->FirstIndexOnScreen() : mediaIndex; mediaIndex = ( mediaIndex >= 0 && (mediaIndex < (mediaCount)) ) ? mediaIndex : (mediaCount - 1); - + TInt prevItemCount = iListWidget->ItemCount(); - + iListWidget->InitScreenL( clientRect ); iListWidget->Reset(); if ( aCount ) { - // enable scroll buffering now as it has not been enabled when empty list was constructed - if ( !prevItemCount ) - { - iListWidget->EnableScrollBufferL( *this, KMPXListBufferSize, KMPXListBufferSize/4 ); + // enable scroll buffering now as it has not been enabled when empty list was constructed + if ( !prevItemCount ) + { + iListWidget->EnableScrollBufferL( *this, KMPXListBufferSize, KMPXListBufferSize/4 ); } iListWidget->ResizeL( aCount ); ProvideDataWithoutThumbnailsL(aMediaArray); @@ -1495,29 +1501,29 @@ // In case of mediawall components we switch to different view type if orientation changes // so there is no need to set new client rect for mediawall. TInt mediaIndex = MediaIndex(iMediaWall->SelectedIndex()); - + // Correct the array index if it is out of range - // This case may happen when last album or album beside selected album is deleted + // This case may happen when last album or album beside selected album is deleted // mediaIndex -1 is valid and it represents shuffle item - + if ( mediaIndex >= mediaCount || mediaIndex < -1) { mediaIndex = mediaCount - 1; // last item of the list } - + //in case of shuffle item is seleted (mediaIndex -1), there is no need to save it. - if( (iSelectedAlbumIndex != mediaIndex) && ( mediaIndex != -1) ) + if( (iSelectedAlbumIndex != mediaIndex) && ( mediaIndex != -1) ) { - iSelectedAlbumIndex = mediaIndex; + iSelectedAlbumIndex = mediaIndex; SaveSelectedAlbumItemL( iSelectedAlbumIndex ); } - + iMediaWall->Reset(); if ( aCount ) { iMediaWall->ResizeL( aCount ); ProvideDataWithoutThumbnailsMwL(aMediaArray); - + iMediaWall->SetSelectedIndex( mediaIndex + iShuffleItem); if ( iCurrentViewType == EMPXViewTBone ) { @@ -1538,12 +1544,12 @@ { MPX_FUNC("CMPXCollectionViewHgContainer::PrepareListL"); - if (!((CAknAppUi*)iCoeEnv->AppUi())->StatusPane()->IsVisible()) - ((CAknAppUi*)iCoeEnv->AppUi())->StatusPane()->MakeVisible(ETrue); - - if( iCbaHandler ) - iCbaHandler->UpdateCba(); - + if (!((CAknAppUi*)iCoeEnv->AppUi())->StatusPane()->IsVisible()) + ((CAknAppUi*)iCoeEnv->AppUi())->StatusPane()->MakeVisible(ETrue); + + if( iCbaHandler ) + iCbaHandler->UpdateCba(); + TRect clientRect = ((CAknView*)iView)->ClientRect(); iThumbnailManager->SetSizeL( EAudioListThumbnailSize ); iImageSize = CHgDoubleGraphicListFlat::PreferredImageSize(); @@ -1551,10 +1557,10 @@ if( !iListWidget ) { iListWidget = CHgDoubleGraphicListFlat::NewL ( - clientRect, - aCount, - NULL, - NULL ); + clientRect, + aCount, + NULL, + NULL ); iListWidget->SetMenuProviderL(this); iListWidget->SetSelectionObserver(*this); // TODO. check if this is correct for all lists @@ -1575,22 +1581,33 @@ iListWidget->InitScreenL(clientRect); } - if ( (iAlbumIndex > 0) && (iAlbumIndex < aCount) ) + if ( (iAlbumIndex >= 0) && (iAlbumIndex < aCount) ) { iListWidget->SetSelectedIndex( iAlbumIndex + iShuffleItem ); } - + else if ( KErrNotFound == iAlbumIndex ) + { + if ( iSelectedAlbumIndex >= 0 && iSelectedAlbumIndex < aCount) + { + iListWidget->SetSelectedIndex( iSelectedAlbumIndex + iShuffleItem ); + } + else + { + iListWidget->SetSelectedIndex( iListWidget->FirstIndexOnScreen() + iShuffleItem ); + } + } + // TODO. Define here in which views we need to have buffering enabled in the list if( ( ( iContext == EContextGroupAlbum ) || ( iContext == EContextGroupArtist ) || ( iContext == EContextGroupSong ) || - ( iContext == EContextItemGenre ) || + ( iContext == EContextItemGenre ) || ( iContext == EContextItemPlaylist ) ) && // Check if the list is empty, Enable scroll buffer won't call requst if list is empty ( iListWidget->ItemCount() != 0 ) ) { MPX_DEBUG1("CMPXCollectionViewHgContainer::PrepareListL - EnableScrollBufferL"); - iListWidget->EnableScrollBufferL( *this, KMPXListBufferSize, KMPXListBufferSize/4 ); + iListWidget->EnableScrollBufferL(*this, KMPXListBufferSize, KMPXListBufferSize/4); } else { @@ -1731,6 +1748,17 @@ frontRect.LayoutRect( appRect, AknLayoutScalable_Apps::cf0_flow_pane_g1(0) ); iImageSize = frontRect.Rect().Size(); + CMPXCollectionViewHgSwitchBuffer* switchBuffer(NULL); + + if( iListWidget && (iPrevContext == EContextGroupAlbum || iPrevContext == EContextItemAlbum ) ) + { + switchBuffer = CMPXCollectionViewHgSwitchBuffer::CreateBufferLC( *iListWidget ); + } + else if ( iMediaWall ) + { + switchBuffer = CMPXCollectionViewHgSwitchBuffer::CreateBufferLC( *iMediaWall ); + switchBuffer->SetIndexOffset(1); + } if( iMediaWall ) { delete iMediaWall; @@ -1820,6 +1848,12 @@ iMediaWall->SetOpenedItemRect( iPopupListRect ); iMediaWall->SetOpeningAnimationType( CHgVgMediaWall::EHgVgOpeningAnimationZoomToFront ); + if( switchBuffer ) + { + switchBuffer->FillFromBufferL( *iMediaWall ); + CleanupStack::PopAndDestroy( switchBuffer ); + switchBuffer = NULL; + } iDefaultIconSet = ETrue; } @@ -1881,7 +1915,7 @@ { TBool tBoneView = EFalse; - if( EMPXViewTBone == iCurrentViewType ) + if( EMPXViewTBone == iCurrentViewType || iOpenAlbumTracks ) tBoneView = ETrue; return tBoneView; @@ -1929,16 +1963,16 @@ iCurrentViewType = EMPXViewList; break; } - - // if tbone view is empty, switch back to Albums list or meidawall view + + // if tbone view is empty, switch back to Albums list or meidawall view if( ( iCurrentViewType == EMPXViewTBone ) && ( aCount < 1 ) ) { if( landscapeOrientation ) iCurrentViewType = EMPXViewMediawall; else - iCurrentViewType = EMPXViewList; + iCurrentViewType = EMPXViewList; } - + } // ---------------------------------------------------------------------------- @@ -2058,12 +2092,12 @@ switch( iContext ) { case EContextGroupAlbum: - case EContextItemAlbum: + case EContextItemAlbum: { iSelectedAlbumIndex = index; SaveSelectedAlbumItemL(index); // Open first song of album & playlist for entire album is created. - PlayAlbumL(index); + PlayAlbumL(index); break; } case EContextGroupPlaylist: @@ -2110,7 +2144,7 @@ if ( aControl == iMediaWall ) { iSelectedAlbumIndex = index; - iAlbumIndex = index; + iAlbumIndex = index; OpenAlbumL(index); } } @@ -3048,19 +3082,19 @@ TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); if ( landscapeOrientation ) { - unknownText = + unknownText = StringLoader::LoadLC( R_MPX_MEDIAWALL_ARTIST_UNKNOWN ); } else { - unknownText = - StringLoader::LoadLC( R_MPX_MP_LIST_ARTIST_UNKNOWN ); + unknownText = + StringLoader::LoadLC( R_MPX_MP_LIST_ARTIST_UNKNOWN ); } } - else + else { - unknownText = - StringLoader::LoadLC( R_MPX_MEDIAWALL_ARTIST_UNKNOWN ); + unknownText = + StringLoader::LoadLC( R_MPX_MEDIAWALL_ARTIST_UNKNOWN ); } aVisualItem->SetTitleL( *unknownText ); CleanupStack::PopAndDestroy( unknownText ); @@ -3126,10 +3160,10 @@ CMPXMedia* aMedia ) { MPX_FUNC( "CMPXCollectionViewHgContainer::SetDetailCountL" ); - if ( aMedia->IsSupported( KMPXMediaGeneralCount ) ) - { - TInt count( aMedia->ValueTObjectL( KMPXMediaGeneralCount ) ); - + if ( aMedia->IsSupported( KMPXMediaGeneralCount ) ) + { + TInt count( aMedia->ValueTObjectL( KMPXMediaGeneralCount ) ); + if ( iContext == EContextGroupGenre ) { HBufC* numSongsText = NULL; @@ -3139,7 +3173,7 @@ } else { - numSongsText = StringLoader::LoadLC( R_MPX_MUSIC_ONE_SONG ); + numSongsText = StringLoader::LoadLC( R_MPX_MUSIC_ONE_SONG ); } TPtr ptr = numSongsText->Des(); AknTextUtils::LanguageSpecificNumberConversion( ptr ); @@ -3205,26 +3239,26 @@ aVisualItem->SetTextL( detailText ); } else - { + { HBufC* unknownText = NULL; if ( iContext == EContextGroupAlbum ) { TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); if ( landscapeOrientation ) { - unknownText = + unknownText = StringLoader::LoadLC( R_MPX_MEDIAWALL_ALBUM_UNKNOWN ); } else { - unknownText = - StringLoader::LoadLC( R_MPX_MP_LIST_ALBUM_UNKNOWN ); + unknownText = + StringLoader::LoadLC( R_MPX_MP_LIST_ALBUM_UNKNOWN ); } } - else + else { - unknownText = - StringLoader::LoadLC( R_MPX_MEDIAWALL_ALBUM_UNKNOWN ); + unknownText = + StringLoader::LoadLC( R_MPX_MEDIAWALL_ALBUM_UNKNOWN ); } aVisualItem->SetTextL( *unknownText ); CleanupStack::PopAndDestroy( unknownText ); @@ -3245,12 +3279,12 @@ if ( iContext == EContextGroupPlaylist && aMedia->IsSupported( KMPXMediaGeneralDuration ) && aMedia->IsSupported( KMPXMediaGeneralCount ) ) - { - TBuf detailText; - TInt count( aMedia->ValueTObjectL( KMPXMediaGeneralCount ) ); - TInt duration = aMedia->ValueTObjectL( KMPXMediaGeneralDuration ); - - UpdateTimeIndicatorsL(detailText, duration); + { + TBuf detailText; + TInt count( aMedia->ValueTObjectL( KMPXMediaGeneralCount ) ); + TInt duration = aMedia->ValueTObjectL( KMPXMediaGeneralDuration ); + + UpdateTimeIndicatorsL(detailText, duration); HBufC* numSongsDurationText = NULL; if ( count > 1 || count == 0 ) { @@ -3259,9 +3293,9 @@ else { numSongsDurationText = StringLoader::LoadLC( R_MPX_MUSIC_ONE_SONG_DURATION, detailText ); - } + } TPtr ptr = numSongsDurationText->Des(); - AknTextUtils::LanguageSpecificNumberConversion( ptr ); + AknTextUtils::LanguageSpecificNumberConversion( ptr ); aVisualItem->SetTextL( ptr ); CleanupStack::PopAndDestroy( numSongsDurationText ); } @@ -3610,13 +3644,13 @@ if ( count > 1 && iContext == EContextGroupAlbum ) { - TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); + TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); if ( landscapeOrientation ) { HBufC* shuffleText = StringLoader::LoadLC( R_MPX_MEDIAWALL_TITLE_SHUFFLE_ALL ); aItem->SetTitleL( *shuffleText ); - CleanupStack::PopAndDestroy( shuffleText ); + CleanupStack::PopAndDestroy( shuffleText ); } else { @@ -3624,7 +3658,7 @@ R_MPX_SHUFFLE ); aItem->SetTitleL( *shuffleText ); CleanupStack::PopAndDestroy( shuffleText ); - } + } // We can try to set icon too. SetDetailIconShuffleL(); @@ -3642,7 +3676,7 @@ R_MPX_SHUFFLE ); aItem->SetTitleL( *shuffleText ); CleanupStack::PopAndDestroy( shuffleText ); - + // We can try to set icon too. SetDetailIconShuffleL(); res = ETrue; @@ -3660,13 +3694,13 @@ MPX_FUNC( "CMPXCollectionViewHgContainer::SetCollectionContextL" ); const CMPXMedia& media = iListBoxArray->ContainerMedia(); - + if ( NULL == &media ) - { - MPX_DEBUG1( "CMPXCollectionViewHgContainer::SetCollectionContextL NO media"); + { + MPX_DEBUG1( "CMPXCollectionViewHgContainer::SetCollectionContextL NO media"); User::Leave(KErrNotFound); - } - + } + TMPXGeneralType containerType( EMPXNoType ); if ( media.IsSupported( KMPXMediaGeneralType ) ) { @@ -4405,7 +4439,7 @@ // void CMPXCollectionViewHgContainer::ShowAlbumSongsDialogL( const CMPXMedia& aResults ) { - CAknSinglePopupMenuStyleListBox* listBox = new ( ELeave ) CAknSinglePopupMenuStyleListBox; + CAknSingleGraphicPopupMenuStyleListBox* listBox = new ( ELeave ) CAknSingleGraphicPopupMenuStyleListBox; CleanupStack::PushL( listBox ); CAknPopupList* dialog = CAknPopupList::NewL(listBox, R_MPX_COLLECTION_ALBUMSONGS_LIST_CBA, @@ -4449,8 +4483,25 @@ { HBufC* shuffleText = StringLoader::LoadLC( R_MPX_MEDIAWALL_DIALOG_SHUFFLE ); - songList->AppendL( *shuffleText ); + // Make room for 3 more formatting characters. + HBufC* finalText = HBufC::NewLC(shuffleText->Length() + 3); + TPtr ptr = finalText->Des(); + // This tells the list to use icon at index 0 of array index. + ptr.Append(_L("0\t")); + ptr.Append(shuffleText->Des()); + songList->AppendL( *finalText ); + CleanupStack::PopAndDestroy( finalText ); CleanupStack::PopAndDestroy( shuffleText ); + CAknIconArray* iconArray = new( ELeave ) CAknIconArray( 1 ); + CleanupStack::PushL( iconArray ); + // Prepare icon array. + CGulIcon* icon = (*iIconArray)[EMPXClvIconShuffle]; + CGulIcon* iconCopy = CGulIcon::NewL(icon->Bitmap(), icon->Mask()); + iconCopy->SetBitmapsOwnedExternally(ETrue); + iconArray->AppendL(iconCopy); + + listBox->ItemDrawer()->ColumnData()->SetIconArrayL( iconArray ); + CleanupStack::Pop(); // iconArray } for ( TInt i = 0; i < songCount; i++ ) @@ -4466,7 +4517,12 @@ if ( currentMedia->IsSupported( KMPXMediaGeneralTitle ) ) { const TDesC& title = currentMedia->ValueText( KMPXMediaGeneralTitle ); - songList->AppendL( title ); + HBufC* finalText = HBufC::NewLC(title.Length() + 2); + TPtr ptr = finalText->Des(); + ptr.Append(_L("\t")); + ptr.Append(title); + songList->AppendL( *finalText ); + CleanupStack::PopAndDestroy( finalText ); } } @@ -4619,7 +4675,7 @@ CleanupStack::PopAndDestroy( unknownArtistText ); } - iSelectedAlbumHandler->SaveSelectedAlbum(*iSelectedMediaInAlbumView); + iSelectedAlbumHandler->SaveSelectedAlbumL(*iSelectedMediaInAlbumView); } } @@ -4743,17 +4799,22 @@ if( self ) { //check if the pointer to ContainerMedia exists - const CMPXMedia& media = self->iListBoxArray->ContainerMedia(); + const CMPXMedia& media = self->iListBoxArray->ContainerMedia(); if ( NULL == &media ) { return KErrNone; - } - - - self->HandleLbxItemAdditionL(); + } + + + MPX_TRAPD( err, self->HandleLbxItemAdditionL() ); + if ( err != KErrNone ) + { + MPX_DEBUG2("CMPXCollectionViewHgContainer::AsyncCallback() return err%d", err ); + return err; + } if( self->iCbaHandler ) - { + { self->iCbaHandler->UpdateCba(); } } @@ -4891,9 +4952,9 @@ { MPX_FUNC( "CMPXCollectionViewHgContainer::LoadAndSetEmptyTextL" ); MPX_DEBUG2( "CMPXCollectionViewHgContainer::LoadAndSetEmptyTextL - iContext %d", iContext ); - + TInt resId( 0 ); - + switch ( iContext ) { case EContextGroupAlbum: diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp --- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -365,6 +365,7 @@ if ( iContainer ) { iContainer->SetRect( ClientRect() ); + UpdateTitlePaneL(); } } @@ -539,7 +540,7 @@ iRepository->Get( KEducatingUserURI, educatingURI ); iRepository->Get( KEducatingPopupState, iEducatingPopupState); - // Get music store information from cenrep + // Get music store information from cenrep // TBuf8< KUIDMaxLength > operatorMusicStoreUID; @@ -1332,15 +1333,6 @@ { title->SetTextL( *iTitle ); } - else if ( !iIsEmbedded ) - { - // use default title if no metadata is available - // and is not in embedded view - HBufC* titleText = StringLoader::LoadLC( - R_MPX_COLLECTION_VIEW_TITLE ); - title->SetTextL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - } } } } @@ -2039,7 +2031,7 @@ { MPX_FUNC( "CMPXCollectionViewHgImp::HandleDynInitUpnpL()" ); - if ( !IsUpnpVisible() ) + if ( !IsUpnpVisibleL() ) { GetCurrentPlayerDetails(); @@ -2112,9 +2104,9 @@ // Checks if UPnP access point is defined // ----------------------------------------------------------------------------- // -TBool CMPXCollectionViewHgImp::IsUpnpVisible() +TBool CMPXCollectionViewHgImp::IsUpnpVisibleL() { - MPX_FUNC( "CMPXCollectionViewHgImp::IsUpnpVisible" ); + MPX_FUNC( "CMPXCollectionViewHgImp::IsUpnpVisibleL" ); TBool returnValue = EFalse; if ( iUpnpCopyCommand && iUpnpFrameworkSupport) @@ -4383,7 +4375,7 @@ if ( !iContainer->IsInReorderMode() && !iAddingSong && !iInAlbumArtDialog && - !iInSongDetails ) + !iInSongDetails && !iContainer->IsTBoneView()) { UpdateTitlePaneL(); } @@ -5959,6 +5951,26 @@ // Add view deactivation observer AppUi()->AddViewDeactivationObserverL( this ); +#ifdef __ENABLE_PODCAST_IN_MUSIC_MENU + // media is not valid until the first HandleOpenL call + CEikButtonGroupContainer* cba = Cba(); + if ( cba ) + { + cba->SetCommandSetL(R_MPX_OPTIONS_BACK_CBA_NO_ACTION); + cba->DrawNow(); + } +#else + // media is not valid until the first HandleOpenL call + CEikButtonGroupContainer* cba = Cba(); + if ( cba ) + { + cba->SetCommandSetL( + ( iViewUtility->ViewHistoryDepth() == 1 && !iIsEmbedded ) ? + R_MPX_OPTIONS_EXIT_CBA_NO_ACTION : R_MPX_OPTIONS_BACK_CBA_NO_ACTION ); + cba->DrawDeferred(); + } +#endif + // Set status pane layout if switched here directly from another view, // such as when using the AnyKey StatusPane()->MakeVisible( ETrue ); @@ -5976,27 +5988,7 @@ CMPXCollectionPath* cpath( iCollectionUtility->Collection().PathL() ); CleanupStack::PushL( cpath ); -#ifdef __ENABLE_PODCAST_IN_MUSIC_MENU - // media is not valid until the first HandleOpenL call - CEikButtonGroupContainer* cba = Cba(); - if ( cba ) - { - cba->SetCommandSetL( - ( cpath->Levels() == 2 && !iIsEmbedded ) ? - R_MPX_OPTIONS_BACK_CBA_NO_ACTION : R_MPX_OPTIONS_BACK_CBA_NO_ACTION ); - cba->DrawDeferred(); - } -#else - // media is not valid until the first HandleOpenL call - CEikButtonGroupContainer* cba = Cba(); - if ( cba ) - { - cba->SetCommandSetL( - ( iViewUtility->ViewHistoryDepth() == 1 && !iIsEmbedded ) ? - R_MPX_OPTIONS_EXIT_CBA_NO_ACTION : R_MPX_OPTIONS_BACK_CBA_NO_ACTION ); - cba->DrawDeferred(); - } -#endif + UpdateTitlePaneL(); @@ -6093,7 +6085,11 @@ delete iDuration; iDuration = NULL; } - + if (iTitle) + { + delete iTitle; + iTitle = NULL; + } // Cleanup view deactivation observer AppUi()->RemoveViewDeactivationObserver( this ); } @@ -6290,8 +6286,6 @@ { MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPaneAlbumL" ); ASSERT( iContainer && aMenuPane != NULL); - TBool isListEmpty( iContainer->TotalListItemCount() == 0 ); - switch ( aResourceId ) { case R_MPX_COLLECTION_VIEW_MENU_1: @@ -6309,50 +6303,43 @@ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); - - if ( isListEmpty ) + TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); + if ( !landscapeOrientation ) { - aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue); - } - else - { - TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); - if ( !landscapeOrientation ) + TInt usbUnblockingStatus; + RProperty::Get( KMPXViewPSUid, + KMPXUSBUnblockingPSStatus, + usbUnblockingStatus); + + if ( iContainer->CurrentLbxItemIndex() > KErrNotFound && !iContainer->IsTBoneView()) + { + if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) + { + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); + } + else + { + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdPlayItem, EFalse ); + } + } + if ( iContainer->IsSelectedItemASong() && iContainer->IsTBoneView() ) { - TInt usbUnblockingStatus; - RProperty::Get( KMPXViewPSUid, - KMPXUSBUnblockingPSStatus, - usbUnblockingStatus); - - if ( iContainer->CurrentLbxItemIndex() > KErrNotFound && !iContainer->IsTBoneView()) - { - if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) - { - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); - aMenuPane->SetItemDimmed( EMPXCmdPlayItem, EFalse ); - } - } - if ( iContainer->IsSelectedItemASong() && iContainer->IsTBoneView() ) + if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) { - if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) - { - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); - aMenuPane->SetItemDimmed( EMPXCmdSend, EFalse ); - } + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); + } + else + { + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdSend, EFalse ); } } + } //If Operator Music store exist, show the cascade menu with Nokia and Operator music store. if ( iOperatorMusicStore ) @@ -6363,7 +6350,6 @@ { aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue); } - } break; } @@ -6376,18 +6362,21 @@ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); - if( !iContainer->IsTBoneView()&& (iContainer->CurrentLbxItemIndex() > KErrNotFound)) - { - CMPXCollectionViewListBoxArray* array = - static_cast( - iContainer->ListBoxArray() ); - const CMPXMedia& media = array->MediaL( iContainer->CurrentLbxItemIndex() ); - const TDesC& title( media.ValueText( KMPXMediaGeneralTitle ) ); - if( title.Length() > 0) - { - aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService ); - } - } + if ( !Layout_Meta_Data::IsLandscapeOrientation() ) + { + if( !iContainer->IsTBoneView()&& (iContainer->CurrentLbxItemIndex() > KErrNotFound)) + { + CMPXCollectionViewListBoxArray* array = + static_cast( + iContainer->ListBoxArray() ); + const CMPXMedia& media = array->MediaL( iContainer->CurrentLbxItemIndex() ); + const TDesC& title( media.ValueText( KMPXMediaGeneralTitle ) ); + if( title.Length() > 0) + { + aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService ); + } + } + } break; } case R_MPX_ADD_TO_PL_SUB_MENU: @@ -6412,9 +6401,7 @@ CEikMenuPane* aMenuPane ) { MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPanePlaylistL" ); - - TBool isListEmpty( (iContainer->TotalListItemCount()) == 0 ); - + switch ( aResourceId ) { case R_MPX_COLLECTION_VIEW_MENU_1: @@ -6644,8 +6631,6 @@ CEikMenuPane* aMenuPane ) { MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPaneAllSongsL" ); - - TBool isListEmpty( iContainer->TotalListItemCount() == 0 ); TInt selectionCount( 0 ); iSelectionIndexCache = iContainer->CurrentSelectionIndicesL(); // not owned switch ( aResourceId ) @@ -6665,43 +6650,34 @@ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); - - if ( isListEmpty ) - { - aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue); - } - else - { - TInt usbUnblockingStatus; - RProperty::Get( KMPXViewPSUid, + TInt usbUnblockingStatus; + RProperty::Get( KMPXViewPSUid, KMPXUSBUnblockingPSStatus, usbUnblockingStatus); - if ( iContainer->IsSelectedItemASong() ) + if ( iContainer->IsSelectedItemASong() ) + { + if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) + { + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); + } + else { - if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) - { - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); - aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); - } + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); } - if ( iOperatorMusicStore ) - { - aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); - } - else - { - aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue); - } } - + if ( iOperatorMusicStore ) + { + aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); + } + else + { + aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue); + } break; } @@ -8274,12 +8250,12 @@ // ----------------------------------------------------------------------------- -// CMPXCollectionViewHgImp::SaveSelectedAlbum +// CMPXCollectionViewHgImp::SaveSelectedAlbumL // ----------------------------------------------------------------------------- // -void CMPXCollectionViewHgImp::SaveSelectedAlbum (CMPXMedia &aMedia) +void CMPXCollectionViewHgImp::SaveSelectedAlbumL(CMPXMedia &aMedia) { - MPX_FUNC( "CMPXCollectionViewHgImp::SaveSelectedAlbum" ); + MPX_FUNC( "CMPXCollectionViewHgImp::SaveSelectedAlbumL" ); if (iStoredAlbum) { delete iStoredAlbum; @@ -8413,7 +8389,7 @@ // TBool CMPXCollectionViewHgImp::NeedToShowEducatingDialog() { - if(iEducateUserURI && iCollectionReady && //If educating user URI is in cenrep and Collection is Ready + if(iEducateUserURI->Length() > 0 && iCollectionReady && //If educating user URI is in cenrep and Collection is Ready (iEducatingPopupState == EMPXInitialEducatingPopup || //If Music Player is launched first time after phone flash (iEducatingPopupState == EMPXShowEducatingPopup && iPopuponRefresh))) //If user pressed yes on "Remind me later" and its manual refresh with some song added { diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgswitchbuffer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgswitchbuffer.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -0,0 +1,130 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Implements a container for buffer switch handling. +* +*/ + + +#include "mpxcollectionviewhgswitchbuffer.h" + +#include + +#include +#include +#include +#include + +// ---------------------------------------------------------------------------- +// Create a copy of the icons used from input +// ---------------------------------------------------------------------------- +CMPXCollectionViewHgSwitchBuffer* CMPXCollectionViewHgSwitchBuffer::CreateBufferLC( CHgScroller& aScroller ) + { + CMPXCollectionViewHgSwitchBuffer* buffer = new (ELeave) CMPXCollectionViewHgSwitchBuffer(); + CleanupStack::PushL(buffer); + + for(TInt i = 0; i < aScroller.ItemCount(); ++i) + { + CGulIcon* icon = aScroller.ItemL(i).Icon(); + if(icon) + { + buffer->AddToBufferL(*icon, i); + } + } + + return buffer; + } + +// ---------------------------------------------------------------------------- +// Create a copy of the icons used from input +// ---------------------------------------------------------------------------- +CMPXCollectionViewHgSwitchBuffer* CMPXCollectionViewHgSwitchBuffer::CreateBufferLC( CHgVgMediaWall& aMediaWall ) + { + CMPXCollectionViewHgSwitchBuffer* buffer = new (ELeave) CMPXCollectionViewHgSwitchBuffer(); + CleanupStack::PushL(buffer); + + for(TInt i = 0; i < aMediaWall.ItemCount(); ++i) + { + CGulIcon* icon = aMediaWall.ItemL(i).Icon(); + if(icon) + { + buffer->AddToBufferL(*icon, i); + } + } + + return buffer; + } + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +CMPXCollectionViewHgSwitchBuffer::~CMPXCollectionViewHgSwitchBuffer () + { + iBuffer.ResetAndDestroy(); + } + +// ---------------------------------------------------------------------------- +// Provide mediawall with the data from buffer. +// ---------------------------------------------------------------------------- +void CMPXCollectionViewHgSwitchBuffer::FillFromBufferL( CHgVgMediaWall& aMediaWall ) + { + for(TInt i = 0; i < iBuffer.Count(); ++i) + { + CGulIcon* icon = iBuffer[i]->GetIcon(); + CleanupStack::PushL(icon); + if(icon) + aMediaWall.ItemL(iBuffer[i]->Index() + iOffset).SetIcon(icon); + + CleanupStack::Pop(icon); + } + } + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +void CMPXCollectionViewHgSwitchBuffer::FillFromBufferL( CHgScroller& aScroller, TSize aSize ) + { + User::Leave(KErrNotSupported); + } + +// ---------------------------------------------------------------------------- +// Offset to start filling. +// ---------------------------------------------------------------------------- +void CMPXCollectionViewHgSwitchBuffer::SetIndexOffset( TInt aOffset ) + { + iOffset = aOffset; + } + +// ---------------------------------------------------------------------------- +// Add icon to the buffer. +// ---------------------------------------------------------------------------- +void CMPXCollectionViewHgSwitchBuffer::AddToBufferL(CGulIcon& aIcon, TInt aIndex) + { + CGulIcon* newIcon = CGulIcon::NewL(aIcon.Bitmap(), aIcon.Mask()); + TBool isShared = aIcon.BitmapsOwnedExternally(); + aIcon.SetBitmapsOwnedExternally(ETrue); + newIcon->SetBitmapsOwnedExternally(isShared); + + CleanupStack::PushL(newIcon); + CBufferItem* item = new (ELeave) CBufferItem( newIcon, aIndex ); + iBuffer.AppendL(item); + CleanupStack::Pop(newIcon); + } + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +CMPXCollectionViewHgSwitchBuffer::CMPXCollectionViewHgSwitchBuffer () + { + + } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgtnloader.cpp --- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgtnloader.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgtnloader.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -67,11 +67,11 @@ TInt CMpxTNLoader::LoadThumbnail( TAny* aSelf ) { CMpxTNLoader* self = (CMpxTNLoader*)aSelf; - self->LoadNextTN(); - return KErrNone; + MPX_TRAPD( err, self->LoadNextTNL() ); + return err; } -void CMpxTNLoader::LoadNextTN() +void CMpxTNLoader::LoadNextTNL() { if( iPaused ) return; diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontaineravkonimp.h --- a/mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontaineravkonimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontaineravkonimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -236,7 +236,7 @@ * * @since 3.2 */ - void DrawLbxItem( TInt aIndex ); + void DrawLbxItemL( TInt aIndex ); /** * Set Find box's focus. @@ -329,7 +329,7 @@ /** * Custom handling of menu pane for markable lists */ - void HandleMarkableListDynInitMenuPane( + void HandleMarkableListDynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontainerhgimp.h --- a/mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontainerhgimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontainerhgimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -263,7 +263,7 @@ * * @since 3.2 */ - void DrawLbxItem( TInt aIndex ); + void DrawLbxItemL( TInt aIndex ); /** * Set Find box's focus. @@ -356,7 +356,7 @@ /** * Custom handling of menu pane for markable lists */ - void HandleMarkableListDynInitMenuPane( + void HandleMarkableListDynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); @@ -552,7 +552,7 @@ void ProvideDataL( TInt aStart, TInt aEnd ); - void SetScrollbarType(); + void SetScrollbarTypeL(); void CancelTNRequest(); @@ -579,7 +579,7 @@ /** * Refresh list as needed */ - void RefreshL(TInt aIndex); + void Refresh(TInt aIndex); /** * Refresh list as needed diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontaineravkonimp.cpp --- a/mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontaineravkonimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontaineravkonimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -353,7 +353,7 @@ // Draws a list box item // ----------------------------------------------------------------------------- // -void CMPXCommonContainerAvkonImp::DrawLbxItem( TInt aIndex ) +void CMPXCommonContainerAvkonImp::DrawLbxItemL( TInt aIndex ) { ASSERT( iListBox ); TInt topIndex( TopLbxItemIndex() ); @@ -552,7 +552,7 @@ // Custom handling of menu pane for markable lists // --------------------------------------------------------------------------- // -void CMPXCommonContainerAvkonImp::HandleMarkableListDynInitMenuPane( +void CMPXCommonContainerAvkonImp::HandleMarkableListDynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) { diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontainerhgimp.cpp --- a/mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontainerhgimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontainerhgimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -429,9 +429,9 @@ // Draws a list box item // ----------------------------------------------------------------------------- // -void CMPXCommonContainerHgImp::DrawLbxItem( TInt aIndex ) +void CMPXCommonContainerHgImp::DrawLbxItemL( TInt aIndex ) { - MPX_DEBUG2( "CMPXCommonContainerHgImp::DrawLbxItem (aIndex=%d)", aIndex ); + MPX_DEBUG2( "CMPXCommonContainerHgImp::DrawLbxItemL (aIndex=%d)", aIndex ); if ( iListWidget && iBottomIndex > 0 ) { CHgItem* item = &iListWidget->ItemL(aIndex); @@ -521,7 +521,7 @@ } } SetDefaultIconL(); - SetScrollbarType(); + SetScrollbarTypeL(); } } @@ -706,7 +706,7 @@ // Custom handling of menu pane for markable lists // --------------------------------------------------------------------------- // -void CMPXCommonContainerHgImp::HandleMarkableListDynInitMenuPane( +void CMPXCommonContainerHgImp::HandleMarkableListDynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) { @@ -899,7 +899,7 @@ { iListWidget->InitScreenL(clientRect); } - SetScrollbarType(); + SetScrollbarTypeL(); } ); } @@ -1003,20 +1003,24 @@ iThumbnailReqMap[ i ] = EFalse; } - - if ( aDirection == EHgBufferReset || aDirection == EHgBufferScrollDown || aDirection == EHgBufferScrollUp) - { - // For index range in visible-area - ProvideDataIntersectL(aBufferStart, aBufferEnd); - // For index range elsewhere - ProvideDataDifferenceL(aBufferStart, aBufferEnd); - } - else - { - ProvideDataL(aBufferStart, aBufferEnd); - } - - //RefreshL(aBufferStart); + MPX_TRAPD( err, + if ( aDirection == EHgBufferReset || aDirection == EHgBufferScrollDown || aDirection == EHgBufferScrollUp) + { + // For index range in visible-area + ProvideDataIntersectL(aBufferStart, aBufferEnd); + // For index range elsewhere + ProvideDataDifferenceL(aBufferStart, aBufferEnd); + } + else + { + ProvideDataL(aBufferStart, aBufferEnd); + } ); + + if( err != KErrNone ) + { + MPX_DEBUG2( "CMPXCommonContainerHgImp::Request leave err = %d", err ); + } + //Refresh(aBufferStart); // When in main collection view, list can be refresh // without waiting on thumbnails since this list doesn't // require thumbnails. @@ -1230,15 +1234,28 @@ if ( aError == KErrNone && ret ) { + CMPXMedia* currentMedia( NULL ); const CMPXMediaArray& mediaArray = iListBoxArray->MediaArray(); - CMPXMedia* currentMedia( mediaArray.AtL( index ) ); + MPX_TRAPD( err, currentMedia = mediaArray.AtL( index ) ); + if( err != KErrNone ) + { + __ASSERT_DEBUG( EFalse, User::Panic( _L( "CMPXCommonContainerHgImp::ThumbnailReady()" ), err ) ); + return; + } + if ( currentMedia->IsSupported( KMPXMediaGeneralId ) ) { CFbsBitmap* bmap = aThumbnail.DetachBitmap(); if ( bmap ) { - CGulIcon* icon = CGulIcon::NewL(bmap, NULL); - + CGulIcon* icon( NULL ); + MPX_TRAP( err, icon = CGulIcon::NewL( bmap, NULL ) ); + if( err != KErrNone ) + { + __ASSERT_DEBUG( EFalse, User::Panic( _L( "CMPXCommonContainerHgImp::ThumbnailReady()" ), err ) ); + return; + } + if ( iScrollerWithTitle && !iTitleSet ) { iScrollerWithTitle->TitleItem().SetIcon(icon); @@ -1250,9 +1267,13 @@ } else { - iListWidget->ItemL(index).SetIcon(icon); + MPX_TRAPD( err, iListWidget->ItemL(index).SetIcon(icon); ) + if( err != KErrNone ) + { + MPX_DEBUG2( "CMPXCommonContainerHgImp::ThumbnailReady--iListWidget->ItemL(index).SetIcon(icon) leave err%d", err); + } iThumbnailReqMap[index] = ETrue; - RefreshL(index); + Refresh( index ); } } } @@ -1267,21 +1288,22 @@ TInt index = iAlbumArtRequest->iIndex; const TDesC& albumArtUri = *(iAlbumArtRequest->iAlbumArtUri); - + TRAP_IGNORE + ( CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( albumArtUri, KMPXAlbumMimeType ); - delete iAlbumArtRequest->iAlbumArtUri; delete iAlbumArtRequest; // Using negative index as priority will ensure that thumbnail requests // are processed in the order they were requested. TInt ret = NULL; TInt reqId; - TRAPD(err, reqId = (TInt) iThumbnailManager->GetThumbnailL( *source, (TAny*)ret, -index )); + MPX_TRAP(err, reqId = (TInt) iThumbnailManager->GetThumbnailL( *source, (TAny*)ret, -index )); if ( err == KErrNone) { iThumbnailReqHashMap.InsertL( reqId, index ); } CleanupStack::PopAndDestroy( source ); + ); } else { @@ -1302,7 +1324,8 @@ { return; } - + TRAP_IGNORE + ( //no albumart supported SetDefaultIconL(index); if ( iScrollerWithTitle && !iTitleSet ) @@ -1315,9 +1338,10 @@ else { iThumbnailReqMap[index] = ETrue; - RefreshL(index); + Refresh(index); } - } + ); + } } @@ -1338,7 +1362,7 @@ } else { - RefreshL(aIndex); + Refresh(aIndex); } } // --------------------------------------------------------------------------- @@ -1347,7 +1371,7 @@ // avoid too many redraws. In some cases, multiple refresh is unavoidable. // --------------------------------------------------------------------------- // -void CMPXCommonContainerHgImp::RefreshL(TInt aIndex) +void CMPXCommonContainerHgImp::Refresh(TInt aIndex) { MPX_FUNC( "CMPXCommonContainerHgImp::Refresh" ); @@ -2428,7 +2452,7 @@ // CMPXCommonContainerHgImp::SetScrollbarType // ----------------------------------------------------------------------------- // -void CMPXCommonContainerHgImp::SetScrollbarType() +void CMPXCommonContainerHgImp::SetScrollbarTypeL() { MPX_FUNC( "CMPXCommonContainerHgImp::SetScrollbarType" ); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontainermediahelper.cpp --- a/mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontainermediahelper.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commoncontainer/src/mpxcommoncontainermediahelper.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -237,7 +237,7 @@ // Update the list box item *media = aMedia; // Refresh the list box item - iCommonContainer->DrawLbxItem( index ); + iCommonContainer->DrawLbxItemL( index ); break; } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/bwinscw/mpxcommonplaybackviewU.DEF --- a/mpxplugins/viewplugins/views/commonplaybackview/bwinscw/mpxcommonplaybackviewU.DEF Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/bwinscw/mpxcommonplaybackviewU.DEF Tue Apr 27 16:34:37 2010 +0300 @@ -5,109 +5,110 @@ ?SetRepeatMode@CMPXCommonPlaybackViewContainer@@UAEXHH@Z @ 4 NONAME ; void CMPXCommonPlaybackViewContainer::SetRepeatMode(int, int) ?CreateColorIconL@CMPXCommonPlaybackViewLayout@@IAEPAVCGulIcon@@PAVMAknsSkinInstance@@ABVTAknsItemID@@1HABVTDesC16@@HH@Z @ 5 NONAME ; class CGulIcon * CMPXCommonPlaybackViewLayout::CreateColorIconL(class MAknsSkinInstance *, class TAknsItemID const &, class TAknsItemID const &, int, class TDesC16 const &, int, int) ?ConstructL@CMPXCommonPlaybackViewContainer@@UAEXABVTRect@@@Z @ 6 NONAME ; void CMPXCommonPlaybackViewContainer::ConstructL(class TRect const &) - ?UpdateTimeIndicatorsL@CMPXCommonPlaybackViewContainer@@UAEXHH@Z @ 7 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateTimeIndicatorsL(int, int) - ?DisplayConfirmionNoteL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 8 NONAME ; void CMPXCommonPlaybackViewImp::DisplayConfirmionNoteL(int) - ?HandlePlaybackMessage@CMPXCommonPlaybackViewImp@@MAEXPAVCMPXMedia@@H@Z @ 9 NONAME ; void CMPXCommonPlaybackViewImp::HandlePlaybackMessage(class CMPXMedia *, int) - ?HandleSettingChange@CMPXCommonPlaybackViewImp@@MAEXABVTUid@@K@Z @ 10 NONAME ; void CMPXCommonPlaybackViewImp::HandleSettingChange(class TUid const &, unsigned long) - ?HandleForegroundEventL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 11 NONAME ; void CMPXCommonPlaybackViewImp::HandleForegroundEventL(int) - ?HandleErrorL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 12 NONAME ; void CMPXCommonPlaybackViewImp::HandleErrorL(int) - ?GetCurrentPlayerDetails@CMPXCommonPlaybackViewImp@@MAEXXZ @ 13 NONAME ; void CMPXCommonPlaybackViewImp::GetCurrentPlayerDetails(void) - ?UpdateDurationLabelL@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 14 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateDurationLabelL(int) - ?DoHandleStateChangedL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackState@@H@Z @ 15 NONAME ; void CMPXCommonPlaybackViewImp::DoHandleStateChangedL(enum TMPXPlaybackState, int) - ?DisplayInfoNoteL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 16 NONAME ; void CMPXCommonPlaybackViewImp::DisplayInfoNoteL(int) - ?RequestMediaL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 17 NONAME ; void CMPXCommonPlaybackViewImp::RequestMediaL(int) - ?HandleStatusPaneSizeChange@CMPXCommonPlaybackViewImp@@MAEXXZ @ 18 NONAME ; void CMPXCommonPlaybackViewImp::HandleStatusPaneSizeChange(void) - ?UpdateTrackInfoL@CMPXCommonPlaybackViewImp@@MAEXPBVCMPXMedia@@@Z @ 19 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTrackInfoL(class CMPXMedia const *) - ?PrepareMediaForPlaylistLC@CMPXCommonPlaybackViewImp@@MAEPAVCMPXMedia@@ABV2@@Z @ 20 NONAME ; class CMPXMedia * CMPXCommonPlaybackViewImp::PrepareMediaForPlaylistLC(class CMPXMedia const &) - ?ExtractAlbumArtCompleted@CMPXCommonPlaybackViewContainer@@UAEXPAVCFbsBitmap@@H@Z @ 21 NONAME ; void CMPXCommonPlaybackViewContainer::ExtractAlbumArtCompleted(class CFbsBitmap *, int) - ?HandleViewActivation@CMPXCommonPlaybackViewImp@@MAEXABVTUid@@0@Z @ 22 NONAME ; void CMPXCommonPlaybackViewImp::HandleViewActivation(class TUid const &, class TUid const &) - ?IsCommandSupportedL@CMPXCommonPlaybackViewImp@@MAEHXZ @ 23 NONAME ; int CMPXCommonPlaybackViewImp::IsCommandSupportedL(void) - ?GetIndicatorIconMaskL@CMPXCommonPlaybackViewLayout@@UAEPAVCGulIcon@@W4TMPXPbvIndicator@@@Z @ 24 NONAME ; class CGulIcon * CMPXCommonPlaybackViewLayout::GetIndicatorIconMaskL(enum TMPXPbvIndicator) - ?GetButtonBitmapsL@CMPXCommonPlaybackViewLayout@@UAEXW4TMPXPbvButton@@HAAPAVCFbsBitmap@@1@Z @ 25 NONAME ; void CMPXCommonPlaybackViewLayout::GetButtonBitmapsL(enum TMPXPbvButton, int, class CFbsBitmap * &, class CFbsBitmap * &) - ?UpdateBackgroundSkinControlContext@CMPXCommonPlaybackViewContainer@@MAEXABVTRect@@@Z @ 26 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateBackgroundSkinControlContext(class TRect const &) - ?HandleOpenL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXCollectionPlaylist@@H@Z @ 27 NONAME ; void CMPXCommonPlaybackViewImp::HandleOpenL(class CMPXCollectionPlaylist const &, int) - ?GetTextVariant@CMPXCommonPlaybackViewLayout@@IAE?AW4TMPXPbvLayoutVariants@@W4TMPXPbvTextIndicator@@@Z @ 28 NONAME ; enum TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetTextVariant(enum TMPXPbvTextIndicator) - ??1CMPXCommonPlaybackViewContainer@@UAE@XZ @ 29 NONAME ; CMPXCommonPlaybackViewContainer::~CMPXCommonPlaybackViewContainer(void) - ?SetRealAudioMode@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 30 NONAME ; void CMPXCommonPlaybackViewContainer::SetRealAudioMode(int) - ?DetermineLayoutVariant@CMPXCommonPlaybackViewLayout@@IAE?AW4TMPXPbvLayoutVariants@@XZ @ 31 NONAME ; enum TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::DetermineLayoutVariant(void) - ?SetMode@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPbvPlaybackMode@@@Z @ 32 NONAME ; void CMPXCommonPlaybackViewContainer::SetMode(enum TMPXPbvPlaybackMode) - ?AddPlayersNamesToMenuL@CMPXCommonPlaybackViewImp@@MAEXAAVCEikMenuPane@@@Z @ 33 NONAME ; void CMPXCommonPlaybackViewImp::AddPlayersNamesToMenuL(class CEikMenuPane &) - ?DynInitMenuPaneL@CMPXCommonPlaybackViewImp@@MAEXHPAVCEikMenuPane@@@Z @ 34 NONAME ; void CMPXCommonPlaybackViewImp::DynInitMenuPaneL(int, class CEikMenuPane *) - ?HandlePropertyL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackProperty@@HH@Z @ 35 NONAME ; void CMPXCommonPlaybackViewImp::HandlePropertyL(enum TMPXPlaybackProperty, int, int) - ?SkipOnErrorL@CMPXCommonPlaybackViewImp@@MAEXHH@Z @ 36 NONAME ; void CMPXCommonPlaybackViewImp::SkipOnErrorL(int, int) - ?HandleOpenL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@HHH@Z @ 37 NONAME ; void CMPXCommonPlaybackViewImp::HandleOpenL(class CMPXMedia const &, int, int, int) - ?LayoutLabel@CMPXCommonPlaybackViewLayout@@UAEXPAVCEikLabel@@ABVTRect@@W4TMPXPbvTextIndicator@@HH@Z @ 38 NONAME ; void CMPXCommonPlaybackViewLayout::LayoutLabel(class CEikLabel *, class TRect const &, enum TMPXPbvTextIndicator, int, int) - ?RefreshProgressBar@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 39 NONAME ; void CMPXCommonPlaybackViewContainer::RefreshProgressBar(void) - ?HandleLayoutChange@CMPXCommonPlaybackViewImp@@MAEXXZ @ 40 NONAME ; void CMPXCommonPlaybackViewImp::HandleLayoutChange(void) - ?IsUpnpVisible@CMPXCommonPlaybackViewImp@@MAEHXZ @ 41 NONAME ; int CMPXCommonPlaybackViewImp::IsUpnpVisible(void) - ?CountComponentControls@CMPXCommonPlaybackViewContainer@@MBEHXZ @ 42 NONAME ; int CMPXCommonPlaybackViewContainer::CountComponentControls(void) const - ?DoHandlePropertyL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackProperty@@HH@Z @ 43 NONAME ; void CMPXCommonPlaybackViewImp::DoHandlePropertyL(enum TMPXPlaybackProperty, int, int) - ?ExtractAlbumArtStarted@CMPXCommonPlaybackViewContainer@@UAEXXZ @ 44 NONAME ; void CMPXCommonPlaybackViewContainer::ExtractAlbumArtStarted(void) - ?UpdateDownloadStateLabelL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 45 NONAME ; void CMPXCommonPlaybackViewImp::UpdateDownloadStateLabelL(void) - ?SetFMTXMode@CMPXCommonPlaybackViewContainer@@MAEXH@Z @ 46 NONAME ; void CMPXCommonPlaybackViewContainer::SetFMTXMode(int) - ?ProcessCommandL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 47 NONAME ; void CMPXCommonPlaybackViewImp::ProcessCommandL(int) - ?LaunchMusicSettingsL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 48 NONAME ; void CMPXCommonPlaybackViewImp::LaunchMusicSettingsL(void) - ?GetNewSongPosition@CMPXCommonPlaybackViewContainer@@UAEHXZ @ 49 NONAME ; int CMPXCommonPlaybackViewContainer::GetNewSongPosition(void) - ?UpdateMiddleSoftKeyDisplayL@CMPXCommonPlaybackViewImp@@IAEXXZ @ 50 NONAME ; void CMPXCommonPlaybackViewImp::UpdateMiddleSoftKeyDisplayL(void) - ?SizeChanged@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 51 NONAME ; void CMPXCommonPlaybackViewContainer::SizeChanged(void) - ?HandleOperationCompleteL@CMPXCommonPlaybackViewImp@@MAEXW4TCHelperOperation@@HPAX@Z @ 52 NONAME ; void CMPXCommonPlaybackViewImp::HandleOperationCompleteL(enum TCHelperOperation, int, void *) - ?LaunchFMTransmitterL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 53 NONAME ; void CMPXCommonPlaybackViewImp::LaunchFMTransmitterL(void) - ?UpdateViewL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 54 NONAME ; void CMPXCommonPlaybackViewImp::UpdateViewL(void) - ?DrawIndicator@CMPXCommonPlaybackViewContainer@@MBEXAAVCWindowGc@@ABVTRect@@1PBVCGulIcon@@H@Z @ 55 NONAME ; void CMPXCommonPlaybackViewContainer::DrawIndicator(class CWindowGc &, class TRect const &, class TRect const &, class CGulIcon const *, int) const - ?FreeIcons@CMPXCommonPlaybackViewContainer@@IAEXXZ @ 56 NONAME ; void CMPXCommonPlaybackViewContainer::FreeIcons(void) - ?HandleSubPlayerNamesL@CMPXCommonPlaybackViewImp@@MAEXVTUid@@PBVMDesC16Array@@HH@Z @ 57 NONAME ; void CMPXCommonPlaybackViewImp::HandleSubPlayerNamesL(class TUid, class MDesC16Array const *, int, int) - ?UpdateLabelL@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPbvTextIndicator@@ABVTDesC16@@@Z @ 58 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateLabelL(enum TMPXPbvTextIndicator, class TDesC16 const &) - ?DoDeactivate@CMPXCommonPlaybackViewImp@@MAEXXZ @ 59 NONAME ; void CMPXCommonPlaybackViewImp::DoDeactivate(void) - ?HandleCommandComplete@CMPXCommonPlaybackViewImp@@MAEXPAVCMPXMedia@@H@Z @ 60 NONAME ; void CMPXCommonPlaybackViewImp::HandleCommandComplete(class CMPXMedia *, int) - ?HandleButtonCommandL@CMPXCommonPlaybackViewContainer@@MAEXH@Z @ 61 NONAME ; void CMPXCommonPlaybackViewContainer::HandleButtonCommandL(int) - ?OfferKeyEventL@CMPXCommonPlaybackViewContainer@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 62 NONAME ; enum TKeyResponse CMPXCommonPlaybackViewContainer::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?SetRandomMode@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 63 NONAME ; void CMPXCommonPlaybackViewContainer::SetRandomMode(int) - ?HandleCollectionMessage@CMPXCommonPlaybackViewImp@@MAEXPAVCMPXMedia@@H@Z @ 64 NONAME ; void CMPXCommonPlaybackViewImp::HandleCollectionMessage(class CMPXMedia *, int) - ?ComponentControl@CMPXCommonPlaybackViewContainer@@MBEPAVCCoeControl@@H@Z @ 65 NONAME ; class CCoeControl * CMPXCommonPlaybackViewContainer::ComponentControl(int) const - ?UpdateTrackPosInPlaylistL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 66 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTrackPosInPlaylistL(void) - ?LaunchEqualizerL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 67 NONAME ; void CMPXCommonPlaybackViewImp::LaunchEqualizerL(void) - ?HandleAllTracksInvalidL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 68 NONAME ; void CMPXCommonPlaybackViewImp::HandleAllTracksInvalidL(void) - ?AddToNewPlaylistL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 69 NONAME ; void CMPXCommonPlaybackViewImp::AddToNewPlaylistL(void) - ?IndicatorLayout@CMPXCommonPlaybackViewLayout@@UAE?AVTRect@@ABV2@W4TMPXPbvIndicator@@@Z @ 70 NONAME ; class TRect CMPXCommonPlaybackViewLayout::IndicatorLayout(class TRect const &, enum TMPXPbvIndicator) - ?UpdateTrackPlaybackPositionL@CMPXCommonPlaybackViewImp@@MAEXHH@Z @ 71 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTrackPlaybackPositionL(int, int) - ?UpdateTitlePaneL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 72 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTitlePaneL(void) - ?HandlePointerEventL@CMPXCommonPlaybackViewContainer@@MAEXABUTPointerEvent@@@Z @ 73 NONAME ; void CMPXCommonPlaybackViewContainer::HandlePointerEventL(struct TPointerEvent const &) - ?DoActivateL@CMPXCommonPlaybackViewImp@@MAEXABVTVwsViewId@@VTUid@@ABVTDesC8@@@Z @ 74 NONAME ; void CMPXCommonPlaybackViewImp::DoActivateL(class TVwsViewId const &, class TUid, class TDesC8 const &) - ?SelectNewPlayerL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 75 NONAME ; void CMPXCommonPlaybackViewImp::SelectNewPlayerL(int) - ?DoHandlePlaybackMessageL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@@Z @ 76 NONAME ; void CMPXCommonPlaybackViewImp::DoHandlePlaybackMessageL(class CMPXMedia const &) - ?UpdateButtons@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPlaybackState@@@Z @ 77 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateButtons(enum TMPXPlaybackState) - ?ButtonLayout@CMPXCommonPlaybackViewLayout@@UAE?AVTRect@@ABV2@H@Z @ 78 NONAME ; class TRect CMPXCommonPlaybackViewLayout::ButtonLayout(class TRect const &, int) - ?UpdateProgressBarGraphics@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 79 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateProgressBarGraphics(void) - ?UpdateFMTransmitterInfoL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 80 NONAME ; void CMPXCommonPlaybackViewImp::UpdateFMTransmitterInfoL(int) - ?HandleMediaL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@H@Z @ 81 NONAME ; void CMPXCommonPlaybackViewImp::HandleMediaL(class CMPXMedia const &, int) - ?UpdateAlbumArtL@CMPXCommonPlaybackViewImp@@MAEXPBVCMPXMedia@@@Z @ 82 NONAME ; void CMPXCommonPlaybackViewImp::UpdateAlbumArtL(class CMPXMedia const *) - ?HandlePSEvent@CMPXCommonPlaybackViewImp@@MAEXVTUid@@H@Z @ 83 NONAME ; void CMPXCommonPlaybackViewImp::HandlePSEvent(class TUid, int) - ?HandleViewUpdate@CMPXCommonPlaybackViewImp@@MAEXVTUid@@W4TViewUpdateEvent@MMPXViewActivationObserver@@HH@Z @ 84 NONAME ; void CMPXCommonPlaybackViewImp::HandleViewUpdate(class TUid, enum MMPXViewActivationObserver::TViewUpdateEvent, int, int) - ?RedrawRect@CMPXCommonPlaybackViewContainer@@MBEXABVTRect@@@Z @ 85 NONAME ; void CMPXCommonPlaybackViewContainer::RedrawRect(class TRect const &) const - ?HandleCommandL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 86 NONAME ; void CMPXCommonPlaybackViewImp::HandleCommandL(int) - ??1CMPXCommonPlaybackViewImp@@UAE@XZ @ 87 NONAME ; CMPXCommonPlaybackViewImp::~CMPXCommonPlaybackViewImp(void) - ?HandleForegroundEventL@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 88 NONAME ; void CMPXCommonPlaybackViewContainer::HandleForegroundEventL(int) - ?UpdateLabelColorsL@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 89 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateLabelColorsL(void) - ?IsEmbedded@CMPXCommonPlaybackViewImp@@MBEHXZ @ 90 NONAME ; int CMPXCommonPlaybackViewImp::IsEmbedded(void) const - ?SimpleEmbeddedMode@CMPXCommonPlaybackViewImp@@MBEHXZ @ 91 NONAME ; int CMPXCommonPlaybackViewImp::SimpleEmbeddedMode(void) const - ?UpdateToolbar@CMPXCommonPlaybackViewImp@@IAEXXZ @ 92 NONAME ; void CMPXCommonPlaybackViewImp::UpdateToolbar(void) - ?UpdateLayout@CMPXCommonPlaybackViewContainer@@UAEXXZ @ 93 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateLayout(void) - ?ButtonLayout@CMPXCommonPlaybackViewLayout@@UAE?AVTRect@@ABV2@@Z @ 94 NONAME ; class TRect CMPXCommonPlaybackViewLayout::ButtonLayout(class TRect const &) - ?UpdatePlaybackState@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackState@@@Z @ 95 NONAME ; void CMPXCommonPlaybackViewImp::UpdatePlaybackState(enum TMPXPlaybackState) - ?HandleResourceChange@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 96 NONAME ; void CMPXCommonPlaybackViewContainer::HandleResourceChange(int) - ?AddPlayerNameToMenuL@CMPXCommonPlaybackViewImp@@MAEXAAVCEikMenuPane@@HAAVMMPXPlayerManager@@AAW4TMPXPlaybackPlayerType@@ABVTDesC16@@@Z @ 97 NONAME ; void CMPXCommonPlaybackViewImp::AddPlayerNameToMenuL(class CEikMenuPane &, int, class MMPXPlayerManager &, enum TMPXPlaybackPlayerType &, class TDesC16 const &) - ?Draw@CMPXCommonPlaybackViewContainer@@MBEXABVTRect@@@Z @ 98 NONAME ; void CMPXCommonPlaybackViewContainer::Draw(class TRect const &) const - ?ConstructL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 99 NONAME ; void CMPXCommonPlaybackViewImp::ConstructL(void) - ?DoLayoutLabelL@CMPXCommonPlaybackViewLayout@@IAEXPAVCEikLabel@@ABVTRect@@HHH@Z @ 100 NONAME ; void CMPXCommonPlaybackViewLayout::DoLayoutLabelL(class CEikLabel *, class TRect const &, int, int, int) - ?HandleViewActivation@CMPXCommonPlaybackViewImp@@MAEXABVTVwsViewId@@0@Z @ 101 NONAME ; void CMPXCommonPlaybackViewImp::HandleViewActivation(class TVwsViewId const &, class TVwsViewId const &) - ?AddToSavedPlaylistL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 102 NONAME ; void CMPXCommonPlaybackViewImp::AddToSavedPlaylistL(void) - ?CreateLabelsL@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 103 NONAME ; void CMPXCommonPlaybackViewContainer::CreateLabelsL(void) - ?CreateIconsL@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 104 NONAME ; void CMPXCommonPlaybackViewContainer::CreateIconsL(void) - ?UpdateSoftkeyColors@CMPXCommonPlaybackViewContainer@@UAEXXZ @ 105 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateSoftkeyColors(void) - ?StartMarquee@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPbvTextIndicator@@@Z @ 106 NONAME ; void CMPXCommonPlaybackViewContainer::StartMarquee(enum TMPXPbvTextIndicator) - ?GetIndicatorVariant@CMPXCommonPlaybackViewLayout@@IAE?AW4TMPXPbvLayoutVariants@@W4TMPXPbvIndicator@@@Z @ 107 NONAME ; enum TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetIndicatorVariant(enum TMPXPbvIndicator) - ?HandleCollectionMediaL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@H@Z @ 108 NONAME ; void CMPXCommonPlaybackViewImp::HandleCollectionMediaL(class CMPXMedia const &, int) - ?GetHelpContext@CMPXCommonPlaybackViewContainer@@UBEXAAVTCoeHelpContext@@@Z @ 109 NONAME ; void CMPXCommonPlaybackViewContainer::GetHelpContext(class TCoeHelpContext &) const - ?LightStatusChanged@CMPXCommonPlaybackViewContainer@@UAEXHW4TLightStatus@CHWRMLight@@@Z @ 110 NONAME ; void CMPXCommonPlaybackViewContainer::LightStatusChanged(int, enum CHWRMLight::TLightStatus) - ?LaunchFileDetailsDialogL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 111 NONAME ; void CMPXCommonPlaybackViewImp::LaunchFileDetailsDialogL(void) + ?UpdateToolbarL@CMPXCommonPlaybackViewImp@@IAEXXZ @ 7 NONAME ; void CMPXCommonPlaybackViewImp::UpdateToolbarL(void) + ?UpdateTimeIndicatorsL@CMPXCommonPlaybackViewContainer@@UAEXHH@Z @ 8 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateTimeIndicatorsL(int, int) + ?DisplayConfirmionNoteL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 9 NONAME ; void CMPXCommonPlaybackViewImp::DisplayConfirmionNoteL(int) + ?LightStatusChanged@CMPXCommonPlaybackViewContainer@@UAEXHW4TLightStatus@CHWRMLight@@@Z @ 10 NONAME ; void CMPXCommonPlaybackViewContainer::LightStatusChanged(int, enum CHWRMLight::TLightStatus) + ?HandlePlaybackMessage@CMPXCommonPlaybackViewImp@@MAEXPAVCMPXMedia@@H@Z @ 11 NONAME ; void CMPXCommonPlaybackViewImp::HandlePlaybackMessage(class CMPXMedia *, int) + ?HandleSettingChange@CMPXCommonPlaybackViewImp@@MAEXABVTUid@@K@Z @ 12 NONAME ; void CMPXCommonPlaybackViewImp::HandleSettingChange(class TUid const &, unsigned long) + ?HandleForegroundEventL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 13 NONAME ; void CMPXCommonPlaybackViewImp::HandleForegroundEventL(int) + ?HandleErrorL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 14 NONAME ; void CMPXCommonPlaybackViewImp::HandleErrorL(int) + ?GetCurrentPlayerDetails@CMPXCommonPlaybackViewImp@@MAEXXZ @ 15 NONAME ; void CMPXCommonPlaybackViewImp::GetCurrentPlayerDetails(void) + ?UpdateDurationLabelL@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 16 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateDurationLabelL(int) + ?DoHandleStateChangedL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackState@@H@Z @ 17 NONAME ; void CMPXCommonPlaybackViewImp::DoHandleStateChangedL(enum TMPXPlaybackState, int) + ?DisplayInfoNoteL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 18 NONAME ; void CMPXCommonPlaybackViewImp::DisplayInfoNoteL(int) + ?RequestMediaL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 19 NONAME ; void CMPXCommonPlaybackViewImp::RequestMediaL(int) + ?LaunchFileDetailsDialogL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 20 NONAME ; void CMPXCommonPlaybackViewImp::LaunchFileDetailsDialogL(void) + ?HandleStatusPaneSizeChange@CMPXCommonPlaybackViewImp@@MAEXXZ @ 21 NONAME ; void CMPXCommonPlaybackViewImp::HandleStatusPaneSizeChange(void) + ?UpdateTrackInfoL@CMPXCommonPlaybackViewImp@@MAEXPBVCMPXMedia@@@Z @ 22 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTrackInfoL(class CMPXMedia const *) + ?PrepareMediaForPlaylistLC@CMPXCommonPlaybackViewImp@@MAEPAVCMPXMedia@@ABV2@@Z @ 23 NONAME ; class CMPXMedia * CMPXCommonPlaybackViewImp::PrepareMediaForPlaylistLC(class CMPXMedia const &) + ?ExtractAlbumArtCompleted@CMPXCommonPlaybackViewContainer@@UAEXPAVCFbsBitmap@@H@Z @ 24 NONAME ; void CMPXCommonPlaybackViewContainer::ExtractAlbumArtCompleted(class CFbsBitmap *, int) + ?HandleViewActivation@CMPXCommonPlaybackViewImp@@MAEXABVTUid@@0@Z @ 25 NONAME ; void CMPXCommonPlaybackViewImp::HandleViewActivation(class TUid const &, class TUid const &) + ?IsCommandSupportedL@CMPXCommonPlaybackViewImp@@MAEHXZ @ 26 NONAME ; int CMPXCommonPlaybackViewImp::IsCommandSupportedL(void) + ?GetIndicatorIconMaskL@CMPXCommonPlaybackViewLayout@@UAEPAVCGulIcon@@W4TMPXPbvIndicator@@@Z @ 27 NONAME ; class CGulIcon * CMPXCommonPlaybackViewLayout::GetIndicatorIconMaskL(enum TMPXPbvIndicator) + ?GetButtonBitmapsL@CMPXCommonPlaybackViewLayout@@UAEXW4TMPXPbvButton@@HAAPAVCFbsBitmap@@1@Z @ 28 NONAME ; void CMPXCommonPlaybackViewLayout::GetButtonBitmapsL(enum TMPXPbvButton, int, class CFbsBitmap * &, class CFbsBitmap * &) + ?UpdateBackgroundSkinControlContext@CMPXCommonPlaybackViewContainer@@MAEXABVTRect@@@Z @ 29 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateBackgroundSkinControlContext(class TRect const &) + ?HandleOpenL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXCollectionPlaylist@@H@Z @ 30 NONAME ; void CMPXCommonPlaybackViewImp::HandleOpenL(class CMPXCollectionPlaylist const &, int) + ??1CMPXCommonPlaybackViewContainer@@UAE@XZ @ 31 NONAME ; CMPXCommonPlaybackViewContainer::~CMPXCommonPlaybackViewContainer(void) + ?SetRealAudioMode@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 32 NONAME ; void CMPXCommonPlaybackViewContainer::SetRealAudioMode(int) + ?DetermineLayoutVariant@CMPXCommonPlaybackViewLayout@@IAE?AW4TMPXPbvLayoutVariants@@XZ @ 33 NONAME ; enum TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::DetermineLayoutVariant(void) + ?SetMode@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPbvPlaybackMode@@@Z @ 34 NONAME ; void CMPXCommonPlaybackViewContainer::SetMode(enum TMPXPbvPlaybackMode) + ?AddPlayersNamesToMenuL@CMPXCommonPlaybackViewImp@@MAEXAAVCEikMenuPane@@@Z @ 35 NONAME ; void CMPXCommonPlaybackViewImp::AddPlayersNamesToMenuL(class CEikMenuPane &) + ?DynInitMenuPaneL@CMPXCommonPlaybackViewImp@@MAEXHPAVCEikMenuPane@@@Z @ 36 NONAME ; void CMPXCommonPlaybackViewImp::DynInitMenuPaneL(int, class CEikMenuPane *) + ?HandlePropertyL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackProperty@@HH@Z @ 37 NONAME ; void CMPXCommonPlaybackViewImp::HandlePropertyL(enum TMPXPlaybackProperty, int, int) + ?SkipOnErrorL@CMPXCommonPlaybackViewImp@@MAEXHH@Z @ 38 NONAME ; void CMPXCommonPlaybackViewImp::SkipOnErrorL(int, int) + ?HandleOpenL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@HHH@Z @ 39 NONAME ; void CMPXCommonPlaybackViewImp::HandleOpenL(class CMPXMedia const &, int, int, int) + ?LayoutLabel@CMPXCommonPlaybackViewLayout@@UAEXPAVCEikLabel@@ABVTRect@@W4TMPXPbvTextIndicator@@HH@Z @ 40 NONAME ; void CMPXCommonPlaybackViewLayout::LayoutLabel(class CEikLabel *, class TRect const &, enum TMPXPbvTextIndicator, int, int) + ?RefreshProgressBar@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 41 NONAME ; void CMPXCommonPlaybackViewContainer::RefreshProgressBar(void) + ?HandleLayoutChange@CMPXCommonPlaybackViewImp@@MAEXXZ @ 42 NONAME ; void CMPXCommonPlaybackViewImp::HandleLayoutChange(void) + ?CountComponentControls@CMPXCommonPlaybackViewContainer@@MBEHXZ @ 43 NONAME ; int CMPXCommonPlaybackViewContainer::CountComponentControls(void) const + ?DoHandlePropertyL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackProperty@@HH@Z @ 44 NONAME ; void CMPXCommonPlaybackViewImp::DoHandlePropertyL(enum TMPXPlaybackProperty, int, int) + ?ExtractAlbumArtStarted@CMPXCommonPlaybackViewContainer@@UAEXXZ @ 45 NONAME ; void CMPXCommonPlaybackViewContainer::ExtractAlbumArtStarted(void) + ?UpdateDownloadStateLabelL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 46 NONAME ; void CMPXCommonPlaybackViewImp::UpdateDownloadStateLabelL(void) + ?SetFMTXMode@CMPXCommonPlaybackViewContainer@@MAEXH@Z @ 47 NONAME ; void CMPXCommonPlaybackViewContainer::SetFMTXMode(int) + ?ProcessCommandL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 48 NONAME ; void CMPXCommonPlaybackViewImp::ProcessCommandL(int) + ?LaunchMusicSettingsL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 49 NONAME ; void CMPXCommonPlaybackViewImp::LaunchMusicSettingsL(void) + ?GetNewSongPosition@CMPXCommonPlaybackViewContainer@@UAEHXZ @ 50 NONAME ; int CMPXCommonPlaybackViewContainer::GetNewSongPosition(void) + ?UpdateMiddleSoftKeyDisplayL@CMPXCommonPlaybackViewImp@@IAEXXZ @ 51 NONAME ; void CMPXCommonPlaybackViewImp::UpdateMiddleSoftKeyDisplayL(void) + ?SizeChanged@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 52 NONAME ; void CMPXCommonPlaybackViewContainer::SizeChanged(void) + ?HandleOperationCompleteL@CMPXCommonPlaybackViewImp@@MAEXW4TCHelperOperation@@HPAX@Z @ 53 NONAME ; void CMPXCommonPlaybackViewImp::HandleOperationCompleteL(enum TCHelperOperation, int, void *) + ?LaunchFMTransmitterL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 54 NONAME ; void CMPXCommonPlaybackViewImp::LaunchFMTransmitterL(void) + ?UpdateViewL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 55 NONAME ; void CMPXCommonPlaybackViewImp::UpdateViewL(void) + ?DrawIndicator@CMPXCommonPlaybackViewContainer@@MBEXAAVCWindowGc@@ABVTRect@@1PBVCGulIcon@@H@Z @ 56 NONAME ; void CMPXCommonPlaybackViewContainer::DrawIndicator(class CWindowGc &, class TRect const &, class TRect const &, class CGulIcon const *, int) const + ?FreeIcons@CMPXCommonPlaybackViewContainer@@IAEXXZ @ 57 NONAME ; void CMPXCommonPlaybackViewContainer::FreeIcons(void) + ?GetIndicatorVariantL@CMPXCommonPlaybackViewLayout@@IAE?AW4TMPXPbvLayoutVariants@@W4TMPXPbvIndicator@@@Z @ 58 NONAME ; enum TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetIndicatorVariantL(enum TMPXPbvIndicator) + ?HandleSubPlayerNamesL@CMPXCommonPlaybackViewImp@@MAEXVTUid@@PBVMDesC16Array@@HH@Z @ 59 NONAME ; void CMPXCommonPlaybackViewImp::HandleSubPlayerNamesL(class TUid, class MDesC16Array const *, int, int) + ?UpdateLabelL@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPbvTextIndicator@@ABVTDesC16@@@Z @ 60 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateLabelL(enum TMPXPbvTextIndicator, class TDesC16 const &) + ?DoDeactivate@CMPXCommonPlaybackViewImp@@MAEXXZ @ 61 NONAME ; void CMPXCommonPlaybackViewImp::DoDeactivate(void) + ?HandleCommandComplete@CMPXCommonPlaybackViewImp@@MAEXPAVCMPXMedia@@H@Z @ 62 NONAME ; void CMPXCommonPlaybackViewImp::HandleCommandComplete(class CMPXMedia *, int) + ?HandleButtonCommandL@CMPXCommonPlaybackViewContainer@@MAEXH@Z @ 63 NONAME ; void CMPXCommonPlaybackViewContainer::HandleButtonCommandL(int) + ?IsUpnpVisibleL@CMPXCommonPlaybackViewImp@@MAEHXZ @ 64 NONAME ; int CMPXCommonPlaybackViewImp::IsUpnpVisibleL(void) + ?OfferKeyEventL@CMPXCommonPlaybackViewContainer@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 65 NONAME ; enum TKeyResponse CMPXCommonPlaybackViewContainer::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?SetRandomMode@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 66 NONAME ; void CMPXCommonPlaybackViewContainer::SetRandomMode(int) + ?HandleCollectionMessage@CMPXCommonPlaybackViewImp@@MAEXPAVCMPXMedia@@H@Z @ 67 NONAME ; void CMPXCommonPlaybackViewImp::HandleCollectionMessage(class CMPXMedia *, int) + ?ComponentControl@CMPXCommonPlaybackViewContainer@@MBEPAVCCoeControl@@H@Z @ 68 NONAME ; class CCoeControl * CMPXCommonPlaybackViewContainer::ComponentControl(int) const + ?UpdateTrackPosInPlaylistL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 69 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTrackPosInPlaylistL(void) + ?LaunchEqualizerL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 70 NONAME ; void CMPXCommonPlaybackViewImp::LaunchEqualizerL(void) + ?HandleAllTracksInvalidL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 71 NONAME ; void CMPXCommonPlaybackViewImp::HandleAllTracksInvalidL(void) + ?AddToNewPlaylistL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 72 NONAME ; void CMPXCommonPlaybackViewImp::AddToNewPlaylistL(void) + ?IndicatorLayout@CMPXCommonPlaybackViewLayout@@UAE?AVTRect@@ABV2@W4TMPXPbvIndicator@@@Z @ 73 NONAME ; class TRect CMPXCommonPlaybackViewLayout::IndicatorLayout(class TRect const &, enum TMPXPbvIndicator) + ?UpdateTrackPlaybackPositionL@CMPXCommonPlaybackViewImp@@MAEXHH@Z @ 74 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTrackPlaybackPositionL(int, int) + ?UpdateTitlePaneL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 75 NONAME ; void CMPXCommonPlaybackViewImp::UpdateTitlePaneL(void) + ?HandlePointerEventL@CMPXCommonPlaybackViewContainer@@MAEXABUTPointerEvent@@@Z @ 76 NONAME ; void CMPXCommonPlaybackViewContainer::HandlePointerEventL(struct TPointerEvent const &) + ?DoActivateL@CMPXCommonPlaybackViewImp@@MAEXABVTVwsViewId@@VTUid@@ABVTDesC8@@@Z @ 77 NONAME ; void CMPXCommonPlaybackViewImp::DoActivateL(class TVwsViewId const &, class TUid, class TDesC8 const &) + ?SelectNewPlayerL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 78 NONAME ; void CMPXCommonPlaybackViewImp::SelectNewPlayerL(int) + ?DoHandlePlaybackMessageL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@@Z @ 79 NONAME ; void CMPXCommonPlaybackViewImp::DoHandlePlaybackMessageL(class CMPXMedia const &) + ?UpdatePlaybackStateL@CMPXCommonPlaybackViewImp@@MAEXW4TMPXPlaybackState@@@Z @ 80 NONAME ; void CMPXCommonPlaybackViewImp::UpdatePlaybackStateL(enum TMPXPlaybackState) + ?UpdateButtons@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPlaybackState@@@Z @ 81 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateButtons(enum TMPXPlaybackState) + ?ButtonLayout@CMPXCommonPlaybackViewLayout@@UAE?AVTRect@@ABV2@H@Z @ 82 NONAME ; class TRect CMPXCommonPlaybackViewLayout::ButtonLayout(class TRect const &, int) + ?GetTextVariantL@CMPXCommonPlaybackViewLayout@@IAE?AW4TMPXPbvLayoutVariants@@W4TMPXPbvTextIndicator@@@Z @ 83 NONAME ; enum TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetTextVariantL(enum TMPXPbvTextIndicator) + ?UpdateProgressBarGraphics@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 84 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateProgressBarGraphics(void) + ?UpdateFMTransmitterInfoL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 85 NONAME ; void CMPXCommonPlaybackViewImp::UpdateFMTransmitterInfoL(int) + ?HandleMediaL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@H@Z @ 86 NONAME ; void CMPXCommonPlaybackViewImp::HandleMediaL(class CMPXMedia const &, int) + ?UpdateAlbumArtL@CMPXCommonPlaybackViewImp@@MAEXPBVCMPXMedia@@@Z @ 87 NONAME ; void CMPXCommonPlaybackViewImp::UpdateAlbumArtL(class CMPXMedia const *) + ?HandlePSEvent@CMPXCommonPlaybackViewImp@@MAEXVTUid@@H@Z @ 88 NONAME ; void CMPXCommonPlaybackViewImp::HandlePSEvent(class TUid, int) + ?HandleViewUpdate@CMPXCommonPlaybackViewImp@@MAEXVTUid@@W4TViewUpdateEvent@MMPXViewActivationObserver@@HH@Z @ 89 NONAME ; void CMPXCommonPlaybackViewImp::HandleViewUpdate(class TUid, enum MMPXViewActivationObserver::TViewUpdateEvent, int, int) + ?RedrawRect@CMPXCommonPlaybackViewContainer@@MBEXABVTRect@@@Z @ 90 NONAME ; void CMPXCommonPlaybackViewContainer::RedrawRect(class TRect const &) const + ?HandleCommandL@CMPXCommonPlaybackViewImp@@MAEXH@Z @ 91 NONAME ; void CMPXCommonPlaybackViewImp::HandleCommandL(int) + ??1CMPXCommonPlaybackViewImp@@UAE@XZ @ 92 NONAME ; CMPXCommonPlaybackViewImp::~CMPXCommonPlaybackViewImp(void) + ?HandleForegroundEventL@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 93 NONAME ; void CMPXCommonPlaybackViewContainer::HandleForegroundEventL(int) + ?UpdateLabelColorsL@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 94 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateLabelColorsL(void) + ?IsEmbedded@CMPXCommonPlaybackViewImp@@MBEHXZ @ 95 NONAME ; int CMPXCommonPlaybackViewImp::IsEmbedded(void) const + ?SimpleEmbeddedMode@CMPXCommonPlaybackViewImp@@MBEHXZ @ 96 NONAME ; int CMPXCommonPlaybackViewImp::SimpleEmbeddedMode(void) const + ?UpdateLayout@CMPXCommonPlaybackViewContainer@@UAEXXZ @ 97 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateLayout(void) + ?ButtonLayout@CMPXCommonPlaybackViewLayout@@UAE?AVTRect@@ABV2@@Z @ 98 NONAME ; class TRect CMPXCommonPlaybackViewLayout::ButtonLayout(class TRect const &) + ?HandleResourceChange@CMPXCommonPlaybackViewContainer@@UAEXH@Z @ 99 NONAME ; void CMPXCommonPlaybackViewContainer::HandleResourceChange(int) + ?AddPlayerNameToMenuL@CMPXCommonPlaybackViewImp@@MAEXAAVCEikMenuPane@@HAAVMMPXPlayerManager@@AAW4TMPXPlaybackPlayerType@@ABVTDesC16@@@Z @ 100 NONAME ; void CMPXCommonPlaybackViewImp::AddPlayerNameToMenuL(class CEikMenuPane &, int, class MMPXPlayerManager &, enum TMPXPlaybackPlayerType &, class TDesC16 const &) + ?Draw@CMPXCommonPlaybackViewContainer@@MBEXABVTRect@@@Z @ 101 NONAME ; void CMPXCommonPlaybackViewContainer::Draw(class TRect const &) const + ?ConstructL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 102 NONAME ; void CMPXCommonPlaybackViewImp::ConstructL(void) + ?DoLayoutLabelL@CMPXCommonPlaybackViewLayout@@IAEXPAVCEikLabel@@ABVTRect@@HHH@Z @ 103 NONAME ; void CMPXCommonPlaybackViewLayout::DoLayoutLabelL(class CEikLabel *, class TRect const &, int, int, int) + ?HandleViewActivation@CMPXCommonPlaybackViewImp@@MAEXABVTVwsViewId@@0@Z @ 104 NONAME ; void CMPXCommonPlaybackViewImp::HandleViewActivation(class TVwsViewId const &, class TVwsViewId const &) + ?InitCommonLayoutL@CMPXCommonPlaybackViewLayout@@IAEXXZ @ 105 NONAME ; void CMPXCommonPlaybackViewLayout::InitCommonLayoutL(void) + ?AddToSavedPlaylistL@CMPXCommonPlaybackViewImp@@MAEXXZ @ 106 NONAME ; void CMPXCommonPlaybackViewImp::AddToSavedPlaylistL(void) + ?CreateLabelsL@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 107 NONAME ; void CMPXCommonPlaybackViewContainer::CreateLabelsL(void) + ?CreateIconsL@CMPXCommonPlaybackViewContainer@@MAEXXZ @ 108 NONAME ; void CMPXCommonPlaybackViewContainer::CreateIconsL(void) + ?UpdateSoftkeyColors@CMPXCommonPlaybackViewContainer@@UAEXXZ @ 109 NONAME ; void CMPXCommonPlaybackViewContainer::UpdateSoftkeyColors(void) + ?StartMarquee@CMPXCommonPlaybackViewContainer@@UAEXW4TMPXPbvTextIndicator@@@Z @ 110 NONAME ; void CMPXCommonPlaybackViewContainer::StartMarquee(enum TMPXPbvTextIndicator) + ?HandleCollectionMediaL@CMPXCommonPlaybackViewImp@@MAEXABVCMPXMedia@@H@Z @ 111 NONAME ; void CMPXCommonPlaybackViewImp::HandleCollectionMediaL(class CMPXMedia const &, int) + ?GetHelpContext@CMPXCommonPlaybackViewContainer@@UBEXAAVTCoeHelpContext@@@Z @ 112 NONAME ; void CMPXCommonPlaybackViewContainer::GetHelpContext(class TCoeHelpContext &) const diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/data/mpxcommonplaybackview.rss --- a/mpxplugins/viewplugins/views/commonplaybackview/data/mpxcommonplaybackview.rss Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/data/mpxcommonplaybackview.rss Tue Apr 27 16:34:37 2010 +0300 @@ -2255,7 +2255,7 @@ // RESOURCE AVKON_TOOLBAR r_mpx_pbv_touch_toolbar { - flags = KAknToolbarFixed|KAknToolbarTransparent|KAknToolbarWithoutCba; + flags = KAknToolbarFixed|KAknToolbarWithoutCba; items = { TBAR_CTRL diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/eabi/mpxcommonplaybackviewU.DEF --- a/mpxplugins/viewplugins/views/commonplaybackview/eabi/mpxcommonplaybackviewU.DEF Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/eabi/mpxcommonplaybackviewU.DEF Tue Apr 27 16:34:37 2010 +0300 @@ -9,11 +9,11 @@ _ZN25CMPXCommonPlaybackViewImp12HandleMediaLERK9CMPXMediai @ 8 NONAME _ZN25CMPXCommonPlaybackViewImp12SkipOnErrorLEii @ 9 NONAME _ZN25CMPXCommonPlaybackViewImp13HandlePSEventE4TUidi @ 10 NONAME - _ZN25CMPXCommonPlaybackViewImp13IsUpnpVisibleEv @ 11 NONAME - _ZN25CMPXCommonPlaybackViewImp13RequestMediaLEi @ 12 NONAME - _ZN25CMPXCommonPlaybackViewImp13UpdateToolbarEv @ 13 NONAME - _ZN25CMPXCommonPlaybackViewImp14DoHandleMediaLERK9CMPXMediai @ 14 NONAME - _ZN25CMPXCommonPlaybackViewImp14HandleCommandLEi @ 15 NONAME + _ZN25CMPXCommonPlaybackViewImp13RequestMediaLEi @ 11 NONAME + _ZN25CMPXCommonPlaybackViewImp14DoHandleMediaLERK9CMPXMediai @ 12 NONAME + _ZN25CMPXCommonPlaybackViewImp14HandleCommandLEi @ 13 NONAME + _ZN25CMPXCommonPlaybackViewImp14IsUpnpVisibleLEv @ 14 NONAME + _ZN25CMPXCommonPlaybackViewImp14UpdateToolbarLEv @ 15 NONAME _ZN25CMPXCommonPlaybackViewImp15HandlePropertyLE20TMPXPlaybackPropertyii @ 16 NONAME _ZN25CMPXCommonPlaybackViewImp15ProcessCommandLEi @ 17 NONAME _ZN25CMPXCommonPlaybackViewImp15UpdateAlbumArtLEPK9CMPXMedia @ 18 NONAME @@ -32,12 +32,12 @@ _ZN25CMPXCommonPlaybackViewImp19AddToSavedPlaylistLEv @ 31 NONAME _ZN25CMPXCommonPlaybackViewImp19HandleSettingChangeERK4TUidm @ 32 NONAME _ZN25CMPXCommonPlaybackViewImp19IsCommandSupportedLEv @ 33 NONAME - _ZN25CMPXCommonPlaybackViewImp19UpdatePlaybackStateE17TMPXPlaybackState @ 34 NONAME - _ZN25CMPXCommonPlaybackViewImp20AddPlayerNameToMenuLER12CEikMenuPaneiR17MMPXPlayerManagerR22TMPXPlaybackPlayerTypeRK7TDesC16 @ 35 NONAME - _ZN25CMPXCommonPlaybackViewImp20HandleViewActivationERK10TVwsViewIdS2_ @ 36 NONAME - _ZN25CMPXCommonPlaybackViewImp20HandleViewActivationERK4TUidS2_ @ 37 NONAME - _ZN25CMPXCommonPlaybackViewImp20LaunchFMTransmitterLEv @ 38 NONAME - _ZN25CMPXCommonPlaybackViewImp20LaunchMusicSettingsLEv @ 39 NONAME + _ZN25CMPXCommonPlaybackViewImp20AddPlayerNameToMenuLER12CEikMenuPaneiR17MMPXPlayerManagerR22TMPXPlaybackPlayerTypeRK7TDesC16 @ 34 NONAME + _ZN25CMPXCommonPlaybackViewImp20HandleViewActivationERK10TVwsViewIdS2_ @ 35 NONAME + _ZN25CMPXCommonPlaybackViewImp20HandleViewActivationERK4TUidS2_ @ 36 NONAME + _ZN25CMPXCommonPlaybackViewImp20LaunchFMTransmitterLEv @ 37 NONAME + _ZN25CMPXCommonPlaybackViewImp20LaunchMusicSettingsLEv @ 38 NONAME + _ZN25CMPXCommonPlaybackViewImp20UpdatePlaybackStateLE17TMPXPlaybackState @ 39 NONAME _ZN25CMPXCommonPlaybackViewImp21DoHandleStateChangedLE17TMPXPlaybackStatei @ 40 NONAME _ZN25CMPXCommonPlaybackViewImp21HandleCommandCompleteEP9CMPXMediai @ 41 NONAME _ZN25CMPXCommonPlaybackViewImp21HandlePlaybackMessageEP9CMPXMediai @ 42 NONAME @@ -51,101 +51,103 @@ _ZN25CMPXCommonPlaybackViewImp23HandleCollectionMessageEP9CMPXMediai @ 50 NONAME _ZN25CMPXCommonPlaybackViewImp24DoHandlePlaybackMessageLERK9CMPXMedia @ 51 NONAME _ZN25CMPXCommonPlaybackViewImp24HandleOperationCompleteLE17TCHelperOperationiPv @ 52 NONAME - _ZN25CMPXCommonPlaybackViewImp24UpdateFMTransmitterInfoLEi @ 53 NONAME - _ZN25CMPXCommonPlaybackViewImp25PrepareMediaForPlaylistLCERK9CMPXMedia @ 54 NONAME - _ZN25CMPXCommonPlaybackViewImp25UpdateDownloadStateLabelLEv @ 55 NONAME - _ZN25CMPXCommonPlaybackViewImp25UpdateTrackPosInPlaylistLEv @ 56 NONAME - _ZN25CMPXCommonPlaybackViewImp26HandleStatusPaneSizeChangeEv @ 57 NONAME - _ZN25CMPXCommonPlaybackViewImp27UpdateMiddleSoftKeyDisplayLEv @ 58 NONAME - _ZN25CMPXCommonPlaybackViewImp28UpdateTrackPlaybackPositionLEii @ 59 NONAME - _ZN25CMPXCommonPlaybackViewImpD0Ev @ 60 NONAME - _ZN25CMPXCommonPlaybackViewImpD1Ev @ 61 NONAME - _ZN25CMPXCommonPlaybackViewImpD2Ev @ 62 NONAME - _ZN28CMPXCommonPlaybackViewLayout11LayoutLabelEP9CEikLabelRK5TRect20TMPXPbvTextIndicatorii @ 63 NONAME - _ZN28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRect @ 64 NONAME - _ZN28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRecti @ 65 NONAME - _ZN28CMPXCommonPlaybackViewLayout14DoLayoutLabelLEP9CEikLabelRK5TRectiii @ 66 NONAME - _ZN28CMPXCommonPlaybackViewLayout14GetTextVariantE20TMPXPbvTextIndicator @ 67 NONAME - _ZN28CMPXCommonPlaybackViewLayout15IndicatorLayoutERK5TRect16TMPXPbvIndicator @ 68 NONAME - _ZN28CMPXCommonPlaybackViewLayout16CreateColorIconLEP17MAknsSkinInstanceRK11TAknsItemIDS4_iRK7TDesC16ii @ 69 NONAME - _ZN28CMPXCommonPlaybackViewLayout17GetButtonBitmapsLE13TMPXPbvButtoniRP10CFbsBitmapS3_ @ 70 NONAME - _ZN28CMPXCommonPlaybackViewLayout19GetIndicatorVariantE16TMPXPbvIndicator @ 71 NONAME - _ZN28CMPXCommonPlaybackViewLayout21GetIndicatorIconMaskLE16TMPXPbvIndicator @ 72 NONAME - _ZN28CMPXCommonPlaybackViewLayout22DetermineLayoutVariantEv @ 73 NONAME - _ZN31CMPXCommonPlaybackViewContainer10ConstructLERK5TRect @ 74 NONAME - _ZN31CMPXCommonPlaybackViewContainer11SetFMTXModeEi @ 75 NONAME - _ZN31CMPXCommonPlaybackViewContainer11SizeChangedEv @ 76 NONAME - _ZN31CMPXCommonPlaybackViewContainer12CreateIconsLEv @ 77 NONAME - _ZN31CMPXCommonPlaybackViewContainer12StartMarqueeE20TMPXPbvTextIndicator @ 78 NONAME - _ZN31CMPXCommonPlaybackViewContainer12UpdateLabelLE20TMPXPbvTextIndicatorRK7TDesC16 @ 79 NONAME - _ZN31CMPXCommonPlaybackViewContainer12UpdateLayoutEv @ 80 NONAME - _ZN31CMPXCommonPlaybackViewContainer13CreateLabelsLEv @ 81 NONAME - _ZN31CMPXCommonPlaybackViewContainer13SetRandomModeEi @ 82 NONAME - _ZN31CMPXCommonPlaybackViewContainer13SetRepeatModeEii @ 83 NONAME - _ZN31CMPXCommonPlaybackViewContainer13UpdateButtonsE17TMPXPlaybackState @ 84 NONAME - _ZN31CMPXCommonPlaybackViewContainer14OfferKeyEventLERK9TKeyEvent10TEventCode @ 85 NONAME - _ZN31CMPXCommonPlaybackViewContainer16SetRealAudioModeEi @ 86 NONAME - _ZN31CMPXCommonPlaybackViewContainer18GetNewSongPositionEv @ 87 NONAME - _ZN31CMPXCommonPlaybackViewContainer18RefreshProgressBarEv @ 88 NONAME - _ZN31CMPXCommonPlaybackViewContainer18UpdateLabelColorsLEv @ 89 NONAME - _ZN31CMPXCommonPlaybackViewContainer19HandlePointerEventLERK13TPointerEvent @ 90 NONAME - _ZN31CMPXCommonPlaybackViewContainer19UpdateSoftkeyColorsEv @ 91 NONAME - _ZN31CMPXCommonPlaybackViewContainer20HandleButtonCommandLEi @ 92 NONAME - _ZN31CMPXCommonPlaybackViewContainer20HandleResourceChangeEi @ 93 NONAME - _ZN31CMPXCommonPlaybackViewContainer20UpdateDurationLabelLEi @ 94 NONAME - _ZN31CMPXCommonPlaybackViewContainer21UpdateTimeIndicatorsLEii @ 95 NONAME - _ZN31CMPXCommonPlaybackViewContainer22ExtractAlbumArtStartedEv @ 96 NONAME - _ZN31CMPXCommonPlaybackViewContainer22HandleForegroundEventLEi @ 97 NONAME - _ZN31CMPXCommonPlaybackViewContainer24ExtractAlbumArtCompletedEP10CFbsBitmapi @ 98 NONAME - _ZN31CMPXCommonPlaybackViewContainer25UpdateProgressBarGraphicsEv @ 99 NONAME - _ZN31CMPXCommonPlaybackViewContainer34UpdateBackgroundSkinControlContextERK5TRect @ 100 NONAME - _ZN31CMPXCommonPlaybackViewContainer7SetModeE19TMPXPbvPlaybackMode @ 101 NONAME - _ZN31CMPXCommonPlaybackViewContainer9FreeIconsEv @ 102 NONAME - _ZN31CMPXCommonPlaybackViewContainerD0Ev @ 103 NONAME - _ZN31CMPXCommonPlaybackViewContainerD1Ev @ 104 NONAME - _ZN31CMPXCommonPlaybackViewContainerD2Ev @ 105 NONAME - _ZNK25CMPXCommonPlaybackViewImp10IsEmbeddedEv @ 106 NONAME - _ZNK25CMPXCommonPlaybackViewImp18SimpleEmbeddedModeEv @ 107 NONAME - _ZNK31CMPXCommonPlaybackViewContainer10RedrawRectERK5TRect @ 108 NONAME - _ZNK31CMPXCommonPlaybackViewContainer13DrawIndicatorER9CWindowGcRK5TRectS4_PK8CGulIconi @ 109 NONAME - _ZNK31CMPXCommonPlaybackViewContainer14GetHelpContextER15TCoeHelpContext @ 110 NONAME - _ZNK31CMPXCommonPlaybackViewContainer16ComponentControlEi @ 111 NONAME - _ZNK31CMPXCommonPlaybackViewContainer22CountComponentControlsEv @ 112 NONAME - _ZNK31CMPXCommonPlaybackViewContainer4DrawERK5TRect @ 113 NONAME - _ZTI25CMPXCommonPlaybackViewImp @ 114 NONAME - _ZTI28CMPXCommonPlaybackViewLayout @ 115 NONAME - _ZTI31CMPXCommonPlaybackViewContainer @ 116 NONAME - _ZTV25CMPXCommonPlaybackViewImp @ 117 NONAME - _ZTV28CMPXCommonPlaybackViewLayout @ 118 NONAME - _ZTV31CMPXCommonPlaybackViewContainer @ 119 NONAME - _ZThn100_N25CMPXCommonPlaybackViewImp20HandleViewActivationERK10TVwsViewIdS2_ @ 120 NONAME - _ZThn108_N25CMPXCommonPlaybackViewImp24HandleOperationCompleteLE17TCHelperOperationiPv @ 121 NONAME - _ZThn112_N25CMPXCommonPlaybackViewImp13HandlePSEventE4TUidi @ 122 NONAME - _ZThn116_N25CMPXCommonPlaybackViewImp19HandleSettingChangeERK4TUidm @ 123 NONAME - _ZThn120_N25CMPXCommonPlaybackViewImp16DialogDismissedLEi @ 124 NONAME - _ZThn124_N25CMPXCommonPlaybackViewImp16HandleViewUpdateE4TUidN26MMPXViewActivationObserver16TViewUpdateEventEii @ 125 NONAME - _ZThn124_N25CMPXCommonPlaybackViewImp20HandleViewActivationERK4TUidS2_ @ 126 NONAME - _ZThn128_N25CMPXCommonPlaybackViewImp11HandleOpenLERK22CMPXCollectionPlaylisti @ 127 NONAME - _ZThn128_N25CMPXCommonPlaybackViewImp11HandleOpenLERK9CMPXMediaiii @ 128 NONAME - _ZThn128_N25CMPXCommonPlaybackViewImp21HandleCommandCompleteEP9CMPXMediai @ 129 NONAME - _ZThn128_N25CMPXCommonPlaybackViewImp22HandleCollectionMediaLERK9CMPXMediai @ 130 NONAME - _ZThn128_N25CMPXCommonPlaybackViewImp23HandleCollectionMessageEP9CMPXMediai @ 131 NONAME - _ZThn12_N25CMPXCommonPlaybackViewImp15ProcessCommandLEi @ 132 NONAME - _ZThn12_N25CMPXCommonPlaybackViewImp16DynInitMenuPaneLEiP12CEikMenuPane @ 133 NONAME - _ZThn4_N28CMPXCommonPlaybackViewLayout11LayoutLabelEP9CEikLabelRK5TRect20TMPXPbvTextIndicatorii @ 134 NONAME - _ZThn4_N28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRect @ 135 NONAME - _ZThn4_N28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRecti @ 136 NONAME - _ZThn4_N28CMPXCommonPlaybackViewLayout15IndicatorLayoutERK5TRect16TMPXPbvIndicator @ 137 NONAME - _ZThn4_N28CMPXCommonPlaybackViewLayout17GetButtonBitmapsLE13TMPXPbvButtoniRP10CFbsBitmapS3_ @ 138 NONAME - _ZThn4_N28CMPXCommonPlaybackViewLayout21GetIndicatorIconMaskLE16TMPXPbvIndicator @ 139 NONAME - _ZThn52_N31CMPXCommonPlaybackViewContainer22ExtractAlbumArtStartedEv @ 140 NONAME - _ZThn52_N31CMPXCommonPlaybackViewContainer24ExtractAlbumArtCompletedEP10CFbsBitmapi @ 141 NONAME - _ZThn56_N31CMPXCommonPlaybackViewContainer20HandleButtonCommandLEi @ 142 NONAME - _ZThn80_N25CMPXCommonPlaybackViewImp21HandlePlaybackMessageEP9CMPXMediai @ 143 NONAME - _ZThn84_N25CMPXCommonPlaybackViewImp12HandleMediaLERK9CMPXMediai @ 144 NONAME - _ZThn84_N25CMPXCommonPlaybackViewImp15HandlePropertyLE20TMPXPlaybackPropertyii @ 145 NONAME - _ZThn84_N25CMPXCommonPlaybackViewImp21HandleSubPlayerNamesLE4TUidPK12MDesC16Arrayii @ 146 NONAME - _ZThn96_N25CMPXCommonPlaybackViewImp18HandleLayoutChangeEv @ 147 NONAME - _ZN31CMPXCommonPlaybackViewContainer18LightStatusChangedEiN10CHWRMLight12TLightStatusE @ 148 NONAME - _ZThn60_N31CMPXCommonPlaybackViewContainer18LightStatusChangedEiN10CHWRMLight12TLightStatusE @ 149 NONAME - _ZN25CMPXCommonPlaybackViewImp24LaunchFileDetailsDialogLEv @ 150 NONAME + _ZN25CMPXCommonPlaybackViewImp24LaunchFileDetailsDialogLEv @ 53 NONAME + _ZN25CMPXCommonPlaybackViewImp24UpdateFMTransmitterInfoLEi @ 54 NONAME + _ZN25CMPXCommonPlaybackViewImp25PrepareMediaForPlaylistLCERK9CMPXMedia @ 55 NONAME + _ZN25CMPXCommonPlaybackViewImp25UpdateDownloadStateLabelLEv @ 56 NONAME + _ZN25CMPXCommonPlaybackViewImp25UpdateTrackPosInPlaylistLEv @ 57 NONAME + _ZN25CMPXCommonPlaybackViewImp26HandleStatusPaneSizeChangeEv @ 58 NONAME + _ZN25CMPXCommonPlaybackViewImp27UpdateMiddleSoftKeyDisplayLEv @ 59 NONAME + _ZN25CMPXCommonPlaybackViewImp28UpdateTrackPlaybackPositionLEii @ 60 NONAME + _ZN25CMPXCommonPlaybackViewImpD0Ev @ 61 NONAME + _ZN25CMPXCommonPlaybackViewImpD1Ev @ 62 NONAME + _ZN25CMPXCommonPlaybackViewImpD2Ev @ 63 NONAME + _ZN28CMPXCommonPlaybackViewLayout11LayoutLabelEP9CEikLabelRK5TRect20TMPXPbvTextIndicatorii @ 64 NONAME + _ZN28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRect @ 65 NONAME + _ZN28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRecti @ 66 NONAME + _ZN28CMPXCommonPlaybackViewLayout14DoLayoutLabelLEP9CEikLabelRK5TRectiii @ 67 NONAME + _ZN28CMPXCommonPlaybackViewLayout15GetTextVariantLE20TMPXPbvTextIndicator @ 68 NONAME + _ZN28CMPXCommonPlaybackViewLayout15IndicatorLayoutERK5TRect16TMPXPbvIndicator @ 69 NONAME + _ZN28CMPXCommonPlaybackViewLayout16CreateColorIconLEP17MAknsSkinInstanceRK11TAknsItemIDS4_iRK7TDesC16ii @ 70 NONAME + _ZN28CMPXCommonPlaybackViewLayout17GetButtonBitmapsLE13TMPXPbvButtoniRP10CFbsBitmapS3_ @ 71 NONAME + _ZN28CMPXCommonPlaybackViewLayout17InitCommonLayoutLEv @ 72 NONAME + _ZN28CMPXCommonPlaybackViewLayout20GetIndicatorVariantLE16TMPXPbvIndicator @ 73 NONAME + _ZN28CMPXCommonPlaybackViewLayout21GetIndicatorIconMaskLE16TMPXPbvIndicator @ 74 NONAME + _ZN28CMPXCommonPlaybackViewLayout22DetermineLayoutVariantEv @ 75 NONAME + _ZN31CMPXCommonPlaybackViewContainer10ConstructLERK5TRect @ 76 NONAME + _ZN31CMPXCommonPlaybackViewContainer11SetFMTXModeEi @ 77 NONAME + _ZN31CMPXCommonPlaybackViewContainer11SizeChangedEv @ 78 NONAME + _ZN31CMPXCommonPlaybackViewContainer12CreateIconsLEv @ 79 NONAME + _ZN31CMPXCommonPlaybackViewContainer12StartMarqueeE20TMPXPbvTextIndicator @ 80 NONAME + _ZN31CMPXCommonPlaybackViewContainer12UpdateLabelLE20TMPXPbvTextIndicatorRK7TDesC16 @ 81 NONAME + _ZN31CMPXCommonPlaybackViewContainer12UpdateLayoutEv @ 82 NONAME + _ZN31CMPXCommonPlaybackViewContainer13CreateLabelsLEv @ 83 NONAME + _ZN31CMPXCommonPlaybackViewContainer13SetRandomModeEi @ 84 NONAME + _ZN31CMPXCommonPlaybackViewContainer13SetRepeatModeEii @ 85 NONAME + _ZN31CMPXCommonPlaybackViewContainer13UpdateButtonsE17TMPXPlaybackState @ 86 NONAME + _ZN31CMPXCommonPlaybackViewContainer14OfferKeyEventLERK9TKeyEvent10TEventCode @ 87 NONAME + _ZN31CMPXCommonPlaybackViewContainer16SetRealAudioModeEi @ 88 NONAME + _ZN31CMPXCommonPlaybackViewContainer18GetNewSongPositionEv @ 89 NONAME + _ZN31CMPXCommonPlaybackViewContainer18LightStatusChangedEiN10CHWRMLight12TLightStatusE @ 90 NONAME + _ZN31CMPXCommonPlaybackViewContainer18RefreshProgressBarEv @ 91 NONAME + _ZN31CMPXCommonPlaybackViewContainer18UpdateLabelColorsLEv @ 92 NONAME + _ZN31CMPXCommonPlaybackViewContainer19HandlePointerEventLERK13TPointerEvent @ 93 NONAME + _ZN31CMPXCommonPlaybackViewContainer19UpdateSoftkeyColorsEv @ 94 NONAME + _ZN31CMPXCommonPlaybackViewContainer20HandleButtonCommandLEi @ 95 NONAME + _ZN31CMPXCommonPlaybackViewContainer20HandleResourceChangeEi @ 96 NONAME + _ZN31CMPXCommonPlaybackViewContainer20UpdateDurationLabelLEi @ 97 NONAME + _ZN31CMPXCommonPlaybackViewContainer21UpdateTimeIndicatorsLEii @ 98 NONAME + _ZN31CMPXCommonPlaybackViewContainer22ExtractAlbumArtStartedEv @ 99 NONAME + _ZN31CMPXCommonPlaybackViewContainer22HandleForegroundEventLEi @ 100 NONAME + _ZN31CMPXCommonPlaybackViewContainer24ExtractAlbumArtCompletedEP10CFbsBitmapi @ 101 NONAME + _ZN31CMPXCommonPlaybackViewContainer25UpdateProgressBarGraphicsEv @ 102 NONAME + _ZN31CMPXCommonPlaybackViewContainer34UpdateBackgroundSkinControlContextERK5TRect @ 103 NONAME + _ZN31CMPXCommonPlaybackViewContainer7SetModeE19TMPXPbvPlaybackMode @ 104 NONAME + _ZN31CMPXCommonPlaybackViewContainer9FreeIconsEv @ 105 NONAME + _ZN31CMPXCommonPlaybackViewContainerD0Ev @ 106 NONAME + _ZN31CMPXCommonPlaybackViewContainerD1Ev @ 107 NONAME + _ZN31CMPXCommonPlaybackViewContainerD2Ev @ 108 NONAME + _ZNK25CMPXCommonPlaybackViewImp10IsEmbeddedEv @ 109 NONAME + _ZNK25CMPXCommonPlaybackViewImp18SimpleEmbeddedModeEv @ 110 NONAME + _ZNK31CMPXCommonPlaybackViewContainer10RedrawRectERK5TRect @ 111 NONAME + _ZNK31CMPXCommonPlaybackViewContainer13DrawIndicatorER9CWindowGcRK5TRectS4_PK8CGulIconi @ 112 NONAME + _ZNK31CMPXCommonPlaybackViewContainer14GetHelpContextER15TCoeHelpContext @ 113 NONAME + _ZNK31CMPXCommonPlaybackViewContainer16ComponentControlEi @ 114 NONAME + _ZNK31CMPXCommonPlaybackViewContainer22CountComponentControlsEv @ 115 NONAME + _ZNK31CMPXCommonPlaybackViewContainer4DrawERK5TRect @ 116 NONAME + _ZTI25CMPXCommonPlaybackViewImp @ 117 NONAME + _ZTI28CMPXCommonPlaybackViewLayout @ 118 NONAME + _ZTI31CMPXCommonPlaybackViewContainer @ 119 NONAME + _ZTV25CMPXCommonPlaybackViewImp @ 120 NONAME + _ZTV28CMPXCommonPlaybackViewLayout @ 121 NONAME + _ZTV31CMPXCommonPlaybackViewContainer @ 122 NONAME + _ZThn100_N25CMPXCommonPlaybackViewImp20HandleViewActivationERK10TVwsViewIdS2_ @ 123 NONAME + _ZThn108_N25CMPXCommonPlaybackViewImp24HandleOperationCompleteLE17TCHelperOperationiPv @ 124 NONAME + _ZThn112_N25CMPXCommonPlaybackViewImp13HandlePSEventE4TUidi @ 125 NONAME + _ZThn116_N25CMPXCommonPlaybackViewImp19HandleSettingChangeERK4TUidm @ 126 NONAME + _ZThn120_N25CMPXCommonPlaybackViewImp16DialogDismissedLEi @ 127 NONAME + _ZThn124_N25CMPXCommonPlaybackViewImp16HandleViewUpdateE4TUidN26MMPXViewActivationObserver16TViewUpdateEventEii @ 128 NONAME + _ZThn124_N25CMPXCommonPlaybackViewImp20HandleViewActivationERK4TUidS2_ @ 129 NONAME + _ZThn128_N25CMPXCommonPlaybackViewImp11HandleOpenLERK22CMPXCollectionPlaylisti @ 130 NONAME + _ZThn128_N25CMPXCommonPlaybackViewImp11HandleOpenLERK9CMPXMediaiii @ 131 NONAME + _ZThn128_N25CMPXCommonPlaybackViewImp21HandleCommandCompleteEP9CMPXMediai @ 132 NONAME + _ZThn128_N25CMPXCommonPlaybackViewImp22HandleCollectionMediaLERK9CMPXMediai @ 133 NONAME + _ZThn128_N25CMPXCommonPlaybackViewImp23HandleCollectionMessageEP9CMPXMediai @ 134 NONAME + _ZThn12_N25CMPXCommonPlaybackViewImp15ProcessCommandLEi @ 135 NONAME + _ZThn12_N25CMPXCommonPlaybackViewImp16DynInitMenuPaneLEiP12CEikMenuPane @ 136 NONAME + _ZThn4_N28CMPXCommonPlaybackViewLayout11LayoutLabelEP9CEikLabelRK5TRect20TMPXPbvTextIndicatorii @ 137 NONAME + _ZThn4_N28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRect @ 138 NONAME + _ZThn4_N28CMPXCommonPlaybackViewLayout12ButtonLayoutERK5TRecti @ 139 NONAME + _ZThn4_N28CMPXCommonPlaybackViewLayout15IndicatorLayoutERK5TRect16TMPXPbvIndicator @ 140 NONAME + _ZThn4_N28CMPXCommonPlaybackViewLayout17GetButtonBitmapsLE13TMPXPbvButtoniRP10CFbsBitmapS3_ @ 141 NONAME + _ZThn4_N28CMPXCommonPlaybackViewLayout21GetIndicatorIconMaskLE16TMPXPbvIndicator @ 142 NONAME + _ZThn52_N31CMPXCommonPlaybackViewContainer22ExtractAlbumArtStartedEv @ 143 NONAME + _ZThn52_N31CMPXCommonPlaybackViewContainer24ExtractAlbumArtCompletedEP10CFbsBitmapi @ 144 NONAME + _ZThn56_N31CMPXCommonPlaybackViewContainer20HandleButtonCommandLEi @ 145 NONAME + _ZThn60_N31CMPXCommonPlaybackViewContainer18LightStatusChangedEiN10CHWRMLight12TLightStatusE @ 146 NONAME + _ZThn80_N25CMPXCommonPlaybackViewImp21HandlePlaybackMessageEP9CMPXMediai @ 147 NONAME + _ZThn84_N25CMPXCommonPlaybackViewImp12HandleMediaLERK9CMPXMediai @ 148 NONAME + _ZThn84_N25CMPXCommonPlaybackViewImp15HandlePropertyLE20TMPXPlaybackPropertyii @ 149 NONAME + _ZThn84_N25CMPXCommonPlaybackViewImp21HandleSubPlayerNamesLE4TUidPK12MDesC16Arrayii @ 150 NONAME + _ZThn96_N25CMPXCommonPlaybackViewImp18HandleLayoutChangeEv @ 151 NONAME + diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/inc/mpxbuttonmanager.h --- a/mpxplugins/viewplugins/views/commonplaybackview/inc/mpxbuttonmanager.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/inc/mpxbuttonmanager.h Tue Apr 27 16:34:37 2010 +0300 @@ -173,7 +173,7 @@ /** * Sets the avkon rocker button state and send observer commands */ - TKeyResponse SetAvkonButtonState( const TKeyEvent& aKeyEvent, TEventCode aType ); + TKeyResponse SetAvkonButtonStateL( const TKeyEvent& aKeyEvent, TEventCode aType ); /** * Callback for long-press timer @@ -183,7 +183,7 @@ /** * Handle long press event. */ - void HandleLongPress(); + void HandleLongPressL(); private: // Data TRect iParentRect; diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/src/mpxbuttonmanager.cpp --- a/mpxplugins/viewplugins/views/commonplaybackview/src/mpxbuttonmanager.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/src/mpxbuttonmanager.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -203,7 +203,7 @@ MPX_DEBUG3("CMPXButtonManager::OfferKeyEventL(%d, %d) entering", aKeyEvent.iScanCode, aType); TKeyResponse response( EKeyWasNotConsumed ); - response = SetAvkonButtonState(aKeyEvent, aType); + response = SetAvkonButtonStateL(aKeyEvent, aType); MPX_DEBUG2("CMPXButtonManager::OfferKeyEventL() exiting %d", response); return response; } @@ -327,7 +327,7 @@ // CMPXCommonPlaybackViewContainer::SetAvkonButtonState // ----------------------------------------------------------------------------- // -TKeyResponse CMPXButtonManager::SetAvkonButtonState(const TKeyEvent& aKeyEvent, +TKeyResponse CMPXButtonManager::SetAvkonButtonStateL(const TKeyEvent& aKeyEvent, TEventCode aType) { @@ -335,7 +335,7 @@ if (aKeyEvent.iScanCode == EStdKeyLeftArrow || aKeyEvent.iCode == EKeyLeftArrow) { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState LeftArrow" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL LeftArrow" ); if (aType == EEventKeyDown) { if (!iIsTouchUi) @@ -358,13 +358,13 @@ iLongKeyTimer->Cancel(); if (iIsLongPress) { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState LeftArrow long press" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL LeftArrow long press" ); iIsLongPress = EFalse; iObserver->HandleButtonCommandL(EMPXPbvCmdEndSeek); } else { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState LeftArrow short press" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL LeftArrow short press" ); iObserver->HandleButtonCommandL(EMPXPbvCmdPreviousListItem); } iIsLongPress = EFalse; @@ -396,13 +396,13 @@ iLongKeyTimer->Cancel(); if (iIsLongPress) { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState RightArrow long press" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL RightArrow long press" ); iIsLongPress = EFalse; iObserver->HandleButtonCommandL(EMPXPbvCmdEndSeek); } else { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState RightArrow short press" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL RightArrow short press" ); iObserver->HandleButtonCommandL(EMPXPbvCmdNextListItem); } iIsLongPress = EFalse; @@ -413,7 +413,7 @@ else if (aKeyEvent.iScanCode == EStdKeyDevice3 || aKeyEvent.iCode == EKeyDevice3 || aKeyEvent.iScanCode == EStdKeyEnter || aKeyEvent.iCode == EKeyEnter) { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState EStdKeyDevice3 or EStdKeyEnter pressed" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL EStdKeyDevice3 or EStdKeyEnter pressed" ); if (!iIsTouchUi) { if (aType == EEventKeyDown) @@ -468,7 +468,7 @@ } else if (aKeyEvent.iScanCode == EStdKeyDownArrow || aKeyEvent.iCode == EKeyDownArrow) { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState EStdKeyDownArrow pressed" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL EStdKeyDownArrow pressed" ); if (iVolumeInRocker || iStopInRocker) { if (!iIsTouchUi) @@ -507,7 +507,7 @@ } else if (aKeyEvent.iScanCode == EStdKeyUpArrow || aKeyEvent.iCode == EKeyUpArrow) { - MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonState EStdKeyUpArrow pressed" ); + MPX_DEBUG1( "CMPXButtonManager::SetAvkonButtonStateL EStdKeyUpArrow pressed" ); if(iVolumeInRocker) { if (!iIsTouchUi) @@ -543,15 +543,15 @@ TInt CMPXButtonManager::TimerCallback(TAny* aPtr) { //HandleLongPress(); - static_cast(aPtr)->HandleLongPress(); - return KErrNone; + MPX_TRAPD( err, static_cast(aPtr)->HandleLongPressL() ); + return err; } // ----------------------------------------------------------------------------- // CMPlayerPlaybackContainer::HandleLongPress // ----------------------------------------------------------------------------- // -void CMPXButtonManager::HandleLongPress() +void CMPXButtonManager::HandleLongPressL() { iObserver->HandleButtonCommandL(iLongPressCommandId); iLongKeyTimer->Cancel(); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -503,7 +503,7 @@ if ( iContainer && !iSwitchingView ) { - UpdatePlaybackState( iPlaybackState ); + UpdatePlaybackStateL( iPlaybackState ); UpdateTrackInfoL( iMedia ); UpdateTrackPlaybackPositionL( iPosition, iDuration ); UpdateTrackPosInPlaylistL(); @@ -615,7 +615,7 @@ // Update current playback state. // --------------------------------------------------------------------------- // -EXPORT_C void CMPXCommonPlaybackViewImp::UpdatePlaybackState( +EXPORT_C void CMPXCommonPlaybackViewImp::UpdatePlaybackStateL( TMPXPlaybackState aPlaybackState ) { MPX_DEBUG2("CMPXCommonPlaybackViewImp::UpdatePlaybackState(%d): Entering", aPlaybackState); @@ -1354,7 +1354,7 @@ { MPX_FUNC_EX( "CMPXCommonPlaybackViewImp::DoHandleStateChangedL" ); MPX_DEBUG2( "CMPXCommonPlaybackViewImp::DoHandleStateChangedL %d", aState ); - UpdatePlaybackState( aState ); + UpdatePlaybackStateL( aState ); switch ( aState ) { @@ -1497,6 +1497,11 @@ case KErrCANewFileHandleRequired: case KErrPermissionDenied: { + if (aError == KErrCANoPermission || + aError == KErrCANoRights) + { + iCommonUiHelper->HandleErrorL( KMPXErrorExpiredRights, iMedia ); + } TBool skip(ETrue); if ( iMedia ) @@ -1654,7 +1659,7 @@ MPX_DEBUG2("CMPXCommonPlaybackViewImp::HandleAllTracksInvalidL: iDatabaseNotReady (%d)", iDatabaseNotReady); iPlaybackUtility->CommandL( EPbCmdStop ); - UpdatePlaybackState( EPbStateStopped ); + UpdatePlaybackStateL( EPbStateStopped ); TInt mpxWindowGroupId = CEikonEnv::Static()->RootWin().Identifier(); @@ -2591,7 +2596,7 @@ { delete iMedia; iMedia = NULL; - UpdatePlaybackState( iPlaybackState ); + UpdatePlaybackStateL( iPlaybackState ); UpdateTrackInfoL( iMedia ); } else @@ -2617,7 +2622,7 @@ if ( playlist->Count() > 0 ) { RequestMediaL(); - UpdatePlaybackState( iPlaybackState ); + UpdatePlaybackStateL( iPlaybackState ); } else { @@ -2862,8 +2867,13 @@ ETrue ); } + // Check if HDMI cable is connected + TBool isHDMIConnected = iTvOutConfig->HdmiCableConnected(); + aMenuPane->SetItemDimmed( EMPXPbvCmdOpenMusicSettings, isHDMIConnected ); + aMenuPane->SetItemDimmed( EMPXPbvCmdEqualizer, isHDMIConnected ); + // Check if FM Transmitter is supported - if ( !FeatureManager::FeatureSupported( KFeatureIdFmtx ) ) + if ( !FeatureManager::FeatureSupported( KFeatureIdFmtx ) || isHDMIConnected ) { aMenuPane->SetItemDimmed( EMPXPbvCmdFMTransmitter, @@ -2873,7 +2883,7 @@ if ( iUpnpFrameworkSupport ) { - if ( !iMedia || !IsUpnpVisible() ) + if ( !iMedia || !IsUpnpVisibleL() ) { GetCurrentPlayerDetails(); if ( iCurrentPlayerType == EPbLocal ) @@ -2893,7 +2903,6 @@ { return; } - aMenuPane->SetItemDimmed( EMPXPbvCmdOpenMusicSettings, iTvOutConfig->HdmiCableConnected()); } break; } @@ -3022,10 +3031,10 @@ else { if ( StatusPane()->CurrentLayoutResId() != - R_AVKON_STATUS_PANE_LAYOUT_USUAL ) + R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ) { TRAP_IGNORE( - StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL )); + StatusPane()->SwitchLayoutL( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT )); } } @@ -3134,7 +3143,7 @@ // Taken from Gallery upnp support implementation // ----------------------------------------------------------------------------- // -EXPORT_C TBool CMPXCommonPlaybackViewImp::IsUpnpVisible() +EXPORT_C TBool CMPXCommonPlaybackViewImp::IsUpnpVisibleL() { MPX_FUNC( "CMPXCommonPlaybackViewImp::IsUpnpVisible" ); TBool returnValue = EFalse; @@ -3542,7 +3551,7 @@ EXPORT_C TBool CMPXCommonPlaybackViewImp::IsCommandSupportedL() { TBool forwardCommand = ETrue; - if ( iUpnpFrameworkSupport && IsUpnpVisible() ) + if ( iUpnpFrameworkSupport && IsUpnpVisibleL() ) { // retrieve iCurrentPlayerType info GetCurrentPlayerDetails(); @@ -3908,9 +3917,9 @@ // Updates the middle toolbar button // --------------------------------------------------------------------------- // -EXPORT_C void CMPXCommonPlaybackViewImp::UpdateToolbar() +EXPORT_C void CMPXCommonPlaybackViewImp::UpdateToolbarL() { - MPX_FUNC("CMPXCommonPlaybackViewImp::UpdateToolbar"); + MPX_FUNC("CMPXCommonPlaybackViewImp::UpdateToolbarL"); if ( AknLayoutUtils::PenEnabled() ) { @@ -3987,29 +3996,34 @@ // TInt CMPXCommonPlaybackViewImp::HandleDelayedError( TAny* aPtr ) { + TInt ret( KErrNone ); CMPXCommonPlaybackViewImp* pv = reinterpret_cast( aPtr ); pv->iDelayedErrorTimer->Cancel(); - // compare index if ( pv->iPlaybackUtility ) { MMPXSource* source( pv->iPlaybackUtility->Source() ); if ( source ) { - CMPXCollectionPlaylist* pl( source->PlaylistL() ); - if ( pl ) - { - CleanupStack::PushL( pl ); - if ( pv->iErrIndex == pl->Index() ) - { - pv->HandleErrorL( pv->iLastDelayedErr ); - } - CleanupStack::PopAndDestroy( pl ); - } + CMPXCollectionPlaylist* pl( NULL ); + MPX_TRAP( ret, pl = source->PlaylistL() ); + if( ret != KErrNone ) + { + return ret; + } + + if ( pv->iErrIndex == pl->Index() ) + { + MPX_TRAP( ret, pv->HandleErrorL( pv->iLastDelayedErr ) ); + } + + delete pl; + pl = NULL; + } } - return KErrNone; + return ret; } // --------------------------------------------------------------------------- @@ -4077,7 +4091,7 @@ { toolbar->SetToolbarVisibility(EFalse); } - iViewUtility->ActivateViewL( TUid::Uid(KMPXPluginTypeMetadataEditorUid) ); + TRAP_IGNORE( iViewUtility->ActivateViewL( TUid::Uid(KMPXPluginTypeMetadataEditorUid) ) ); if ( toolbar ) { toolbar->SetToolbarVisibility(ETrue); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -81,8 +81,8 @@ TAknLayoutRect res; TMPXPbvLayoutVariants lafVariant(EPbvUndefinedVariant); - lafVariant = GetIndicatorVariant(aIndicator); - if (lafVariant == EPbvUndefinedVariant) + MPX_TRAPD( err, lafVariant = GetIndicatorVariantL(aIndicator) ); + if ( err != KErrNone || lafVariant == EPbvUndefinedVariant) { // unsupported ASSERT(0); @@ -178,8 +178,8 @@ TInt /*aOffsety*/ /* =0 */ ) { TMPXPbvLayoutVariants lafVariant(EPbvUndefinedVariant); - lafVariant = GetTextVariant(aText); - if (lafVariant == EPbvUndefinedVariant) + MPX_TRAPD( err, lafVariant = GetTextVariantL(aText) ); + if ( lafVariant == EPbvUndefinedVariant || err != KErrNone ) { ASSERT(0); } @@ -520,6 +520,19 @@ return res.Rect(); } +// --------------------------------------------------------------------------- +// Init common layout data +// --------------------------------------------------------------------------- +// +EXPORT_C void CMPXCommonPlaybackViewLayout::InitCommonLayoutL() + { + TInt flags( 0 ); + CRepository* repository = CRepository::NewL( KCRUidMPXMPFeatures ); + User::LeaveIfError( repository->Get( KMPXMPLocalVariation, flags )); + delete repository; + repository = NULL; + iShowRockerGraphics = static_cast( flags & KMPXRockerMappingSupport ); + } // --------------------------------------------------------------------------- // Determine the layout (touch, non-touch, landscape, portrait, rocker, etc...) @@ -529,12 +542,6 @@ { TMPXPbvLayoutVariants variant(EPbvUndefinedVariant); - TInt flags( 0 ); - CRepository* repository = CRepository::NewL( KCRUidMPXMPFeatures ); - User::LeaveIfError( repository->Get( KMPXMPLocalVariation, flags )); - delete repository; - repository = NULL; - TBool showRockerGraphics = static_cast( flags & KMPXRockerMappingSupport ); TBool isLandscape = Layout_Meta_Data::IsLandscapeOrientation(); @@ -548,19 +555,19 @@ { variant = EPbvLandscapeNhdTouchWithFM; } - else if (!showRockerGraphics && !isLandscape ) + else if (!iShowRockerGraphics && !isLandscape ) { variant = EPbvPortraitWithoutRocker; } - else if (!showRockerGraphics && isLandscape) + else if (!iShowRockerGraphics && isLandscape) { variant = EPbvLandscapeWithoutRocker; } - else if (showRockerGraphics && !isLandscape) + else if (iShowRockerGraphics && !isLandscape) { variant = EPbvPortraitWithRocker; } - else if (showRockerGraphics && isLandscape) + else if (iShowRockerGraphics && isLandscape) { variant = EPbvLandscapeWithRocker; } @@ -569,11 +576,12 @@ return(variant); } + // --------------------------------------------------------------------------- // Determine the layout variant for a text item // --------------------------------------------------------------------------- // -EXPORT_C TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetTextVariant(TMPXPbvTextIndicator aText) +EXPORT_C TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetTextVariantL(TMPXPbvTextIndicator aText) { TMPXPbvLayoutVariants layoutVariant = DetermineLayoutVariant(); TMPXPbvLayoutVariants textVariant; @@ -608,7 +616,7 @@ // Determine the layout variant type for an indicator item // --------------------------------------------------------------------------- // -EXPORT_C TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetIndicatorVariant(TMPXPbvIndicator aIndicator) +EXPORT_C TMPXPbvLayoutVariants CMPXCommonPlaybackViewLayout::GetIndicatorVariantL(TMPXPbvIndicator aIndicator) { TMPXPbvLayoutVariants layoutVariant = DetermineLayoutVariant(); TMPXPbvLayoutVariants indicatorVariant; diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/embeddedplaybackview/src/mpxembeddedplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/embeddedplaybackview/src/mpxembeddedplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/embeddedplaybackview/src/mpxembeddedplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -703,7 +703,7 @@ { case TMPXPlaybackMessage::EStateChanged: UpdateMiddleSoftKeyDisplayL(); - UpdateToolbar(); + UpdateToolbarL(); break; default: @@ -723,7 +723,7 @@ if (aResourceId == R_MPX_PBV_TOUCH_TOOLBAR) { // Put initializations here to take effect before toolbar is shown - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/embeddedplaybackview/src/mpxembeddedplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/embeddedplaybackview/src/mpxembeddedplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/embeddedplaybackview/src/mpxembeddedplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -96,6 +96,7 @@ { MPX_FUNC( "CMPXEmbeddedPlaybackViewLayout::ConstructL" ); iCommonUiHelper = CMPXCommonUiHelper::NewL(); + InitCommonLayoutL(); } // --------------------------------------------------------------------------- diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/inc/mpxcommoncontainer.h --- a/mpxplugins/viewplugins/views/inc/mpxcommoncontainer.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/inc/mpxcommoncontainer.h Tue Apr 27 16:34:37 2010 +0300 @@ -234,7 +234,7 @@ * * @since 3.2 */ - virtual void DrawLbxItem( TInt aIndex ) = 0; + virtual void DrawLbxItemL( TInt aIndex ) = 0; /** * Set Find box's focus. @@ -327,7 +327,7 @@ /** * Custom handling of menu pane for markable lists */ - virtual void HandleMarkableListDynInitMenuPane( + virtual void HandleMarkableListDynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) = 0; diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/inc/mpxcommonplaybackviewlayout.h --- a/mpxplugins/viewplugins/views/inc/mpxcommonplaybackviewlayout.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/inc/mpxcommonplaybackviewlayout.h Tue Apr 27 16:34:37 2010 +0300 @@ -174,7 +174,7 @@ * @param aText Enumeration value identifying the text * @return layout variant id */ - IMPORT_C TMPXPbvLayoutVariants GetTextVariant(TMPXPbvTextIndicator aText); + IMPORT_C TMPXPbvLayoutVariants GetTextVariantL(TMPXPbvTextIndicator aText); /** * Get layout data for an indicator item @@ -182,8 +182,16 @@ * @param aIndicator Enumeration value identifying the indicator * @return Layout variant id */ - IMPORT_C TMPXPbvLayoutVariants GetIndicatorVariant(TMPXPbvIndicator aIndicator); + IMPORT_C TMPXPbvLayoutVariants GetIndicatorVariantL(TMPXPbvIndicator aIndicator); + /** + * Init common layout data + * @since 5.0 + */ + IMPORT_C void InitCommonLayoutL(); + +private: + TBool iShowRockerGraphics; }; #endif // CMPXCOMMONPLAYBACKVIEWLAYOUT_H diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/pdplaybackview/inc/mpxpdplaybackviewimp.h --- a/mpxplugins/viewplugins/views/pdplaybackview/inc/mpxpdplaybackviewimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/pdplaybackview/inc/mpxpdplaybackviewimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -221,7 +221,7 @@ * @since 5.0 * */ - void UpdateToolbar(); + void UpdateToolbarL(); private: // data CMPXPdPlaybackViewLayout* iPlaybackViewLayout; // owned diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/pdplaybackview/src/mpxpdplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/pdplaybackview/src/mpxpdplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/pdplaybackview/src/mpxpdplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -277,7 +277,7 @@ MPX_DEBUG2( "CMPXPdPlaybackViewImp::DoHandlePlaybackMessageL - EStateChanged(%d)", type ); UpdateMiddleSoftKeyDisplayL(); - UpdateToolbar(); + UpdateToolbarL(); TMPXPlaybackState state = static_cast( type ); DoHandleStateChangedL( state, data ); @@ -313,7 +313,7 @@ { case EPbStateInitialising: { - UpdatePlaybackState( aState ); + UpdatePlaybackStateL( aState ); UpdateDownloadStateLabelL(); RequestMediaL(); break; @@ -730,7 +730,7 @@ // Put initializations here to take effect before toolbar is shown aToolbar->SetItemDimmed( EMPXPbvCmdPreviousListItem, ETrue, EFalse ); aToolbar->SetItemDimmed( EMPXPbvCmdNextListItem, ETrue, EFalse ); - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } @@ -749,7 +749,7 @@ // Updates the middle toolbar button // --------------------------------------------------------------------------- // -void CMPXPdPlaybackViewImp::UpdateToolbar() +void CMPXPdPlaybackViewImp::UpdateToolbarL() { MPX_FUNC( "CMPXPdPlaybackViewImp::UpdateToolbar" ); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/pdplaybackview/src/mpxpdplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/pdplaybackview/src/mpxpdplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/pdplaybackview/src/mpxpdplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -87,6 +87,7 @@ void CMPXPdPlaybackViewLayout::ConstructL() { MPX_FUNC( "CMPXPdPlaybackViewLayout::ConstructL" ); + InitCommonLayoutL(); } // End of File diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/pdsbplaybackview/inc/mpxpdsbplaybackviewimp.h --- a/mpxplugins/viewplugins/views/pdsbplaybackview/inc/mpxpdsbplaybackviewimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/pdsbplaybackview/inc/mpxpdsbplaybackviewimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -231,7 +231,7 @@ * @since 5.0 * */ - void UpdateToolbar(); + void UpdateToolbarL(); private: // data CMPXPdSbPlaybackViewLayout* iPlaybackViewLayout; // owned diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -280,7 +280,7 @@ { MPX_DEBUG2( "CMPXPdSbPlaybackViewImp::DoHandlePlaybackMessageL - EStateChanged(%d)", type ); - UpdateToolbar(); + UpdateToolbarL(); UpdateMiddleSoftKeyDisplayL(); TInt data( *aMessage.Value( KMPXMessageGeneralData ) ); TMPXPlaybackState state = @@ -353,7 +353,7 @@ { case EPbStateInitialising: { - UpdatePlaybackState( aState ); + UpdatePlaybackStateL( aState ); UpdateDownloadStateLabelL(); RequestMediaL(); break; @@ -854,7 +854,7 @@ // Put initializations here to take effect before toolbar is shown aToolbar->SetItemDimmed( EMPXPbvCmdPreviousListItem, ETrue, EFalse ); aToolbar->SetItemDimmed( EMPXPbvCmdNextListItem, ETrue, EFalse ); - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } @@ -873,7 +873,7 @@ // Updates the middle toolbar button // --------------------------------------------------------------------------- // -void CMPXPdSbPlaybackViewImp::UpdateToolbar() +void CMPXPdSbPlaybackViewImp::UpdateToolbarL() { MPX_FUNC( "CMPXPdSbPlaybackViewImp::UpdateToolbar" ); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -87,6 +87,7 @@ void CMPXPdSbPlaybackViewLayout::ConstructL() { MPX_FUNC( "CMPXPdSbPlaybackViewLayout::ConstructL" ); + InitCommonLayoutL(); } // End of File diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/playbackview/src/mpxplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/playbackview/src/mpxplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/playbackview/src/mpxplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -208,7 +208,7 @@ { case TMPXPlaybackMessage::EStateChanged: UpdateMiddleSoftKeyDisplayL(); - UpdateToolbar(); + UpdateToolbarL(); break; default: @@ -228,7 +228,7 @@ if (aResourceId == R_MPX_PBV_TOUCH_TOOLBAR) { // Put initializations here to take effect before toolbar is shown - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/playbackview/src/mpxplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/playbackview/src/mpxplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/playbackview/src/mpxplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -87,6 +87,7 @@ void CMPXPlaybackViewLayout::ConstructL() { MPX_FUNC( "CMPXPlaybackViewLayout::ConstructL" ); + InitCommonLayoutL(); } // End of File diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/podcastplaybackview/inc/mpxpodcastplaybackviewimp.h --- a/mpxplugins/viewplugins/views/podcastplaybackview/inc/mpxpodcastplaybackviewimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/podcastplaybackview/inc/mpxpodcastplaybackviewimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -182,7 +182,7 @@ * Updates the middle (play/pause) toolbar control key * icon based on playback state */ - void UpdateToolbar(); + void UpdateToolbarL(); private: // data diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/podcastplaybackview/src/mpxpodcastplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/podcastplaybackview/src/mpxpodcastplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/podcastplaybackview/src/mpxpodcastplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -447,7 +447,7 @@ if (aResourceId == R_MPX_PBV_TOUCH_TOOLBAR) { // Put initializations here to take effect before toolbar is shown - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } @@ -501,7 +501,7 @@ { case TMPXPlaybackMessage::EStateChanged: UpdateMiddleSoftKeyDisplayL(); - UpdateToolbar(); + UpdateToolbarL(); break; default: @@ -515,7 +515,7 @@ // Updates the middle toolbar button // --------------------------------------------------------------------------- // -void CMPXPodcastPlaybackViewImp::UpdateToolbar() +void CMPXPodcastPlaybackViewImp::UpdateToolbarL() { MPX_FUNC("CMPXPodcastPlaybackViewImp::UpdateToolbar"); diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/podcastplaybackview/src/mpxpodcastplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/podcastplaybackview/src/mpxpodcastplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/podcastplaybackview/src/mpxpodcastplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -91,6 +91,7 @@ void CMPXPodcastPlaybackViewLayout::ConstructL() { MPX_FUNC( "CMPXPodcastPlaybackViewLayout::ConstructL" ); + InitCommonLayoutL(); } // --------------------------------------------------------------------------- diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/podcastview/inc/mpxpodcastcollectionviewimp.h --- a/mpxplugins/viewplugins/views/podcastview/inc/mpxpodcastcollectionviewimp.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/podcastview/inc/mpxpodcastcollectionviewimp.h Tue Apr 27 16:34:37 2010 +0300 @@ -205,7 +205,7 @@ * * @return ETrue if visible, EFalse otherwise */ - TBool IsUpnpVisible(); + TBool IsUpnpVisibleL(); /** * Displays the available players in the Play via submenu diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/podcastview/src/mpxpodcastcollectionviewcontainer.cpp --- a/mpxplugins/viewplugins/views/podcastview/src/mpxpodcastcollectionviewcontainer.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/podcastview/src/mpxpodcastcollectionviewcontainer.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -112,13 +112,13 @@ if ( index != KErrNotFound ) { // Update the previous item as not playing anymore - iCommonContainer->DrawLbxItem( index ); + iCommonContainer->DrawLbxItemL( index ); } index = iLbxArray->GetPlaybackIndex(); if ( index != KErrNotFound ) { // Update new item as playing - iCommonContainer->DrawLbxItem( index ); + iCommonContainer->DrawLbxItemL( index ); } } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/podcastview/src/mpxpodcastcollectionviewimp.cpp --- a/mpxplugins/viewplugins/views/podcastview/src/mpxpodcastcollectionviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/podcastview/src/mpxpodcastcollectionviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -1241,7 +1241,7 @@ { MPX_FUNC("CMPXPodcastCollectionViewImp::HandleDynInitUpnpL()"); - if ( !IsUpnpVisible() ) + if ( !IsUpnpVisibleL() ) { GetCurrentPlayerDetails(); @@ -1314,9 +1314,9 @@ // Checks if UPnP access point is defined // ----------------------------------------------------------------------------- // -TBool CMPXPodcastCollectionViewImp::IsUpnpVisible() +TBool CMPXPodcastCollectionViewImp::IsUpnpVisibleL() { - MPX_FUNC( "CMPXPodcastCollectionViewImp::IsUpnpVisible" ); + MPX_FUNC( "CMPXPodcastCollectionViewImp::IsUpnpVisibleL" ); TBool returnValue = EFalse; #ifdef UPNP_INCLUDED @@ -3854,7 +3854,7 @@ if (!(aResourceId == R_AVKON_MENUPANE_MARKABLE_LIST && usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive)) { // Custom handling of menu pane for markable lists - iContainer->Common()->HandleMarkableListDynInitMenuPane( + iContainer->Common()->HandleMarkableListDynInitMenuPaneL( aResourceId, aMenuPane ); } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialog.cpp --- a/mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialog.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialog.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -317,7 +317,7 @@ if ( GetUPnPPlaybackDialogCustomControl() && !iSwitchingView ) { - UpdatePlaybackState( iPlaybackState ); + UpdatePlaybackStateL( iPlaybackState ); UpdateTrackInfoL( iMedia ); UpdateTrackPlaybackPositionL( iPosition, iDuration ); UpdateTrackPosInPlaylistL(); @@ -434,11 +434,11 @@ // Update current playback state. // --------------------------------------------------------------------------- // -void CMPXUPnPPlaybackDialog::UpdatePlaybackState( +void CMPXUPnPPlaybackDialog::UpdatePlaybackStateL( TMPXPlaybackState aPlaybackState ) { - MPX_FUNC( "CMPXUPnPPlaybackDialog::UpdatePlaybackState()" ); - MPX_DEBUG2("CMPXUPnPPlaybackDialog::UpdatePlaybackState(%d): Entering", aPlaybackState); + MPX_FUNC( "CMPXUPnPPlaybackDialog::UpdatePlaybackStateL()" ); + MPX_DEBUG2("CMPXUPnPPlaybackDialog::UpdatePlaybackStateL(%d): Entering", aPlaybackState); if ( GetUPnPPlaybackDialogCustomControl() && !iSwitchingView ) { @@ -486,7 +486,7 @@ } GetUPnPPlaybackDialogCustomControl()->UpdateButtons( aPlaybackState ); - UpdateToolbar(); + UpdateToolbarL(); } else { @@ -1116,7 +1116,7 @@ } else { - UpdatePlaybackState( aState ); + UpdatePlaybackStateL( aState ); switch ( aState ) { @@ -1338,7 +1338,7 @@ MPX_FUNC( "CMPXUPnPPlaybackDialog::HandleAllTracksInvalidL()" ); iPlaybackUtility->CommandL( EPbCmdStop ); - UpdatePlaybackState( EPbStateStopped ); + UpdatePlaybackStateL( EPbStateStopped ); // Do not display error if view is not active if ( GetUPnPPlaybackDialogCustomControl() ) @@ -1920,7 +1920,7 @@ { delete iMedia; iMedia = NULL; - UpdatePlaybackState( iPlaybackState ); + UpdatePlaybackStateL( iPlaybackState ); UpdateTrackInfoL( iMedia ); } else if ( iMedia == NULL ) @@ -1935,7 +1935,7 @@ if ( playlist->Count() > 0 ) { RequestMediaL(); - UpdatePlaybackState( iPlaybackState ); + UpdatePlaybackStateL( iPlaybackState ); } else { @@ -2144,37 +2144,56 @@ { case EPbCmdSetVolume: { - TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); - if ( iAvkonAppUi->IsForeground() || playerState == EPbStatePlaying ) - { - if ( aData != iCurrentVolume ) - { - SetVolume( aData ); - } - // popup volume control even if volume didn't change - HandlePopupL( EPbCmdSetVolume ); - } - break; + MPX_TRAPD( err, + TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); + if ( iAvkonAppUi->IsForeground() || playerState == EPbStatePlaying ) + { + if ( aData != iCurrentVolume ) + { + SetVolumeL( aData ); + } + // popup volume control even if volume didn't change + HandlePopupL( EPbCmdSetVolume ); + } + ); + if( err != KErrNone ) + { + MPX_DEBUG2( "CMPXUPnPPlaybackDialog::HandleMediaKeyCommand EPbCmdSetVolume leave err%d", err ); + } + break; } case EPbCmdMuteVolume: - { - TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); - if ( iAvkonAppUi->IsForeground() || playerState == EPbStatePlaying ) - { - MuteVolume(); - HandlePopupL( EPbCmdMuteVolume ); - } - break; + { + MPX_TRAPD( err, + TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); + if ( iAvkonAppUi->IsForeground() || playerState == EPbStatePlaying ) + { + MuteVolumeL(); + HandlePopupL( EPbCmdMuteVolume ); + } + ); + if( err != KErrNone ) + { + MPX_DEBUG2( "CMPXUPnPPlaybackDialog::HandleMediaKeyCommand EPbCmdMuteVolume leave err%d", err ); + } + break; } case EPbCmdUnMuteVolume: - { - TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); - if ( iAvkonAppUi->IsForeground() || playerState == EPbStatePlaying ) - { - UnMuteVolume(); - HandlePopupL( EPbCmdUnMuteVolume ); - } - break; + { + MPX_TRAPD( err, + TMPXPlaybackState playerState( iPlaybackUtility->StateL() ); + if ( iAvkonAppUi->IsForeground() || playerState == EPbStatePlaying ) + { + UnMuteVolumeL(); + HandlePopupL( EPbCmdUnMuteVolume ); + } + ); + if( err != KErrNone ) + { + MPX_DEBUG2( "CMPXUPnPPlaybackDialog::HandleMediaKeyCommand EPbCmdUnMuteVolume leave err%d", err ); + } + + break; } default: { @@ -2197,14 +2216,14 @@ playerState == EPbStateSeekingBackward ) { MPX_DEBUG2( "CMPXUPnPPlaybackDialog::HandleCustomCommand not foreground, sending command %d to HandleMediaKeyCommandL", aCommand ); - TRAP_IGNORE( DoHandleMediaKeyCommandL( aCommand ) ); - } - else if ( aCommand == EPbCmdPlay || aCommand == EPbCmdPlayPause ) - { + TRAP_IGNORE( DoHandleMediaKeyCommandL( aCommand ) ); + } + else if ( aCommand == EPbCmdPlay || aCommand == EPbCmdPlayPause ) + { MPX_DEBUG2( "CMPXUPnPPlaybackDialog::HandleCustomCommand not foreground, active idle foreground, sending command %d to HandleMediaKeyCommandL", aCommand ); - // not foreground, play without loading playback view - TRAP_IGNORE( DoHandleMediaKeyCommandL( aCommand ) ); - } + // not foreground, play without loading playback view + TRAP_IGNORE( DoHandleMediaKeyCommandL( aCommand ) ); + } else { MPX_DEBUG2( "CMPXUPnPPlaybackDialog::HandleCustomCommand not foreground, inactive state, command %d ignored", aCommand ); @@ -2411,7 +2430,7 @@ // CMPXUPnPPlaybackDialog::SetVolume // ----------------------------------------------------------------------------- // -void CMPXUPnPPlaybackDialog::SetVolume( const TInt aVolume ) +void CMPXUPnPPlaybackDialog::SetVolumeL( const TInt aVolume ) { CMPXCommand* cmd( CMPXCommand::NewL() ); CleanupStack::PushL( cmd ); @@ -2428,7 +2447,7 @@ // CMPXUPnPPlaybackDialog::MuteVolume // ----------------------------------------------------------------------------- // -void CMPXUPnPPlaybackDialog::MuteVolume() +void CMPXUPnPPlaybackDialog::MuteVolumeL() { CMPXCommand* cmd( CMPXCommand::NewL() ); CleanupStack::PushL( cmd ); @@ -2444,7 +2463,7 @@ // CMPXUPnPPlaybackDialog::UnMuteVolume // ----------------------------------------------------------------------------- // -void CMPXUPnPPlaybackDialog::UnMuteVolume() +void CMPXUPnPPlaybackDialog::UnMuteVolumeL() { CMPXCommand* cmd( CMPXCommand::NewL() ); CleanupStack::PushL( cmd ); @@ -2460,7 +2479,7 @@ // Updates the middle toolbar button // --------------------------------------------------------------------------- // -void CMPXUPnPPlaybackDialog::UpdateToolbar() +void CMPXUPnPPlaybackDialog::UpdateToolbarL() { if ( AknLayoutUtils::PenEnabled() ) { @@ -2547,7 +2566,7 @@ if ( toolbar == aToolbar ) { // Put initializations here to take effect before toolbar is shown - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialoglayout.cpp --- a/mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialoglayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialoglayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -94,6 +94,7 @@ void CMPXUPnPPlaybackDialogLayout::ConstructL() { MPX_FUNC( "CMPXUPnPPlaybackDialogLayout::ConstructL" ); + InitCommonLayoutL(); } // --------------------------------------------------------------------------- diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/upnpplaybackview/src/mpxupnpplaybackviewimp.cpp --- a/mpxplugins/viewplugins/views/upnpplaybackview/src/mpxupnpplaybackviewimp.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/upnpplaybackview/src/mpxupnpplaybackviewimp.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Implementation of Upnp Playback view -* Version : %version: e003sa33#35.1.3.1.5 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: e003sa33#35.1.3.1.6 % << Don't touch! Updated by Synergy at check-out. * */ @@ -263,7 +263,7 @@ { MPX_DEBUG1( "HandlePlaybackMessageL - EStateChanged" ); UpdateMiddleSoftKeyDisplayL(); - UpdateToolbar(); + UpdateToolbarL(); break; } default: @@ -774,7 +774,7 @@ if ( aResourceId == R_MPX_PBV_TOUCH_TOOLBAR ) { // Put initializations here to take effect before toolbar is shown - UpdateToolbar(); + UpdateToolbarL(); aToolbar->UpdateBackground(); } } diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/upnpplaybackview/src/mpxupnpplaybackviewlayout.cpp --- a/mpxplugins/viewplugins/views/upnpplaybackview/src/mpxupnpplaybackviewlayout.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/upnpplaybackview/src/mpxupnpplaybackviewlayout.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -97,6 +97,7 @@ { MPX_FUNC( "CMPXUPnPPlaybackViewLayout::ConstructL" ); iPodcastAlbumArt = EFalse; + InitCommonLayoutL(); } // --------------------------------------------------------------------------- diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/waitnotedialog/inc/mpxscanningdialog.h --- a/mpxplugins/viewplugins/views/waitnotedialog/inc/mpxscanningdialog.h Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/waitnotedialog/inc/mpxscanningdialog.h Tue Apr 27 16:34:37 2010 +0300 @@ -97,6 +97,14 @@ * Helper function used inside DoHandleCollectionMessageL */ inline TInt GetTrackCountL(TInt aDrive,TInt aColDbId, TInt aColTable); + static TInt AsyncCallHarvesterEventL( TAny* aSelf ); +private: + enum TAsyncEvent + { + ECmdIdle, + ECmdScan, + ECmdCancleScan + }; private: // data MMPXHarvesterUtility* iHarvesterUtil; @@ -115,6 +123,9 @@ * EFalse when CollectionDB has no change */ TBool isCollectionDBChanged; + CAsyncCallBack* iAsyncCallBack; //owned + TAsyncEvent iAsyncEvent; + TBool iCancelScan; }; diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/waitnotedialog/src/mpxscanningdialog.cpp --- a/mpxplugins/viewplugins/views/waitnotedialog/src/mpxscanningdialog.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/waitnotedialog/src/mpxscanningdialog.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -54,6 +54,8 @@ iTotalNewTracks = 0; iInitialCount = 0; isCollectionDBChanged = EFalse; + iAsyncEvent = ECmdIdle; + } @@ -63,8 +65,13 @@ // void CMPXScanningWaitDialog::ConstructL() { - iHarvesterUtil = CMPXHarvesterFactory::NewL(); + MPX_DEBUG1("CMPXScanningWaitDialog::ConstructL <---"); BaseConstructL(); + + TCallBack callback( CMPXScanningWaitDialog::AsyncCallHarvesterEventL, this ); + iAsyncCallBack = new (ELeave) CAsyncCallBack( CActive::EPriorityHigh ); + iAsyncCallBack->Set( callback ); + MPX_DEBUG1("CMPXScanningWaitDialog::ConstructL --->"); } @@ -93,6 +100,9 @@ { iHarvesterUtil->Close(); } + iHarvesterUtil = NULL; + delete iAsyncCallBack; + iAsyncCallBack = NULL; } // --------------------------------------------------------------------------- @@ -136,8 +146,14 @@ } // Start the scanning in harvester - iHarvesterUtil->ScanL(); - iScanningError = KErrNone; + // Just to be faster, lets just create a small async callback and then + // call ScanL + if( !iAsyncCallBack->IsActive() ) + { + iAsyncEvent = ECmdScan; + iCancelScan = EFalse; + iAsyncCallBack->CallBack(); + } } // --------------------------------------------------------------------------- @@ -154,16 +170,19 @@ HBufC* text = NULL; if( aButtonId == EAknSoftkeyCancel ) { - iScanningError = KErrCancel; - // If harvester crashed,..... restart it. - MPX_TRAPD( err, iHarvesterUtil->CancelScanL() ); - if( err != KErrNone ) - { - iHarvesterUtil->Close(); - iHarvesterUtil = NULL; - iHarvesterUtil = CMPXHarvesterFactory::NewL(); - } - + // cancel scan in harvester + // Just to be faster, lets just create a small async callback and then + // call CancelScanL + if( !iAsyncCallBack->IsActive() ) + { + iAsyncEvent = ECmdCancleScan; + iAsyncCallBack->CallBack(); + } + else + { + iCancelScan = ETrue; + } + // When stop refreshing library, prompt a process waiting dialog. // Inform user to wait for the updating library. HBufC* waitText = StringLoader::LoadLC( R_MPX_UPDATING_LIBRARY_TXT ); @@ -272,7 +291,10 @@ void CMPXScanningWaitDialog::HandleDatabaseCorruptionL() { // Cleanup Harvester - iHarvesterUtil->RecreateDatabasesL(); + if( iHarvesterUtil != NULL ) + { + iHarvesterUtil->RecreateDatabasesL(); + } } // --------------------------------------------------------------------------- @@ -283,6 +305,7 @@ const CMPXMessage& aMessage ) { MPX_FUNC( "CMPXScanningWaitDialog::DoHandleCollectionMessageL" ); + TMPXMessageId id( aMessage.ValueTObjectL( KMPXMessageGeneralId ) ); if ( KMPXMessageGeneral == id ) { @@ -488,5 +511,46 @@ return count; } +// --------------------------------------------------------------------------- +// async callback +// --------------------------------------------------------------------------- +// +TInt CMPXScanningWaitDialog::AsyncCallHarvesterEventL( TAny* aSelf ) + { + MPX_DEBUG1("CMPXScanningWaitDialog::CallHarvesterScanL <---"); + CMPXScanningWaitDialog* self = static_cast( aSelf ); + if( self->iHarvesterUtil == NULL ) + { + self->iHarvesterUtil = CMPXHarvesterFactory::NewL(); + } + if( self->iAsyncEvent == ECmdScan ) + { + if( !self->iCancelScan ) + { + self->iHarvesterUtil->ScanL(); + self->iScanningError = KErrNone; + } + else + { + self->iCancelScan = EFalse; + } + } + + if( self->iAsyncEvent == ECmdCancleScan || self->iCancelScan ) + { + self->iScanningError = KErrCancel; + // If harvester crashed,..... restart it. + MPX_TRAPD( err, self->iHarvesterUtil->CancelScanL() ); + if( err != KErrNone ) + { + self->iHarvesterUtil->Close(); + self->iHarvesterUtil = NULL; + self->iHarvesterUtil = CMPXHarvesterFactory::NewL(); + } + } + self->iAsyncEvent = ECmdIdle; + MPX_DEBUG1("CMPXScanningWaitDialog::CallHarvesterScanL --->"); + return KErrNone; + } // END OF FILE diff -r c54d95799c80 -r a1247965635c mpxplugins/viewplugins/views/waitnotedialog/src/mpxwaitnotedialog.cpp --- a/mpxplugins/viewplugins/views/waitnotedialog/src/mpxwaitnotedialog.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/mpxplugins/viewplugins/views/waitnotedialog/src/mpxwaitnotedialog.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -493,7 +493,7 @@ iProcessWaitDialog = new ( ELeave ) CAknWaitDialog( ( CEikDialog** )&iProcessWaitDialog, - iVisDelayOff ); + EFalse ); iProcessWaitDialog->PrepareLC( aDlgRsc ); iProcessWaitDialog->SetTextL( aLabel ); @@ -512,3 +512,4 @@ } } // End of file + diff -r c54d95799c80 -r a1247965635c musichomescreen_multiview/mcpmusicplayer/group/mcpmusicplayer.mmp --- a/musichomescreen_multiview/mcpmusicplayer/group/mcpmusicplayer.mmp Wed Apr 14 15:54:18 2010 +0300 +++ b/musichomescreen_multiview/mcpmusicplayer/group/mcpmusicplayer.mmp Tue Apr 27 16:34:37 2010 +0300 @@ -63,4 +63,6 @@ LIBRARY aknskins.lib LIBRARY aknicon.lib LIBRARY mpxcollectionutility.lib +LIBRARY mpxharvesterutility.lib + // End of File diff -r c54d95799c80 -r a1247965635c musichomescreen_multiview/mcpmusicplayer/inc/mcpmusicplayer.h --- a/musichomescreen_multiview/mcpmusicplayer/inc/mcpmusicplayer.h Wed Apr 14 15:54:18 2010 +0300 +++ b/musichomescreen_multiview/mcpmusicplayer/inc/mcpmusicplayer.h Tue Apr 27 16:34:37 2010 +0300 @@ -24,6 +24,7 @@ #include #include #include +#include #include "aiplayerpluginengineobserver.h" #include "filemonitorobserver.h" #include "applicationmonitorobserver.h" @@ -37,6 +38,7 @@ class CPNSMonitor; class RResourceFile; class MMPXCollectionUtility; +class MMPXHarvesterUtility; /** * Music Player MCP plugin. @@ -387,6 +389,11 @@ */ MMPXCollectionUtility* iCollectionUtility; + /** + * harvester utility + */ + MMPXHarvesterUtility* iHarvester; + CPeriodic* iMusicPlayerOpeningTimer; }; diff -r c54d95799c80 -r a1247965635c musichomescreen_multiview/mcpmusicplayer/src/mcpmusicplayer.cpp --- a/musichomescreen_multiview/mcpmusicplayer/src/mcpmusicplayer.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/musichomescreen_multiview/mcpmusicplayer/src/mcpmusicplayer.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -33,7 +33,7 @@ #include #include #include - +#include #include "cpglobals.h" //to be moved to domain API @@ -171,6 +171,7 @@ iArtBitmapMask = NULL; } iCollectionUtility = MMPXCollectionUtility::NewL( this, KMcModeDefault ); + iHarvester = CMPXHarvesterFactory::NewL(); iMusicPlayerOpeningTimer = CPeriodic::NewL( CActive::EPriorityLow ); MPX_DEBUG1("CMCPMusicPlayer::ConstructL --->"); } @@ -212,6 +213,10 @@ { iCollectionUtility->Close(); } + if ( iHarvester ) + { + iHarvester->Close(); + } delete iMusicPlayerOpeningTimer; MPX_DEBUG1("CMCPMusicPlayer::~CMCPMusicPlayer --->"); } diff -r c54d95799c80 -r a1247965635c musichomescreen_multiview/musiccontentpublisher/src/musiccontentpublisher.cpp --- a/musichomescreen_multiview/musiccontentpublisher/src/musiccontentpublisher.cpp Wed Apr 14 15:54:18 2010 +0300 +++ b/musichomescreen_multiview/musiccontentpublisher/src/musiccontentpublisher.cpp Tue Apr 27 16:34:37 2010 +0300 @@ -402,9 +402,14 @@ MPX_FUNC("CMusicContentPublisher::DoPublishModifiedL"); if (iCPSInterface && iInstanceId ) { - CLiwMap * datamap = iPublishingDataMap.GetModifiedLC(); - // Must re-publish all actions even if only one of them has changed, - // otherwise non-modified actions won't work any more + // Must re-publish all data and actions even if only one of them has changed, + // otherwise non-modified data might go missing + CLiwMap * datamap = NULL; + if ( iPublishingDataMap.IsModified() ) + { + datamap = iPublishingDataMap.GetAllLC(); + } + CLiwMap * actionmap = NULL; if ( iPublishingActionMap.IsModified() ) { diff -r c54d95799c80 -r a1247965635c musicplayer_plat/mpx_music_player_app_api/inc/mpxconstants.h --- a/musicplayer_plat/mpx_music_player_app_api/inc/mpxconstants.h Wed Apr 14 15:54:18 2010 +0300 +++ b/musicplayer_plat/mpx_music_player_app_api/inc/mpxconstants.h Tue Apr 27 16:34:37 2010 +0300 @@ -93,6 +93,10 @@ // Error code to indicate that playback not allowed during video call const TInt KMPXErrorVideoCall = -40002; +// Error code to indicate expired DRM rights +const TInt KMPXErrorExpiredRights = -40003; + + #endif // MPXCONSTANTS_H // End of File