--- a/mmappcomponents/audiofetcher/group/audiofetcher.mmp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/audiofetcher/group/audiofetcher.mmp Fri Sep 03 20:07:59 2010 -0500
@@ -61,7 +61,7 @@
LIBRARY avkon.lib
LIBRARY bafl.lib // For BaflUtils
LIBRARY bitgdi.lib
-LIBRARY commonengine.lib
+LIBRARY CommonEngine.lib
LIBRARY euser.lib
LIBRARY ecom.lib
LIBRARY cone.lib // TParser
@@ -72,7 +72,7 @@
LIBRARY eikcoctl.lib
LIBRARY eikcore.lib
LIBRARY fbscli.lib
-LIBRARY WS32.lib // For Rwindow
+LIBRARY ws32.lib // For Rwindow
LIBRARY mdccommon.lib // mds
LIBRARY mdeclient.lib // mds
--- a/mmappcomponents/collectionhelper/inc/mpxcollectioncachedhelper.h Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/collectionhelper/inc/mpxcollectioncachedhelper.h Fri Sep 03 20:07:59 2010 -0500
@@ -572,8 +572,10 @@
/**
* Commits the transactions still left in the caching array
+ * for abstractAlbum, it would be left in cache if aCacheAbstractAlbum is set to ETrue
+ * @param aCacheAbstractAlbum whether abstractAlbum is to be cached
*/
- void Commit();
+ void Commit(TBool aCacheAbstractAlbum = EFalse);
private:
--- a/mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp Fri Sep 03 20:07:59 2010 -0500
@@ -12,7 +12,7 @@
* Contributors:
*
* Description: Extended collection helper with an internal caching array
-* Version : %version: da1mmcf#27.1.12.3.5 %
+* Version : %version: e003sa33#27.1.12.3.7 %
*
*/
@@ -53,6 +53,7 @@
_LIT( K3G2FileExt, ".3g2" );
_LIT( KODFFileExt, ".odf" );
_LIT( KO4AFileExt, ".o4a" );
+_LIT( KAACFileExt, ".aac" );
// ======== MEMBER FUNCTIONS ========
@@ -179,7 +180,7 @@
if( iCache->Count() >= cacheCount)
Commit();
- #ifdef ABSTRACTAUDIOALBUM_INCLUDED
+#ifdef ABSTRACTAUDIOALBUM_INCLUDED
TBool extract = ETrue;
if( aMedia->IsSupported( KMPXMediaMTPSampleDataFlag ) )
{
@@ -389,22 +390,29 @@
// Take advantage that MTP always try to access the most recent item
//
CMPXMedia* media( NULL );
+ TBool anotherAbstractMediaFound = EFalse;
for( TInt i=count-1; i>=0; --i )
{
const TDesC& uri = iCache->AtL(i)->ValueText( KMPXMediaGeneralUri );
+ TMPXGeneralCategory category = iCache->AtL(i)->ValueTObjectL<TMPXGeneralCategory>(KMPXMediaGeneralCategory);
+ MPX_DEBUG3("CMPXCollectionCachedHelper::SetL iCache[i].category = %d, uri = %S", category, &uri);
if( newUri.CompareF( uri ) == 0 )
{
MPX_DEBUG2("Found existing media, index %i", i);
media = iCache->AtL(i);
break;
}
+ else if ( category == EMPXPlaylist || category == EMPXAbstractAlbum )
+ anotherAbstractMediaFound = ETrue;
}
// Not found in the array
if( !media )
{
// If the catched count is more than KCacheCount, commit it to database.
- if( count >= KCacheCount )
+ // could be song or alb coming, not in the cache, and there is at least one .alb on the cache
+ // commit all if another AbstractMedia is found (anotherAbstractMediaFound is on ETrue if not the current one)
+ if( ( count >= KCacheCount ) || anotherAbstractMediaFound )
{
Commit();
}
@@ -808,7 +816,8 @@
delete iFoundMedia;
iFoundMedia = NULL;
- Commit();
+ MPX_DEBUG1("CMPXCollectionCachedHelper::GetL, not found on the cache");
+ Commit( ETrue ); // leave AbstractAlbum in cache
RArray<TMPXAttribute> attributes;
CleanupClosePushL(attributes);
@@ -853,8 +862,15 @@
CMPXMedia* CMPXCollectionCachedHelper::FindAllL( CMPXMedia& aCriteria,
const TArray<TMPXAttribute>& aAttrs )
{
- Commit();
+ TBool cacheAbstractAlbum = EFalse;
+ TMPXGeneralCategory category = aCriteria.ValueTObjectL<TMPXGeneralCategory>( KMPXMediaGeneralCategory );
+ // leave AbstractAlbum in cache, unless the new criteria is another abstract media
+ if ( ( category != EMPXPlaylist ) && ( category != EMPXAbstractAlbum ) )
+ cacheAbstractAlbum = ETrue;
+
+ Commit( cacheAbstractAlbum );
+
return CMPXCollectionHelperImp::FindAllL( aCriteria, aAttrs );
}
@@ -877,32 +893,39 @@
// Commits all transactions left in the helper
// ---------------------------------------------------------------------------
//
-void CMPXCollectionCachedHelper::Commit()
+void CMPXCollectionCachedHelper::Commit( TBool aCacheAbstractAlbum )
{
MPX_DEBUG2("CMPXCollectionCachedHelper::Commit %d <--", iCache->Count());
TInt error( KErrNotFound );
TInt count( iCache->Count() );
+ TInt currentIndex = 0;
- for( TInt i=0; i<count; ++i )
+ for( TInt i = 0; i < count; ++i )
{
- CMPXMedia* media = (*iCache)[0];
+ CMPXMedia* media = (*iCache)[currentIndex];
+ TMPXGeneralCategory category = media->ValueTObjectL<TMPXGeneralCategory>( KMPXMediaGeneralCategory );
+ TBool needCache = EFalse;
+
+ if ( ( category == EMPXAbstractAlbum ) && aCacheAbstractAlbum )
+ needCache = ETrue;
+
if( media )
{
- switch( iOp[0] )
+ switch( iOp[currentIndex] )
{
case EAdd:
{
- TRAP( error, SetMissingMetadataL( media ) ); // doing this only before initial add
- MPX_DEBUG2( "CMPXCollectionCachedHelper::Commit, SetMissingMetadataL, err = %d", error );
-
- TRAP(error,
- CMPXCollectionHelperImp::AddL( media );
- );
+ if ( !needCache )
+ {
+ TRAP( error, SetMissingMetadataL( media ) ); // doing this only before initial add
+ MPX_DEBUG2( "CMPXCollectionCachedHelper::Commit, SetMissingMetadataL, err = %d", error );
+ TRAP( error, CMPXCollectionHelperImp::AddL( media ) );
+ }
break;
}
case ESet:
{
- TRAP(error,
+ TRAP( error,
CMPXCollectionHelperImp::SetL( media );
);
break;
@@ -932,10 +955,19 @@
DoAppendContainerL( *media, *iFoundMedia );
DoAppendMTPL( *media, *iFoundMedia );
);
- }
-
- iCache->Remove(0);
- iOp.Remove(0);
+ }
+
+ if ( needCache )
+ {
+ const TDesC& uri = media->ValueText(KMPXMediaGeneralUri);
+ MPX_DEBUG2("need cache uri %S", &uri);
+ currentIndex++;
+ }
+ else
+ {
+ iCache->Remove( currentIndex );
+ iOp.Remove( currentIndex );
+ }
}
MPX_DEBUG1("CMPXCollectionCachedHelper::Commit -->");
@@ -1214,6 +1246,7 @@
// only do this for file that might not be natively supported by PC
if ( ( parse.Ext().CompareF(K3GPFileExt) == 0 )
|| ( parse.Ext().CompareF(K3G2FileExt) == 0 )
+ || ( parse.Ext().CompareF(KAACFileExt) == 0 )
|| ( parse.Ext().CompareF(KODFFileExt) == 0 )
|| ( parse.Ext().CompareF(KO4AFileExt) == 0 ) )
{
--- a/mmappcomponents/harvester/filehandler/inc/mpxfolderscanner.h Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/harvester/filehandler/inc/mpxfolderscanner.h Fri Sep 03 20:07:59 2010 -0500
@@ -99,6 +99,11 @@
*/
void DoScanCompleteL( TInt aErr );
+ /**
+ * Execute asynchronous reading RDir
+ */
+ void ReadDirEntry();
+
private:
/**
@@ -118,6 +123,88 @@
private: // data
+ /**
+ * An entry delegates a scanning folder
+ */
+ class CDirQueueEntry : public CBase
+ {
+ public:
+
+ /**
+ * Push a scanning folder into a directory queue
+ * @param aDirQueue directory queue
+ * @param aDirEntry entry delegates a scanning folder
+ */
+ static void PushL( RPointerArray< CDirQueueEntry >& aDirQueue,
+ CDirQueueEntry* aDirEntry );
+
+ /**
+ * Pop and destroy a scanning folder from a directory queue
+ * @param aDirQueue directory queue
+ */
+ static void PopAndDestroy( RPointerArray< CDirQueueEntry >& aDirQueue );
+
+ /**
+ * Two-phased constructor
+ * @param aFullPath full path of this folder
+ */
+ static CDirQueueEntry* NewL( const TDesC& aFullPath );
+
+ /**
+ * Virtual destructor
+ */
+ virtual ~CDirQueueEntry();
+
+ /**
+ * Get next entry of this folder
+ * @return next entry of this folder,
+ * NULL if no next entry
+ */
+ const TEntry* NextEntry();
+
+ /**
+ * Reset the position of the EntryArray
+ */
+ void ResetPosition();
+
+ private:
+
+ /**
+ * Private constructor
+ */
+ CDirQueueEntry();
+
+ /**
+ * 2nd phase constructor
+ * @param full path of this folder
+ */
+ void ConstructL( const TDesC& aFullPath );
+
+ public: //data
+
+ /**
+ * Full path of this folder
+ * Owned
+ */
+ HBufC* iFullPath;
+
+ /**
+ * Current position of EntryArray
+ */
+ TInt iPos;
+
+ /**
+ * RDir object of this folder
+ * Owned
+ */
+ RDir iDir;
+
+ /**
+ * EntryArray of this folder
+ */
+ TEntryArray iEntryArray;
+ };
+
MMPXFileAdditionObserver& iObserver;
MMPXFileScanStateObserver& iStateObserver;
@@ -130,9 +217,9 @@
TBool iScanning;
// Scanner objects
- CDirScan* iDirScan;
- CDir* iDir;
- TInt iCount;
+ RPointerArray< CDirQueueEntry > iDirQueue; // Owned
+ CDirQueueEntry* iCurDirQueueEntry; // Not Owned
+ HBufC* iCurFullPath; // Not Owned
};
#endif // CMPXFOLDERSCANNER_H
--- a/mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp Fri Sep 03 20:07:59 2010 -0500
@@ -24,6 +24,7 @@
// CONSTANTS
const TInt KFileNumBreakCount = 5;
+_LIT( KTxtBackSlash, "\\" );
// ======== LOCAL FUNCTIONS ========
@@ -60,7 +61,7 @@
//
void CMPXFolderScanner::ConstructL()
{
- iDirScan = CDirScan::NewL(iFs);
+
}
// ---------------------------------------------------------------------------
@@ -88,10 +89,7 @@
CMPXFolderScanner::~CMPXFolderScanner()
{
Cancel();
-
- delete iDirScan;
- delete iDir;
-
+ iDirQueue.ResetAndDestroy();
iDrivesToScan.Close();
}
@@ -106,6 +104,7 @@
// Copy all the other drives we want to scan
//
TInt count( aDrives.Count() );
+ MPX_DEBUG2("CMPXFolderScanner::ScanL aDrives %d",count);
for( TInt i=0; i<count; ++i )
{
// Check if we are already scanning this drive
@@ -125,11 +124,10 @@
if( !SetupNextDriveToScanL() )
{
// Kick off the scanning
- iStatus = KRequestPending;
- SetActive();
- TRequestStatus* status = &iStatus;
- User::RequestComplete( status, KErrNone );
-
+ iCurDirQueueEntry = iDirQueue[ 0 ];
+ iCurFullPath = iCurDirQueueEntry->iFullPath;
+ ReadDirEntry();
+
// We've started scanning
iScanning = ETrue;
}
@@ -143,6 +141,17 @@
}
// ---------------------------------------------------------------------------
+// Reads dir entries asynchronously
+// ---------------------------------------------------------------------------
+//
+void CMPXFolderScanner::ReadDirEntry()
+ {
+ ASSERT( !IsActive() );
+ iCurDirQueueEntry->iDir.Read( iCurDirQueueEntry->iEntryArray, iStatus );
+ SetActive();
+ }
+
+// ---------------------------------------------------------------------------
// Continue Scanning for more files
// ---------------------------------------------------------------------------
//
@@ -150,68 +159,83 @@
{
MPX_DEBUG1("CMPXFolderScanner::DoScanL <---");
TBool done (EFalse);
-
- // Check each file in each directory
- TInt numFiles( iDir->Count() );
- while( iCount < numFiles )
+ TBool blocked ( EFalse );
+
+ // read successfully
+ if ( iStatus == KErrNone || iStatus == KErrEof )
{
- TEntry entry = (*iDir)[iCount];
+ TBuf<KMaxFileName> buffer;
+ const TEntry* entry = NULL;
+ TInt numEntries( iCurDirQueueEntry->iEntryArray.Count() );
+
+ // process the entry one by one
+ while ( iCurDirQueueEntry->iPos < numEntries )
+ {
+ entry = iCurDirQueueEntry->NextEntry();
+ buffer.Zero();
+
+ // Generates the full name of the entry
+ buffer.Append( *iCurFullPath );
+ buffer.Append( entry->iName );
+
+ if ( entry->IsDir() ) // entry is a directory
+ {
+ buffer.Append( KTxtBackSlash );
+
+ blocked = iObserver.IsPathBlockedL( buffer );
- // Construct the full path and file name
- TParse fullEntry;
- TPtrC dirPath(iDirScan->FullPath());
- fullEntry.Set(entry.iName, &dirPath, NULL);
-
- TPtrC fullname = fullEntry.FullName();
- TInt index = iObserver.IsMediaFileL( fullname );
- if( KErrNotFound != index )
- {
- iObserver.HandleFileAdditionL( fullname, index );
- }
-
- // Break if we have scanned enough files
- //
- ++iCount;
- if( iCount%KFileNumBreakCount == 0 )
- {
- return EFalse;
+ if ( !blocked )
+ {
+ CDirQueueEntry* newEntry = CDirQueueEntry::NewL( buffer );
+ TInt err = newEntry->iDir.Open( iFs,
+ buffer,
+ KEntryAttNormal | KEntryAttDir );
+ if ( err == KErrNone )
+ {
+ CDirQueueEntry::PushL( iDirQueue, newEntry );
+ }
+ else
+ {
+ delete newEntry;
+ }
+ }
+ }
+ else // entry is a file
+ {
+ TInt index = iObserver.IsMediaFileL( buffer );
+ if( KErrNotFound != index )
+ {
+ iObserver.HandleFileAdditionL( buffer, index );
+ }
+ }
+ if ( iCurDirQueueEntry->iPos % KFileNumBreakCount == 0 )
+ {
+ return done;
+ }
}
}
-
- // All files from this directory scanned, so move onto next
- //
- TInt err( KErrNone );
- TBool blocked (EFalse);
- if( iCount == numFiles )
+
+ // this dir has other entries to read
+ if ( iStatus == KErrNone )
{
- // Get next Folder
- //
- iCount = 0;
- delete iDir;
- iDir = NULL;
- do
+ iCurDirQueueEntry->ResetPosition();
+ ReadDirEntry();
+ }
+
+ // there is nothing to read or some error has occured during reading,
+ // try to move to next dir
+ else
+ {
+ CDirQueueEntry::PopAndDestroy( iDirQueue );
+ if ( iDirQueue.Count() || !SetupNextDriveToScanL() )
{
- TRAP(err, iDirScan->NextL(iDir));
- blocked = iObserver.IsPathBlockedL( iDirScan->FullPath() );
- if( blocked )
- {
- delete iDir;
- iDir = NULL;
- }
- if( err == KErrNotReady )
- {
- delete iDir;
- iDir = NULL;
- break;
- }
+ iCurDirQueueEntry = iDirQueue[ 0 ];
+ iCurFullPath = iCurDirQueueEntry->iFullPath;
+ ReadDirEntry();
}
- while ( err == KErrPathNotFound || blocked );
-
- // No more directories to scan on this drive
- //
- if( !iDir )
+ else // there is nothing to scan
{
- done = SetupNextDriveToScanL();
+ done = ETrue;
}
}
@@ -230,46 +254,44 @@
TBool done(EFalse);
TBool blocked(EFalse);
// Scan next drive
- while( iDir == NULL && !done )
+ while( iDrivesToScan.Count() && !iDirQueue.Count() )
{
- if( !iDrivesToScan.Count() )
+ TPath path = iDrivesToScan[0];
+
+ MPX_DEBUG1( "CMPXFolderScanner::SetupNextDriveToScanL path blocked?" );
+ blocked = iObserver.IsPathBlockedL( path );
+ MPX_DEBUG2( "CMPXFolderScanner::SetupNextDriveToScanL path blocked %i",
+ blocked );
+
+ // If there was something to scan
+ if( !blocked )
{
- // No more drives or folders that we are interested in
- done = ETrue;
- }
- else
- {
- iDirScan->SetScanDataL(iDrivesToScan[0], KEntryAttNormal, ESortNone);
- iCount = 0;
- TInt err(KErrNone);
- do
+ CDirQueueEntry* newEntry = CDirQueueEntry::NewL( path );
+ TInt err = newEntry->iDir.Open( iFs,
+ path,
+ KEntryAttNormal | KEntryAttDir );
+ if ( err == KErrNone )
{
- MPX_DEBUG1("CMPXFolderScanner::SetupNextDriveToScanL iDirScan->NextL()");
- TRAP(err, iDirScan->NextL(iDir));
- MPX_DEBUG2("CMPXFolderScanner::SetupNextDriveToScanL path %S", &iDirScan->FullPath());
- blocked = iObserver.IsPathBlockedL( iDirScan->FullPath() );
- MPX_DEBUG2("CMPXFolderScanner::SetupNextDriveToScanL path blocked %i", blocked);
- if( blocked )
- {
- delete iDir;
- iDir = NULL;
- }
- }
- while (err == KErrPathNotFound || blocked );
-
- // If there was something to scan
- //
- if( iDir != NULL )
- {
+ CDirQueueEntry::PushL( iDirQueue, newEntry );
// Inform Observer of the new drive that we are scanning
- iObserver.HandleOpenDriveL( ::ExtractDrive(iDrivesToScan[0]),
+ iObserver.HandleOpenDriveL( ::ExtractDrive(iDrivesToScan[0]),
iDrivesToScan[0] );
}
-
- // Remove the 0th element
- iDrivesToScan.Remove(0);
- iDrivesToScan.Compress();
+ else
+ {
+ delete newEntry;
+ }
}
+
+ // Remove the 0th element
+ iDrivesToScan.Remove(0);
+ iDrivesToScan.Compress();
+
+ }
+
+ if ( !iDirQueue.Count() )
+ {
+ done = ETrue;
}
@@ -287,13 +309,11 @@
// Reset all arrays and data
iDrivesToScan.Reset();
-
+ iDirQueue.ResetAndDestroy();
+
// All done!
iScanning = EFalse;
-
- delete iDir;
- iDir = NULL;
-
+
// Callback to observer
iStateObserver.HandleScanStateCompleteL( MMPXFileScanStateObserver::EScanFiles,
aErr );
@@ -319,7 +339,7 @@
{
DoScanCompleteL( err );
}
- else // if( !done )
+ else if ( iCurDirQueueEntry->iPos ) // if( !done )
{
MPX_DEBUG1("CMPXFolderScanner::RunL -- Run again");
iStatus = KRequestPending;
@@ -353,4 +373,92 @@
TRAP_IGNORE( DoScanCompleteL( aError ) );
return KErrNone;
- }
+ }
+
+// ---------------------------------------------------------------------------
+// Two Phased Constructor
+// ---------------------------------------------------------------------------
+//
+CMPXFolderScanner::CDirQueueEntry* CMPXFolderScanner::CDirQueueEntry::NewL(
+ const TDesC& aFullPath )
+ {
+ CDirQueueEntry* self = new ( ELeave ) CDirQueueEntry;
+ CleanupStack::PushL( self );
+ self->ConstructL( aFullPath );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CMPXFolderScanner::CDirQueueEntry::~CDirQueueEntry()
+ {
+ iDir.Close();
+ delete iFullPath;
+ }
+
+// ---------------------------------------------------------------------------
+// Push a dir entry into a dir entry queue
+// ---------------------------------------------------------------------------
+//
+void CMPXFolderScanner::CDirQueueEntry::PushL(
+ RPointerArray<CDirQueueEntry>& aDirQueue,
+ CDirQueueEntry* aDirEntry )
+ {
+ aDirQueue.AppendL( aDirEntry );
+ }
+
+// ---------------------------------------------------------------------------
+// Pop and destroy a dir entry from a dir entry queue
+// ---------------------------------------------------------------------------
+//
+void CMPXFolderScanner::CDirQueueEntry::PopAndDestroy(
+ RPointerArray< CDirQueueEntry >& aDirQueue )
+ {
+ CDirQueueEntry* entry = aDirQueue[ 0 ];
+ delete entry;
+ aDirQueue.Remove( 0 );
+ }
+
+// ---------------------------------------------------------------------------
+// CMPXFolderScanner::CDirQueueEntry::NextEntry
+// ---------------------------------------------------------------------------
+//
+const TEntry* CMPXFolderScanner::CDirQueueEntry::NextEntry()
+ {
+ const TEntry* entry = NULL;
+ if ( iPos >= 0 && iPos < iEntryArray.Count() )
+ {
+ entry = &iEntryArray[ iPos++ ];
+ }
+ return entry;
+ }
+
+// ---------------------------------------------------------------------------
+// Reset the current position of entry array
+// ---------------------------------------------------------------------------
+//
+void CMPXFolderScanner::CDirQueueEntry::ResetPosition()
+ {
+ iPos = 0;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CMPXFolderScanner::CDirQueueEntry::CDirQueueEntry()
+ {
+ // Do nothing
+ }
+
+// ---------------------------------------------------------------------------
+// 2nd Phase Contructor
+// ---------------------------------------------------------------------------
+//
+void CMPXFolderScanner::CDirQueueEntry::ConstructL( const TDesC& aFullPath )
+ {
+ iFullPath = aFullPath.AllocL();
+ }
--- a/mmappcomponents/harvester/metadataextractor/group/mpxmetadataextractor.mmp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/harvester/metadataextractor/group/mpxmetadataextractor.mmp Fri Sep 03 20:07:59 2010 -0500
@@ -53,7 +53,7 @@
LIBRARY mmfstandardcustomcommands.lib
LIBRARY mpxcommon.lib
-LIBRARY SysUtil.lib
+LIBRARY sysutil.lib
LIBRARY thumbnailmanager.lib
#if defined(ARMCC)
--- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Fri Sep 03 20:07:59 2010 -0500
@@ -12,7 +12,7 @@
* Contributors:
*
* Description: Extracts metadata from a file
-* Version : %version: da1mmcf#38.1.4.2.6.1.5.3.8 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: da1mmcf#38.1.4.2.6.1.5.3.9 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -460,12 +460,12 @@
const TDesC& mimeType = iMedia->ValueText( KMPXMediaGeneralMimeType );
MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL, mimeType = %S", &mimeType);
- // Verify if WMA, get the duration
+ // Verify if WMA, get the bit rate
if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 )
{
MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL- WMA");
- // Perform the duration conversion
+ // Perform the bit rate conversion
TLex lexer( *value );
TInt32 bitRate ( 0 );
lexer.Val( bitRate );
@@ -473,7 +473,7 @@
iMedia->SetTObjectValueL<TUint>( KMPXMediaAudioBitrate,
bitRate );
- MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- duration = %i", bitRate);
+ MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- bit rate = %i", bitRate);
}
break;
}
@@ -549,13 +549,17 @@
MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, file info util error %i", err2);
if( KErrNone == err2 )
{
+ // Get duration prior getting sample and bit rates
+ // MMF blocks for accumulating audio data to calculate duration
+ // but MMF does not block for calculating sample rate or bit rate
+ TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms
+ iMedia->SetTObjectValueL<TInt32>( KMPXMediaGeneralDuration,
+ duration );
+
iMedia->SetTObjectValueL<TUint>( KMPXMediaAudioBitrate,
iFileInfoUtil->BitRate() );
iMedia->SetTObjectValueL<TUint>( KMPXMediaAudioSamplerate,
iFileInfoUtil->SampleRate() );
- TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms
- iMedia->SetTObjectValueL<TInt32>( KMPXMediaGeneralDuration,
- duration );
MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- duration %i", duration);
}
--- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/group/mmmtpdprequestprocessor.mmp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/group/mmmtpdprequestprocessor.mmp Fri Sep 03 20:07:59 2010 -0500
@@ -76,10 +76,10 @@
LIBRARY mtpdatatypes.lib
LIBRARY mtpdataproviderapi.lib
-LIBRARY platformenv.lib
+LIBRARY PlatformEnv.lib
LIBRARY edbms.lib
-LIBRARY contentlistingframework.lib
+LIBRARY ContentListingFramework.lib
LIBRARY caf.lib
#if defined(__WINDOWS_MEDIA)
--- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatavideoaccess.cpp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatavideoaccess.cpp Fri Sep 03 20:07:59 2010 -0500
@@ -40,7 +40,7 @@
#include "mmmtpvideodbdefs.h"
#include "tobjectdescription.h"
-const TInt KStorageRootMaxLength = 10;
+_LIT( KMTPNoBackupFolder, "nobackup\\" );
#ifdef _DEBUG
static const TInt KMtpMaxStringDescLength = KMtpMaxStringLength - 1;
@@ -109,12 +109,17 @@
{
PRINT( _L( "MM MTP => CMmMtpDpMetadataVideoAccess::OpenDatabase" ) );
- iRfs.CreatePrivatePath( iStoreNum );
- TInt err = iRfs.SetSessionToPrivate( iStoreNum );
+ TFileName dbFileName;
+ TDriveUnit dbDrive( iStoreNum );
+ iRfs.PrivatePath( dbFileName );
+ dbFileName.Insert( 0, dbDrive.Name() );
+ dbFileName.Append( KMTPNoBackupFolder );
+ dbFileName.Append( KMtpVideoDb );
+ TInt err = iRfs.MkDirAll( dbFileName );
- if ( err == KErrNone )
+ if ( err == KErrNone || err == KErrAlreadyExists )
{
- TRAP( err, iFileStore = CPermanentFileStore::OpenL( iRfs, KMtpVideoDb, EFileRead | EFileWrite ) );
+ TRAP( err, iFileStore = CPermanentFileStore::OpenL( iRfs, dbFileName, EFileRead | EFileWrite ) );
if ( err == KErrNone )
TRAP( err, iFileStore->SetTypeL( iFileStore->Layout() ) );
@@ -127,8 +132,8 @@
if ( err != KErrNone )
{
- iRfs.Delete( KMtpVideoDb ); // delete first before creating a new one
- TRAP( err, iFileStore = CPermanentFileStore::CreateL( iRfs, KMtpVideoDb, EFileRead | EFileWrite ) );
+ iRfs.Delete( dbFileName ); // delete first before creating a new one
+ TRAP( err, iFileStore = CPermanentFileStore::CreateL( iRfs, dbFileName, EFileRead | EFileWrite ) );
PRINT1( _L( "MM MTP <> OpenDatabase RDbNamedDatabase::CreateL, err = %d" ), err );
if ( err == KErrNone )
@@ -149,7 +154,7 @@
if ( KErrNone != err )
{
iDatabase.Close();
- iRfs.Delete( KMtpVideoDb );
+ iRfs.Delete( dbFileName );
}
}
}
@@ -160,13 +165,7 @@
iDbOpened = ETrue;
}
- TBuf<KStorageRootMaxLength> storeRoot;
- if( PathInfo::GetRootPath( storeRoot, iStoreNum ) == KErrNone )
- {
- iRfs.SetSessionPath( storeRoot );
- }
-
- PRINT( _L( "MM MTP <= CMmMtpDpMetadataVideoAccess::OpenDatabase" ) );
+ PRINT1( _L( "MM MTP <= CMmMtpDpMetadataVideoAccess::OpenDatabase err = %d" ), err );
return err;
}
--- a/mmappcomponents/playlistengine/group/mpxplaylistengine.mmp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappcomponents/playlistengine/group/mpxplaylistengine.mmp Fri Sep 03 20:07:59 2010 -0500
@@ -47,7 +47,7 @@
LIBRARY estor.lib
LIBRARY bafl.lib
LIBRARY apmime.lib
-LIBRARY SysLangUtil.lib
+LIBRARY syslangutil.lib
LIBRARY charconv.lib
LIBRARY mpxcommon.lib
--- a/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testviewplugin.cpp Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testviewplugin.cpp Fri Sep 03 20:07:59 2010 -0500
@@ -25,26 +25,27 @@
// -----------------------------------------------------------------------------
TInt CCommonTestClass::CreateCMPXViewPlugin()
{
- FTRACE(FPrint(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL begin")));
- iLog->Log(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL begin"));
- TInt err = KErrNone;
- if ( iViewPlugin != NULL)
- {
- delete iViewPlugin;
- }
- iViewPlugin = NULL;
-
- TUid aUid = TUid::Uid(270531770);
-
- TRAP(err,iViewPlugin = CMPXViewPlugin::NewL( aUid, this ));
- if ( iViewPlugin == NULL)
- {
- err = KErrNotFound;
- }
-
- FTRACE(FPrint(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL end err=%d"), err));
- iLog->Log(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL end err=%d"), err);
- return err;
+// FTRACE(FPrint(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL begin")));
+// iLog->Log(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL begin"));
+// TInt err = KErrNone;
+// if ( iViewPlugin != NULL)
+// {
+// delete iViewPlugin;
+// }
+// iViewPlugin = NULL;
+//
+// TUid aUid = TUid::Uid(270531770);
+//
+// TRAP(err,iViewPlugin = CMPXViewPlugin::NewL( aUid, this ));
+// if ( iViewPlugin == NULL)
+// {
+// err = KErrNotFound;
+// }
+//
+// FTRACE(FPrint(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL end err=%d"), err));
+// iLog->Log(_L("CCommonTestClass::CreateCMPXViewPlugin testing CMPXViewPlugin::NewL end err=%d"), err);
+// return err;
+ return KErrNone;
}
// -----------------------------------------------------------------------------
@@ -53,18 +54,19 @@
// -----------------------------------------------------------------------------
TInt CCommonTestClass::DeleteCMPXViewPlugin()
{
- FTRACE(FPrint(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ begin")));
- iLog->Log(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ begin"));
- TInt err = KErrNone;
- if ( iViewPlugin )
- {
- delete iViewPlugin;
- REComSession::FinalClose();
- iViewPlugin = NULL;
- }
- FTRACE(FPrint(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ end err=%d"), err));
- iLog->Log(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ end err=%d"), err);
- return err;
+// FTRACE(FPrint(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ begin")));
+// iLog->Log(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ begin"));
+// TInt err = KErrNone;
+// if ( iViewPlugin )
+// {
+// delete iViewPlugin;
+// REComSession::FinalClose();
+// iViewPlugin = NULL;
+// }
+// FTRACE(FPrint(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ end err=%d"), err));
+// iLog->Log(_L("CCommonTestClass::DeleteCMPXViewPlugin testing CMPXViewPlugin::~ end err=%d"), err);
+// return err;
+ return KErrNone;
}
--- a/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsstream.h Tue Aug 24 03:26:23 2010 -0500
+++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsstream.h Fri Sep 03 20:07:59 2010 -0500
@@ -89,29 +89,32 @@
* <code>
* QTMSFactory *iFactory;
* QTMSCall *iCall;
- * QTMSStream *iUplink;
- * QTMSStream *iDownlink;
+ * QTMSStream *iUplinkStream;
+ * QTMSStream *iDownlinkStream;
* gint err;
*
* err = QTMSFactory::CreateFactory(iFactory);
* err = iFactory->CreateCall(QTMS_CALL_IP, iCall);
- * err = iCall->CreateStream(QTMS_STREAM_UPLINK, iUplink);
- * err = iCall->CreateStream(QTMS_STREAM_DOWNLINK, iDownlink);
+ * err = iCall->CreateStream(QTMS_STREAM_UPLINK, iUplinkStream);
+ * err = iCall->CreateStream(QTMS_STREAM_DOWNLINK, iDownlinkStream);
* // Configure CS uplink stream
- * iUplinkStream->AddObserver(*this);
+ * connect(iUplinkStream,
+ * SIGNAL(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent)),
+ * this,
+ * SLOT(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent)));
* iUplinkStream->AddSource(iMicSource);
* iUplinkStream->AddSink(iModemSink);
* iUplinkStream->AddEffect(iGainEffect); // To control mic gain
* iUplinkStream->Init();
- * // Wait for state change callback
+ * // Wait for TMSStreamEvent signal
* iUplinkStream->Play();
- * // Wait for state change callback
+ * //Wait for TMSStreamEvent signal
* ...
* // call terminated on the cell modem side, now signal multimedia system
* iUplinkStream->Stop();
* ...
- * err = iCall->DeleteStream(iDownlink);
- * err = iCall->DeleteStream(iUplink);
+ * err = iCall->DeleteStream(iDownlinkStream);
+ * err = iCall->DeleteStream(iUplinkStream);
* err = iFactory->DeleteCall(iCall);
* delete iFactory;
*
--- a/mpx/commonframework/common/group/mpxcommon.mmp Tue Aug 24 03:26:23 2010 -0500
+++ b/mpx/commonframework/common/group/mpxcommon.mmp Fri Sep 03 20:07:59 2010 -0500
@@ -79,8 +79,8 @@
//CAMESE_IN_DRM_UTILITY
LIBRARY drmuihandling.lib
LIBRARY drmautomatedusage.lib
-LIBRARY drmcommon.lib
-LIBRARY drmrights.lib
+LIBRARY DRMCommon.lib
+LIBRARY DrmRights.lib
LIBRARY caf.lib
LIBRARY cafutils.lib
LIBRARY ws32.lib
--- a/mpx/playbackframework/playbackengine/group/mpxplaybackengine.mmp Tue Aug 24 03:26:23 2010 -0500
+++ b/mpx/playbackframework/playbackengine/group/mpxplaybackengine.mmp Fri Sep 03 20:07:59 2010 -0500
@@ -48,8 +48,8 @@
LIBRARY mpxcollectionutility.lib mpxcommon.lib
LIBRARY centralrepository.lib
#ifdef __ACCESSORY_FW
-LIBRARY accClient.lib // Accessory client
-LIBRARY telephonyaudiorouting.lib
+LIBRARY accclient.lib // Accessory client
+LIBRARY TelephonyAudioRouting.lib
#else
LIBRARY dsclient.lib // Dos services
#endif // __ACCESSORY_FW
--- a/mpx/playbackframework/playbackserver/src/mpxplaybackserversession.cpp Tue Aug 24 03:26:23 2010 -0500
+++ b/mpx/playbackframework/playbackserver/src/mpxplaybackserversession.cpp Fri Sep 03 20:07:59 2010 -0500
@@ -173,10 +173,15 @@
}
case EPbsGetAsyncBuffer:
{
+ //In case of other application leaving, causing us to leave
+ //we could have a task that does not get removed from the top of the queue
+ //but the data for that task has been deleted.
+ //When the task runs again, there will be no data causing a panic - leave if this occurs
+ User::LeaveIfNull(iAsyncBuffer);
aMessage.WriteL(0,iAsyncBuffer->Ptr(0));
delete iAsyncBuffer;
- iAsyncBuffer = NULL;
- break;
+ iAsyncBuffer = NULL;
+ break;
}
case EPbsInitFromCollection:
{
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml Fri Sep 03 20:07:59 2010 -0500
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
+ <package id="mmappfw" name="Multimedia App Framework" levels="fw utils if">
+ <collection id="mmappfw_plat" name="Multimedia App Framework Platform Interfaces" level="if">
+ <component id="collection_helper_api" name="Collection Helper API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/collection_helper_api/collection_helper_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/collection_helper_api/group"/>
+ </component>
+ <component id="harvester_collection_mediator_api" name="Harvester Collection Mediator API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/harvester_collection_mediator_api/harvester_collection_mediator_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/harvester_collection_mediator_api/group"/>
+ </component>
+ <component id="harvester_metadata_extractor_api" name="Harvester Metadata Extractor API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/harvester_metadata_extractor_api/harvester_metadata_extractor_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/harvester_metadata_extractor_api/group"/>
+ </component>
+ <component id="harvester_server_api" name="Harvester Server API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/harvester_server_api/harvester_server_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/harvester_server_api/group"/>
+ </component>
+ <component id="harvester_utility_api" name="Harvester Utility API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/harvester_utility_api/harvester_utility_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/harvester_utility_api/group"/>
+ </component>
+ <component id="playlist_engine_api" name="Playlist Engine API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/playlist_engine_api/playlist_engine_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/playlist_engine_api/group"/>
+ </component>
+ <component id="mtp_keys_api" name="MTP Keys API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mtp_keys_api/mtp_keys_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mtp_keys_api/group"/>
+ </component>
+ <component id="mpx_collection_common_definition_api" name="MPX Collection Common Definition API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_collection_common_definition_api/mpx_collection_common_definition_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_collection_common_definition_api/group"/>
+ </component>
+ <component id="mpx_collection_utility_api" name="MPX Collection Utility API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_collection_utility_api/mpx_collection_utility_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_collection_utility_api/group"/>
+ </component>
+ <component id="mpx_common_api" name="MPX Common API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_common_api/mpx_common_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_common_api/group"/>
+ </component>
+ <component id="mpx_common_definition_api" name="MPX Common Definition API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_common_definition_api/mpx_common_definition_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_common_definition_api/group"/>
+ </component>
+ <component id="mpx_playback_common_definition_api" name="MPX Playback Common Definition API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_playback_common_definition_api/mpx_playback_common_definition_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_playback_common_definition_api/group"/>
+ </component>
+ <component id="mpx_playback_utility_api" name="MPX Playback Utility API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_playback_utility_api/mpx_playback_utility_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_playback_utility_api/group"/>
+ </component>
+ <component id="mpx_base_view_plugins_api" name="MPX Base View Plugins API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_base_view_plugins_api/mpx_base_view_plugins_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_base_view_plugins_api/group"/>
+ </component>
+ <component id="mpx_view_utility_api" name="MPX View Utility API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_view_utility_api/mpx_view_utility_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_view_utility_api/group"/>
+ </component>
+ <component id="mpx_albumart_utility_api" name="MPX Album Art Utility API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_albumart_utility_api/mpx_albumart_utility_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/mpx_albumart_utility_api/group"/>
+ </component>
+ <component id="media_player_settings_engine_api" name="Media Player Settings Engine API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/media_player_settings_engine_api/media_player_settings_engine_api.metaxml"/>
+ <unit bldFile="mmappfw_plat/media_player_settings_engine_api/group"/>
+ </component>
+ <component id="mpx_backstepping_utility_api" name="MPX Backstepping Utility API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/mpx_backstepping_utility_api/mpx_backstepping_utility_api.metaxml"/>
+ <meta rel="config">
+ <defined condition="IAD_INCLUDE_BACKSTEPPING"/>
+ </meta>
+ <unit bldFile="mmappfw_plat/mpx_backstepping_utility_api/group"/>
+ </component>
+ <component id="asx_parser_api" name="ASX Parser API" introduced="^1" class="api" filter="s60">
+ <meta rel="Api" href="mmappfw_plat/asx_parser_api/asx_parser_api.metaxml"/>
+ <meta rel="config">
+ <defined condition="__WINDOWS_MEDIA"/>
+ </meta>
+ <unit bldFile="mmappfw_plat/asx_parser_api/group"/>
+ </component>
+ <component id="playback_helper_api" name="Playback Helper API" introduced="^1" class="api" filter="s60">
+ <unit bldFile="mmappfw_plat/playback_helper_api/group"/>
+ </component>
+ <component id="videoplaylist_utility_api" name="Video Playlist Utility API" introduced="^1" class="api" filter="s60">
+ <unit bldFile="mmappfw_plat/videoplaylist_utility_api/group"/>
+ </component>
+ <component id="qt_telephony_multimedia_service_api" name="Qt Telephony Multimedia Service API" introduced="^4" class="api" filter="s60">
+ <unit bldFile="mmappfw_plat/qt_telephony_multimedia_service_api/group"/>
+ </component>
+ </collection>
+ <collection id="mpx" name="Multimedia Player" level="fw">
+ <component id="commonframework" filter="s60" name="MPX Common Framework" introduced="^1">
+ <unit bldFile="mpx/commonframework/group"/>
+ </component>
+ <component id="playbackframework" filter="s60" name="MPX Playback Framework" introduced="^1">
+ <unit bldFile="mpx/playbackframework/group"/>
+ </component>
+ <component id="mpxcollectionfw" filter="s60" name="MPX Collection Framework" introduced="^1">
+ <unit bldFile="mpx/collectionframework/group"/>
+ </component>
+ <component id="mpxviewfw" filter="s60" name="MPX View Framework" introduced="^1">
+ <unit bldFile="mpx/viewframework/group"/>
+ </component>
+ <component id="mpxviewframeworkqt" name="MPX View Framework Qt" filter="s60" introduced="^4">
+ <unit bldFile="mpx/mpxviewframeworkqt" qt:proFile="mpxviewframeworkqt.pro" qt:qmakeArgs="-r -config rom"/>
+ </component>
+ <component id="mpx_build" filter="s60" name="MPX Build" introduced="^1">
+ <!-- Move the export to another component or remove the #includes from this one -->
+ <unit bldFile="mpx/group"/>
+ </component>
+ </collection>
+ <collection id="mmappcomponents" name="Multimedia App Components" level="utils">
+ <component id="mmappcomponents_build" filter="s60" name="Multimedia App Components Build" introduced="^1">
+ <!-- needed for #ifdefs and hrh include. Need to #include the .hrh file in each bld.inf
+ Can remove this once configuration is in place-->
+ <unit bldFile="mmappcomponents/group"/>
+ </component>
+ <component id="collectionhelper" filter="s60" name="Media Player Collection Helper" introduced="^1">
+ <unit bldFile="mmappcomponents/collectionhelper/group"/>
+ </component>
+ <component id="playlistengine" filter="s60" name="Playlist Engine" introduced="^1">
+ <unit bldFile="mmappcomponents/playlistengine/group"/>
+ </component>
+ <component id="mpxharvester" filter="s60" name="Media Player Harvester" introduced="^1">
+ <unit bldFile="mmappcomponents/harvester/group"/>
+ </component>
+ <component id="mmappcommonui" filter="s60" name="Multimedia App Common UI" introduced="^1">
+ <unit bldFile="mmappcomponents/mmappcommonui/group"/>
+ </component>
+ <component id="mediaplayersettingsengine" filter="s60" name="Media Player Settings Engine" introduced="^1">
+ <unit bldFile="mmappcomponents/mediaplayersettingsengine/group"/>
+ </component>
+ <component id="audiofetcher" filter="s60" name="Audio Fetcher" class="plugin" introduced="^1">
+ <meta rel="config">
+ <defined condition="IAD_INCLUDE_AUDIOFETCHER"/>
+ </meta>
+ <unit bldFile="mmappcomponents/audiofetcher/group"/>
+ </component>
+ <component id="asxparser" filter="s60" name="ASX Parser" introduced="^1">
+ <meta rel="config">
+ <defined condition="__WINDOWS_MEDIA"/>
+ </meta>
+ <unit bldFile="mmappcomponents/asxparser/group"/>
+ </component>
+ <component id="playbackhelper" filter="s60" name="Playback Helper" introduced="^3">
+ <unit bldFile="mmappcomponents/playbackhelper/group"/>
+ </component>
+ <component id="videoplaylistutility" filter="s60" name="Video Playlist Utility" introduced="^3">
+ <unit bldFile="mmappcomponents/videoplaylistutility/group"/>
+ </component>
+ <component id="mmmtpdataprovider" filter="s60" name="Multimedia MTP Data Provider" introduced="^3">
+ <unit bldFile="mmappcomponents/mmmtpdataprovider/group"/>
+ </component>
+ </collection>
+ <collection id="qtms" name="Qt Telephony Multimedia Services" level="fw">
+ <component id="qtms_build" filter="s60" name="Qt Telephony Multimedia Services Build" introduced="^4">
+ <!-- Collection is really a component. Move down a dir -->
+ <unit bldFile="qtms" qt:proFile="qtmsapi.pro" qt:qmakeArgs="-r -config rom"/>
+ </component>
+ </collection>
+ <collection id="mmappfw_info" name="Multimedia App Framework Info" level="if">
+ <component id="mmappfw_build" filter="s60" name="Multimedia App Framework Build" introduced="^1">
+ <!-- Move the export to another component or remove the #includes from this one -->
+ <unit bldFile="group"/>
+ </component>
+ <component id="mmappfw_test" filter="s60,test,api_test,pref_test" name="Multimedia App Framework Test" purpose="development" introduced="^1">
+ <unit bldFile="tsrc/group" filter="TA_MMAPPFW"/>
+ </component>
+ </collection>
+ </package>
+</SystemDefinition>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml Fri Sep 03 20:07:59 2010 -0500
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="mw"/>
--- a/tsrc/group/bld.inf Tue Aug 24 03:26:23 2010 -0500
+++ b/tsrc/group/bld.inf Fri Sep 03 20:07:59 2010 -0500
@@ -30,7 +30,7 @@
#include "../../mmappfw_plat/collection_helper_api/tsrc/group/bld.inf"
#include "../../mmappfw_plat/harvester_utility_api/tsrc/group/bld.inf"
#include "../../mmappfw_plat/media_player_settings_engine_api/tsrc/group/bld.inf"
-#include "../../mmappfw_plat/mpx_base_view_plugins_api/tsrc/group/bld.inf"
+//#include "../../mmappfw_plat/mpx_base_view_plugins_api/tsrc/group/bld.inf"
#include "../../mmappfw_plat/mpx_collection_utility_api/tsrc/group/bld.inf"
#include "../../mmappfw_plat/mpx_common_api/tsrc/group/bld.inf"
#include "../../mmappfw_plat/mpx_playback_utility_api/tsrc/group/bld.inf"