--- a/videocollection/hgmyvideos/data/vcxhgmyvideos.rss Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/data/vcxhgmyvideos.rss Mon Jun 21 15:43:03 2010 +0300
@@ -102,11 +102,6 @@
flags = EEikMenuItemSpecific;
},
MENU_ITEM
- {
- command = EVcxHgMyVideosCmdDeleteMarked;
- txt = qtn_iptv_delete_video_clip;
- },
- MENU_ITEM
{
command = EVcxHgMyVideosCmdVideoDetails;
txt = qtn_iptv_video_details;
@@ -118,22 +113,12 @@
txt = qtn_iptv_copy_submenu;
flags = EEikMenuItemSpecific;
},
- MENU_ITEM
- {
- command = EVcxHgMyVideosCmdCopyMarked;
- txt = qtn_iptv_copy_submenu;
- },
MENU_ITEM
{
command = EVcxHgMyVideosCmdMove;
txt = qtn_iptv_move_submenu;
flags = EEikMenuItemSpecific;
},
- MENU_ITEM
- {
- command = EVcxHgMyVideosCmdMoveMarked;
- txt = qtn_iptv_move_submenu;
- },
MENU_ITEM
{
command = EVcxHgMyVideosCmdShowViaHomenet;
@@ -170,13 +155,6 @@
txt = qtn_vcx_hg_options_use_video_as;
flags = EEikMenuItemSpecificListQuery;
},
-#else
- MENU_ITEM
- {
- command = EVcxHgMyVideosCmdMarkContext;
- txt = qtn_options_list_mark_one;
- flags = EEikMenuItemSpecific;
- },
#endif
MENU_ITEM
{
@@ -232,6 +210,14 @@
{
items =
{
+#ifndef RD_VIDEO_AS_RINGING_TONE
+ MENU_ITEM
+ {
+ command = EVcxHgMyVideosCmdMarkContext;
+ txt = qtn_options_list_mark_one;
+ flags = EEikMenuItemSpecific;
+ },
+#endif
MENU_ITEM
{
command = EVcxHgMyVideosCmdToggleMultipleMarking;
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideos.hrh Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideos.hrh Mon Jun 21 15:43:03 2010 +0300
@@ -25,7 +25,6 @@
EVcxHgMyVideosCmdPlay = 700, // Play video
EVcxHgMyVideosCmdOpen, // Open video view
EVcxHgMyVideosCmdDelete, // Delete video
- EVcxHgMyVideosCmdDeleteMarked, // Delete video
EVcxHgMyVideosCmdVideoDetails, // Video details
EVcxHgMyVideosCmdShowViaHomenet, // Show video via Homenet (UPnP renderer)
EVcxHgMyVideosCmdStopShowViaHomenet, // Stop show via Homenet
@@ -35,9 +34,7 @@
EVcxHgMyVideosCmdSortByName, // Sort submenu: Sort by name
EVcxHgMyVideosCmdSortBySize, // Sort submenu: Sort by size
EVcxHgMyVideosCmdCopy, // Copy video(s)
- EVcxHgMyVideosCmdCopyMarked, // Copy video(s)
EVcxHgMyVideosCmdMove, // Move video(s)
- EVcxHgMyVideosCmdMoveMarked, // Move video(s)
EVcxHgMyVideosCmdMarkUnmarkSubMenu, // Mark or unmark videos sub-menu
EVcxHgMyVideosCmdMark, // Mark/Unmark submenu: Mark video
EVcxHgMyVideosCmdUnmark, // Mark/Unmark submenu: Unmark video
@@ -51,7 +48,6 @@
EVcxHgMyVideosCmdExit, // Exit Video Storage
EVcxHgMyVideosCmdToggleMultipleMarking, // Toggle marking mode state
EVcxHgMyVideosCmdSend, // Send video
- EVcxHgMyVideosCmdSendMarked, // Send video
EVcxHgMyVideosCmdNothing, // Non-functional command
EVcxHgMyVideosCmdStartMarking, // Sets marking mode on
EVcxHgMyVideosCmdStopMarking, // Sets marking mode off
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideosvideolistimpl.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideosvideolistimpl.h Mon Jun 21 15:43:03 2010 +0300
@@ -388,14 +388,11 @@
RArray<TInt>& operationTargetIds );
/**
- * Add "Send" menu item to menus
+ * Add "Send" menu item to menu.
*
* @param aMenuPane Add the menu item to this menu pane
- * @param aAddToOptions If true, also add to Options menu. If false, only add to context menu.
*/
- void AddSendItemToMenuPaneL(
- CEikMenuPane* aMenuPane,
- TBool aAddToOptions );
+ void AddSendItemToMenuPaneL( CEikMenuPane* aMenuPane );
/**
* Handles dynamic initialisation of Move, Copy and Delete menu items
--- a/videocollection/hgmyvideos/src/vcxhgmyvideoscategorymodelhandler.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideoscategorymodelhandler.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -631,6 +631,7 @@
if ( ret == KErrNone &&
id1 == aMpxItemId.iId1 )
{
+ ClearLastWatchedIconL();
UpdateCategoryListItemL( ResolveCategoryArrayIndexById( KCategoryIdLastWatched ) );
iScroller.RefreshScreen( ResolveCategoryArrayIndexById( KCategoryIdLastWatched ) );
}
--- a/videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -195,6 +195,7 @@
if ( iCollectionLevel == KVcxMpxLevelVideos )
{
iCollectionUtility->Collection().BackL();
+ iCollectionLevel = KErrNotFound;
}
}
}
@@ -215,6 +216,7 @@
if ( iCollectionLevel == KVcxMpxLevelCategories )
{
iCollectionUtility->Collection().OpenL( aIndex );
+ iCollectionLevel = KErrNotFound;
}
else if ( iCollectionLevel == KVcxMpxLevelVideos )
{
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosmainview.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosmainview.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -15,7 +15,7 @@
*/
-// Version : %version: 46 %
+// Version : %version: 47 %
// INCLUDE FILES
#include <bldvariant.hrh>
@@ -380,8 +380,7 @@
}
}
break;
- case EVcxHgMyVideosCmdDelete: // Fall through
- case EVcxHgMyVideosCmdDeleteMarked:
+ case EVcxHgMyVideosCmdDelete:
{
if ( iModel->AppState() == CVcxHgMyVideosModel::EVcxMyVideosAppStateVideoIdle )
{
@@ -427,20 +426,16 @@
}
break;
case EVcxHgMyVideosCmdCopy:
- case EVcxHgMyVideosCmdMove: // Fall through
- case EVcxHgMyVideosCmdCopyMarked: // Fall through
- case EVcxHgMyVideosCmdMoveMarked: // Fall through
+ case EVcxHgMyVideosCmdMove:
{
if ( iModel->AppState() == CVcxHgMyVideosModel::EVcxMyVideosAppStateVideoIdle )
{
- VideoListL()->HandleMoveOrCopyCommandL(
- aCommand == EVcxHgMyVideosCmdCopy || aCommand == EVcxHgMyVideosCmdCopyMarked ?
- ETrue : EFalse );
+ VideoListL()->HandleMoveOrCopyCommandL( aCommand == EVcxHgMyVideosCmdCopy ?
+ ETrue : EFalse );
}
}
break;
- case EVcxHgMyVideosCmdSend: // Fall through
- case EVcxHgMyVideosCmdSendMarked:
+ case EVcxHgMyVideosCmdSend:
{
Cba()->DrawDeferred();
VideoListL()->HandleSendL();
@@ -596,26 +591,22 @@
void CVcxHgMyVideosMainView::DynInitMenuPaneL( TInt aResourceId,
CEikMenuPane* aMenuPane )
{
+
if ( aResourceId == R_VCXHGMYVIDEOS_MAINVIEW_MENU )
{
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdDeleteMarked, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdSortSubMenu, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdVideoDetails, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdStopShowViaHomenet, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdShowViaHomenet, ETrue );
#ifdef RD_VIDEO_AS_RINGING_TONE
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdAiwAssign, ETrue );
-#else
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMarkContext, ETrue );
#endif
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdOpen, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdPlay, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMemoryStatus, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdCopy, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMove, ETrue );
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdCopyMarked, ETrue );
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMoveMarked, ETrue );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMarkUnmarkSubMenu, ETrue);
if ( iModel->AppState() == CVcxHgMyVideosModel::EVcxMyVideosAppStateCategoryIdle )
@@ -700,6 +691,9 @@
showMarkAll,
showUnmarkAll );
+#ifndef RD_VIDEO_AS_RINGING_TONE
+ aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMarkContext, ! showStartMarking );
+#endif
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdToggleMultipleMarking, ! showStartMarking );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMarkAll, ! showMarkAll );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdUnmarkAll, ! showUnmarkAll );
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideocopier.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideocopier.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -181,7 +181,7 @@
}
if ( iModel.DriveMonitorL().MemoryCardDrive() != KErrNotFound )
{
- includedMedias |= AknCommonDialogsDynMem::EMemoryTypeMMCExternal;
+ includedMedias |= AknCommonDialogsDynMem::EMemoryTypeMMCExternalInDevice;
}
if ( iModel.DriveMonitorL().FixedDrive( EFalse ) == EDriveC )
{
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideolistimpl.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideolistimpl.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -729,7 +729,7 @@
// Send item
if ( highlight >= 0 || videosMarked )
{
- AddSendItemToMenuPaneL( aMenuPane, videosMarked );
+ AddSendItemToMenuPaneL( aMenuPane );
}
#ifdef RD_VIDEO_AS_RINGING_TONE
@@ -743,9 +743,6 @@
// Hide Assign (use as) menu item
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdAiwAssign, ETrue );
}
-#else
- // Context sensitive Mark
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMarkContext, IsMarking() );
#endif
// Marking submenu
@@ -787,7 +784,7 @@
}
CleanupStack::PopAndDestroy( &operationTargets );
}
-#endif
+#endif
}
// -----------------------------------------------------------------------------
@@ -1059,9 +1056,8 @@
// CVcxHgMyVideosVideoListImpl::AddSendItemToMenuPaneL()
// ---------------------------------------------------------------------------
//
-void CVcxHgMyVideosVideoListImpl::AddSendItemToMenuPaneL(
- CEikMenuPane* aMenuPane,
- TBool aAddToOptions )
+void CVcxHgMyVideosVideoListImpl::AddSendItemToMenuPaneL(
+ CEikMenuPane* aMenuPane )
{
IPTVLOGSTRING_LOW_LEVEL( "CVcxHgMyVideosVideoListImpl::AddSendItemToMenuPaneL() enter" );
// Get total size of the videos that we're about to send
@@ -1101,17 +1097,6 @@
// The Send item also needs to be flagged as a list query.
CEikMenuPaneItem::SData& itemData = aMenuPane->ItemData( EVcxHgMyVideosCmdSend );
itemData.iFlags |= EEikMenuItemSpecificListQuery;
-
- // Add Send to Options menu
- if ( aAddToOptions )
- {
- SendUiL()->AddSendMenuItemL(
- *aMenuPane,
- sendItemIndex,
- EVcxHgMyVideosCmdSendMarked,
- capabilities );
- aMenuPane->SetItemSpecific( EVcxHgMyVideosCmdSendMarked, EFalse );
- }
}
CleanupStack::PopAndDestroy( &operationTargets );
IPTVLOGSTRING_LOW_LEVEL( "CVcxHgMyVideosVideoListImpl::AddSendItemToMenuPaneL() return" );
@@ -1149,9 +1134,6 @@
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdCopy, !showCopy );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMove, !showMove );
aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdDelete, !showDelete );
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdCopyMarked, !showCopy || !aItemsMarked );
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMoveMarked, !showMove || !aItemsMarked );
- aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdDeleteMarked, !showDelete || !aItemsMarked );
CleanupStack::PopAndDestroy( &operationTargets );
}
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -1061,7 +1061,9 @@
}
else
{
+ ResizeScrollerL( videoCount );
iVideoListImpl.SetEmptyListTextByResourceL( R_VCXHGMYVIDEOS_NO_VIDEOS );
+ iScroller.Reset();
iScroller.DrawDeferred();
}
iView.DynInitMskL();
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbum.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbum.h Mon Jun 21 15:43:03 2010 +0300
@@ -177,11 +177,9 @@
* Calculates KVcxMediaMyVideosCategoryItemCount, KVcxMediaMyVideosCategoryNewItemCount,
* KVcxMediaMyVideosCategoryNewItemName and KMPXMediaGeneralDate attributes to iMedia.
*
- * @param aStartIndex Start position of the calculations in iVideoList.
- * Can be used to update values when items are appended
- * to old list, without calculating everything from scratch.
+ * @return Returns ETrue if album attributes were modified, EFalse otherwise.
*/
- void CalculateAttributesL( TInt aStartIndex = 0 );
+ TBool CalculateAttributesL();
private:
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosalbums.h Mon Jun 21 15:43:03 2010 +0300
@@ -160,8 +160,13 @@
/**
* Calculates and updates album media attributes.
+ * Adds events to iCollection.iMessageList if albums
+ * are modified. Does not send them.
+ *
+ * @return Returns ETrue if events were added to iCollection.iMessageList,
+ * EFalse otherwise.
*/
- void CalculateAttributesL();
+ TBool CalculateAttributesL();
/**
* Called when video's New Video flag changes. Calculates
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionplugin.h Mon Jun 21 15:43:03 2010 +0300
@@ -199,13 +199,13 @@
* From MVcxMyVideosMdsDbObserver.
*/
void HandleMyVideosDbEvent( TMPXChangeEventType aEvent,
- RArray<TUint32>& aId );
+ RArray<TUint32>& aId, TInt aEventsLeft );
/**
* Leaving version of HandleMyVideosDbEvent.
*/
void DoHandleMyVideosDbEventL( TMPXChangeEventType aEvent,
- RArray<TUint32>& aId );
+ RArray<TUint32>& aId, TInt aEventsLeft );
/**
* From MVcxMyVideosMdsDbObserver.
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideoscollectionutil.h Mon Jun 21 15:43:03 2010 +0300
@@ -252,6 +252,30 @@
static TUint32 Uint32ValueL( CMPXMedia& aMedia );
/**
+ * Gets KVcxMediaMyVideosCategoryItemCount attribute from aVideo.
+ *
+ * @param aMedia Media where from the attribute is fetched.
+ * @return Returns 0, if attribute is not supported.
+ */
+ static TUint32 CategoryItemCountL( CMPXMedia& aVideo );
+
+ /**
+ * Gets KVcxMediaMyVideosCategoryNewItemCount attribute from aVideo.
+ *
+ * @param aMedia Media where from the attribute is fetched.
+ * @return Returns 0, if attribute is not supported.
+ */
+ static TUint32 CategoryNewItemCountL( CMPXMedia& aVideo );
+
+ /**
+ * Gets KVcxMediaMyVideosCategoryNewItemName attribute from aVideo.
+ *
+ * @param aMedia Media where from the attribute is fetched.
+ * @return Category new video name.
+ */
+ static const TDesC& CategoryNewVideoName( const CMPXMedia& aVideo );
+
+ /**
* Gets KMPXMediaGeneralId attributes from aMediaArray and
* puts them to aIdArray. aIdArray is reset before adding.
*
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h Mon Jun 21 15:43:03 2010 +0300
@@ -61,10 +61,11 @@
/**
* Handler function for database events.
*
- * @param aEvent Event type.
- * @param aId Array of IDs in database.
+ * @param aEvent Event type.
+ * @param aId Array of IDs in database.
+ * @param aEventsLeft How many events are still coming.
*/
- virtual void HandleMyVideosDbEvent( TMPXChangeEventType aEvent, RArray<TUint32>& aId ) = 0;
+ virtual void HandleMyVideosDbEvent( TMPXChangeEventType aEvent, RArray<TUint32>& aId, TInt aEventsLeft ) = 0;
/**
* Handler function for video list fetching events. This callback is called as a response
@@ -275,6 +276,14 @@
ERemoveAlbums
};
+ class TEvent
+ {
+ public:
+
+ TUint32 iMdsId;
+ TInt iEventType;
+ };
+
/**
* Two-phased constructor.
* @param aObserver The db change observer.
@@ -356,6 +365,11 @@
*/
CMPXMedia* CreateVideoL( TUint32 aId, TBool aFullDetails = ETrue );
+ /**
+ * Called by iEventProcessor.
+ */
+ static TInt ProcessEvents( TAny* aPtr );
+
protected:
// from MMdESessionObserver
@@ -548,6 +562,11 @@
*/
CMdESession& MdsSessionL();
+ /**
+ * Called by ProcessEvents.
+ */
+ TInt DoProcessEvents();
+
public:
/**
@@ -767,6 +786,15 @@
*/
CVcxMdsShutdownMonitor* iMdsShutdownMonitor;
+ /**
+ * Used for handling events on background.
+ */
+ CIdle* iEventProcessor;
+
+ /**
+ * Incoming events are stored here and "slowly" fed to observer.
+ */
+ RArray<TEvent> iEvents;
};
#endif // VCXMYVIDEOSMDSDB_H
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosvideocache.h Mon Jun 21 15:43:03 2010 +0300
@@ -295,10 +295,12 @@
*
* @param aVideo Video to add.
* @param aSortingOrder Sorting order.
+ * @param aUpdateCategores If ETrue, then category and album attributes are updated.
* @return KErrNone if added, KErrAlreadyExists if already exists and
* was not added.
*/
- TInt AddL( CMPXMedia* aVideo, TVcxMyVideosSortingOrder aSortingOrder );
+ TInt AddL( CMPXMedia* aVideo, TVcxMyVideosSortingOrder aSortingOrder,
+ TBool aUpdateCategories = ETrue );
/**
* Adds video to iPartialVideoList. Ownership moves.
@@ -413,9 +415,10 @@
* @param aNonVideoIds If argument given then Ids which were detected to not be
* videos are written here. Caller owns the array, ownership
* does not move.
+ * @param aUpdateCategories If ETrue, then category/album attributes are updated.
*/
void AddVideosFromMdsL( RArray<TUint32>& aMdsIds, TBool& aListFetchingWasCanceled,
- RArray<TUint32>* aNonVideoIds = NULL );
+ RArray<TUint32>* aNonVideoIds = NULL, TBool aUpdateCategories = ETrue );
/**
* Deletes old and creates new iVideoList. After the function call iVideoList exists,
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbum.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -292,7 +292,7 @@
// CVcxMyVideosAlbum::CalculateAttributesL
// ---------------------------------------------------------------------------
//
-void CVcxMyVideosAlbum::CalculateAttributesL( TInt aStartIndex )
+TBool CVcxMyVideosAlbum::CalculateAttributesL()
{
TInt videoCount = 0;
TUint32 count = iVideoList.Count();
@@ -303,7 +303,7 @@
TUint32 flags;
TInt64 currentItemsCreationDate = 0;
TInt64 latestCreationDate = TVcxMyVideosCollectionUtil::CreationDateL( *iMedia );
- for ( TInt i = aStartIndex; i < count; i++ )
+ for ( TInt i = 0; i < count; i++ )
{
video = iCollection.iCache->FindVideoByMdsIdL( iVideoList[i].iMdsId, pos );
if ( video )
@@ -322,13 +322,36 @@
}
}
}
- iMedia->SetTObjectValueL<TUint32>( KVcxMediaMyVideosCategoryItemCount, videoCount );
- iMedia->SetTObjectValueL<TUint32>( KVcxMediaMyVideosCategoryNewItemCount, newCount );
+
+ TBool modified = EFalse;
+
+ TUint32 prevValue = TVcxMyVideosCollectionUtil::CategoryItemCountL( *iMedia );
+ if ( prevValue != videoCount )
+ {
+ iMedia->SetTObjectValueL<TUint32>( KVcxMediaMyVideosCategoryItemCount, videoCount );
+ modified = ETrue;
+ }
+
+ prevValue = TVcxMyVideosCollectionUtil::CategoryNewItemCountL( *iMedia );
+ if ( prevValue != newCount )
+ {
+ iMedia->SetTObjectValueL<TUint32>( KVcxMediaMyVideosCategoryNewItemCount, newCount );
+ modified = ETrue;
+ }
+
if ( latestNewVideo )
{
- iMedia->SetTextValueL( KVcxMediaMyVideosCategoryNewItemName,
- TVcxMyVideosCollectionUtil::Title( *latestNewVideo ) );
+ TPtrC prevNewVideoName( TVcxMyVideosCollectionUtil::CategoryNewVideoName( *iMedia ) );
+ TPtrC latestNewVideoName( TVcxMyVideosCollectionUtil::Title( *latestNewVideo ) );
+ if ( prevNewVideoName != latestNewVideoName )
+ {
+ iMedia->SetTextValueL( KVcxMediaMyVideosCategoryNewItemName,
+ TVcxMyVideosCollectionUtil::Title( *latestNewVideo ) );
+ iMedia->SetTObjectValueL<TInt64>( KMPXMediaGeneralDate, latestCreationDate );
+ modified = ETrue;
+ }
}
- iMedia->SetTObjectValueL<TInt64>( KMPXMediaGeneralDate, latestCreationDate );
+
+ return modified;
}
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosalbums.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -351,13 +351,23 @@
// CVcxMyVideosAlbums::CalculateAttributesL
// ----------------------------------------------------------------------------
//
-void CVcxMyVideosAlbums::CalculateAttributesL()
+TBool CVcxMyVideosAlbums::CalculateAttributesL()
{
+ TBool eventsAdded = EFalse;
+ TBool modified = EFalse;
TInt count = iAlbums.Count();
for ( TInt i = 0; i < count; i++ )
{
- iAlbums[i]->CalculateAttributesL();
+ modified = iAlbums[i]->CalculateAttributesL();
+ if ( modified )
+ {
+ iCollection.iMessageList->AddEventL(
+ TMPXItemId( iAlbums[i]->iMdsId, KVcxMvcMediaTypeAlbum ),
+ EMPXItemModified, 0 );
+ eventsAdded = ETrue;
+ }
}
+ return eventsAdded;
}
// ----------------------------------------------------------------------------
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscategories.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -551,7 +551,7 @@
return KVcxMyVideosCapturedCategoryIndex;
case EVcxMyVideosOriginDownloaded:
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_DOWNLOADS_CATEGORY
return KVcxMyVideosDownloadsCategoryIndex;
#endif
case EVcxMyVideosOriginTvRecording:
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionplugin.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -100,7 +100,7 @@
MPX_FUNC("CVcxMyVideosCollectionPlugin::ConstructL");
User::LeaveIfError( iFs.Connect() );
-#ifdef VIDEO_COLLECTION_PLUGIN_TB92
+#ifndef VCX_ALBUMS
iMyVideosMdsDb = CVcxMyVideosMdsDb::NewL( this, iFs );
#else
iMyVideosMdsDb = CVcxMyVideosMdsDb::NewL( this, iFs, &AlbumsL() );
@@ -403,9 +403,10 @@
//
void CVcxMyVideosCollectionPlugin::HandleMyVideosDbEvent(
TMPXChangeEventType aEvent,
- RArray<TUint32>& aId )
+ RArray<TUint32>& aId,
+ TInt aEventsLeft )
{
- TRAPD( err, DoHandleMyVideosDbEventL( aEvent, aId ));
+ TRAPD( err, DoHandleMyVideosDbEventL( aEvent, aId, aEventsLeft ));
if ( err != KErrNone )
{
MPX_DEBUG2("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() leaved with error code: %d", err);
@@ -418,7 +419,8 @@
//
void CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL(
TMPXChangeEventType aEvent,
- RArray<TUint32>& aId )
+ RArray<TUint32>& aId,
+ TInt /*aEventsLeft*/ )
{
MPX_FUNC("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL");
@@ -433,9 +435,14 @@
MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() --------------------------------------------.");
MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() Items from MDS deleted, deleting from cache |" );
MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() --------------------------------------------'");
-
- iCache->RemoveL( aId );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+
+ iCache->RemoveL( aId, EFalse );
+
+ CategoriesL().ResetVideoCountersL();
+ CategoriesL().UpdateCategoriesL( *iCache->iVideoList, 0 );
+ CategoriesL().UpdateCategoriesNewVideoNamesL();
+
+#ifdef VCX_ALBUMS
AlbumsL().RemoveAlbumsL( aId );
#endif
}
@@ -460,9 +467,14 @@
// We receive add events for all object types. When fetching the item from MDS we use
// video condition and only video objects are added to cache. Items which were detected
// to not be videos are added to nonVideoIds.
- iCache->AddVideosFromMdsL( aId, videoListFetchingWasCancelled, &nonVideoIds );
+ iCache->AddVideosFromMdsL( aId, videoListFetchingWasCancelled,
+ &nonVideoIds, EFalse /* dont update categories*/ );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+ CategoriesL().ResetVideoCountersL();
+ CategoriesL().UpdateCategoriesL( *iCache->iVideoList, 0 );
+ CategoriesL().UpdateCategoriesNewVideoNamesL();
+
+#ifdef VCX_ALBUMS
#if 0 //TODO: do this if we want to support albums which are being added by someone else than My Videos Collection
//After the call nonVideoIds will contain only items which were actually added
@@ -485,7 +497,7 @@
MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() Items modified in MDS, updating cache |");
MPX_DEBUG1("CVcxMyVideosCollectionPlugin::DoHandleMyVideosDbEventL() --------------------------------------'");
CMPXMedia* video;
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
CMPXMedia* album;
#endif
TInt count = aId.Count();
@@ -501,7 +513,7 @@
}
else
{
-#ifdef VIDEO_COLLECTION_PLUGIN_TB92
+#ifndef VCX_ALBUMS
MPX_DEBUG1("CVcxMyVideosCollectionPlugin:: couldn't find the modified item from MDS");
aId.Remove( i );
#else
@@ -545,7 +557,7 @@
}
}
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
//nonVideoIds are albums
count = nonVideoIds.Count();
for ( TInt i = 0; i < count; i++ )
@@ -709,6 +721,7 @@
SetTransactionIdL( cmd, *message );
iMessageList->AddL( message );
+ CleanupStack::Pop( message ); // <-3
iMessageList->SendL();
if ( videoListFetchingWasCancelled )
@@ -717,7 +730,6 @@
RestartVideoListFetchingL();
}
- CleanupStack::Pop( message ); // <-3
CleanupStack::PopAndDestroy( &mdsIds2 ); // <-2
CleanupStack::PopAndDestroy( &mdsIds ); // <-1
@@ -964,7 +976,7 @@
ids.Reset();
CleanupClosePushL( ids ); // 1->
ids.AppendL( mpxId.iId1 );
- HandleMyVideosDbEvent( EMPXItemInserted, ids ); //this will fetch from mds to cache
+ HandleMyVideosDbEvent( EMPXItemInserted, ids, 0 ); //this will fetch from mds to cache
CleanupStack::PopAndDestroy( &ids ); // <-1
}
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideoscollectionutil.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -254,7 +254,7 @@
if ( aVideo.IsSupported( KVcxMediaMyVideosOrigin ) )
{
origin = aVideo.ValueTObjectL<TUint8>( KVcxMediaMyVideosOrigin );
-#ifdef VIDEO_COLLECTION_PLUGIN_TB92
+#ifndef VCX_DOWNLOADS_CATEGORY
if ( origin != EVcxMyVideosOriginCapturedWithCamera )
{
origin = EVcxMyVideosOriginOther;
@@ -542,6 +542,52 @@
}
// ----------------------------------------------------------------------------
+// TVcxMyVideosCollectionUtil::CategoryItemCountL
+// ----------------------------------------------------------------------------
+//
+TUint32 TVcxMyVideosCollectionUtil::CategoryItemCountL( CMPXMedia& aVideo )
+ {
+ TUint32 categoryItemCount = 0;
+
+ if ( aVideo.IsSupported( KVcxMediaMyVideosCategoryItemCount ) )
+ {
+ categoryItemCount = aVideo.ValueTObjectL<TUint32>( KVcxMediaMyVideosCategoryItemCount );
+ }
+ return categoryItemCount;
+ }
+
+// ----------------------------------------------------------------------------
+// TVcxMyVideosCollectionUtil::CategoryNewItemCountL
+// ----------------------------------------------------------------------------
+//
+TUint32 TVcxMyVideosCollectionUtil::CategoryNewItemCountL( CMPXMedia& aVideo )
+ {
+ TUint32 categoryNewItemCount = 0;
+
+ if ( aVideo.IsSupported( KVcxMediaMyVideosCategoryNewItemCount ) )
+ {
+ categoryNewItemCount = aVideo.ValueTObjectL<TUint32>( KVcxMediaMyVideosCategoryNewItemCount );
+ }
+ return categoryNewItemCount;
+ }
+
+// ----------------------------------------------------------------------------
+// TVcxMyVideosCollectionUtil::CategoryNewVideoName
+// ----------------------------------------------------------------------------
+//
+const TDesC& TVcxMyVideosCollectionUtil::CategoryNewVideoName( const CMPXMedia& aVideo )
+ {
+ if ( aVideo.IsSupported( KVcxMediaMyVideosCategoryNewItemName ) )
+ {
+ return aVideo.ValueText( KVcxMediaMyVideosCategoryNewItemName );
+ }
+ else
+ {
+ return KNullDesC;
+ }
+ }
+
+// ----------------------------------------------------------------------------
// TVcxMyVideosCollectionUtil::GetIdsFromMediaArrayL
// ----------------------------------------------------------------------------
//
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -191,6 +191,8 @@
iMdsShutdownMonitor = CVcxMdsShutdownMonitor::NewL(
*this, KHarvesterPSShutdown, KMdSShutdown, EFalse );
+
+ iEvents.Reset();
MPX_DEBUG1( "CVcxMyVideosMdsDb::ConstructL exit" );
}
@@ -256,7 +258,7 @@
TBool aPresent, const RArray<TItemId>& aObjectIdArray)
{
MPX_DEBUG1( "CVcxMyVideosMdsDb::--------------------------------------------------------------." );
- MPX_DEBUG3( "CVcxMyVideosMdsDb::HandleObjectPresentNotification( aPresent = %1d, count = %3d) |", aPresent, aObjectIdArray.Count() );
+ MPX_DEBUG3( "CVcxMyVideosMdsDb::HandleObjectPresentNotification( aPresent = %1d, count = %4d) |", aPresent, aObjectIdArray.Count() );
MPX_DEBUG1( "CVcxMyVideosMdsDb::--------------------------------------------------------------'" );
TObserverNotificationType type;
@@ -305,6 +307,9 @@
{
MPX_DEBUG1( "CVcxMyVideosMdsDb::~CVcxMyVideosMdsDb() start" );
+ delete iEventProcessor;
+ iEvents.Close();
+
Cancel( EGetVideoList );
delete iAlbums;
@@ -1026,7 +1031,7 @@
if ( aObject.Property( *iOriginPropertyDef, property, 0 ) != KErrNotFound )
{
TUint8 origin = static_cast<CMdEUint8Property*>(property)->Value();
-#ifdef VIDEO_COLLECTION_PLUGIN_TB92
+#ifndef VCX_DOWNLOADS_CATEGORY
if( origin != EVcxMyVideosOriginCapturedWithCamera )
{
origin = EVcxMyVideosOriginOther;
@@ -1604,30 +1609,116 @@
if ( iMdsDbObserver )
{
- RArray<TUint32> idArray;
- CleanupClosePushL( idArray ); // 1->
-
- for ( TInt i = 0; i < aObjectIdArray.Count(); i++ )
+ // Let delete events bypass buffer only if it empty.
+ // This assures that event arriving order stays the same.
+ if ( aType & ENotifyRemove && iEvents.Count() == 0 )
{
- idArray.Append( aObjectIdArray[i] );
+ // Delete handling is so fast that we dont buffer them at all.
+ // Modify and add require fetch from mds -> they are slow.
+ RArray<TUint32> idArray;
+ CleanupClosePushL( idArray ); // 1->
+
+ for ( TInt i = 0; i < aObjectIdArray.Count(); i++ )
+ {
+ idArray.Append( aObjectIdArray[i] );
+ }
+
+ iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemDeleted, idArray, iEvents.Count() );
+
+ CleanupStack::PopAndDestroy( &idArray ); // <-1
}
-
- if ( aType & ENotifyAdd )
+ else
{
- iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemInserted, idArray );
- }
- else if ( aType & ENotifyModify )
- {
- iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemModified, idArray );
- }
- else if ( aType & ENotifyRemove )
- {
- iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemDeleted, idArray );
- }
+ // Buffer modify & add events, since their handling is slow.
+ // Process them on background.
+ TInt count = aObjectIdArray.Count();
+
+ if ( iEvents.Count() == 0 )
+ {
+ iEvents.ReserveL( count );
+ }
+
+ TEvent event;
+ for ( TInt i = 0; i < count; i++ )
+ {
+ event.iMdsId = aObjectIdArray[i];
+ event.iEventType = aType;
+ iEvents.AppendL( event );
+ }
+
+ if ( !iEventProcessor )
+ {
+ iEventProcessor = CIdle::NewL( CActive::EPriorityIdle );
+ }
+
+ if ( !iEventProcessor->IsActive() )
+ {
+ iEventProcessor->Start( TCallBack( ProcessEvents, this ));
+ }
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::ProcessEvents
+// ---------------------------------------------------------------------------
+//
+TInt CVcxMyVideosMdsDb::ProcessEvents( TAny* aPtr )
+ {
+ return static_cast<CVcxMyVideosMdsDb*>(aPtr)->DoProcessEvents();
+ }
- CleanupStack::PopAndDestroy( &idArray ); // <-1
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::DoProcessEvents
+// ---------------------------------------------------------------------------
+//
+TInt CVcxMyVideosMdsDb::DoProcessEvents()
+ {
+ TInt sent = 0;
+ TInt currentEventType = -1;
+ const TInt sendAtOnce = 10;
+
+ RArray<TUint32> idArray;
+ CleanupClosePushL( idArray ); // 1->
+
+ idArray.Reserve( sendAtOnce ); // may fail, it's ok
+
+ while ( sent < sendAtOnce )
+ {
+ if ( iEvents.Count() == 0 )
+ {
+ break;
+ }
+
+ if ( iEvents[0].iEventType != currentEventType &&
+ currentEventType != -1 )
+ {
+ break;
+ }
+ currentEventType = iEvents[0].iEventType;
+ idArray.Append( iEvents[0].iMdsId ); // this may fail, it is ok, we can't do anything for it
+ iEvents.Remove( 0 );
+ sent++;
}
-
+
+ iEvents.Compress();
+
+ if ( currentEventType & ENotifyAdd )
+ {
+ iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemInserted, idArray, iEvents.Count() );
+ }
+ else if ( currentEventType & ENotifyModify )
+ {
+ iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemModified, idArray, iEvents.Count() );
+ }
+ else if ( currentEventType & ENotifyRemove )
+ {
+ iMdsDbObserver->HandleMyVideosDbEvent( EMPXItemDeleted, idArray, iEvents.Count() );
+ }
+
+ CleanupStack::PopAndDestroy( &idArray ); // <-1
+
+ return iEvents.Count();
}
// ---------------------------------------------------------------------------
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmessagelist.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmessagelist.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -139,6 +139,11 @@
iMessageCount++;
iMessageList->SetTObjectValueL<TInt>( KMPXMessageArrayCount, iMessageCount );
+
+ if ( iMessageArray->Count() > 100 )
+ {
+ SendL();
+ }
}
// ----------------------------------------------------------------------------------------------------------
@@ -277,10 +282,9 @@
#endif
CreateMessageListL(); //does nothing if already created
- iMessageArray->AppendL( aMessage ); // ownership moves
iMessageCount++;
iMessageList->SetTObjectValueL<TInt>( KMPXMessageArrayCount, iMessageCount );
-
+ iMessageArray->AppendL( aMessage ); // ownership moves
}
// ----------------------------------------------------------------------------------------------------------
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosopenhandler.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosopenhandler.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -126,7 +126,7 @@
{
//we are at root level, return main level items (categories + albums)
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
iCollection.AlbumsL().CreateAlbumListL(); //async
#endif
@@ -146,7 +146,7 @@
!iCache.IsComplete() );
TVcxMyVideosCollectionUtil::AppendToListL( *itemList, *iCollection.CategoriesL().iList );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
TVcxMyVideosCollectionUtil::AppendToListL( *itemList, *iCollection.AlbumsL().iAlbumList );
#endif
itemList->SetCObjectValueL( KMPXMediaGeneralContainerPath, iPath );
@@ -160,7 +160,7 @@
{
//we are at second level, return video list from some category or album
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
iCollection.AlbumsL().CreateAlbumListL(); //async
#endif
@@ -390,7 +390,7 @@
iCollection.CategoriesL().UpdateCategoriesNewVideoNamesL();
- iCollection.AlbumsL().CalculateAttributesL();
+ iCollection.AlbumsL().CalculateAttributesL(); // adds events if attributes modified, does not send
iCollection.iMessageList->AddEventL( KVcxMessageMyVideosListComplete );
}
@@ -526,13 +526,13 @@
MPX_DEBUG3("CVcxMyVideosOpenHandler:: adding modify event for album %d, extra info = %d",
aAlbumId, EVcxMyVideosVideoListOrderChanged );
- iCollection.iMessageList->AddEventL( TMPXItemId( aAlbumId, 2 ), EMPXItemModified,
+ iCollection.iMessageList->AddEventL( TMPXItemId( aAlbumId, KVcxMvcMediaTypeAlbum ), EMPXItemModified,
EVcxMyVideosVideoListOrderChanged );
}
else
{
//TODO: should add album id
- iCollection.AlbumsL().CalculateAttributesL();
+ iCollection.AlbumsL().CalculateAttributesL(); // adds events if attributes modified, does not send
iCollection.iMessageList->AddEventL( KVcxMessageMyVideosListComplete );
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosvideocache.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -512,7 +512,7 @@
// ----------------------------------------------------------------------------
//
void CVcxMyVideosVideoCache::AddVideosFromMdsL( RArray<TUint32>& aMdsIds,
- TBool& aListFetchingWasCanceled, RArray<TUint32>* aNonVideoIds )
+ TBool& aListFetchingWasCanceled, RArray<TUint32>* aNonVideoIds, TBool aUpdateCategories )
{
MPX_FUNC("CVcxMyVideosVideoCache::AddVideosFromMdsL");
@@ -547,7 +547,7 @@
{
CleanupStack::PushL( videoToCache ); // 1->
- TInt err = AddL( videoToCache, sortingOrder );
+ TInt err = AddL( videoToCache, sortingOrder, aUpdateCategories );
if ( err == KErrNone )
{
@@ -584,7 +584,8 @@
// This is for single adds, video list fetching does not call this.
// ----------------------------------------------------------------------------
//
-TInt CVcxMyVideosVideoCache::AddL( CMPXMedia* aVideo, TVcxMyVideosSortingOrder aSortingOrder )
+TInt CVcxMyVideosVideoCache::AddL( CMPXMedia* aVideo, TVcxMyVideosSortingOrder aSortingOrder,
+ TBool aUpdateCategories )
{
MPX_FUNC("CVcxMyVideosVideoCache::AddL");
@@ -596,7 +597,7 @@
else
{
MPX_DEBUG1("CVcxMyVideosVideoCache:: iVideoList is complete, adding to iVideoList");
- return AddToCorrectPlaceL( *aVideo, aSortingOrder );
+ return AddToCorrectPlaceL( *aVideo, aSortingOrder, aUpdateCategories );
}
}
@@ -945,7 +946,7 @@
origin,
modified );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
iCollection.AlbumsL().NewVideoFlagChangedL(
TVcxMyVideosCollectionUtil::IdL( *videoInCache ).iId1 );
#endif
@@ -1190,7 +1191,7 @@
iCollection.CategoriesL().UpdateCategoryNewVideoNameAndDateL(
*aVideoInCache, modified );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
iCollection.AlbumsL().VideoTitleChangedL(
TVcxMyVideosCollectionUtil::IdL( *aVideoInCache ).iId1 );
#endif
@@ -1501,7 +1502,7 @@
if ( aUpdateCategories )
{
iCollection.CategoriesL().VideoAddedL( aVideo );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
iCollection.AlbumsL().VideoAddedOrRemovedFromCacheL( aVideo );
#endif
}
@@ -1561,7 +1562,7 @@
pos != KErrNotFound /* no need to update if item is on iPartialVideoList*/ )
{
iCollection.CategoriesL().VideoRemovedL( *video );
-#ifndef VIDEO_COLLECTION_PLUGIN_TB92
+#ifdef VCX_ALBUMS
iCollection.AlbumsL().VideoAddedOrRemovedFromCacheL( *video );
#endif
}
--- a/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideosmdsdb/inc/VcxMyVideosMdsDbTest.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideosmdsdb/inc/VcxMyVideosMdsDbTest.h Mon Jun 21 15:43:03 2010 +0300
@@ -109,7 +109,7 @@
* @param aEvent Event type.
* @param aId Array of IDs in database.
*/
- void HandleMyVideosDbEvent( TMPXChangeEventType aEvent, RArray<TUint32>& aId );
+ void HandleMyVideosDbEvent( TMPXChangeEventType aEvent, RArray<TUint32>& aId, TInt aEventsLeft );
/**
* Handler function for list fetching events. This callback is called as a response
--- a/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideosmdsdb/src/VcxMyVideosMdsDbTestBlocks.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideosmdsdb/src/VcxMyVideosMdsDbTestBlocks.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 6 %
+// Version : %version: 7 %
// [INCLUDE FILES] - do not remove
#include <e32svr.h>
@@ -472,7 +472,7 @@
mdsoperationleaves = NextIntOrZero( aItem );
}
-void CVcxMyVideosMdsDbTest::HandleMyVideosDbEvent( TMPXChangeEventType , RArray<TUint32>& )
+void CVcxMyVideosMdsDbTest::HandleMyVideosDbEvent( TMPXChangeEventType , RArray<TUint32>&, TInt )
{
if ( handledbeventleave )
{
--- a/videoplayback/inc/mpxvideobaseplaybackview.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/inc/mpxvideobaseplaybackview.h Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 23 %
+// Version : %version: 24 %
// This file defines the API for VideoBasePlaybackView.dll
@@ -309,7 +309,7 @@
void SetDisplayWindowL();
- void CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd );
+ void CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd, TBool aDoSync = ETrue );
void SetVideoRectL();
@@ -387,6 +387,8 @@
TBool iKeyboardInFocus;
HBufC* iClipName;
+
+ TBool iSyncClose;
};
#endif // __VIDEOBASEPLAYBACKVIEW_H__
--- a/videoplayback/videohelix/inc/mpxvideoplaybackmode.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackmode.h Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 19 %
+// Version : %version: 20 %
#ifndef _CMPXVIDEOPLAYBACKMODE_H_
@@ -29,7 +29,7 @@
#include <e32base.h>
#include "mpxhelixplaybackplugindefs.h"
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
#include "mpxvideodlmgrif.h"
#endif
#include "mpxvideo_debug.h"
@@ -76,6 +76,8 @@
virtual void OpenFileL( const RFile& aMediaFile );
virtual void HandleSetPosterFrame();
virtual void HandleFrameReady(TInt aError);
+ virtual TBool SendErrorToView( TInt aError );
+ virtual void HandlePauseToPlayTransitionL();
#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
virtual void OpenFile64L( const RFile64& aMediaFile );
@@ -152,7 +154,8 @@
// Methods where video plabkack behavior varies for live streaming media
inline virtual TInt GetMode();
virtual void HandlePause();
- virtual void HandleBackground();
+ virtual TBool SendErrorToView( TInt aError );
+ virtual void HandlePauseToPlayTransitionL();
};
////////////////////////////////////////////////////////////////////////////////
@@ -168,7 +171,7 @@
static CMPXVideoPlaybackMode* NewL( CMPXVideoPlaybackController* aVideoPlaybackCtlr );
virtual ~CMPXProgressiveDLPlaybackMode();
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
inline virtual TInt GetMode();
void ConnectToDownloadL( CMPXCommand& aCmd );
@@ -182,19 +185,19 @@
void OpenFile64L( const RFile64& aMediaFile );
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
-#endif // USE_S60_DOWNLOAD_MANAGER
+#endif // USE_S60_DOWNLOAD_MANAGER
private:
void ConstructL( CMPXVideoPlaybackController* aVideoPlaybackCtlr );
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
private:
- CMPXVideoDlMgrIf* iDlMgrIf; // owned
-#endif // USE_S60_DOWNLOAD_MANAGER
+ CMPXVideoDlMgrIf* iDlMgrIf; // owned
+#endif // USE_S60_DOWNLOAD_MANAGER
};
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
inline
TInt CMPXProgressiveDLPlaybackMode::GetMode()
@@ -209,7 +212,7 @@
return iDlMgrIf->IsDownloadPaused();
}
-#endif // USE_S60_DOWNLOAD_MANAGER
+#endif // USE_S60_DOWNLOAD_MANAGER
// INLINE METHODS
--- a/videoplayback/videohelix/inc/mpxvideoplaybackstate.h Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackstate.h Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 19 %
+// Version : %version: 20 %
#ifndef _CMPXVIDEOPLAYBACKSTATE_H_
@@ -120,6 +120,10 @@
virtual void OpenFile64L( const RFile64& aMediaFile );
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+ void IssuePlayCommand( TMPXVideoPlaybackState aState,
+ MMPXPlaybackPluginObserver::TEvent aEvent,
+ TBool aSendEvent = ETrue );
+
protected:
/*
* C++ default constructor
@@ -132,10 +136,6 @@
*/
void ConstructL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
- void IssuePlayCommand( TMPXVideoPlaybackState aState,
- MMPXPlaybackPluginObserver::TEvent aEvent,
- TBool aSendEvent = ETrue );
-
protected:
//
// Data
@@ -313,9 +313,10 @@
virtual void HandleStop();
virtual void HandleStartSeekL( TBool aForward );
virtual void HandlePlayPause();
- virtual void HandleSetPosterFrame();
+ virtual void HandleSetPosterFrame();
virtual void HandleForeground();
virtual void HandleCustomPlay();
+ virtual void HandleUnexpectedError( TInt aError );
// general method
virtual void HandleSetPositionL( TInt aPosition );
@@ -365,6 +366,7 @@
// general method
virtual void HandleSetPositionL(TInt aPosition);
virtual void ResolveTimeoutError( TInt aError );
+ virtual void HandleUnexpectedError( TInt aError );
inline virtual TMPXVideoPlaybackState GetState();
};
--- a/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -12,11 +12,11 @@
* Contributors:
*
* Description: This class plays local video file
- *
+*
*/
-// Version : %version: 32 %
+// Version : %version: 33 %
//
@@ -25,6 +25,8 @@
#include <mmf/server/mmffile.h>
#include <MMFROPCustomCommandConstants.h>
#include <mpxplaybackpluginobserver.h>
+#include <mpxmessagegeneraldefs.h>
+#include <mpxplaybackmessage.h>
#include <etel.h> // 3G
#include <etelmm.h>
@@ -223,7 +225,7 @@
MPX_TRAPD( err,
iVideoPlaybackCtlr->iState->SendErrorToViewL( KMPXVideoCallOngoingError ) );
}
- else if ( iVideoPlaybackCtlr->IsKeyLocked() &&
+ else if ( iVideoPlaybackCtlr->IsKeyLocked() &&
iVideoPlaybackCtlr->iFileDetails->iVideoEnabled )
{
// playback not allowed for the clip having video if keylock is true
@@ -234,6 +236,7 @@
playAllowed = ETrue;
}
}
+
return playAllowed;
}
@@ -279,7 +282,6 @@
return networkMode2g;
}
-
// ------------------------------------------------------------------------------------------------
// CMPXVideoPlaybackMode::HandleSetPosterFrame()
// ------------------------------------------------------------------------------------------------
@@ -291,10 +293,32 @@
// ------------------------------------------------------------------------------------------------
// CMPXVideoPlaybackMode::HandleSetPosterFrame()
// ------------------------------------------------------------------------------------------------
-void CMPXVideoPlaybackMode::HandleFrameReady(TInt /*aError*/)
+void CMPXVideoPlaybackMode::HandleFrameReady( TInt /*aError*/ )
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackMode::HandleFrameReady()"));
+}
+
+// ------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackMode::SendErrorToView()
+// ------------------------------------------------------------------------------------------------
+TBool CMPXVideoPlaybackMode::SendErrorToView( TInt aError )
{
- MPX_DEBUG(_L("CMPXLocalPlaybackMode::HandleFrameReady()"));
+ MPX_DEBUG(_L("CMPXLocalPlaybackMode::SendErrorToView(%d)"), ETrue);
+
+ return ETrue;
}
+
+// ------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackMode::HandlePauseToPlayTransitionL()
+// ------------------------------------------------------------------------------------------------
+void CMPXVideoPlaybackMode::HandlePauseToPlayTransitionL()
+{
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackMode::HandlePauseToPlayTransitionL()"));
+
+ iVideoPlaybackCtlr->iState->IssuePlayCommand( EMPXVideoPlaying,
+ MMPXPlaybackPluginObserver::EPPlaying );
+}
+
//************************************************************************************************//
// CMPXLocalPlaybackMode
//************************************************************************************************//
@@ -429,7 +453,7 @@
MPX_TRAPD(err,
iVideoPlaybackCtlr->iState->SendErrorToViewL( KMPXVideoCallOngoingError ));
}
- else if ( iVideoPlaybackCtlr->IsKeyLocked() &&
+ else if ( iVideoPlaybackCtlr->IsKeyLocked() &&
iVideoPlaybackCtlr->iFileDetails->iVideoEnabled )
{
// playback not allowed for the clip having video if keylock is true
@@ -490,9 +514,11 @@
}
}
+
//************************************************************************************************//
// CMPXLiveStreamingPlaybackMode
//************************************************************************************************//
+
CMPXVideoPlaybackMode*
CMPXLiveStreamingPlaybackMode::NewL( CMPXVideoPlaybackController* aVideoPlaybackCtlr )
{
@@ -518,38 +544,84 @@
{
MPX_ENTER_EXIT(_L("CMPXLiveStreamingPlaybackMode::HandlePause()"));
+ //
+ // Send a stop command to the player, but change state to pause
+ // The view will not close and the play button will be the only active button
+ //
iVideoPlaybackCtlr->iPlayer->Stop();
- iVideoPlaybackCtlr->ChangeState( EMPXVideoStopped );
+ iVideoPlaybackCtlr->ChangeState( EMPXVideoPaused );
- iVideoPlaybackCtlr->iMPXPluginObs->HandlePluginEvent( MMPXPlaybackPluginObserver::EPStopped,
+ iVideoPlaybackCtlr->iMPXPluginObs->HandlePluginEvent( MMPXPlaybackPluginObserver::EPPaused,
0,
KErrNone );
}
// ------------------------------------------------------------------------------------------------
-// CMPXLiveStreamingPlaybackMode::HandleBackground()
+// CMPXLiveStreamingPlaybackMode::SendErrorToView()
// ------------------------------------------------------------------------------------------------
-void CMPXLiveStreamingPlaybackMode::HandleBackground()
+TBool CMPXLiveStreamingPlaybackMode::SendErrorToView( TInt aError )
{
- MPX_DEBUG(_L("CMPXLiveStreamingPlaybackMode::HandleBackground()"));
+ TBool retval = ETrue;
- if ( iVideoPlaybackCtlr->iAppInForeground )
+ if ( aError == KErrSessionClosed )
{
- if ( iVideoPlaybackCtlr->IsPhoneCall() ||
- iVideoPlaybackCtlr->IsVideoCall() ||
- ( iVideoPlaybackCtlr->IsKeyLocked() &&
- iVideoPlaybackCtlr->iFileDetails->iVideoEnabled ) )
- {
- iVideoPlaybackCtlr->iState->HandlePause();
- }
+ retval = EFalse;
}
+
+ MPX_DEBUG(_L("CMPXLiveStreamingPlaybackMode::SendErrorToView(%d)"), retval);
+
+ return retval;
+}
+
+// ------------------------------------------------------------------------------------------------
+// CMPXLiveStreamingPlaybackMode::HandlePauseToPlayTransitionL()
+// ------------------------------------------------------------------------------------------------
+void CMPXLiveStreamingPlaybackMode::HandlePauseToPlayTransitionL()
+{
+ MPX_ENTER_EXIT(_L("CMPXLiveStreamingPlaybackMode::HandlePauseToPlayTransitionL()"));
+
+ //
+ // For live streaming, the controller must be reinitialized
+ // Send a state change to Initializing to the view
+ //
+ CMPXMessage* msg = CMPXMessage::NewL();
+ CleanupStack::PushL( msg );
+
+ msg->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId, KMPXMessageGeneral );
+ msg->SetTObjectValueL<TInt>( KMPXMessageGeneralEvent, TMPXPlaybackMessage::EStateChanged );
+ msg->SetTObjectValueL<TInt>( KMPXMessageGeneralType, EPbStateInitialising );
+ msg->SetTObjectValueL<TInt>( KMPXMessageGeneralData, 0 );
+
+ iVideoPlaybackCtlr->iMPXPluginObs->HandlePlaybackMessage( msg, KErrNone );
+
+ CleanupStack::PopAndDestroy( msg );
+
+ iVideoPlaybackCtlr->ChangeState( EMPXVideoInitializing );
+
+ iVideoPlaybackCtlr->iPlayer->Reset();
+
+ //
+ // Reinitialize the player with the file handle or url
+ //
+ if ( iVideoPlaybackCtlr->iFileHandle.SubSessionHandle() )
+ {
+ iVideoPlaybackCtlr->iPlayer->OpenFileL( iVideoPlaybackCtlr->iFileHandle );
+ }
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+ else if ( iVideoPlaybackCtlr->iFileHandle64.SubSessionHandle() )
+ {
+ iVideoPlaybackCtlr->iPlayer->OpenFile64L( iVideoPlaybackCtlr->iFileHandle64 );
+ }
+#endif
else
{
- iVideoPlaybackCtlr->iState->HandlePause();
+ iVideoPlaybackCtlr->iPlayer->OpenUrlL( iVideoPlaybackCtlr->iClipName->Des(),
+ iVideoPlaybackCtlr->iAccessPointId );
}
}
+
//************************************************************************************************//
// CMPXProgressiveDLPlaybackMode
//************************************************************************************************//
@@ -569,12 +641,12 @@
{
iVideoPlaybackCtlr = aVideoPlaybackCtlr;
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
//
// Create the Download Mgr Interface
//
iDlMgrIf = CMPXVideoDlMgrIf::NewL( iVideoPlaybackCtlr );
-#endif // USE_S60_DOWNLOAD_MANAGER
+#endif // USE_S60_DOWNLOAD_MANAGER
}
@@ -582,17 +654,17 @@
{
MPX_DEBUG(_L("CMPXProgressiveDLPlaybackMode::~CMPXProgressiveDLPlaybackMode()"));
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
if ( iDlMgrIf )
{
delete iDlMgrIf;
iDlMgrIf = NULL;
}
-#endif // USE_S60_DOWNLOAD_MANAGER
+#endif // USE_S60_DOWNLOAD_MANAGER
}
-#ifdef USE_S60_DOWNLOAD_MANAGER
+#ifdef USE_S60_DOWNLOAD_MANAGER
// ------------------------------------------------------------------------------------------------
// CMPXProgressiveDLPlaybackMode::ConnectToDownloadL()
--- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 44 %
+// Version : %version: 45 %
//
@@ -1371,7 +1371,6 @@
HandlePause();
}
-
// ------------------------------------------------------------------------------------------------
// CMPXPlayingState::HandleSetPosterFrame()
// ------------------------------------------------------------------------------------------------
@@ -1525,7 +1524,7 @@
if ( iVideoPlaybackCtlr->iPlaybackMode->CanPlayNow() )
{
- IssuePlayCommand( EMPXVideoPlaying, MMPXPlaybackPluginObserver::EPPlaying );
+ MPX_TRAPD( error, iVideoPlaybackCtlr->iPlaybackMode->HandlePauseToPlayTransitionL() );
}
}
@@ -1641,6 +1640,21 @@
}
}
+// -------------------------------------------------------------------------------------------------
+// CMPXPausedState::HandleUnexpectedError
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXPausedState::HandleUnexpectedError( TInt aError )
+{
+ MPX_ENTER_EXIT(_L("CMPXPausedState::HandleUnexpectedError()"),
+ _L("aError = %d"), aError );
+
+ if ( iVideoPlaybackCtlr->iPlaybackMode->SendErrorToView( aError ) )
+ {
+ MPX_TRAPD( err, SendErrorToViewL( aError ) );
+ }
+}
+
// *************************************************************************************************
//
// CMPXStoppedState
@@ -1728,6 +1742,21 @@
// Don't handle the error. Already in the stopped state
}
+// -------------------------------------------------------------------------------------------------
+// CMPXStoppedState::HandleUnexpectedError
+// -------------------------------------------------------------------------------------------------
+//
+void CMPXStoppedState::HandleUnexpectedError( TInt aError )
+{
+ MPX_ENTER_EXIT(_L("CMPXStoppedState::HandleUnexpectedError()"),
+ _L("aError = %d"), aError );
+
+ if ( iVideoPlaybackCtlr->iPlaybackMode->SendErrorToView( aError ) )
+ {
+ MPX_TRAPD( err, SendErrorToViewL( aError ) );
+ }
+}
+
// *************************************************************************************************
//
// CMPXBufferingState
--- a/videoplayback/videohelix/src/mpxvideoseeker.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoseeker.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 9 %
+// Version : %version: 10 %
// INCLUDE FILES
@@ -37,6 +37,7 @@
const TInt KDurationB(180000000); // 180 sec
const TInt64 KSpeedAIncrements(2000000); // 2 sec
const TInt64 KSpeedBIncrements(4000000); // 4 sec
+const TInt64 KSpeedOffset(3000000); // 3 sec
#endif
// ============================ MEMBER FUNCTIONS ===================================================
@@ -311,7 +312,7 @@
}
else
{
- iIncrements = (TInt)( iDuration / 200 ) + 3;
+ iIncrements = (TInt)( iDuration / 200 ) + KSpeedOffset;
}
}
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrol.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrol.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 22 %
+// Version : %version: 23 %
// INCLUDE FILES
@@ -71,6 +71,9 @@
MPX_DEBUG(_L("CMPXVideoPlaybackControl::ConstructL()"));
CreateWindowL();
+
+ Window().SetTransparencyAlphaChannel();
+
EnableDragEvents();
iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityDefault );
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolconfiguration.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolconfiguration.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: e003sa33#14 %
+// Version : %version: 15 %
// INCLUDE FILES
@@ -96,7 +96,8 @@
CMPXVideoPlaybackViewFileDetails* fileDetails = iControlsController->FileDetails();
- if ( fileDetails->iPlaybackMode == EMPXVideoStreaming )
+ if ( fileDetails->iPlaybackMode == EMPXVideoStreaming ||
+ fileDetails->iPlaybackMode == EMPXVideoLiveStreaming )
{
//
// streaming mode, add branding animation control to show while initializing
@@ -218,10 +219,6 @@
break;
}
- default:
- {
- break;
- }
}
}
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 23 %
+// Version : %version: e003sa33#24 %
// INCLUDE FILES
@@ -242,7 +242,7 @@
iPositionLabel = new (ELeave) CEikLabel;
AknLayoutUtils::LayoutLabel( iPositionLabel,
progressRect,
- mp4_progress_pane_t1().LayoutLine() ) ;
+ mp4_progress_pane_t1( 1 ).LayoutLine() ) ;
iPositionLabel->SetContainerWindowL( *this );
iPositionLabel->SetTextL( KNullDesC );
@@ -258,7 +258,7 @@
AknLayoutUtils::LayoutLabel( iDurationLabel,
progressRect,
- mp4_progress_pane_t2().LayoutLine() );
+ mp4_progress_pane_t2( 1 ).LayoutLine() );
iDurationLabel->SetContainerWindowL( *this );
iDurationLabel->SetTextL( KNullDesC );
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 23 %
+// Version : %version: 24 %
// INCLUDE FILES
@@ -47,6 +47,8 @@
const TInt KMPXSliderWidth = 18;
const TInt KMPXVolumeDragEventTimeOut = 100000;
const TInt KMPXPtrEventRepeatRequestTime = 200000;
+const TInt KDynamicSliderFeedbackTimeOut = 100000;
+const TInt KDynamicSliderFeedbackIntensity = 100;
using namespace AknLayoutScalable_Apps;
using namespace AknLayoutScalable_Avkon;
@@ -70,7 +72,7 @@
//
void CMPXVideoPlaybackVolumeBar::ConstructL()
{
- MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::ConstructL()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::ConstructL()"));
SetLayout();
SkinChangeL();
@@ -90,8 +92,6 @@
CMPXVideoPlaybackVolumeBar* CMPXVideoPlaybackVolumeBar::NewL(
CMPXVideoPlaybackControlsController* aController, TRect aRect )
{
- MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::NewL()"));
-
CMPXVideoPlaybackVolumeBar* self =
new ( ELeave ) CMPXVideoPlaybackVolumeBar( aController, aRect );
@@ -108,7 +108,7 @@
//
CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()
{
- MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()"));
if ( iDraggingHandlerTimer )
{
@@ -178,12 +178,11 @@
}
#ifdef RD_TACTILE_FEEDBACK
- if (iFeedback)
+ if ( iFeedback )
{
iFeedback->RemoveFeedbackForControl(this);
}
#endif //RD_TACTILE_FEEDBACK
-
}
// -------------------------------------------------------------------------------------------------
@@ -192,7 +191,8 @@
//
void CMPXVideoPlaybackVolumeBar::HandleResourceChange( TInt aType )
{
- MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::HandleResourceChange(0x%X)"), aType);
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleResourceChange()"),
+ _L("aType = 0x%X"), aType);
if ( aType == KAknsMessageSkinChange )
{
@@ -208,7 +208,7 @@
//
void CMPXVideoPlaybackVolumeBar::SetLayout()
{
- MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::SetLayout()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::SetLayout()"));
TAknLayoutRect tmpLayoutRect;
@@ -273,7 +273,7 @@
//
void CMPXVideoPlaybackVolumeBar::SkinChangeL()
{
- MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::SkinChangeL()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::SkinChangeL()"));
//
// Create icons
@@ -287,10 +287,10 @@
iSpeakerIcon = NULL;
iSpeakerIcon = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiNsliderUnmuted,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted_mask );
+ KAknsIIDQgnIndiNsliderUnmuted,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted_mask );
if ( iSpeakerIcon )
{
@@ -303,10 +303,10 @@
iSpeakerMuteIcon = NULL;
iSpeakerMuteIcon = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiNsliderMuted,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted_mask );
+ KAknsIIDQgnIndiNsliderMuted,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted_mask );
if ( iSpeakerMuteIcon )
@@ -337,10 +337,10 @@
iSliderIcon = NULL;
iSliderIcon = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnGrafNsliderVerticalMarker,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_mask );
+ KAknsIIDQgnGrafNsliderVerticalMarker,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_mask );
if ( iSliderIcon )
{
@@ -353,10 +353,10 @@
iSliderSelectedIcon = NULL;
iSliderSelectedIcon = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnGrafNsliderVerticalMarkerSelected,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected_mask );
+ KAknsIIDQgnGrafNsliderVerticalMarkerSelected,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected_mask );
if ( iSliderSelectedIcon )
{
@@ -369,10 +369,10 @@
iVolumeUpIcon = NULL;
iVolumeUpIcon = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiCam4ZoomMax,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase_mask );
+ KAknsIIDQgnIndiCam4ZoomMax,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase_mask );
if ( iVolumeUpIcon )
{
@@ -385,10 +385,10 @@
iVolumeDownIcon = NULL;
iVolumeDownIcon = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiCam4ZoomMin,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease,
- EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease_mask );
+ KAknsIIDQgnIndiCam4ZoomMin,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease,
+ EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease_mask );
if ( iVolumeDownIcon )
{
@@ -401,10 +401,10 @@
iVolumeFrameIconTop = NULL;
iVolumeFrameIconTop = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiCam4ZoomTop,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top_mask );
+ KAknsIIDQgnIndiCam4ZoomTop,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top_mask );
if ( iVolumeFrameIconTop )
{
@@ -417,10 +417,10 @@
iVolumeFrameIconMiddle = NULL;
iVolumeFrameIconMiddle = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiCam4ZoomMiddle,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle_mask );
+ KAknsIIDQgnIndiCam4ZoomMiddle,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle_mask );
if ( iVolumeFrameIconMiddle )
{
@@ -433,10 +433,10 @@
iVolumeFrameIconBottom = NULL;
iVolumeFrameIconBottom = AknsUtils::CreateGulIconL(
skin,
- KAknsIIDQgnIndiCam4ZoomBottom,
- iconsPath,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom,
- EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom_mask );
+ KAknsIIDQgnIndiCam4ZoomBottom,
+ iconsPath,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom,
+ EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom_mask );
if ( iVolumeFrameIconBottom )
{
@@ -448,6 +448,7 @@
// Calculate the X coordinate to center the icon of sliderbar
TRect volumeBarRectPart;
CGulIcon* volumeFrameIconPart = NULL;
+
if ( iVolumeFrameIconTop )
{
volumeFrameIconPart = iVolumeFrameIconTop;
@@ -478,7 +479,8 @@
//
void CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL( const TPointerEvent& aPointerEvent )
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL()"),
+ _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
switch ( aPointerEvent.iType )
{
@@ -509,7 +511,6 @@
case TPointerEvent::EDrag:
{
iDragging = EVolumeIncreaseDragging;
-
break;
}
case TPointerEvent::EButton1Up:
@@ -540,7 +541,8 @@
//
void CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL( const TPointerEvent& aPointerEvent )
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL()"),
+ _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
switch ( aPointerEvent.iType )
{
@@ -601,7 +603,8 @@
//
void CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL( const TPointerEvent& aPointerEvent )
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL()"),
+ _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
switch ( aPointerEvent.iType )
{
@@ -652,10 +655,16 @@
//
void CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL( const TPointerEvent& aPointerEvent )
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL()"),
+ _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
TInt vol = 0;
+ //
+ // Dynamic Slider Feedback should only be given when the slider is not at the top or bottom
+ //
+ TBool giveDynamicSliderFeedback = EFalse;
+
if ( aPointerEvent.iPosition.iY < iVolumeBarRect.iTl.iY + KMPXSliderHeight / 2 )
{
vol = KPbPlaybackVolumeLevelMax;
@@ -666,6 +675,8 @@
}
else
{
+ giveDynamicSliderFeedback = ETrue;
+
vol = ( iVolumeBarRect.iBr.iY - KMPXSliderHeight / 2 - aPointerEvent.iPosition.iY ) /
iOneVolumeIncrementHeight;
}
@@ -677,11 +688,7 @@
#ifdef RD_TACTILE_FEEDBACK
if ( iFeedback )
{
-#ifdef SYMBIAN_BUILD_GCE
iFeedback->InstantFeedback( ETouchFeedbackSlider );
-#else
- iFeedback->InstantFeedback( ETouchFeedbackBasic );
-#endif //SYMBIAN_BUILD_GCE
}
#endif //RD_TACTILE_FEEDBACK
@@ -700,13 +707,13 @@
case TPointerEvent::EDrag:
{
#ifdef RD_TACTILE_FEEDBACK
- if ( iFeedback )
+ if ( iFeedback && giveDynamicSliderFeedback )
{
-#ifdef SYMBIAN_BUILD_GCE
- iFeedback->InstantFeedback( ETouchFeedbackSlider );
-#else
- iFeedback->InstantFeedback( ETouchFeedbackSensitive );
-#endif //SYMBIAN_BUILD_GCE
+ iFeedback->StartFeedback( this,
+ ETouchDynamicSlider,
+ &aPointerEvent,
+ KDynamicSliderFeedbackIntensity,
+ KDynamicSliderFeedbackTimeOut );
}
#endif //RD_TACTILE_FEEDBACK
@@ -984,7 +991,7 @@
//
void CMPXVideoPlaybackVolumeBar::Reset()
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::Reset()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::Reset()"));
if ( iDragging != EVolumeNotDragging )
{
--- a/videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 80 %
+// Version : %version: 82 %
// Include Files
@@ -189,20 +189,20 @@
// CMPXVideoBasePlaybackView::CreateGeneralPlaybackCommandL()
// -------------------------------------------------------------------------------------------------
//
-void CMPXVideoBasePlaybackView::CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd )
+void CMPXVideoBasePlaybackView::CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd, TBool aDoSync )
{
MPX_ENTER_EXIT(_L("CMPXVideoBasePlaybackView::CreateGeneralPlaybackCommandL()"),
- _L("aCmd = %d"), aCmd );
+ _L("aCmd = %d, aDoSync, = %d"), aCmd, aDoSync );
CMPXCommand* cmd = CMPXCommand::NewL();
CleanupStack::PushL( cmd );
- cmd->SetTObjectValueL<TBool>( KMPXCommandGeneralDoSync, ETrue );
+ cmd->SetTObjectValueL<TBool>( KMPXCommandGeneralDoSync, aDoSync );
cmd->SetTObjectValueL<TBool>( KMPXCommandPlaybackGeneralNoBuffer, ETrue );
cmd->SetTObjectValueL<TInt>( KMPXCommandGeneralId, KMPXCommandIdPlaybackGeneral );
cmd->SetTObjectValueL<TInt>( KMPXCommandPlaybackGeneralType, aCmd );
- iPlaybackUtility->CommandL( *cmd );
+ iPlaybackUtility->CommandL( *cmd, this );
CleanupStack::PopAndDestroy( cmd );
}
@@ -825,7 +825,6 @@
case TMPXPlaybackMessage::EStateChanged:
{
DoHandleStateChangeL( type );
-
break;
}
case TMPXPlaybackMessage::EPropertyChanged:
@@ -1510,6 +1509,8 @@
//
void CMPXVideoBasePlaybackView::RetrieveFileNameAndModeL( CMPXCommand* aCmd )
{
+ MPX_ENTER_EXIT(_L("CMPXVideoBasePlaybackView::RetrieveFileNameAndModeL()"));
+
//
// set attributes on the command
//
--- a/videoplayback/videoplaybackviews/src/mpxvideopdlplaybackview.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackviews/src/mpxvideopdlplaybackview.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 25 %
+// Version : %version: 27 %
// Include Files
@@ -83,6 +83,8 @@
MPX_ENTER_EXIT(_L("CMPXVideoPdlPlaybackView::ConstructL()"));
InitializeVideoPlaybackViewL();
+
+ iSyncClose = ETrue;
}
// -------------------------------------------------------------------------------------------------
@@ -237,7 +239,7 @@
// For progressive download mode, this indicates that the file
// could not be played until the entire file is downloaded.
//
- DisplayErrorMessageL( R_MPX_VIDEO_PDL_WAIT_DL_COMPLETE_MSG );
+ DisplayInfoMessageL( R_MPX_VIDEO_PDL_WAIT_DL_COMPLETE_MSG );
ClosePlaybackViewWithErrorL();
break;
--- a/videoplayback/videoplaybackviews/src/mpxvideoplaybackview.cpp Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayback/videoplaybackviews/src/mpxvideoplaybackview.cpp Mon Jun 21 15:43:03 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 20 %
+// Version : %version: 22 %
// Include Files
@@ -80,6 +80,8 @@
MPX_ENTER_EXIT(_L("CMPXVideoPlaybackView::ConstructL()"));
InitializeVideoPlaybackViewL();
+
+ iSyncClose = EFalse;
}
// -------------------------------------------------------------------------------------------------
@@ -149,7 +151,6 @@
HandleClosePlaybackViewL();
break;
}
-
case KErrMMInvalidProtocol:
case KErrMMInvalidURL:
case KErrArgument:
@@ -158,13 +159,9 @@
HandleClosePlaybackViewL();
break;
}
-
case KErrSessionClosed:
{
- if ( iFileDetails->iPlaybackMode != EMPXVideoLiveStreaming )
- {
- DisplayErrorMessageL( R_MPX_RESOURCE_LOST );
- }
+ DisplayErrorMessageL( R_MPX_RESOURCE_LOST );
HandleClosePlaybackViewL();
break;
}
@@ -197,7 +194,6 @@
default:
{
CMPXVideoBasePlaybackView::HandlePluginErrorL( aError );
-
break;
}
}
@@ -235,14 +231,7 @@
MPX_ENTER_EXIT(_L("CMPXVideoPlaybackView::HandleInitializingStateL()"),
_L("aLastState = %d"), aLastState );
- //
- // For multi item playlists, reset the container and controls for next
- // item in playlist
- //
- if ( IsMultiItemPlaylist() )
- {
- DoHandleInitializingStateL( aLastState );
- }
+ DoHandleInitializingStateL( aLastState );
}
// EOF
--- a/videoplayerapp/mpxvideoplayer/sis/VideoPlayer.pkg Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayerapp/mpxvideoplayer/sis/VideoPlayer.pkg Mon Jun 21 15:43:03 2010 +0300
@@ -20,7 +20,7 @@
&EN
; Header
-#{"Video Player"},(0x200159B2),9,20,21, TYPE=SA, RU
+#{"Video Player"},(0x200159B2),9,20,23, TYPE=SA, RU
; Supports Series 60 v5.0
;[0x1028315F], 0, 0, 0, {"Series60ProductID"}
--- a/videoplayerapp/mpxvideoplayer/sis/VideoPlayer_stub.pkg Wed Jun 09 09:44:23 2010 +0300
+++ b/videoplayerapp/mpxvideoplayer/sis/VideoPlayer_stub.pkg Mon Jun 21 15:43:03 2010 +0300
@@ -20,7 +20,7 @@
&EN
;Header
-#{"Video Player"},(0x200159B2),9,20,21, TYPE=SA
+#{"Video Player"},(0x200159B2),9,20,23, TYPE=SA
;Localised Vendor name
%{"Nokia"}