# HG changeset patch # User hgs # Date 1281077762 -10800 # Node ID c5e73110f73345641bbf3ad63f0b49078eaa7fa7 # Parent 910a23996aa0b7ce91847864e187f5f1650a3034 201031 diff -r 910a23996aa0 -r c5e73110f733 group/bld.inf --- a/group/bld.inf Fri Jul 23 10:03:59 2010 +0300 +++ b/group/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,8 @@ #include -#include "../locationmanager/inc/locplatsupport.mmh" + +#include "../rom/bld.inf" #include "../metadataengine/group/bld.inf" #include "../locationmanager/group/bld.inf" @@ -36,31 +37,7 @@ PRJ_EXPORTS -#if defined(_LOC_GEOTAGGING_CELLID) -#ifdef _LOC_REVERSEGEOCODE -../rom/mds_cellid_reverse_geocode_enabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) -#else -../rom/mds_cellidenabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) -#endif -#elif defined(_LOC_REVERSEGEOCODE) -#ifdef _LOC_GEOTAGGING_CELLID -../rom/mds_cellid_reverse_geocode_enabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) -#else -../rom/mds_reverse_geocode_enabled_only.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) -#endif -#else -../rom/mds.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) -#endif - -#ifdef RD_MDS_2_5 -../rom/ContentListingFramework.iby CORE_MW_LAYER_IBY_EXPORT_PATH( ContentListingFramework.iby ) -#endif - -//Stubs -../sis/mds/mds_stub.sis /epoc32/data/z/system/install/mds_stub.sis - PRJ_TESTMMPFILES PRJ_TESTEXPORTS -../rom/mds_testers.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds_testers.iby) diff -r 910a23996aa0 -r c5e73110f733 harvester/blacklistserver/src/blacklistsession.cpp --- a/harvester/blacklistserver/src/blacklistsession.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/blacklistserver/src/blacklistsession.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -140,7 +140,7 @@ void CBlacklistSession::RemoveL( const RMessage2& aMessage ) { RBuf uri; - uri.Create( aMessage.GetDesLength( 1 ) ); + User::LeaveIfError( uri.Create( aMessage.GetDesLength( 1 ) ) ); CleanupClosePushL( uri ); aMessage.ReadL( 1, uri ); @@ -162,7 +162,7 @@ void CBlacklistSession::RemoveFromDBL( const RMessage2& aMessage ) { RBuf uri; - uri.Create( aMessage.GetDesLength( 1 ) ); + User::LeaveIfError( uri.Create( aMessage.GetDesLength( 1 ) ) ); CleanupClosePushL( uri ); aMessage.ReadL( 1, uri ); diff -r 910a23996aa0 -r c5e73110f733 harvester/client/eabi/harvesterclientarm.def --- a/harvester/client/eabi/harvesterclientarm.def Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/eabi/harvesterclientarm.def Fri Aug 06 09:56:02 2010 +0300 @@ -20,4 +20,6 @@ _ZTV22CHarvesterRequestQueue @ 19 NONAME ; ## _ZN16RHarvesterClient19AddSessionObserverLER25MHarvesterSessionObserver @ 20 NONAME _ZN16RHarvesterClient21RemoveSessionObserverEv @ 21 NONAME + _ZTI27CHarvesterNotificationQueue @ 22 NONAME + _ZTV27CHarvesterNotificationQueue @ 23 NONAME diff -r 910a23996aa0 -r c5e73110f733 harvester/client/group/harvesterclient.mmp --- a/harvester/client/group/harvesterclient.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/group/harvesterclient.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -46,6 +46,7 @@ SOURCE harvestereventobserverao.cpp SOURCE harvesterrequestactive.cpp SOURCE harvesterrequestqueue.cpp +SOURCE harvesternotificationqueue.cpp MW_LAYER_SYSTEMINCLUDE diff -r 910a23996aa0 -r c5e73110f733 harvester/client/inc/harvesterclientao.h --- a/harvester/client/inc/harvesterclientao.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/inc/harvesterclientao.h Fri Aug 06 09:56:02 2010 +0300 @@ -25,16 +25,14 @@ #include "harvesterclient.h" -class RHarvesterClient; -class MHarvestObserver; - NONSHARABLE_CLASS( CHarvesterClientAO ) : public CActive { public: /** * Construction. */ - static CHarvesterClientAO* NewL( RHarvesterClient &aHarvesterClient ); + static CHarvesterClientAO* NewL( RHarvesterClient& aHarvesterClient, + CHarvesterNotificationQueue* aNotificationQueue ); /** * Destruction. @@ -46,20 +44,14 @@ * @param aObserver Pointer to observer object. */ void SetObserver( MHarvestObserver* aObserver ); - - /** - * Method for removing an observer. - * @param aObserver Pointer to observer object. - */ - void RemoveObserver( MHarvestObserver* aObserver ); - - void NotificateObserver( TInt aErr ); /** * Set AO to active state. RunL is launched from harvesting complete * request which are subscribed from server. */ - void Active(); + void Active( TDesC& aUri ); + + TBool RequestComplete(); protected: @@ -88,7 +80,8 @@ * * @param aHarvesterClient Reference to session class */ - CHarvesterClientAO( RHarvesterClient &aHarvesterClient ); + CHarvesterClientAO( RHarvesterClient& aHarvesterClient, + CHarvesterNotificationQueue* aNotificationQueue ); /** * 2nd phase construction @@ -104,13 +97,20 @@ /** * Reference to Harvester client session + */ + RHarvesterClient& iHarvesterClient; + + /** + * Pointer to harvest notification request queue, not owned */ - RHarvesterClient& iHarvesterClient; + CHarvesterNotificationQueue* iNotificationQueue; /** * Harvester server assigned file name */ - TFileName iURI; + HBufC* iURI; + + TBool iRequestComplete; }; #endif // __CHARVESTERCLIENTAO_H__ diff -r 910a23996aa0 -r c5e73110f733 harvester/client/inc/harvesternotificationqueue.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/harvester/client/inc/harvesternotificationqueue.h Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,84 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Processor object for running harvester requests +* +*/ + + +#ifndef HARVESTERNOTIFICATIONQUEUE_H +#define HARVESTERNOTIFICATIONQUEUE_H + +#include + +class CHarvesterClientAO; +class MHarvestObserver; + +/** + * Processor object for running queued tasks. + * + */ +class CHarvesterNotificationQueue: public CBase + { +public: + + /** + * Two-phased constructor. + * + * @return Instance of CHarvesterNotificationQueue. + */ + static CHarvesterNotificationQueue* NewL(); + + /** + * Destructor + * + */ + virtual ~CHarvesterNotificationQueue(); + + /** + * Adds new request to the queue. + * + * @param aRequest Request to be added to the queue. + */ + void AddRequestL( CHarvesterClientAO* aRequest ); + + /** + * Marks request completed. + */ + void Cleanup( TBool aShutdown ); + + void SetObserver( MHarvestObserver* aObserver ); + +private: + + /** + * C++ default constructor + * @return Instance of CHarvesterNotificationQueue. + */ + CHarvesterNotificationQueue(); + + /** + * Symbian 2nd phase constructor can leave. + */ + void ConstructL(); + +private: + + /** + * Array of active objects for each pending harvester request. + */ + RPointerArray iRequests; + +}; + +#endif // HARVESTERNOTIFICATIONQUEUE_H diff -r 910a23996aa0 -r c5e73110f733 harvester/client/inc/harvesterrequestactive.h --- a/harvester/client/inc/harvesterrequestactive.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/inc/harvesterrequestactive.h Fri Aug 06 09:56:02 2010 +0300 @@ -58,7 +58,7 @@ * @return New CHarvesterRequestActive object. */ static CHarvesterRequestActive* NewL( - RHarvesterClient& aClient, MHarvestObserver* aObserver, + RHarvesterClient& aClient, TInt aService, const TDesC& aUri, HBufC8* aAlbumIds, TBool aAddLocation, CHarvesterRequestQueue* aQueue ); @@ -103,7 +103,7 @@ * @return New CHarvesterRequestActive object. */ CHarvesterRequestActive( RHarvesterClient& aClient, - MHarvestObserver* aObserver, TInt aService, const TDesC& aUri, + TInt aService, const TDesC& aUri, HBufC8* aAlbumIds, TBool aAddLocation, CHarvesterRequestQueue* aQueue ); @@ -141,11 +141,6 @@ */ RHarvesterClient iClient; - /** - * Observer to receive notifications about completed operations. Not owned. - */ - MHarvestObserver* iObserver; - TInt iService; /** diff -r 910a23996aa0 -r c5e73110f733 harvester/client/src/harvesterclient.cpp --- a/harvester/client/src/harvesterclient.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/src/harvesterclient.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -19,6 +19,7 @@ #include "harvesterclient.h" #include "harvestercommon.h" #include "harvesterrequestqueue.h" +#include "harvesternotificationqueue.h" #include "harvestereventobserverao.h" #include "harvesterlog.h" #include "harvesterclientao.h" @@ -54,10 +55,10 @@ WRITELOG( "RHarvesterClient::RHarvesterClient() - Constructor" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_RHARVESTERCLIENT, "RHarvesterClient::RHarvesterClient" ); - iHarvesterClientAO = NULL; iObserver = NULL; iHEO = NULL; iRequestQueue = NULL; + iNotificationQueue = NULL; } // ---------------------------------------------------------------------------------------- @@ -69,7 +70,6 @@ WRITELOG( "RHarvesterClient::Connect()" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CONNECT, "RHarvesterClient::Connect" ); - RProperty property; const TInt error( property.Attach( KHarvesterPSShutdown, KShutdown, EOwnerThread ) ); TInt value = 0; @@ -81,26 +81,29 @@ return KErrLocked; } - if( iHarvesterClientAO ) + if( iRequestQueue ) { return KErrAlreadyExists; } - TRAPD( err, iHarvesterClientAO = CHarvesterClientAO::NewL(*this) ); - if ( err != KErrNone ) - { - WRITELOG( "RHarvesterClient::RHarvesterClient() - Couldn't create active object" ); - return err; - } - // request processor - TRAP( err, iRequestQueue = CHarvesterRequestQueue::NewL() ) + TRAPD( err, iRequestQueue = CHarvesterRequestQueue::NewL() ) { if ( err != KErrNone ) { WRITELOG( "RHarvesterClient::RHarvesterClient() - Couldn't create harvester request queue" ); - delete iHarvesterClientAO; - iHarvesterClientAO = NULL; + return err; + } + } + + // request processor + TRAP( err, iNotificationQueue = CHarvesterNotificationQueue::NewL() ) + { + if ( err != KErrNone ) + { + WRITELOG( "RHarvesterClient::RHarvesterClient() - Couldn't create harvester notification queue" ); + delete iRequestQueue; + iRequestQueue = NULL; return err; } } @@ -114,10 +117,10 @@ } else { - delete iHarvesterClientAO; - iHarvesterClientAO = NULL; delete iRequestQueue; iRequestQueue = NULL; + delete iNotificationQueue; + iNotificationQueue = NULL; } #ifdef _DEBUG @@ -185,6 +188,8 @@ // cancels Harvest Complete request if it exist at server UnregisterHarvestComplete(); + delete iNotificationQueue; + iNotificationQueue = NULL; WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" ); @@ -197,9 +202,6 @@ delete iRequestQueue; iRequestQueue = NULL; - delete iHarvesterClientAO; - iHarvesterClientAO = NULL; - delete iHEO; iHEO = NULL; @@ -217,11 +219,8 @@ WRITELOG( "RHarvesterClient::SetObserver()" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_SETOBSERVER, "RHarvesterClient::SetObserver" ); - if ( iHarvesterClientAO ) - { - iHarvesterClientAO->SetObserver( aObserver ); - } iObserver = aObserver; + iNotificationQueue->SetObserver( iObserver ); } // ---------------------------------------------------------------------------------------- @@ -233,18 +232,11 @@ WRITELOG( "RHarvesterClient::RemoveObserver()" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" ); - if ( iHarvesterClientAO ) - { - iHarvesterClientAO->RemoveObserver( aObserver ); - } - if ( aObserver == iObserver ) { - if ( iObserver ) - { - WRITELOG( "CHarvesterClientAO::RemoveObserver() - deleting observer" ); - iObserver = NULL; - } + WRITELOG( "RHarvesterClient::RemoveObserver() - deleting observer" ); + iObserver = NULL; + iNotificationQueue->SetObserver( iObserver ); } } @@ -300,7 +292,6 @@ WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" ); - HBufC8* paramBuf = NULL; TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) ); if ( err ) @@ -314,7 +305,7 @@ } CHarvesterRequestActive* harvestFileActive( NULL ); - TRAP( err, harvestFileActive = CHarvesterRequestActive::NewL( *this, iObserver, (TInt)EHarvestFile, aURI, + TRAP( err, harvestFileActive = CHarvesterRequestActive::NewL( *this, (TInt)EHarvestFile, aURI, paramBuf, aAddLocation, iRequestQueue ) ); if( err ) { @@ -391,7 +382,7 @@ } CHarvesterRequestActive* harvestFileActive( NULL ); - TRAP( err, harvestFileActive = CHarvesterRequestActive::NewL( *this, iObserver, (TInt)EHarvestFile, aURI, + TRAP( err, harvestFileActive = CHarvesterRequestActive::NewL( *this, (TInt)EHarvestFile, aURI, paramBuf, aAddLocation, iRequestQueue ) ); if( err ) { @@ -476,7 +467,6 @@ TIpcArgs ipcArgs( &aURI ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" ); - if( !iHandle ) { return; @@ -496,17 +486,43 @@ return; } - Send( EUnregisterHarvestComplete ); + SendReceive( EUnregisterHarvestComplete ); } // ---------------------------------------------------------------------------------------- // HarvestFile // ---------------------------------------------------------------------------------------- // -void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus ) +void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus, TDesC& aUri ) { // send to server harvesting complete observer - iHarvesterClientAO->Active(); + if( iObserver ) + { + CHarvesterClientAO* harvestNotificationRequest( NULL ); + TRAPD( err, harvestNotificationRequest = CHarvesterClientAO::NewL(*this, iNotificationQueue ) ); + if( err ) + { + WRITELOG1( "RHarvesterClient::HarvestFile() - cannot issue harvesting notitification request, error: %d", err ); + iObserver->HarvestingComplete( const_cast(aUri), KErrCompletion ); + delete harvestNotificationRequest; + harvestNotificationRequest = NULL; + } + else + { + TRAP( err, iNotificationQueue->AddRequestL( harvestNotificationRequest ) ); + if( err ) + { + iObserver->HarvestingComplete( const_cast(aUri), KErrCompletion ); + delete harvestNotificationRequest; + harvestNotificationRequest = NULL; + } + else + { + harvestNotificationRequest->SetObserver( iObserver ); + harvestNotificationRequest->Active( aUri ); + } + } + } SendReceive( aService, aArgs, aStatus ); } @@ -516,8 +532,6 @@ // void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs ) { - // send to server harvesting complete observer - iHarvesterClientAO->Active(); SendReceive( aService, aArgs ); } diff -r 910a23996aa0 -r c5e73110f733 harvester/client/src/harvesterclientao.cpp --- a/harvester/client/src/harvesterclientao.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/src/harvesterclientao.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -17,6 +17,7 @@ #include "harvesterclientao.h" +#include "harvesternotificationqueue.h" #include "harvestercommon.h" #include "harvesterlog.h" #include "mdsutils.h" @@ -30,12 +31,13 @@ // NewL // --------------------------------------------------------------------------- // -CHarvesterClientAO* CHarvesterClientAO::NewL( RHarvesterClient& aHarvesterClient ) +CHarvesterClientAO* CHarvesterClientAO::NewL( RHarvesterClient& aHarvesterClient, + CHarvesterNotificationQueue* aNotificationQueue ) { WRITELOG( "CHarvesterClientAO::NewL()" ); OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_NEWL, "CHarvesterClientAO::NewL" ); - CHarvesterClientAO* self = new (ELeave) CHarvesterClientAO( aHarvesterClient ); + CHarvesterClientAO* self = new (ELeave) CHarvesterClientAO( aHarvesterClient, aNotificationQueue ); CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); @@ -52,6 +54,9 @@ WRITELOG( "CHarvesterClientAO::~CHarvesterClientAO()" ); Cancel(); + + delete iURI; + iURI = NULL; } // --------------------------------------------------------------------------- @@ -59,10 +64,14 @@ // First-phase C++ constructor // --------------------------------------------------------------------------- // -CHarvesterClientAO::CHarvesterClientAO( RHarvesterClient& aHarvesterClient ) +CHarvesterClientAO::CHarvesterClientAO( RHarvesterClient& aHarvesterClient, + CHarvesterNotificationQueue* aNotificationQueue ) : CActive( CActive::EPriorityStandard ), iObserver( NULL ), - iHarvesterClient( aHarvesterClient ) + iHarvesterClient( aHarvesterClient ), + iNotificationQueue( aNotificationQueue ), + iURI( NULL ), + iRequestComplete( EFalse ) { OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO, "CHarvesterClientAO::CHarvesterClientAO" ); @@ -94,25 +103,6 @@ } // --------------------------------------------------------------------------- -// RemoveObserver -// --------------------------------------------------------------------------- -// -void CHarvesterClientAO::RemoveObserver( MHarvestObserver* aObserver ) - { - WRITELOG( "CHarvesterClientAO::RemoveObserver()" ); - OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_REMOVEOBSERVER, "CHarvesterClientAO::RemoveObserver" ); - - if ( aObserver == iObserver ) - { - if ( iObserver ) - { - WRITELOG( "CHarvesterClientAO::RemoveObserver() - deleting observer" ); - iObserver = NULL; - } - } - } - -// --------------------------------------------------------------------------- // DoCancel // --------------------------------------------------------------------------- // @@ -120,20 +110,33 @@ { WRITELOG( "CHarvesterClientAO::DoCancel()" ); OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_DOCANCEL, "CHarvesterClientAO::DoCancel" ); - + iRequestComplete = ETrue; } // --------------------------------------------------------------------------- // Active // --------------------------------------------------------------------------- // -void CHarvesterClientAO::Active() +void CHarvesterClientAO::Active( TDesC& aUri ) { - if (!IsActive()) - { - iHarvesterClient.RegisterHarvestComplete(iURI, iStatus); - SetActive(); - } + WRITELOG( "CHarvesterClientAO::Active()"); + if( iObserver && !IsActive() ) + { + delete iURI; + iURI = NULL; + iURI = aUri.Alloc(); + if( iURI ) + { + TPtr16 uri( iURI->Des() ); + iHarvesterClient.RegisterHarvestComplete( uri, iStatus ); + SetActive(); + } + else if( iObserver ) + { + iObserver->HarvestingComplete( aUri, KErrCompletion ); + iRequestComplete = ETrue; + } + } } // --------------------------------------------------------------------------- @@ -144,8 +147,9 @@ { WRITELOG( "CHarvesterClientAO::RunL()" ); OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_RUNL, "CHarvesterClientAO::RunL" ); + + iNotificationQueue->Cleanup( EFalse ); - const TInt status = iStatus.Int(); if ( status < KErrNone ) @@ -154,17 +158,16 @@ } // Callback to client process - if ( iObserver ) + if ( iObserver && iURI ) { - WRITELOG( "CHarvesterClientAO::RunL() - ECompleteRequest - calling callback" ); - iObserver->HarvestingComplete( iURI, status ); + WRITELOG( "CHarvesterClientAO::RunL() - Request complete - calling callback" ); + TPtrC16 uri( iURI->Des() ); + iObserver->HarvestingComplete( uri, status ); } - // if the request was not canceled or server is not terminated, Activating AO again - if ( status != KErrCancel && status != KErrServerTerminated ) - { - Active(); - } + delete iURI; + iURI = NULL; + iRequestComplete = ETrue; } // --------------------------------------------------------------------------- @@ -179,5 +182,18 @@ { WRITELOG1( "CHarvesterClientAO::RunError(), errorcode: %d", aError ); + iNotificationQueue->Cleanup( EFalse ); + iRequestComplete = ETrue; + return KErrNone; } + +// --------------------------------------------------------------------------- +// RequestComplete +// --------------------------------------------------------------------------- +// +TBool CHarvesterClientAO::RequestComplete() + { + return iRequestComplete; + } + diff -r 910a23996aa0 -r c5e73110f733 harvester/client/src/harvesternotificationqueue.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/harvester/client/src/harvesternotificationqueue.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,140 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Processor object for running harvester requests +* +*/ + + +#include "harvesternotificationqueue.h" +#include "harvesterclientao.h" +#include "harvesterlog.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CHarvesterNotificationQueue::NewL() +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CHarvesterNotificationQueue* CHarvesterNotificationQueue::NewL() + { + CHarvesterNotificationQueue* self = new( ELeave )CHarvesterNotificationQueue(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// CHarvesterNotificationQueue::CHarvesterNotificationQueue() +// C++ default constructor can NOT contain any code, that might leave. +// --------------------------------------------------------------------------- +// +CHarvesterNotificationQueue::CHarvesterNotificationQueue() + { + } + + +// --------------------------------------------------------------------------- +// CHarvesterNotificationQueue::ConstructL() +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------------------------- +// +void CHarvesterNotificationQueue::ConstructL() + { + } + + +// --------------------------------------------------------------------------- +// CHarvesterNotificationQueue::~CHarvesterNotificationQueue() +// Destructor. +// --------------------------------------------------------------------------- +// +CHarvesterNotificationQueue::~CHarvesterNotificationQueue() + { + WRITELOG( "CHarvesterNotificationQueue::~CHarvesterNotificationQueue()"); + + Cleanup( ETrue ); + iRequests.ResetAndDestroy(); + + WRITELOG( "CHarvesterNotificationQueue::~CHarvesterNotificationQueue() - All requests deleted"); + } + + +// --------------------------------------------------------------------------- +// CHarvesterNotificationQueue::AddRequestL() +// Adds new request to the queue. +// --------------------------------------------------------------------------- +// +void CHarvesterNotificationQueue::AddRequestL( CHarvesterClientAO* aRequest ) + { + WRITELOG( "CHarvesterNotificationQueue::AddRequestL()"); + + iRequests.AppendL( aRequest ); + } + +// --------------------------------------------------------------------------- +// CHarvesterNotificationQueue::RequestComplete() +// Completes the request +// --------------------------------------------------------------------------- +// +void CHarvesterNotificationQueue::Cleanup( TBool aShutdown ) + { + WRITELOG( "CHarvesterNotificationQueue::RequestComplete()"); + + for( TInt i = iRequests.Count() - 1; i >=0; i-- ) + { + if( aShutdown ) + { + iRequests[i]->Cancel(); + } + + if( iRequests[i]->RequestComplete() && !iRequests[i]->IsActive() ) + { + delete iRequests[i]; + iRequests[i] = NULL; + iRequests.Remove( i ); + + // correct the index so that no items are skipped + i--; + if(i <= -1) + { + i = -1; + } + } + } + + if( iRequests.Count() == 0 && !aShutdown ) + { + iRequests.Compress(); + } + } + +// --------------------------------------------------------------------------- +// SetObserver +// --------------------------------------------------------------------------- +// +void CHarvesterNotificationQueue::SetObserver( MHarvestObserver* aObserver ) + { + WRITELOG( "CHarvesterNotificationQueue::SetObserver()" ); + + for( TInt i = iRequests.Count() - 1; i >=0; i-- ) + { + iRequests[i]->SetObserver( aObserver ); + } + } + +// End of file + diff -r 910a23996aa0 -r c5e73110f733 harvester/client/src/harvesterrequestactive.cpp --- a/harvester/client/src/harvesterrequestactive.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/src/harvesterrequestactive.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -19,6 +19,7 @@ #include "harvesterrequestactive.h" #include "harvesterrequestqueue.h" +#include "harvesterlog.h" // ======== MEMBER FUNCTIONS ======== @@ -32,10 +33,6 @@ if( IsActive() ) { Cancel(); - if( iObserver ) - { - iObserver->HarvestingComplete( iUri, KErrCancel ); - } iRequestCompleted = ETrue; } @@ -49,12 +46,12 @@ // --------------------------------------------------------------------------- // CHarvesterRequestActive* CHarvesterRequestActive::NewL( - RHarvesterClient& aClient, MHarvestObserver* aObserver, + RHarvesterClient& aClient, TInt aService, const TDesC& aUri, HBufC8* aAlbumIds, TBool aAddLocation, CHarvesterRequestQueue* aQueue ) { - CHarvesterRequestActive* self = new( ELeave )CHarvesterRequestActive( aClient, aObserver, + CHarvesterRequestActive* self = new( ELeave )CHarvesterRequestActive( aClient, aService, aUri, aAlbumIds, aAddLocation, aQueue ); return self; } @@ -64,10 +61,10 @@ // C++ default constructor can NOT contain any code, that might leave. // --------------------------------------------------------------------------- // -CHarvesterRequestActive::CHarvesterRequestActive( RHarvesterClient& aClient, - MHarvestObserver* aObserver, TInt aService, const TDesC& aUri, +CHarvesterRequestActive::CHarvesterRequestActive( RHarvesterClient& aClient, + TInt aService, const TDesC& aUri, HBufC8* aAlbumIds, TBool aAddLocation, CHarvesterRequestQueue* aQueue ) - : CActive( CActive::EPriorityStandard ), iClient( aClient ), iObserver( aObserver ), + : CActive( CActive::EPriorityStandard ), iClient( aClient ), iService( aService ), iUri( aUri ), iAlbumIds( aAlbumIds ), iAddLocation( aAddLocation ), iRequestQueue( aQueue ), iLocation( EFalse ), iCancelled( EFalse ) { @@ -80,10 +77,6 @@ // void CHarvesterRequestActive::RunL() { - if( iStatus.Int() && iObserver ) - { - iObserver->HarvestingComplete( iUri, iStatus.Int() ); - } iRequestCompleted = ETrue; if( iRequestQueue ) { @@ -102,10 +95,6 @@ return KErrNone; } - if( iObserver ) - { - iObserver->HarvestingComplete( iUri, aError ); - } iRequestCompleted = ETrue; return KErrNone; } @@ -133,7 +122,7 @@ if( !iCancelled ) { - iClient.HarvestFile( iService, iPersistentArgs, iStatus ); + iClient.HarvestFile( iService, iPersistentArgs, iStatus, iUri ); SetActive(); } } @@ -144,7 +133,7 @@ // void CHarvesterRequestActive::ForceHarvest() { - iObserver = NULL; + WRITELOG( "CHarvesterRequestActive::ForceHarvest()"); TPckg location( iAddLocation ); iLocation.Set( location ); diff -r 910a23996aa0 -r c5e73110f733 harvester/client/traces/fixed_id.definitions --- a/harvester/client/traces/fixed_id.definitions Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/traces/fixed_id.definitions Fri Aug 06 09:56:02 2010 +0300 @@ -4,7 +4,6 @@ [TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_CONSTRUCTL=0x10 [TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_DOCANCEL=0x13 [TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_NEWL=0xd -[TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_REMOVEOBSERVER=0x12 [TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_RUNL=0x14 [TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_SETOBSERVER=0x11 [TRACE]TRACE_NORMAL[0x3]_DUP1_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO=0xf @@ -20,3 +19,4 @@ [TRACE]TRACE_NORMAL[0x3]_RHARVESTERCLIENT_SETOBSERVER=0x6 [TRACE]TRACE_NORMAL[0x3]__CREATESERVERPROCESS=0xc [TRACE]TRACE_NORMAL[0x3]__STARTSERVER=0xb +[[OBSOLETE]][TRACE]TRACE_NORMAL[0x3]_CHARVESTERCLIENTAO_REMOVEOBSERVER=0x12 diff -r 910a23996aa0 -r c5e73110f733 harvester/client/traces/harvesterclientaoTraces.h --- a/harvester/client/traces/harvesterclientaoTraces.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/client/traces/harvesterclientaoTraces.h Fri Aug 06 09:56:02 2010 +0300 @@ -11,7 +11,6 @@ #define DUP1_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO 0x3000f #define CHARVESTERCLIENTAO_CONSTRUCTL 0x30010 #define CHARVESTERCLIENTAO_SETOBSERVER 0x30011 -#define CHARVESTERCLIENTAO_REMOVEOBSERVER 0x30012 #define CHARVESTERCLIENTAO_DOCANCEL 0x30013 #define CHARVESTERCLIENTAO_RUNL 0x30014 diff -r 910a23996aa0 -r c5e73110f733 harvester/common/bwincw/harvestercommonwinscw.def --- a/harvester/common/bwincw/harvestercommonwinscw.def Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/bwincw/harvestercommonwinscw.def Fri Aug 06 09:56:02 2010 +0300 @@ -66,4 +66,5 @@ ?HandleObjectPropertyL@CMdeObjectWrapper@@SAXAAVCMdEObject@@AAVCMdEPropertyDef@@PAXH@Z @ 65 NONAME ; void CMdeObjectWrapper::HandleObjectPropertyL(class CMdEObject &, class CMdEPropertyDef &, void *, int) ?SendHarvestingStatusEventL@CHarvesterPluginFactory@@QAEXH@Z @ 66 NONAME ; void CHarvesterPluginFactory::SendHarvestingStatusEventL(int) ?PauseHarvester@CHarvesterPluginFactory@@QAEXH@Z @ 67 NONAME ; void CHarvesterPluginFactory::PauseHarvester(int) + ?GetObjectDefL@CHarvesterPluginFactory@@QAEXPAVCHarvesterData@@AAVTDes16@@@Z @ 68 NONAME ; void CHarvesterPluginFactory::GetObjectDefL(class CHarvesterData *, class TDes16 &) diff -r 910a23996aa0 -r c5e73110f733 harvester/common/eabi/harvestercommonarm.def --- a/harvester/common/eabi/harvestercommonarm.def Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/eabi/harvestercommonarm.def Fri Aug 06 09:56:02 2010 +0300 @@ -86,4 +86,5 @@ _ZN18CHarvesterExifUtilD1Ev @ 85 NONAME _ZN18CHarvesterExifUtilD2Ev @ 86 NONAME _ZN23CHarvesterPluginFactory14PauseHarvesterEi @ 87 NONAME + _ZN23CHarvesterPluginFactory13GetObjectDefLEP14CHarvesterDataR6TDes16 @ 88 NONAME diff -r 910a23996aa0 -r c5e73110f733 harvester/common/inc/harvestercommon.h --- a/harvester/common/inc/harvestercommon.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/inc/harvestercommon.h Fri Aug 06 09:56:02 2010 +0300 @@ -106,6 +106,9 @@ // Between Standard and UserInput to allow components to react to important events correctly const TInt KHarvesterCustomImportantPriority = 5; +// Higher than MonitorPlugin priority but lower than High to ensure server can answer to all +// connection requests as fast as possible +const TInt KHarvesterServerSessionPriority = 11; #endif diff -r 910a23996aa0 -r c5e73110f733 harvester/common/inc/harvesterpluginfactory.h --- a/harvester/common/inc/harvesterpluginfactory.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/inc/harvesterpluginfactory.h Fri Aug 06 09:56:02 2010 +0300 @@ -44,6 +44,8 @@ IMPORT_C void SendHarvestingStatusEventL( TBool aStarted ); IMPORT_C void PauseHarvester( TBool aPaused ); + + IMPORT_C void GetObjectDefL( CHarvesterData* aHD, TDes& aObjectDef ); private: CHarvesterPluginFactory(); diff -r 910a23996aa0 -r c5e73110f733 harvester/common/src/harvestercenreputil.cpp --- a/harvester/common/src/harvestercenreputil.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/src/harvestercenreputil.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -198,7 +198,9 @@ continue; } HBufC* pathBuf = path.AllocL(); + CleanupStack::PushL( pathBuf ); aPaths.AppendL( pathBuf ); + CleanupStack::Pop( pathBuf ); } CleanupStack::PopAndDestroy( &scanPathKeys ); diff -r 910a23996aa0 -r c5e73110f733 harvester/common/src/harvesterdata.cpp --- a/harvester/common/src/harvesterdata.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/src/harvesterdata.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -29,7 +29,11 @@ CHarvesterData::CHarvesterData( const HBufC* aUri ) { iUri = aUri; + iClientData = NULL; + iMdeObject = NULL; + iLocationData = NULL; iIsBinary = ETrue; + iClientId = KNullUid; } //========================================================================== @@ -229,6 +233,11 @@ // EXPORT_C void CHarvesterData::SetMdeObject( CMdEObject* aMdeObject ) { + if( iMdeObject ) + { + delete iMdeObject; + iMdeObject = NULL; + } iMdeObject = aMdeObject; } diff -r 910a23996aa0 -r c5e73110f733 harvester/common/src/harvesterplugin.cpp --- a/harvester/common/src/harvesterplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/src/harvesterplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -144,13 +144,13 @@ { if( iQueue->Count() == 0 ) { - SetNextRequest( EHarvesterIdle ); if( iHarvesting ) { TRAP_IGNORE( iFactory->SendHarvestingStatusEventL( EFalse ) ); iHarvesting = EFalse; } iQueue->Compress(); + SetNextRequest( EHarvesterIdle ); } else { @@ -162,6 +162,11 @@ CHarvesterData* hd = (*iQueue)[0]; iQueue->Remove( 0 ); + if( !hd ) + { + SetNextRequest( EHarvesterGathering ); + break; + } const TDesC& uri = hd->Uri(); TUint32 mediaId = hd->MdeObject().MediaId(); @@ -194,7 +199,7 @@ TRAP_IGNORE( SetDefaultPropertiesL( *hd ) ); WRITELOG1("CHarvesterPlugin::RunL - Calling HarvestL for file: %S", &uri); - TRAPD(err, HarvestL( hd ) ); + TRAPD( err, HarvestL( hd ) ); if ( iBlacklist ) { diff -r 910a23996aa0 -r c5e73110f733 harvester/common/src/harvesterpluginfactory.cpp --- a/harvester/common/src/harvesterpluginfactory.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/common/src/harvesterpluginfactory.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -93,50 +93,9 @@ // GetObjectDef // --------------------------------------------------------------------------- // -EXPORT_C void CHarvesterPluginFactory::GetObjectDefL( CHarvesterData& aHD, TDes& aObjectDef ) +EXPORT_C void CHarvesterPluginFactory::GetObjectDefL( CHarvesterData& /*aHD*/, TDes& aObjectDef ) { - TPtrC extPtr; - if( MdsUtils::GetExt( aHD.Uri(), extPtr ) ) - { - RPointerArray supportedPlugins; - CleanupClosePushL( supportedPlugins ); - GetSupportedPluginsL( supportedPlugins, extPtr ); - - const TInt sCount = supportedPlugins.Count(); - if( sCount == 1 ) - { - CHarvesterPluginInfo* info = supportedPlugins[0]; - if( info->iObjectTypes.Count() == 1 ) - { - aObjectDef.Copy( *(info->iObjectTypes[0]) ); - aHD.SetHarvesterPluginInfo( info ); - CleanupStack::PopAndDestroy( &supportedPlugins ); - return; - } - } - for( TInt i = sCount - 1; i >=0; i-- ) - { - CHarvesterPluginInfo* info = supportedPlugins[i]; - if ( !(info->iPlugin) ) - { - info->iPlugin = CHarvesterPlugin::NewL( info->iPluginUid ); - info->iPlugin->SetQueue( info->iQueue ); - info->iPlugin->SetHarvesterPluginFactory( *this ); - info->iPlugin->SetBlacklist( *iBlacklist ); - } - info->iPlugin->GetObjectType( aHD.Uri(), aObjectDef ); - if( aObjectDef.Length() > 0 ) - { - aHD.SetHarvesterPluginInfo( info ); - break; - } - } - CleanupStack::PopAndDestroy( &supportedPlugins ); - } - else - { - aObjectDef.Zero(); - } + aObjectDef.Zero(); } // --------------------------------------------------------------------------- @@ -329,11 +288,9 @@ pluginInfo->iPluginUid = aPluginUid; -#ifdef MDS_HARVESTERPLUGINS_ON_BOOT pluginInfo->iPlugin = CHarvesterPlugin::NewL( pluginInfo->iPluginUid ); pluginInfo->iPlugin->SetQueue( pluginInfo->iQueue ); pluginInfo->iPlugin->SetHarvesterPluginFactory( *this ); -#endif iHarvesterPluginInfoArray.AppendL( pluginInfo ); CleanupStack::Pop( pluginInfo ); @@ -492,3 +449,54 @@ } } +EXPORT_C void CHarvesterPluginFactory::GetObjectDefL( CHarvesterData* aHD, TDes& aObjectDef ) + { + TPtrC extPtr; + if( MdsUtils::GetExt( aHD->Uri(), extPtr ) ) + { + RPointerArray supportedPlugins; + CleanupClosePushL( supportedPlugins ); + GetSupportedPluginsL( supportedPlugins, extPtr ); + + const TInt sCount = supportedPlugins.Count(); + if( sCount == 1 ) + { + CHarvesterPluginInfo* info = supportedPlugins[0]; + if( info->iObjectTypes.Count() == 1 ) + { + aObjectDef.Copy( *(info->iObjectTypes[0]) ); + aHD->SetHarvesterPluginInfo( info ); + CleanupStack::PopAndDestroy( &supportedPlugins ); + return; + } + } + for( TInt i = sCount - 1; i >=0; i-- ) + { + CHarvesterPluginInfo* info = supportedPlugins[i]; + if ( !(info->iPlugin) ) + { + info->iPlugin = CHarvesterPlugin::NewL( info->iPluginUid ); + info->iPlugin->SetQueue( info->iQueue ); + info->iPlugin->SetHarvesterPluginFactory( *this ); + info->iPlugin->SetBlacklist( *iBlacklist ); + } + info->iPlugin->GetObjectType( aHD->Uri(), aObjectDef ); + if( aHD && aObjectDef.Length() > 0 ) + { + aHD->SetHarvesterPluginInfo( info ); + break; + } + else if( !aHD ) + { + break; + } + } + CleanupStack::PopAndDestroy( &supportedPlugins ); + } + else + { + aObjectDef.Zero(); + } + } + + diff -r 910a23996aa0 -r c5e73110f733 harvester/composerplugins/imagecomposer/inc/imagecomposerao.h --- a/harvester/composerplugins/imagecomposer/inc/imagecomposerao.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/composerplugins/imagecomposer/inc/imagecomposerao.h Fri Aug 06 09:56:02 2010 +0300 @@ -267,6 +267,8 @@ CHarvesterExifUtil* iExifUtil; RFs iFs; + + TBool iFastModeEnabled; }; #endif // __CIMAGECOMPOSERAO_H__ diff -r 910a23996aa0 -r c5e73110f733 harvester/composerplugins/imagecomposer/src/imagecomposerao.cpp --- a/harvester/composerplugins/imagecomposer/src/imagecomposerao.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/composerplugins/imagecomposer/src/imagecomposerao.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -114,6 +114,7 @@ CActiveScheduler::Add( this ); iExifUtil = CHarvesterExifUtil::NewL(); + iFastModeEnabled = EFalse; User::LeaveIfError( iFs.Connect() ); } @@ -245,6 +246,10 @@ if( iItemQueue.Count() <= 0 ) { iItemQueue.Compress(); + if( iFastModeEnabled ) + { + SetPriority( KHarvesterPriorityComposerPlugin ); + } SetNextRequest( ERequestReady ); } else @@ -254,6 +259,20 @@ if ( err == KErrNone ) { + CMdEProperty* prop = NULL; + CMdEPropertyDef& originPropDef = iMdeObject->Def().GetPropertyDefL( Object::KOriginProperty ); + iMdeObject->Property( originPropDef, prop ); + if( prop && prop->Uint8ValueL() == MdeConstants::Object::ECamera && !iFastModeEnabled ) + { + iFastModeEnabled = ETrue; + SetPriority( KHarvesterPriorityMonitorPlugin ); + } + else if( iFastModeEnabled ) + { + iFastModeEnabled = EFalse; + SetPriority( KHarvesterPriorityComposerPlugin ); + } + SetNextRequest( ERequestCompose ); } // if object does not exists, find next @@ -750,8 +769,13 @@ // Check whether the file is open TBool isOpen( EFalse ); - iFs.IsFileOpen( uri, isOpen ); - if ( isOpen ) + const TInt openError = iFs.IsFileOpen( uri, isOpen ); + if( openError != KErrNone ) + { + WRITELOG( "CImageComposerAO::DoWriteExifL() - check for open file failed!" ); + User::Leave( openError ); + } + else if ( isOpen ) { WRITELOG( "CImageComposerAO::DoWriteExifL() - file handle is open!" ); User::Leave( KErrInUse ); diff -r 910a23996aa0 -r c5e73110f733 harvester/data/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/harvester/data/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Build information file +* +*/ + + +PRJ_PLATFORMS + DEFAULT + +PRJ_EXPORTS +blacklist_backup_registration.xml /epoc32/winscw/c/private/200009F5/backup_registration.xml +blacklist_backup_registration.xml /epoc32/data/z/private/200009F5/backup_registration.xml +default_origin_mappings.db /epoc32/winscw/c/private/200009F5/mappings.db +default_origin_mappings.db /epoc32/data/z/private/200009F5/mappings.db +../conf/harvester.confml MW_LAYER_CONFML(harvester.confml) +../conf/harvester_200009FE.crml MW_LAYER_CRML(harvester_200009FE.crml) + +../sis/blacklistserver/blacklistserver_stub.sis /epoc32/data/z/system/install/blacklistserver_stub.sis +../sis/composerplugins/composerplugins_stub.sis /epoc32/data/z/system/install/composerplugins_stub.sis +../sis/harvester/harvester_stub.sis /epoc32/data/z/system/install/harvester_stub.sis +../sis/harvesterplugins/harvesterplugins_stub.sis /epoc32/data/z/system/install/harvesterplugins_stub.sis +../sis/monitorplugins/monitorplugins_stub.sis /epoc32/data/z/system/install/monitorplugins_stub.sis + +PRJ_MMPFILES + +PRJ_TESTMMPFILES + + +PRJ_TESTEXPORTS diff -r 910a23996aa0 -r c5e73110f733 harvester/group/bld.inf --- a/harvester/group/bld.inf Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/group/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -25,27 +25,16 @@ #include "../server/group/bld.inf" #include "../client/group/bld.inf" +#include "../data/bld.inf" PRJ_PLATFORMS DEFAULT PRJ_EXPORTS -../data/blacklist_backup_registration.xml /epoc32/winscw/c/private/200009F5/backup_registration.xml -../data/blacklist_backup_registration.xml /epoc32/data/z/private/200009F5/backup_registration.xml -../data/default_origin_mappings.db /epoc32/winscw/c/private/200009F5/mappings.db -../data/default_origin_mappings.db /epoc32/data/z/private/200009F5/mappings.db -../conf/harvester.confml MW_LAYER_CONFML(harvester.confml) -../conf/harvester_200009FE.crml MW_LAYER_CRML(harvester_200009FE.crml) - -../sis/blacklistserver/blacklistserver_stub.sis /epoc32/data/z/system/install/blacklistserver_stub.sis -../sis/composerplugins/composerplugins_stub.sis /epoc32/data/z/system/install/composerplugins_stub.sis -../sis/harvester/harvester_stub.sis /epoc32/data/z/system/install/harvester_stub.sis -../sis/harvesterplugins/harvesterplugins_stub.sis /epoc32/data/z/system/install/harvesterplugins_stub.sis -../sis/monitorplugins/monitorplugins_stub.sis /epoc32/data/z/system/install/monitorplugins_stub.sis PRJ_MMPFILES PRJ_TESTMMPFILES +PRJ_TESTEXPORTS -PRJ_TESTEXPORTS diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/AudioPlugin/inc/harvesteraudioplugin.h --- a/harvester/harvesterplugins/AudioPlugin/inc/harvesteraudioplugin.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/AudioPlugin/inc/harvesteraudioplugin.h Fri Aug 06 09:56:02 2010 +0300 @@ -66,10 +66,11 @@ private: CHarvesterAudioPluginPropertyDefs(); - void ConstructL(CMdEObjectDef& aObjectDef); + void ConstructL( CMdEObjectDef& aObjectDef ); public: - static CHarvesterAudioPluginPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterAudioPluginPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef ); }; class CHarvesterAudioPlugin : public CHarvesterPlugin, @@ -148,6 +149,8 @@ */ void GetMusicPropertiesL( CHarvesterData* aHD, TBool aIsAdd, TPtrC aMimeType ); + void InitPropDefsL( CMdEObjectDef& aObjectDef ); + private: CAudioMDParser* iAudioParser; diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/AudioPlugin/src/harvesteraudioplugin.cpp --- a/harvester/harvesterplugins/AudioPlugin/src/harvesteraudioplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/AudioPlugin/src/harvesteraudioplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -37,52 +37,55 @@ const TUid KHarvesterRepoUid = { 0x200009FE }; const TUint32 KEnableAlbumArtHarvest = 0x00090001; -CHarvesterAudioPluginPropertyDefs::CHarvesterAudioPluginPropertyDefs() : CBase() +CHarvesterAudioPluginPropertyDefs::CHarvesterAudioPluginPropertyDefs() : CBase(), + iCreationDatePropertyDef( NULL ) { } void CHarvesterAudioPluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) { - CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); + SetByObjectDefL( aObjectDef ); + } + +CHarvesterAudioPluginPropertyDefs* CHarvesterAudioPluginPropertyDefs::NewL() + { + CHarvesterAudioPluginPropertyDefs* self = + new (ELeave) CHarvesterAudioPluginPropertyDefs(); + return self; + } - // Common property definitions - CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject ); - iCreationDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KCreationDateProperty ); - iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty ); - iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty ); - iItemTypePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty ); - iTitlePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty ); +void CHarvesterAudioPluginPropertyDefs::SetByObjectDefL(CMdEObjectDef& aObjectDef) + { + CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); + + // Common property definitions + CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject ); + iCreationDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KCreationDateProperty ); + iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty ); + iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty ); + iItemTypePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty ); + iTitlePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty ); iTimeOffsetPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTimeOffsetProperty ); iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KInDefaultFolder ); - // Media property definitions - CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject ); - iRatingPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KRatingProperty ); - iGenrePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty ); - iArtistPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KArtistProperty ); - iDurationPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KDurationProperty ); - iCopyrightPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KCopyrightProperty ); - iTrackPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KTrackProperty ); - iThumbnailPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KThumbnailPresentProperty ); - iDatePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KReleaseDateProperty ); + // Media property definitions + CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject ); + iRatingPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KRatingProperty ); + iGenrePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty ); + iArtistPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KArtistProperty ); + iDurationPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KDurationProperty ); + iCopyrightPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KCopyrightProperty ); + iTrackPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KTrackProperty ); + iThumbnailPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KThumbnailPresentProperty ); + iDatePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KReleaseDateProperty ); iDrmPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KDRMProperty ); - // Audio property definitions - CMdEObjectDef& audioDef = nsDef.GetObjectDefL( MdeConstants::Audio::KAudioObject ); - iAlbumPropertyDef = &audioDef.GetPropertyDefL( MdeConstants::Audio::KAlbumProperty ); - iComposerPropertyDef = &audioDef.GetPropertyDefL( MdeConstants::Audio::KComposerProperty ); - iOriginalArtistPropertyDef = &audioDef.GetPropertyDefL( MdeConstants::Audio::KOriginalArtistProperty ); - } - -CHarvesterAudioPluginPropertyDefs* CHarvesterAudioPluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterAudioPluginPropertyDefs* self = - new (ELeave) CHarvesterAudioPluginPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } + // Audio property definitions + CMdEObjectDef& audioDef = nsDef.GetObjectDefL( MdeConstants::Audio::KAudioObject ); + iAlbumPropertyDef = &audioDef.GetPropertyDefL( MdeConstants::Audio::KAlbumProperty ); + iComposerPropertyDef = &audioDef.GetPropertyDefL( MdeConstants::Audio::KComposerProperty ); + iOriginalArtistPropertyDef = &audioDef.GetPropertyDefL( MdeConstants::Audio::KOriginalArtistProperty ); + } using namespace MdeConstants; @@ -150,6 +153,8 @@ { TRAP_IGNORE( iTNM = CThumbnailManager::NewL( *this ) ); } + + iPropDefs = CHarvesterAudioPluginPropertyDefs::NewL(); SetPriority( KHarvesterPriorityHarvestingPlugin - 2 ); @@ -294,13 +299,7 @@ TTimeIntervalSeconds timeOffsetSeconds = User::UTCOffset(); TTime localModifiedDate = entry.iModified + timeOffsetSeconds; - if( !iPropDefs ) - { - CMdEObjectDef& objectDef = mdeObject.Def(); - iPropDefs = CHarvesterAudioPluginPropertyDefs::NewL( objectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); - } + InitPropDefsL( mdeObject.Def() ); CMdeObjectWrapper::HandleObjectPropertyL( mdeObject, *iPropDefs->iCreationDatePropertyDef, &localModifiedDate, aIsAdd ); @@ -329,13 +328,7 @@ if ( mapping && !mdeObject.Placeholder() ) { - if( !iPropDefs ) - { - CMdEObjectDef& objectDef = mdeObject.Def(); - iPropDefs = CHarvesterAudioPluginPropertyDefs::NewL( objectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); - } + InitPropDefsL( mdeObject.Def() ); CMdeObjectWrapper::HandleObjectPropertyL( mdeObject, *iPropDefs->iItemTypePropertyDef, (TAny*)&(mapping->iMimeType), aIsAdd ); @@ -361,13 +354,7 @@ CMdEObject& mdeObject = aHD->MdeObject(); const TDesC& uri = mdeObject.Uri(); - if( !iPropDefs ) - { - CMdEObjectDef& audioObjectDef = mdeObject.Def(); - iPropDefs = CHarvesterAudioPluginPropertyDefs::NewL( audioObjectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); - } + InitPropDefsL( mdeObject.Def() ); TBool possiblyProtectedContent( EFalse ); if( aMimeType.Length() > 0 ) @@ -561,5 +548,15 @@ #endif } +void CHarvesterAudioPlugin::InitPropDefsL(CMdEObjectDef& aObjectDef) + { + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( aObjectDef ); + // Prefetch max text lengt for validity checking + iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); + } + } + // End of file diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/ImagePlugin/inc/harvesterimageplugin.h --- a/harvester/harvesterplugins/ImagePlugin/inc/harvesterimageplugin.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/ImagePlugin/inc/harvesterimageplugin.h Fri Aug 06 09:56:02 2010 +0300 @@ -102,10 +102,11 @@ private: CHarvesterImagePluginPropertyDefs(); - void ConstructL(CMdEObjectDef& aObjectDef); + void ConstructL( CMdEObjectDef& aObjectDef ); public: - static CHarvesterImagePluginPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterImagePluginPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef) ; }; class CHarvesterImagePlugin : public CHarvesterPlugin @@ -168,7 +169,9 @@ // 2nd phase constructor void ConstructL(); - + + void InitPropDefsL( CMdEObjectDef& aObjectDef ); + private: enum TImageMetadataHandling diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/ImagePlugin/src/harvesterimageplugin.cpp --- a/harvester/harvesterplugins/ImagePlugin/src/harvesterimageplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/ImagePlugin/src/harvesterimageplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -69,87 +69,90 @@ const TUid KBGPSUid = { 0x0ADC2480 }; #endif -CHarvesterImagePluginPropertyDefs::CHarvesterImagePluginPropertyDefs() : CBase() +CHarvesterImagePluginPropertyDefs::CHarvesterImagePluginPropertyDefs() : CBase(), + iCreationDatePropertyDef( NULL ) { } -void CHarvesterImagePluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) +void CHarvesterImagePluginPropertyDefs::ConstructL( CMdEObjectDef& aObjectDef ) { - CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); - - // Image property definitions - CMdEObjectDef& objectDef = nsDef.GetObjectDefL( Object::KBaseObject ); - iCreationDatePropertyDef = &objectDef.GetPropertyDefL( Object::KCreationDateProperty ); - iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( Object::KLastModifiedDateProperty ); - iSizePropertyDef = &objectDef.GetPropertyDefL( Object::KSizeProperty ); - iTimeOffsetPropertyDef = &objectDef.GetPropertyDefL( Object::KTimeOffsetProperty ); - iItemTypePropertyDef = &objectDef.GetPropertyDefL( Object::KItemTypeProperty ); - iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( Object::KInDefaultFolder ); - - // Media property definitions - CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MediaObject::KMediaObject ); - iWidthPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KWidthProperty ); - iHeightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KHeightProperty ); - iDescriptionPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDescriptionProperty ); - iCommentPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCommentProperty ); - iReleaseDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KReleaseDateProperty ); - iCopyrightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCopyrightProperty ); - iCaptureDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCaptureDateProperty ); - iResolutionUnitPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KResolutionUnitProperty ); - iArtistPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KArtistProperty ); - - // Image property definitions - CMdEObjectDef& imageDef = nsDef.GetObjectDefL( Image::KImageObject ); - iPixelYDimensionPropertyDef = &imageDef.GetPropertyDefL( Image::KPixelYDimensionProperty ); - iPixelXDimensionPropertyDef = &imageDef.GetPropertyDefL( Image::KPixelXDimensionProperty ); - iBitsPerSamplePropertyDef = &imageDef.GetPropertyDefL( Image::KBitsPerSampleProperty ); - iFrameCountPropertyDef = &imageDef.GetPropertyDefL( Image::KFrameCountProperty ); - iDateTimeOriginalPropertyDef = &imageDef.GetPropertyDefL( Image::KDateTimeOriginalProperty ); - iDateTimeDigitizedPropertyDef = &imageDef.GetPropertyDefL( Image::KDateTimeDigitizedProperty ); - iDateTimePropertyDef = &imageDef.GetPropertyDefL( Image::KDateTimeProperty ); - iWhiteBalancePropertyDef = &imageDef.GetPropertyDefL( Image::KWhiteBalanceProperty ); - iFlashPropertyDef = &imageDef.GetPropertyDefL( Image::KFlashProperty ); - iExposureProgramPropertyDef = &imageDef.GetPropertyDefL( Image::KExposureProgramProperty ); - iMakePropertyDef = &imageDef.GetPropertyDefL( Image::KMakeProperty ); - iModelPropertyDef = &imageDef.GetPropertyDefL( Image::KModelProperty ); - iOrientationPropertyDef = &imageDef.GetPropertyDefL( Image::KOrientationProperty ); - iXResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KXResolutionProperty ); - iYResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KYResolutionProperty ); - iYCbCrPositioningPropertyDef = &imageDef.GetPropertyDefL( Image::KYCbCrPositioningProperty ); - iExposureTimePropertyDef = &imageDef.GetPropertyDefL( Image::KExposureTimeProperty ); - iFNumberPropertyDef = &imageDef.GetPropertyDefL( Image::KFNumberProperty ); - iExifVersionPropertyDef = &imageDef.GetPropertyDefL( Image::KExifVersionProperty ); - iShutterSpeedValuePropertyDef = &imageDef.GetPropertyDefL( Image::KShutterSpeedValueProperty ); - iApertureValuePropertyDef = &imageDef.GetPropertyDefL( Image::KApertureValueProperty ); - iFocalLengthPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalLengthProperty ); - iFlashPixVersionPropertyDef = &imageDef.GetPropertyDefL( Image::KFlashPixVersionProperty ); - iColourSpacePropertyDef = &imageDef.GetPropertyDefL( Image::KColourSpaceProperty ); - iISOSpeedRatingsPropertyDef = &imageDef.GetPropertyDefL( Image::KISOSpeedRatingsProperty ); - iComponentsConfigurationPropertyDef = &imageDef.GetPropertyDefL( Image::KComponentsConfigurationProperty ); - iExposureBiasValuePropertyDef = &imageDef.GetPropertyDefL( Image::KExposureBiasValueProperty ); - iSamplesPerPixelPropertyDef = &imageDef.GetPropertyDefL( Image::KSamplesPerPixelProperty ); - iThumbCompressionPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbCompressionProperty ); - iThumbXResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbXResolutionProperty ); - iThumbYResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbYResolutionProperty ); - iThumbResolutionUnitPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbResolutionUnitProperty ); - iFocalLengthIn35mmFilmPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalLengthIn35mmFilmProperty ); - iMeteringModePropertyDef = &imageDef.GetPropertyDefL( Image::KMeteringModeProperty ); - iRelatedSoundFilePropertyDef = &imageDef.GetPropertyDefL( Image::KRelatedSoundFileProperty ); - iFocalPlaneResolutionUnitPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalPlaneResolutionUnitProperty ); - iFocalPlaneXResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalPlaneXResolutionProperty ); - iFocalPlaneYResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalPlaneYResolutionProperty ); - iDraftPropertyDef = &imageDef.GetPropertyDefL( Image::KDraftProperty ); + SetByObjectDefL( aObjectDef ); } -CHarvesterImagePluginPropertyDefs* CHarvesterImagePluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterImagePluginPropertyDefs* self = - new (ELeave) CHarvesterImagePluginPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } +CHarvesterImagePluginPropertyDefs* CHarvesterImagePluginPropertyDefs::NewL() + { + CHarvesterImagePluginPropertyDefs* self = + new (ELeave) CHarvesterImagePluginPropertyDefs(); + return self; + } + +void CHarvesterImagePluginPropertyDefs::SetByObjectDefL(CMdEObjectDef& aObjectDef) + { + CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); + + // Image property definitions + CMdEObjectDef& objectDef = nsDef.GetObjectDefL( Object::KBaseObject ); + iCreationDatePropertyDef = &objectDef.GetPropertyDefL( Object::KCreationDateProperty ); + iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( Object::KLastModifiedDateProperty ); + iSizePropertyDef = &objectDef.GetPropertyDefL( Object::KSizeProperty ); + iTimeOffsetPropertyDef = &objectDef.GetPropertyDefL( Object::KTimeOffsetProperty ); + iItemTypePropertyDef = &objectDef.GetPropertyDefL( Object::KItemTypeProperty ); + iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( Object::KInDefaultFolder ); + + // Media property definitions + CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MediaObject::KMediaObject ); + iWidthPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KWidthProperty ); + iHeightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KHeightProperty ); + iDescriptionPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDescriptionProperty ); + iCommentPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCommentProperty ); + iReleaseDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KReleaseDateProperty ); + iCopyrightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCopyrightProperty ); + iCaptureDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCaptureDateProperty ); + iResolutionUnitPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KResolutionUnitProperty ); + iArtistPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KArtistProperty ); + + // Image property definitions + CMdEObjectDef& imageDef = nsDef.GetObjectDefL( Image::KImageObject ); + iPixelYDimensionPropertyDef = &imageDef.GetPropertyDefL( Image::KPixelYDimensionProperty ); + iPixelXDimensionPropertyDef = &imageDef.GetPropertyDefL( Image::KPixelXDimensionProperty ); + iBitsPerSamplePropertyDef = &imageDef.GetPropertyDefL( Image::KBitsPerSampleProperty ); + iFrameCountPropertyDef = &imageDef.GetPropertyDefL( Image::KFrameCountProperty ); + iDateTimeOriginalPropertyDef = &imageDef.GetPropertyDefL( Image::KDateTimeOriginalProperty ); + iDateTimeDigitizedPropertyDef = &imageDef.GetPropertyDefL( Image::KDateTimeDigitizedProperty ); + iDateTimePropertyDef = &imageDef.GetPropertyDefL( Image::KDateTimeProperty ); + iWhiteBalancePropertyDef = &imageDef.GetPropertyDefL( Image::KWhiteBalanceProperty ); + iFlashPropertyDef = &imageDef.GetPropertyDefL( Image::KFlashProperty ); + iExposureProgramPropertyDef = &imageDef.GetPropertyDefL( Image::KExposureProgramProperty ); + iMakePropertyDef = &imageDef.GetPropertyDefL( Image::KMakeProperty ); + iModelPropertyDef = &imageDef.GetPropertyDefL( Image::KModelProperty ); + iOrientationPropertyDef = &imageDef.GetPropertyDefL( Image::KOrientationProperty ); + iXResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KXResolutionProperty ); + iYResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KYResolutionProperty ); + iYCbCrPositioningPropertyDef = &imageDef.GetPropertyDefL( Image::KYCbCrPositioningProperty ); + iExposureTimePropertyDef = &imageDef.GetPropertyDefL( Image::KExposureTimeProperty ); + iFNumberPropertyDef = &imageDef.GetPropertyDefL( Image::KFNumberProperty ); + iExifVersionPropertyDef = &imageDef.GetPropertyDefL( Image::KExifVersionProperty ); + iShutterSpeedValuePropertyDef = &imageDef.GetPropertyDefL( Image::KShutterSpeedValueProperty ); + iApertureValuePropertyDef = &imageDef.GetPropertyDefL( Image::KApertureValueProperty ); + iFocalLengthPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalLengthProperty ); + iFlashPixVersionPropertyDef = &imageDef.GetPropertyDefL( Image::KFlashPixVersionProperty ); + iColourSpacePropertyDef = &imageDef.GetPropertyDefL( Image::KColourSpaceProperty ); + iISOSpeedRatingsPropertyDef = &imageDef.GetPropertyDefL( Image::KISOSpeedRatingsProperty ); + iComponentsConfigurationPropertyDef = &imageDef.GetPropertyDefL( Image::KComponentsConfigurationProperty ); + iExposureBiasValuePropertyDef = &imageDef.GetPropertyDefL( Image::KExposureBiasValueProperty ); + iSamplesPerPixelPropertyDef = &imageDef.GetPropertyDefL( Image::KSamplesPerPixelProperty ); + iThumbCompressionPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbCompressionProperty ); + iThumbXResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbXResolutionProperty ); + iThumbYResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbYResolutionProperty ); + iThumbResolutionUnitPropertyDef = &imageDef.GetPropertyDefL( Image::KThumbResolutionUnitProperty ); + iFocalLengthIn35mmFilmPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalLengthIn35mmFilmProperty ); + iMeteringModePropertyDef = &imageDef.GetPropertyDefL( Image::KMeteringModeProperty ); + iRelatedSoundFilePropertyDef = &imageDef.GetPropertyDefL( Image::KRelatedSoundFileProperty ); + iFocalPlaneResolutionUnitPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalPlaneResolutionUnitProperty ); + iFocalPlaneXResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalPlaneXResolutionProperty ); + iFocalPlaneYResolutionPropertyDef = &imageDef.GetPropertyDefL( Image::KFocalPlaneYResolutionProperty ); + iDraftPropertyDef = &imageDef.GetPropertyDefL( Image::KDraftProperty ); + } /** * Default constructor @@ -216,6 +219,8 @@ iExifUtil = CHarvesterExifUtil::NewL(); User::LeaveIfError( iFbs.Connect() ); + iPropDefs = CHarvesterImagePluginPropertyDefs::NewL(); + TLinearOrder< TMimeTypeMapping > cmp( TMimeTypeMapping::CompareFunction); @@ -401,13 +406,8 @@ { CMdEProperty* prop = NULL; CMdEObjectDef& objectDef = *aFileData.iImageDef; - - if( !iPropDefs ) - { - iPropDefs = CHarvesterImagePluginPropertyDefs::NewL( objectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); - } + + InitPropDefsL( objectDef ); aMetadataObject.Property( *iPropDefs->iSizePropertyDef, prop ); if( prop ) @@ -697,13 +697,8 @@ WRITELOG( "CHarvesterImagePlugin::HandleObjectPropertiesL() - New MdE object" ); CMdEObject& mdeObject = aHarvesterData.MdeObject(); - - if( !iPropDefs ) - { - iPropDefs = CHarvesterImagePluginPropertyDefs::NewL( mdeObject.Def() ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); - } + + InitPropDefsL( mdeObject.Def() ); TTimeIntervalSeconds timeOffsetSeconds = User::UTCOffset(); @@ -1089,3 +1084,14 @@ return KErrNotSupported; } + +void CHarvesterImagePlugin::InitPropDefsL( CMdEObjectDef& aObjectDef ) + { + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( aObjectDef ); + // Prefetch max text lengt for validity checking + iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); + } + } + diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/OMADRMPlugin/inc/harvesteromadrmplugin.h --- a/harvester/harvesterplugins/OMADRMPlugin/inc/harvesteromadrmplugin.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/OMADRMPlugin/inc/harvesteromadrmplugin.h Fri Aug 06 09:56:02 2010 +0300 @@ -100,7 +100,8 @@ void ConstructL(CMdEObjectDef& aObjectDef); public: - static CHarvesterOmaDrmPluginPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterOmaDrmPluginPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef) ; }; class CHarvesterOMADRMPlugin : public CHarvesterPlugin @@ -173,6 +174,8 @@ */ void ConstructL(); + void InitPropDefsL( CMdEObjectDef& aObjectDef ); + protected: /** * Handle to File server session. diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/OMADRMPlugin/src/harvesteromadrmplugin.cpp --- a/harvester/harvesterplugins/OMADRMPlugin/src/harvesteromadrmplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/OMADRMPlugin/src/harvesteromadrmplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -48,11 +48,24 @@ _LIT(KInUse, "InUse"); -CHarvesterOmaDrmPluginPropertyDefs::CHarvesterOmaDrmPluginPropertyDefs() : CBase() +CHarvesterOmaDrmPluginPropertyDefs::CHarvesterOmaDrmPluginPropertyDefs() : CBase(), + iCreationDatePropertyDef( NULL ) { } -void CHarvesterOmaDrmPluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) +void CHarvesterOmaDrmPluginPropertyDefs::ConstructL( CMdEObjectDef& aObjectDef ) + { + SetByObjectDefL( aObjectDef ); + } + +CHarvesterOmaDrmPluginPropertyDefs* CHarvesterOmaDrmPluginPropertyDefs::NewL() + { + CHarvesterOmaDrmPluginPropertyDefs* self = + new (ELeave) CHarvesterOmaDrmPluginPropertyDefs(); + return self; + } + +void CHarvesterOmaDrmPluginPropertyDefs::SetByObjectDefL( CMdEObjectDef& aObjectDef ) { CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); @@ -81,16 +94,6 @@ iGenrePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty ); } -CHarvesterOmaDrmPluginPropertyDefs* CHarvesterOmaDrmPluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterOmaDrmPluginPropertyDefs* self = - new (ELeave) CHarvesterOmaDrmPluginPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } - /** * Default constructor */ @@ -140,9 +143,6 @@ iPhoneSoundsPath = NULL; delete iMmcSoundsPath; iMmcSoundsPath = NULL; - - delete iPropDefs; - iPropDefs = NULL; } /** @@ -155,6 +155,8 @@ User::LeaveIfError( iFs.Connect() ); + iPropDefs = CHarvesterOmaDrmPluginPropertyDefs::NewL(); + TFileName phoneRoot = PathInfo::PhoneMemoryRootPath(); TFileName mmcRoot = PathInfo::MemoryCardRootPath(); @@ -194,6 +196,7 @@ WRITELOG( "CHarvesterImagePlugin::HarvestL()" ); CMdEObject& mdeObject = aHarvesterData->MdeObject(); CDRMHarvestData* drmHarvestData = CDRMHarvestData::NewL(); + CleanupStack::PushL( drmHarvestData ); CFileData* fileData = CFileData::NewL(); CleanupStack::PushL( fileData ); @@ -230,7 +233,7 @@ aHarvesterData->SetErrorCode( convertedError ); } - CleanupStack::PopAndDestroy( 2, fileData ); + CleanupStack::PopAndDestroy( 3, drmHarvestData ); } // --------------------------------------------------------------------------- @@ -238,7 +241,7 @@ // --------------------------------------------------------------------------- // TInt CHarvesterOMADRMPlugin::GatherDataL( CMdEObject& aMetadataObject, CDRMHarvestData& aDRMharvestData, - CFileData& aFileData, CHarvestData& aHarvestData ) + CFileData& aFileData, CHarvestData& /*aHarvestData*/ ) { WRITELOG( "CHarvesterOMADRMPlugin::GatherDataL" ); @@ -359,19 +362,13 @@ // HandleObjectPropertiesL // --------------------------------------------------------------------------- // -void CHarvesterOMADRMPlugin::HandleObjectPropertiesL( CHarvestData& aHarvestData, CDRMHarvestData& aDRMharvestData, CFileData& aFileData, +void CHarvesterOMADRMPlugin::HandleObjectPropertiesL( CHarvestData& /*aHarvestData*/, CDRMHarvestData& aDRMharvestData, CFileData& aFileData, CHarvesterData& aHarvesterData, TBool aIsAdd ) { WRITELOG("CHarvesterOMADRMPlugin - HandleNewObject "); CMdEObject& mdeObject = aHarvesterData.MdeObject(); - if( !iPropDefs ) - { - CMdEObjectDef& objectDef = mdeObject.Def(); - iPropDefs = CHarvesterOmaDrmPluginPropertyDefs::NewL( objectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iGenrePropertyDef->MaxTextLengthL(); - } + InitPropDefsL( mdeObject.Def() ); TTimeIntervalSeconds timeOffset = User::UTCOffset(); @@ -647,3 +644,13 @@ } } +void CHarvesterOMADRMPlugin::InitPropDefsL( CMdEObjectDef& aObjectDef ) + { + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( aObjectDef ); + // Prefetch max text lengt for validity checking + iMaxTextLength = iPropDefs->iGenrePropertyDef->MaxTextLengthL(); + } + } + diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/RTPPlugin/inc/harvesterrtpplugin.h --- a/harvester/harvesterplugins/RTPPlugin/inc/harvesterrtpplugin.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/RTPPlugin/inc/harvesterrtpplugin.h Fri Aug 06 09:56:02 2010 +0300 @@ -59,7 +59,8 @@ void ConstructL(CMdEObjectDef& aObjectDef); public: - static CHarvesterRtpPluginPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterRtpPluginPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef) ; }; /** @@ -225,6 +226,8 @@ /** */ void HandleObjectPropertiesL( CHarvesterData& aHD, CHarvesterRtpClipDetails& aClipDetails, TBool aIsAdd); + + void InitPropDefsL( CMdEObjectDef& aObjectDef ); private: // data CHarvesterRtpPluginPropertyDefs* iPropDefs; diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/RTPPlugin/src/harvesterrtpplugin.cpp --- a/harvester/harvesterplugins/RTPPlugin/src/harvesterrtpplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/RTPPlugin/src/harvesterrtpplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -35,11 +35,24 @@ // Enough size to recognize file and read metaheader const TInt KFileBufferSize( KMaxMetaHeaderLength ); -CHarvesterRtpPluginPropertyDefs::CHarvesterRtpPluginPropertyDefs() : CBase() +CHarvesterRtpPluginPropertyDefs::CHarvesterRtpPluginPropertyDefs() : CBase(), + iCreationDatePropertyDef( NULL ) { } -void CHarvesterRtpPluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) +void CHarvesterRtpPluginPropertyDefs::ConstructL( CMdEObjectDef& aObjectDef ) + { + SetByObjectDefL( aObjectDef ); + } + +CHarvesterRtpPluginPropertyDefs* CHarvesterRtpPluginPropertyDefs::NewL() + { + CHarvesterRtpPluginPropertyDefs* self = + new (ELeave) CHarvesterRtpPluginPropertyDefs(); + return self; + } + +void CHarvesterRtpPluginPropertyDefs::SetByObjectDefL( CMdEObjectDef& aObjectDef ) { CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); @@ -61,16 +74,6 @@ iRecordingFlagsPropertyDef = &videoDef.GetPropertyDefL( MdeConstants::Video::KRecordingFlagsProperty ); } -CHarvesterRtpPluginPropertyDefs* CHarvesterRtpPluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterRtpPluginPropertyDefs* self = - new (ELeave) CHarvesterRtpPluginPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } - // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -89,6 +92,7 @@ { WRITELOG( "CHarvesterRtpPlugin::ConstructL()" ); SetPriority( KHarvesterPriorityHarvestingPlugin - 1 ); + iPropDefs = CHarvesterRtpPluginPropertyDefs::NewL(); } // --------------------------------------------------------------------------- @@ -262,12 +266,8 @@ WRITELOG( "CHarvesterRtpPlugin::HandleObjectPropertiesL()" ); CMdEObject& mdeObject = aHD.MdeObject(); - - if( !iPropDefs ) - { - CMdEObjectDef& objectDef = mdeObject.Def(); - iPropDefs = CHarvesterRtpPluginPropertyDefs::NewL( objectDef ); - } + + InitPropDefsL( mdeObject.Def() ); TTimeIntervalSeconds timeOffset = User::UTCOffset(); TTime localModifiedTime = aClipDetails.iModifiedDate + timeOffset; @@ -340,3 +340,13 @@ CMdeObjectWrapper::HandleObjectPropertyL(mdeObject, *iPropDefs->iRecordingFlagsPropertyDef, &flags, aIsAdd ); } + +void CHarvesterRtpPlugin::InitPropDefsL( CMdEObjectDef& aObjectDef ) + { + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( aObjectDef ); + } + } + + diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/VideoPlugin/inc/harvestervideoplugin.h --- a/harvester/harvesterplugins/VideoPlugin/inc/harvestervideoplugin.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/VideoPlugin/inc/harvestervideoplugin.h Fri Aug 06 09:56:02 2010 +0300 @@ -162,7 +162,8 @@ void ConstructL(CMdEObjectDef& aObjectDef); public: - static CHarvesterVideoPluginPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterVideoPluginPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef ); }; class CHarvesterVideoPlugin : public CHarvesterPlugin @@ -239,6 +240,8 @@ void CheckForCodecSupport( HBufC* aMimeBuffer, CVideoHarvestData& aVHD ); + void InitPropDefsL( CMdEObjectDef& aObjectDef ); + private: RArray iMimeTypeMappings; diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/VideoPlugin/src/harvestervideoplugin.cpp --- a/harvester/harvesterplugins/VideoPlugin/src/harvestervideoplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/VideoPlugin/src/harvestervideoplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -85,58 +85,61 @@ const TInt KKiloBytes = 1024; const TReal32 KThousandReal = 1000.0; -CHarvesterVideoPluginPropertyDefs::CHarvesterVideoPluginPropertyDefs() : CBase() +CHarvesterVideoPluginPropertyDefs::CHarvesterVideoPluginPropertyDefs() : CBase(), + iCreationDatePropertyDef( NULL ) { } void CHarvesterVideoPluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) { - CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); - - // Common property definitions - CMdEObjectDef& objectDef = nsDef.GetObjectDefL( Object::KBaseObject ); - iCreationDatePropertyDef = &objectDef.GetPropertyDefL( Object::KCreationDateProperty ); - iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( Object::KLastModifiedDateProperty ); - iSizePropertyDef = &objectDef.GetPropertyDefL( Object::KSizeProperty ); - iTimeOffsetPropertyDef = &objectDef.GetPropertyDefL( Object::KTimeOffsetProperty ); - iItemTypePropertyDef = &objectDef.GetPropertyDefL( Object::KItemTypeProperty ); - iTitlePropertyDef = &objectDef.GetPropertyDefL( Object::KTitleProperty ); - iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( Object::KInDefaultFolder ); - - CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MediaObject::KMediaObject ); - iReleaseDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KReleaseDateProperty ); - iCaptureDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCaptureDateProperty ); - iDurationPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDurationProperty ); - iWidthPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KWidthProperty ); - iHeightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KHeightProperty ); - iBitratePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KBitrateProperty ); - iCopyrightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCopyrightProperty ); - iAuthorPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KAuthorProperty ); - iGenrePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KGenreProperty ); - iArtistPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KArtistProperty ); - iDescriptionPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDescriptionProperty ); - iDrmPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDRMProperty ); - - iAudioFourCCDef = &mediaDef.GetPropertyDefL( MediaObject::KAudioFourCCProperty ); - - // Video property definitions - CMdEObjectDef& videoDef = nsDef.GetObjectDefL( Video::KVideoObject ); - iFrameratePropertyDef = &videoDef.GetPropertyDefL( Video::KFramerateProperty ); - - // Audio property definitions - CMdEObjectDef& audioDef = nsDef.GetObjectDefL( Audio::KAudioObject ); - iSamplingFrequencyPropertyDef = &audioDef.GetPropertyDefL( Audio::KSamplingFrequencyProperty ); + SetByObjectDefL( aObjectDef ); } -CHarvesterVideoPluginPropertyDefs* CHarvesterVideoPluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterVideoPluginPropertyDefs* self = - new (ELeave) CHarvesterVideoPluginPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } +CHarvesterVideoPluginPropertyDefs* CHarvesterVideoPluginPropertyDefs::NewL() + { + CHarvesterVideoPluginPropertyDefs* self = + new (ELeave) CHarvesterVideoPluginPropertyDefs(); + return self; + } + +void CHarvesterVideoPluginPropertyDefs::SetByObjectDefL( CMdEObjectDef& aObjectDef ) + { + CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); + + // Common property definitions + CMdEObjectDef& objectDef = nsDef.GetObjectDefL( Object::KBaseObject ); + iCreationDatePropertyDef = &objectDef.GetPropertyDefL( Object::KCreationDateProperty ); + iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( Object::KLastModifiedDateProperty ); + iSizePropertyDef = &objectDef.GetPropertyDefL( Object::KSizeProperty ); + iTimeOffsetPropertyDef = &objectDef.GetPropertyDefL( Object::KTimeOffsetProperty ); + iItemTypePropertyDef = &objectDef.GetPropertyDefL( Object::KItemTypeProperty ); + iTitlePropertyDef = &objectDef.GetPropertyDefL( Object::KTitleProperty ); + iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( Object::KInDefaultFolder ); + + CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MediaObject::KMediaObject ); + iReleaseDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KReleaseDateProperty ); + iCaptureDatePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCaptureDateProperty ); + iDurationPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDurationProperty ); + iWidthPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KWidthProperty ); + iHeightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KHeightProperty ); + iBitratePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KBitrateProperty ); + iCopyrightPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KCopyrightProperty ); + iAuthorPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KAuthorProperty ); + iGenrePropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KGenreProperty ); + iArtistPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KArtistProperty ); + iDescriptionPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDescriptionProperty ); + iDrmPropertyDef = &mediaDef.GetPropertyDefL( MediaObject::KDRMProperty ); + + iAudioFourCCDef = &mediaDef.GetPropertyDefL( MediaObject::KAudioFourCCProperty ); + + // Video property definitions + CMdEObjectDef& videoDef = nsDef.GetObjectDefL( Video::KVideoObject ); + iFrameratePropertyDef = &videoDef.GetPropertyDefL( Video::KFramerateProperty ); + + // Audio property definitions + CMdEObjectDef& audioDef = nsDef.GetObjectDefL( Audio::KAudioObject ); + iSamplingFrequencyPropertyDef = &audioDef.GetPropertyDefL( Audio::KSamplingFrequencyProperty ); + } /** * Default constructor @@ -184,6 +187,8 @@ { WRITELOG( "CHarvesterVideoPlugin::ConstructL() - begin" ); + iPropDefs = CHarvesterVideoPluginPropertyDefs::NewL(); + TLinearOrder< THarvestingHandling > cmp( THarvestingHandling::CompareFunction ); // MPEG4 @@ -551,22 +556,41 @@ if( !dataExtracted ) { - TEntry entry; - const TInt errorcode = iFs.Entry( uri, entry ); - - if ( errorcode != KErrNone ) + // If file could be opened, use file handle to fetch base data, otherwise + // attempt to fetch the data from TEntry + if( error == KErrNone ) + { + User::LeaveIfError( file.Modified( aVHD.iModified ) ); + User::LeaveIfError( file.Size( aVHD.iFileSize ) ); + } + else { - WRITELOG1( "CHarvesterVideoPlugin - Error getting entry: %d", errorcode ); - CleanupStack::PopAndDestroy( &file ); - User::Leave( errorcode ); + TEntry entry; + const TInt errorcode = iFs.Entry( uri, entry ); + + if ( errorcode != KErrNone ) + { + WRITELOG1( "CHarvesterVideoPlugin - Error getting entry: %d", errorcode ); + CleanupStack::PopAndDestroy( &file ); + User::Leave( errorcode ); + } + + aVHD.iModified = entry.iModified; + aVHD.iFileSize = (TUint)entry.iSize; } - aVHD.iModified = entry.iModified; - aVHD.iFileSize = (TUint)entry.iSize; - WRITELOG1( "CHarvesterVideoPlugin - File size: %d", aVHD.iFileSize ); } + aVHD.iVideoObject = aMetadataObject.Def().Name().Compare( KVideo ) == 0; + + if( error != KErrNone ) + { + WRITELOG1( "CHarvesterVideoPlugin - File open error: %d", error ); + CleanupStack::PopAndDestroy( &file ); + User::Leave( KErrCompletion ); + } + // now the minimum information has been harvested // from now on the harvested data should always be stored @@ -577,15 +601,6 @@ CleanupStack::PopAndDestroy( &file ); User::Leave( KErrNotFound ); } - - aVHD.iVideoObject = aMetadataObject.Def().Name().Compare( KVideo ) == 0; - - if( error != KErrNone ) - { - WRITELOG1( "CHarvesterVideoPlugin - File open error: %d", error ); - CleanupStack::PopAndDestroy( &file ); - User::Leave( KErrCompletion ); - } if ( mapping->iHandler.iLibrary == TVideoMetadataHandling::EHexilMetadataHandling ) { @@ -610,6 +625,9 @@ CleanupStack::PushL( helixMetadata ); TRAP( error, helixMetadata->OpenFileL( file ) ); + + // No need for the file handle anymore so closing it + file.Close(); if ( error == KErrNone ) { @@ -792,6 +810,7 @@ aVHD.iMimeBuf = mime.Alloc(); } + helixMetadata->ResetL(); CleanupStack::PopAndDestroy( helixMetadata ); // don't destory mime type pointers just clean array @@ -985,14 +1004,8 @@ WRITELOG("CHarvesterVideoPlugin::HandleObjectPropertiesL "); CMdEObject& mdeObject = aHD.MdeObject(); - - if( !iPropDefs ) - { - CMdEObjectDef& objectDef = mdeObject.Def(); - iPropDefs = CHarvesterVideoPluginPropertyDefs::NewL( objectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); - } + + InitPropDefsL( mdeObject.Def() ); TTimeIntervalSeconds timeOffsetSeconds = User::UTCOffset(); TTime localModifiedDate = aVHD.iModified + timeOffsetSeconds; @@ -1220,9 +1233,6 @@ { TBool possibleVideo = EFalse; - CHXMetaDataUtility* helixMetadata = CHXMetaDataUtility::NewL(); - CleanupStack::PushL( helixMetadata ); - TFileName tempName; TUint32 mediaId( 0 ); TInt blackListError( KErrNone ); @@ -1230,9 +1240,12 @@ blackListError = GetFileFullNameAndMediaId( aFile, tempName, mediaId ); if( blackListError == KErrNone ) { - AddFileToBlackList( tempName, mediaId ); + blackListError = AddFileToBlackList( tempName, mediaId ); } + CHXMetaDataUtility* helixMetadata = CHXMetaDataUtility::NewL(); + CleanupStack::PushL( helixMetadata ); + TRAPD( err, helixMetadata->OpenFileL( aFile ) ); if( err == KErrNone ) @@ -1316,13 +1329,15 @@ { aType.Copy( KVideo ); } + + helixMetadata->ResetL(); + CleanupStack::PopAndDestroy( helixMetadata ); if( blackListError == KErrNone ) { RemoveFileFromBlackList( tempName, mediaId ); } - CleanupStack::PopAndDestroy( helixMetadata ); } TInt CHarvesterVideoPlugin::AddFileToBlackList( const TFileName& aFullName, const TUint32& aMediaId ) @@ -1334,7 +1349,7 @@ if( blackListError == KErrNone ) { WRITELOG( "CHarvesterVideoPlugin::AddFileToBlackList - Adding URI to blacklist" ); - iBlacklist->AddFile( aFullName, aMediaId, modified ); + blackListError = iBlacklist->AddFile( aFullName, aMediaId, modified ); } return blackListError; @@ -1432,5 +1447,15 @@ return; } +void CHarvesterVideoPlugin::InitPropDefsL(CMdEObjectDef& aObjectDef) + { + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( aObjectDef ); + // Prefetch max text lengt for validity checking + iMaxTextLength = iPropDefs->iCopyrightPropertyDef->MaxTextLengthL(); + } + } + // End of file diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/WMVPlugin/inc/harvesterwmvplugin.h --- a/harvester/harvesterplugins/WMVPlugin/inc/harvesterwmvplugin.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/WMVPlugin/inc/harvesterwmvplugin.h Fri Aug 06 09:56:02 2010 +0300 @@ -55,7 +55,8 @@ void ConstructL(CMdEObjectDef& aObjectDef); public: - static CHarvesterWmvPluginPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterWmvPluginPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef ); }; /** @@ -180,6 +181,7 @@ CHarvesterWmvClipDetails& aClipDetails, TBool aIsAdd); + void InitPropDefsL( CMdEObjectDef& aObjectDef ); private: // data CHarvesterWmvPluginPropertyDefs* iPropDefs; diff -r 910a23996aa0 -r c5e73110f733 harvester/harvesterplugins/WMVPlugin/src/harvesterwmvplugin.cpp --- a/harvester/harvesterplugins/WMVPlugin/src/harvesterwmvplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/harvesterplugins/WMVPlugin/src/harvesterwmvplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -31,11 +31,24 @@ #include "mdetextproperty.h" #include "mdeobjectwrapper.h" -CHarvesterWmvPluginPropertyDefs::CHarvesterWmvPluginPropertyDefs() : CBase() +CHarvesterWmvPluginPropertyDefs::CHarvesterWmvPluginPropertyDefs() : CBase(), + iCreationDatePropertyDef( NULL ) { } -void CHarvesterWmvPluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) +void CHarvesterWmvPluginPropertyDefs::ConstructL( CMdEObjectDef& aObjectDef ) + { + SetByObjectDefL( aObjectDef ); + } + +CHarvesterWmvPluginPropertyDefs* CHarvesterWmvPluginPropertyDefs::NewL() + { + CHarvesterWmvPluginPropertyDefs* self = + new (ELeave) CHarvesterWmvPluginPropertyDefs(); + return self; + } + +void CHarvesterWmvPluginPropertyDefs::SetByObjectDefL( CMdEObjectDef& aObjectDef ) { CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); @@ -55,16 +68,6 @@ iGenrePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty ); } -CHarvesterWmvPluginPropertyDefs* CHarvesterWmvPluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterWmvPluginPropertyDefs* self = - new (ELeave) CHarvesterWmvPluginPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } - // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -174,6 +177,8 @@ { WRITELOG( "CHarvesterWMVPlugin::ConstructL()" ); + iPropDefs = CHarvesterWmvPluginPropertyDefs::NewL(); + TFileName videos = PathInfo::VideosPath(); TFileName phonePath = PathInfo::PhoneMemoryRootPath(); @@ -298,13 +303,7 @@ CMdEObject& mdeObject = aHD.MdeObject(); - if( !iPropDefs ) - { - CMdEObjectDef& objectDef = mdeObject.Def(); - iPropDefs = CHarvesterWmvPluginPropertyDefs::NewL( objectDef ); - // Prefetch max text lengt for validity checking - iMaxTextLength = iPropDefs->iGenrePropertyDef->MaxTextLengthL(); - } + InitPropDefsL( mdeObject.Def() ); if( ! mdeObject.Placeholder() ) { @@ -370,3 +369,13 @@ } } +void CHarvesterWMVPlugin::InitPropDefsL(CMdEObjectDef& aObjectDef) + { + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( aObjectDef ); + // Prefetch max text lengt for validity checking + iMaxTextLength = iPropDefs->iGenrePropertyDef->MaxTextLengthL(); + } + } + diff -r 910a23996aa0 -r c5e73110f733 harvester/monitorplugins/fileplugin/group/filemonitorplugin.mmp --- a/harvester/monitorplugins/fileplugin/group/filemonitorplugin.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/monitorplugins/fileplugin/group/filemonitorplugin.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -59,6 +59,7 @@ LIBRARY harvesterdata.lib LIBRARY harvestercommon.lib LIBRARY centralrepository.lib +LIBRARY platformenv.lib OPTION ARMCC -O3 -OTime diff -r 910a23996aa0 -r c5e73110f733 harvester/monitorplugins/fileplugin/inc/fileeventhandlerao.h --- a/harvester/monitorplugins/fileplugin/inc/fileeventhandlerao.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/monitorplugins/fileplugin/inc/fileeventhandlerao.h Fri Aug 06 09:56:02 2010 +0300 @@ -172,11 +172,13 @@ void ReadCacheSizeFromCenrepL(); /** - * Set MdE object's title with aNewUrl + * Update MDS objects data if needed */ void SetTitleL( CMdEObject* aOldObject, const TDesC& aNewUrl ); void SetModifiedTimeL( CMdEObject* aOldObject, const TDesC& aNewUrl ); + + void CheckDefaultFolderL( CMdEObject* aOldObject ); private: @@ -237,6 +239,16 @@ CMdEPropertyDef* iOriginPropertyDef; CMdEPropertyDef* iTitlePropertyDef; CMdEPropertyDef* iTimePropertyDef; + CMdEPropertyDef* iDefaultFolderPropertyDef; + + HBufC* iPhoneImagesPath; + HBufC* iMmcImagesPath; + + HBufC* iPhoneVideosPath; + HBufC* iMmcVideosPath; + + HBufC* iPhoneSoundsPath; + HBufC* iMmcSoundsPath; }; #endif // __FILEEVENTHANDLERAO_H__ diff -r 910a23996aa0 -r c5e73110f733 harvester/monitorplugins/fileplugin/src/fileeventhandlerao.cpp --- a/harvester/monitorplugins/fileplugin/src/fileeventhandlerao.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/monitorplugins/fileplugin/src/fileeventhandlerao.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -16,6 +16,7 @@ #include #include +#include #include "fileeventhandlerao.h" #include "harvesterlog.h" @@ -90,6 +91,39 @@ } iEventArray = new (ELeave) CArrayFixSeg< TMdsFSPStatus >( KMaxEventsGranularity ); + + TFileName phoneRoot = PathInfo::PhoneMemoryRootPath(); + TFileName mmcRoot = PathInfo::MemoryCardRootPath(); + + TFileName images = PathInfo::ImagesPath(); + + TFileName phoneImagePath( phoneRoot ); + phoneImagePath.Append( images ); + iPhoneImagesPath = phoneImagePath.AllocL(); + + TFileName mmcImagePath( mmcRoot ); + mmcImagePath.Append( images ); + iMmcImagesPath = mmcImagePath.Right( mmcImagePath.Length() - 1 ).AllocL(); + + TFileName videos = PathInfo::VideosPath(); + + TFileName phoneVideoPath( phoneRoot ); + phoneVideoPath.Append( videos ); + iPhoneVideosPath = phoneVideoPath.AllocL(); + + TFileName mmcVideoPath( mmcRoot ); + mmcVideoPath.Append( videos ); + iMmcVideosPath = mmcVideoPath.Right( mmcVideoPath.Length() - 1 ).AllocL(); + + TFileName sounds = PathInfo::SoundsPath(); + + TFileName phoneSoundPath( phoneRoot ); + phoneSoundPath.Append( sounds ); + iPhoneSoundsPath = phoneSoundPath.AllocL(); + + TFileName mmcSoundPath( mmcRoot ); + mmcSoundPath.Append( sounds ); + iMmcSoundsPath = mmcSoundPath.Right( mmcSoundPath.Length() - 1 ).AllocL(); } // --------------------------------------------------------------------------- @@ -121,6 +155,21 @@ iUriArray.ResetAndDestroy(); iUriArray.Close(); + + delete iPhoneImagesPath; + iPhoneImagesPath = NULL; + delete iMmcImagesPath; + iMmcImagesPath = NULL; + + delete iPhoneVideosPath; + iPhoneVideosPath = NULL; + delete iMmcVideosPath; + iMmcVideosPath = NULL; + + delete iPhoneSoundsPath; + iPhoneSoundsPath = NULL; + delete iMmcSoundsPath; + iMmcSoundsPath = NULL; } @@ -449,6 +498,7 @@ newObject->Id() ); if ( removedId != KNoId ) { + SetTitleL( oldObject , aNewUrl ); oldObject->SetUriL( aNewUrl ); TUint32 mediaId = FSUtil::MediaID( iFs, aNewUrl ); oldObject->SetMediaId( mediaId ); @@ -462,6 +512,7 @@ if ( oldObject ) { + CheckDefaultFolderL( oldObject ); SetModifiedTimeL( oldObject, aNewUrl ); TOrigin origin = OriginFromMdEObjectL( *oldObject ); if( origin == MdeConstants::Object::EOther) @@ -639,8 +690,10 @@ CleanupStack::PushL( oldObject ); SetTitleL( oldObject , aNewUrl ); oldObject->SetUriL( aNewUrl ); + CheckDefaultFolderL( oldObject ); TUint32 mediaId = FSUtil::MediaID( iFs, aNewUrl ); oldObject->SetMediaId( mediaId ); + SetModifiedTimeL( oldObject, aNewUrl ); TOrigin origin = OriginFromMdEObjectL( *oldObject ); if( origin == MdeConstants::Object::EOther) { @@ -661,6 +714,7 @@ CleanupStack::PushL( oldObject ); SetTitleL( oldObject , aNewUrl ); oldObject->SetUriL( aNewUrl ); + CheckDefaultFolderL( oldObject ); TUint32 mediaId = FSUtil::MediaID( iFs, aNewUrl ); oldObject->SetMediaId( mediaId ); SetModifiedTimeL( oldObject, aNewUrl ); @@ -981,3 +1035,60 @@ } } +//--------------------------------------------------------------------------- +// CFileEventHandlerAO::CheckDefaultFolderL() +// --------------------------------------------------------------------------- +// +void CFileEventHandlerAO::CheckDefaultFolderL( CMdEObject* aOldObject ) + { + if( !iDefaultFolderPropertyDef ) + { + iDefaultFolderPropertyDef = &aOldObject->Def().GetPropertyDefL( + MdeConstants::Object::KInDefaultFolder ); + } + + CMdEProperty* folderProp = NULL; + aOldObject->Property( *iDefaultFolderPropertyDef, folderProp ); + + TBool inDefaultFolder( EFalse ); + TPtrC objectDefName( aOldObject->Def().Name() ); + if( objectDefName == MdeConstants::Image::KImageObject ) + { + const TDesC& uri = aOldObject->Uri(); + if( uri.FindF( iMmcImagesPath->Des()) != KErrNotFound || + uri.FindF( iPhoneImagesPath->Des()) != KErrNotFound || + uri.FindF( KDCIMFolder ) != KErrNotFound ) + { + inDefaultFolder = ETrue; + } + } + else if( objectDefName == MdeConstants::Video::KVideoObject ) + { + const TDesC& uri = aOldObject->Uri(); + if( uri.FindF( iMmcVideosPath->Des()) != KErrNotFound || + uri.FindF( iPhoneVideosPath->Des()) != KErrNotFound || + uri.FindF( KDCIMFolder ) != KErrNotFound ) + { + inDefaultFolder = ETrue; + } + } + else if( objectDefName == MdeConstants::Audio::KAudioObject ) + { + const TDesC& uri = aOldObject->Uri(); + if( uri.FindF( iMmcSoundsPath->Des()) != KErrNotFound || + uri.FindF( iPhoneSoundsPath->Des()) != KErrNotFound ) + { + inDefaultFolder = ETrue; + } + } + + if( folderProp ) + { + folderProp->SetBoolValueL( inDefaultFolder ); + } + else + { + aOldObject->AddBoolPropertyL( *iDefaultFolderPropertyDef, inDefaultFolder ); + } + } + diff -r 910a23996aa0 -r c5e73110f733 harvester/monitorplugins/mmcplugin/src/mmcfilelist.cpp --- a/harvester/monitorplugins/mmcplugin/src/mmcfilelist.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/monitorplugins/mmcplugin/src/mmcfilelist.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -94,7 +94,7 @@ CleanupResetAndDestroyPushL( aEntryArray ); - CDesCArrayFlat* path = new(ELeave) CDesCArrayFlat( 10 ); + CDesCArrayFlat* path = new(ELeave) CDesCArrayFlat( 30 ); CleanupStack::PushL( path ); TFileName firstPath; firstPath.Copy( aDrivePath ); diff -r 910a23996aa0 -r c5e73110f733 harvester/monitorplugins/mmcplugin/src/mmcmonitorplugin.cpp --- a/harvester/monitorplugins/mmcplugin/src/mmcmonitorplugin.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/monitorplugins/mmcplugin/src/mmcmonitorplugin.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -254,6 +254,49 @@ { WRITELOG( "CMMCMonitorPlugin::MountEvent with parameter EMounted" ); mountData->iMountType = TMountData::EMount; + + // If mass storage mounting was delayed in boot so that mount event + // occures in mmc monitor, update the mass storage media id in the + // db in case factory settings were reseted and mass storage formatted + TInt drive( -1 ); + TInt internalMassStorageError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) ); + if( internalMassStorageError == KErrNone ) + { + TVolumeInfo internalMassStorageVolumeInfo; + internalMassStorageError = iFs.Volume( internalMassStorageVolumeInfo, drive ); + if( internalMassStorageError == KErrNone ) + { + const TUint32 massStorageMediaId( internalMassStorageVolumeInfo.iUniqueID ); + TUint32 mmcMediaId( 0 ); + TInt mmcError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, drive ) ); + if( mmcError == KErrNone ) + { + TVolumeInfo mmcVolumeInfo; + mmcError = iFs.Volume( mmcVolumeInfo, drive ); + if( mmcError == KErrNone ) + { + mmcMediaId = mmcVolumeInfo.iUniqueID; + } + } + + // If removable storage is not found, assume internal mass storage was mounted + if( mmcError ) + { + if( massStorageMediaId != 0 && + massStorageMediaId == aMediaID ) + { + iMdEClient->CheckMassStorageMediaId( massStorageMediaId ); + } + } + else if( massStorageMediaId != mmcMediaId && + massStorageMediaId != 0 && + massStorageMediaId == aMediaID ) + { + iMdEClient->CheckMassStorageMediaId( massStorageMediaId ); + } + } + } + TRAPD(err, iMountTask->StartMountL( *mountData )) if(err != KErrNone ) diff -r 910a23996aa0 -r c5e73110f733 harvester/server/inc/harvesterao.h --- a/harvester/server/inc/harvesterao.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/server/inc/harvesterao.h Fri Aug 06 09:56:02 2010 +0300 @@ -74,7 +74,8 @@ void ConstructL(CMdEObjectDef& aObjectDef); public: - static CHarvesterAoPropertyDefs* NewL(CMdEObjectDef& aObjectDef); + static CHarvesterAoPropertyDefs* NewL(); + void SetByObjectDefL( CMdEObjectDef& aObjectDef ); }; /** @@ -555,8 +556,6 @@ CHarvesterAoPropertyDefs* iPropDefs; - TBool iMassMemoryIdChecked; - // Own. CDesCArray* iCameraExtensionArray; diff -r 910a23996aa0 -r c5e73110f733 harvester/server/src/harvesterao.cpp --- a/harvester/server/src/harvesterao.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/server/src/harvesterao.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -53,6 +53,7 @@ const TInt KPlaceholderQueueSize = 99; const TInt KContainerPlaceholderQueueSize = 10; +const TInt KReadyPlaceholderQueueSize = 10; const TInt KObjectDefStrSize = 20; _LIT( KTAGDaemonName, "ThumbAGDaemon" ); @@ -76,32 +77,34 @@ void CHarvesterAoPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef) { - CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); - - // Common property definitions - CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject ); - iCreationDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KCreationDateProperty ); - iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty ); - iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty ); - iOriginPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KOriginProperty ); - iItemTypePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty ); - iTitlePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty ); - iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KInDefaultFolder ); - - CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject ); - iPreinstalledPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KPreinstalledProperty ); + SetByObjectDefL( aObjectDef ); } -CHarvesterAoPropertyDefs* CHarvesterAoPropertyDefs::NewL(CMdEObjectDef& aObjectDef) - { - CHarvesterAoPropertyDefs* self = - new (ELeave) CHarvesterAoPropertyDefs(); - CleanupStack::PushL( self ); - self->ConstructL( aObjectDef ); - CleanupStack::Pop( self ); - return self; - } +CHarvesterAoPropertyDefs* CHarvesterAoPropertyDefs::NewL() + { + CHarvesterAoPropertyDefs* self = + new (ELeave) CHarvesterAoPropertyDefs(); + return self; + } + +void CHarvesterAoPropertyDefs::SetByObjectDefL(CMdEObjectDef& aObjectDef) + { + CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef(); + // Common property definitions + CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject ); + iCreationDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KCreationDateProperty ); + iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty ); + iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty ); + iOriginPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KOriginProperty ); + iItemTypePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty ); + iTitlePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty ); + iDefaultFolderPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KInDefaultFolder ); + + CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject ); + iPreinstalledPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KPreinstalledProperty ); + } + // --------------------------------------------------------------------------- // NewLC // --------------------------------------------------------------------------- @@ -314,6 +317,8 @@ // Reset harvesting status for clients in case blacklisted file was handled iHarvesterPluginFactory->SendHarvestingStatusEventL( EFalse ); + iPropDefs = CHarvesterAoPropertyDefs::NewL(); + iCameraExtensionArray = new ( ELeave ) CDesCArraySeg( 6 ); iCameraExtensionArray->InsertIsqL( KExtensionMp4 ); iCameraExtensionArray->InsertIsqL( KExtensionMpg4 ); @@ -375,8 +380,7 @@ CleanupStack::PushL( cleanupItem ); CMonitorPlugin::ListImplementationsL( infoArray ); - TInt count( 0 ); - count = infoArray.Count(); + const TInt count( infoArray.Count() ); CMonitorPlugin* plugin = NULL; for ( TInt i = 0; i < count; i++ ) @@ -431,7 +435,6 @@ { WRITELOG( "CHarvesterAO::StartMonitoring()" ); OstTrace0( TRACE_NORMAL, CHARVESTERAO_STARTMONITORING, "CHarvesterAO::StartMonitoring" ); - const TInt count( iMonitorPluginArray.Count() ); for ( TInt i = 0; i < count; i++ ) @@ -450,10 +453,8 @@ WRITELOG( "CHarvesterAO::StopMonitoring()" ); OstTrace0( TRACE_NORMAL, CHARVESTERAO_STOPMONITORING, "CHarvesterAO::StopMonitoring" ); - - const TInt count( iMonitorPluginArray.Count() ); - for ( TInt i = 0; i < count; i++ ) + for( TInt i = iMonitorPluginArray.Count() - 1; i >=0; i-- ) { iMonitorPluginArray[i]->StopMonitoring(); } @@ -468,12 +469,11 @@ WRITELOG( "CHarvesterAO::PauseMonitoring()" ); OstTrace0( TRACE_NORMAL, CHARVESTERAO_PAUSEMONITORING, "CHarvesterAO::PauseMonitoring" ); - const TInt count( iMonitorPluginArray.Count() ); - - for ( TInt i = 0; i=0; i-- ) { iMonitorPluginArray[i]->PauseMonitoring(); } + OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_PAUSEMONITORING, "CHarvesterAO::PauseMonitoring - end" ); WRITELOG( "CHarvesterAO::PauseMonitoring() - end" ); } @@ -539,6 +539,7 @@ WRITELOG1( "CHarvesterAO::HandleUnmount() remove iReadyPHArray %d", i); OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iReadyPHArray %d", i ); + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrCancel ); delete hd; hd = NULL; iReadyPHArray.Remove( i ); @@ -576,6 +577,7 @@ WRITELOG1( "CHarvesterAO::HandleUnmount() remove iPHArray %d", i); OstTrace1( TRACE_NORMAL, DUP5_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iPHArray %d", i ); + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrCancel ); delete hd; hd = NULL; iPHArray.Remove( i ); @@ -612,6 +614,7 @@ WRITELOG1( "CHarvesterAO::HandleUnmount() remove iContainerPHArray %d", i); OstTrace1( TRACE_NORMAL, DUP8_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iContainerPHArray %d", i ); + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrCancel ); delete hd; hd = NULL; iContainerPHArray.Remove( i ); @@ -643,6 +646,7 @@ if( err == KErrNone && mediaId == aMediaId ) { WRITELOG1( "CHarvesterAO::HandleUnmount() remove iTempReadyPHArray %d", i); + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrCancel ); delete hd; hd = NULL; iTempReadyPHArray.Remove( i ); @@ -702,6 +706,7 @@ TRAP_IGNORE( iMdESession->CancelObjectL( mdeobj ) ); + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrCancel ); delete hd; hd = NULL; } @@ -848,6 +853,8 @@ { if(iPHArray.Append( hd ) != KErrNone) { + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); delete hd; hd = NULL; } @@ -877,11 +884,14 @@ { TRAPD( err, HandlePlaceholdersL( ETrue ) ); - // make sure that when HandlePlaceholdersL leaves, iPHArray is cleared + // make sure that when HandlePlaceholdersL leaves unexpectedly, iPHArray is cleared if ( err != KErrNone ) { - iPHArray.ResetAndDestroy(); - iTempReadyPHArray.ResetAndDestroy(); + if( err != KErrDiskFull ) + { + iPHArray.ResetAndDestroy(); + iTempReadyPHArray.ResetAndDestroy(); + } User::Leave( err ); } @@ -907,18 +917,19 @@ { if( iPHArray.Append( hd ) != KErrNone ) { + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); delete hd; hd = NULL; } } else { - CheckFileExtensionAndHarvestL( hd ); - if( iUnmountDetected ) - { - iQueue->Append( hd ); - return; - } + if( iReadyPHArray.Append( hd ) != KErrNone) + { + delete hd; + hd = NULL; + } } } @@ -926,11 +937,14 @@ { TRAPD( err, HandlePlaceholdersL( ETrue ) ); - // make sure that when HandlePlaceholdersL leaves, iPHArray is cleared + // make sure that when HandlePlaceholdersL leaves unexpectedly, iPHArray is cleared if ( err != KErrNone ) { - iPHArray.ResetAndDestroy(); - iTempReadyPHArray.ResetAndDestroy(); + if( err != KErrDiskFull ) + { + iPHArray.ResetAndDestroy(); + iTempReadyPHArray.ResetAndDestroy(); + } User::Leave( err ); } } @@ -943,7 +957,7 @@ } iHarvestingPlaceholders = EFalse; CheckFileExtensionAndHarvestL( hd ); - if( iUnmountDetected ) + if( iUnmountDetected && hd ) { iQueue->Append( hd ); } @@ -964,6 +978,8 @@ TTimeIntervalSeconds timeOffsetSeconds = User::UTCOffset(); + CMdENamespaceDef& defNS = iMdESession->GetDefaultNamespaceDefL(); + TInt endindex( iPHArray.Count() ); for( TInt i = 0; i < endindex; i++ ) { @@ -973,6 +989,8 @@ { if( iContainerPHArray.Append( hd ) != KErrNone ) { + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); delete hd; hd = NULL; } @@ -987,7 +1005,7 @@ if( !CheckForCameraItem( hd, objDefStr ) ) { - iHarvesterPluginFactory->GetObjectDefL( *hd, objDefStr ); + iHarvesterPluginFactory->GetObjectDefL( hd, objDefStr ); } // GetObjectDef can cause context switch, and if unmount happens when this execution is @@ -998,12 +1016,14 @@ WRITELOG( "CHarvesterAO::HandlePlaceholdersL() - Unmount detected during execution!" ); for( TInt y( iTempReadyPHArray.Count() -1 ); y >=0; y-- ) { - CHarvesterData* hd = iTempReadyPHArray[y]; + CHarvesterData* tempHd = iTempReadyPHArray[y]; - if(iPHArray.Insert( hd, 0 ) != KErrNone) + if(iPHArray.Insert( tempHd, 0 ) != KErrNone) { - delete hd; - hd = NULL; + HarvestCompleted( tempHd->ClientId(), tempHd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); + delete tempHd; + tempHd = NULL; } } iTempReadyPHArray.Reset(); @@ -1019,29 +1039,41 @@ const TInt currentPHArrayCount( iPHArray.Count() ); for( TInt y( iTempReadyPHArray.Count() -1 ); y >=0; y-- ) { - CHarvesterData* hd = iTempReadyPHArray[y]; - if( currentPHArrayCount ) + CHarvesterData* tempHd = iTempReadyPHArray[y]; + if(iPHArray.Insert( tempHd, 0 ) != KErrNone) { - // Leave the first item in the array as it is the priority item - if(iPHArray.Insert( hd, 1 ) != KErrNone) - { - delete hd; - hd = NULL; - } - } - else - { - if(iPHArray.Insert( hd, 0 ) != KErrNone) - { - delete hd; - hd = NULL; - } + HarvestCompleted( tempHd->ClientId(), tempHd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); + delete tempHd; + tempHd = NULL; } } iTempReadyPHArray.Reset(); CleanupStack::PopAndDestroy( &mdeObjectArray ); return; } + // Check if disk is full + // If disk is detected to be full, no items can be added to MDS db, thus abort the run, and start over + // when disk space is available to make sure the arrays are valid. + else if( iDiskFull ) + { + WRITELOG( "CHarvesterAO::HandlePlaceholdersL() - No disk space available!" ); + for( TInt y( iTempReadyPHArray.Count() -1 ); y >=0; y-- ) + { + CHarvesterData* tempHd = iTempReadyPHArray[y]; + + if(iPHArray.Insert( tempHd, 0 ) != KErrNone) + { + HarvestCompleted( tempHd->ClientId(), tempHd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); + delete tempHd; + tempHd = NULL; + } + } + iTempReadyPHArray.Reset(); + CleanupStack::PopAndDestroy( &mdeObjectArray ); + User::Leave( KErrDiskFull ); + } if( objDefStr.Length() == 0 || ( objDefStr == KInUse ) ) @@ -1059,10 +1091,12 @@ continue; } - CMdENamespaceDef& defNS = iMdESession->GetDefaultNamespaceDefL(); CMdEObjectDef& mdeObjectDef = defNS.GetObjectDefL( objDefStr ); - CMdEObject* mdeObject = iMdESession->NewObjectL( mdeObjectDef, hd->Uri() ); + HBufC* hdUri = hd->Uri().AllocL(); + CleanupStack::PushL( hdUri ); + CMdEObject* mdeObject = iMdESession->NewObjectL( mdeObjectDef, *hdUri ); + CleanupStack::PopAndDestroy( hdUri ); CleanupStack::PushL( mdeObject ); CPlaceholderData* phData = NULL; @@ -1131,10 +1165,10 @@ // set placeholder mdeObject->SetPlaceholder( ETrue ); - if( !iPropDefs ) - { - iPropDefs = CHarvesterAoPropertyDefs::NewL( defNS.GetObjectDefL( MdeConstants::Object::KBaseObject ) ); - } + if( !iPropDefs->iCreationDatePropertyDef ) + { + iPropDefs->SetByObjectDefL( defNS.GetObjectDefL( MdeConstants::Object::KBaseObject ) ); + } // set file size mdeObject->AddUint32PropertyL( *iPropDefs->iSizePropertyDef, phData->FileSize() ); @@ -1225,6 +1259,7 @@ if(iTempReadyPHArray.Append( hd ) != KErrNone) { + HarvestCompleted( hd->ClientId(), hd->Uri(), KErrNoMemory ); delete hd; hd = NULL; } @@ -1233,27 +1268,57 @@ endindex--; } - const TInt tempArrayCount( iTempReadyPHArray.Count() ); - for( TInt i( 0 ); i < tempArrayCount; i++ ) - { - CHarvesterData* hd = iTempReadyPHArray[i]; - iReadyPHArray.Append( hd ); - } - iTempReadyPHArray.Reset(); - const TInt objectCount = mdeObjectArray.Count(); if( objectCount > 0 ) { // add object to mde iMdEHarvesterSession->AutoLockL( mdeObjectArray ); - const TInt addError( iMdESession->AddObjectsL( mdeObjectArray ) ); + TInt addError( KErrNone ); + TRAPD( addFailure, addError = iMdESession->AddObjectsL( mdeObjectArray ) ); + if( addFailure == KErrDiskFull ) + { + WRITELOG( "CHarvesterAO::HandlePlaceholdersL() - No disk space available!" ); + for( TInt y( iTempReadyPHArray.Count() -1 ); y >=0; y-- ) + { + CHarvesterData* tempHd = iTempReadyPHArray[y]; + + if(iPHArray.Insert( tempHd, 0 ) != KErrNone) + { + HarvestCompleted( tempHd->ClientId(), tempHd->Uri(), KErrNoMemory ); + iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ); + delete tempHd; + tempHd = NULL; + } + } + iTempReadyPHArray.Reset(); + CleanupStack::PopAndDestroy( &mdeObjectArray ); + User::Leave( KErrDiskFull ); + } + else if( addFailure != KErrNone ) + { + User::Leave( addFailure ); + } + if( addError != KErrNone ) { // If some error occures, retry iMdESession->AddObjectsL( mdeObjectArray ); } + const TInt tempArrayCount( iTempReadyPHArray.Count() ); + for( TInt i( 0 ); i < tempArrayCount; i++ ) + { + CHarvesterData* tempHd = iTempReadyPHArray[i]; + if(iReadyPHArray.Append( tempHd ) != KErrNone) + { + HarvestCompleted( tempHd->ClientId(), tempHd->Uri(), KErrNoMemory ); + delete tempHd; + tempHd = NULL; + } + } + iTempReadyPHArray.Reset(); + iHarvesterEventManager->IncreaseItemCount( EHEObserverTypePlaceholder, objectCount ); iHarvesterEventManager->SendEventL( EHEObserverTypePlaceholder, EHEStateStarted, @@ -1289,17 +1354,17 @@ const TDesC& uri = aHD->Uri(); TBool objectExisted = ETrue; - if( ! mdeObject ) + if( !mdeObject ) { objectExisted = EFalse; WRITELOG1( "CHarvesterAO::CheckFileExtensionAndHarvestL() - no mdeobject. URI: %S", &uri ); TBuf objDefStr; - iHarvesterPluginFactory->GetObjectDefL( *aHD, objDefStr ); + iHarvesterPluginFactory->GetObjectDefL( aHD, objDefStr ); // GetObjectDef can cause context switch, and if unmount happens when this execution is // interrupted, the ph data can be invalid. Thus, abort whole run, and start over to make sure // the data is valid. - if( iUnmountDetected ) + if( !aHD ) { return; } @@ -1404,6 +1469,12 @@ { iMdESession->RemoveObjectL( aHD->Uri() ); } + + // If context swich occures just right due to RemoveObjectL, check aHD for validity + if( !aHD ) + { + return; + } TInt pluginErr = KErrNone; TRAPD( err, pluginErr = iHarvesterPluginFactory->HarvestL( aHD )); @@ -1437,8 +1508,6 @@ WRITELOG1("CHarvesterAO::CheckFileExtensionAndHarvestL() - ends with error %d", pluginErr ); OstTrace1( TRACE_NORMAL, DUP8_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL) - ends with error %d", pluginErr ); - - SetNextRequest( ERequestHarvest ); } // --------------------------------------------------------------------------- @@ -1568,8 +1637,6 @@ OstTrace0( TRACE_NORMAL, DUP12_CHARVESTERAO_HARVESTINGCOMPLETED, "==============================ERROR done =========================" ); } - - SetNextRequest( ERequestHarvest ); } // --------------------------------------------------------------------------- @@ -1716,25 +1783,41 @@ TRAP_IGNORE( BootPartialRestoreScanL() ); #endif - if( !iMassMemoryIdChecked ) + // Store the internal mass memory media ID to DB, and update data if necessary + TInt drive( -1 ); + TInt internalMassStorageError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) ); + if( internalMassStorageError == KErrNone ) { - TInt drive( -1 ); - TInt massStorageError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) ); - if( massStorageError == KErrNone ) + TVolumeInfo internalMassStorageVolumeInfo; + internalMassStorageError = iFs.Volume( internalMassStorageVolumeInfo, drive ); + if( internalMassStorageError == KErrNone ) { - TVolumeInfo massStorageVolumeInfo; - iFs.Volume( massStorageVolumeInfo, drive ); - const TUint32 massStorageMediaId( massStorageVolumeInfo.iUniqueID ); - massStorageError = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, drive ); - if( massStorageError == KErrNone ) + const TUint32 massStorageMediaId( internalMassStorageVolumeInfo.iUniqueID ); + TUint32 mmcMediaId( 0 ); + TInt mmcError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, drive ) ); + if( mmcError == KErrNone ) { - iFs.Volume( massStorageVolumeInfo, drive ); - // Update mass storage media id if the mass storage is not memory card - if( massStorageVolumeInfo.iUniqueID != massStorageMediaId && massStorageMediaId != 0 ) + TVolumeInfo mmcVolumeInfo; + mmcError = iFs.Volume( mmcVolumeInfo, drive ); + if( mmcError == KErrNone ) + { + mmcMediaId = mmcVolumeInfo.iUniqueID; + } + } + + // If removable storage is not found, assume internal mass storage was mounted + if( mmcError ) + { + if( massStorageMediaId != 0 ) { iMdEHarvesterSession->CheckMassStorageMediaId( massStorageMediaId ); - } + } } + else if( massStorageMediaId != mmcMediaId && + massStorageMediaId != 0 ) + { + iMdEHarvesterSession->CheckMassStorageMediaId( massStorageMediaId ); + } } } } @@ -1874,7 +1957,7 @@ WRITELOG( "CHarvesterAO::RunL - ERequestHarvest" ); OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - ERequestHarvest" ); - // harvest new items first... + // harvest new items first if ( iQueue->ItemsInQueue() > 0 ) { WRITELOG( "CHarvesterAO::RunL - Items in queue - calling ReadItemFromQueueL()" ); @@ -1887,9 +1970,29 @@ else { WRITELOG( "CHarvesterAO::RunL - No items in main queue" ); + // If interrupts occured, check the normal placeholder array for possible items to + // be handled before moving on to container or ready placeholders + if( iPHArray.Count() > 0 ) + { + WRITELOG( "CHarvesterAO::RunL - Items found in placeholder array" ); + TRAPD( err, HandlePlaceholdersL( ETrue ) ); + + // make sure that when HandlePlaceholdersL leaves unexpectedly, iPHArray is cleared + if ( err != KErrNone ) + { + if( err != KErrDiskFull ) + { + iPHArray.ResetAndDestroy(); + iTempReadyPHArray.ResetAndDestroy(); + } + User::Leave( err ); + } + SetNextRequest( ERequestHarvest ); + break; + } // All registered fast harvested items or placeholders handled at this point // if container files to harvest, handle those next - if( iContainerPHArray.Count() > 0 ) + else if( iContainerPHArray.Count() > 0 ) { WRITELOG( "CHarvesterAO::RunL - Items in iContainterPHArray - requesting ERequestContainerPlaceholder handling" ); iFastHarvestNeeded = EFalse; @@ -1920,8 +2023,8 @@ WRITELOG1("CHarvesterAO::RunL - items in ready pharray: %d", arrayCount ); OstTrace1( TRACE_NORMAL, DUP3_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - items in ready pharray: %d", arrayCount ); #endif - TInt endIndex( KPlaceholderQueueSize ); - if( arrayCount < KPlaceholderQueueSize ) + TInt endIndex( KReadyPlaceholderQueueSize ); + if( arrayCount < KReadyPlaceholderQueueSize ) { endIndex = arrayCount; } @@ -1969,14 +2072,17 @@ } TRAPD( err, HandlePlaceholdersL( EFalse ) ); - // make sure that when HandlePlaceholdersL leaves, iPHArray is cleared - if ( err != KErrNone ) - { - iContainerPHArray.ResetAndDestroy(); - iPHArray.ResetAndDestroy(); - iTempReadyPHArray.ResetAndDestroy(); - User::Leave( err ); - } + // make sure that when HandlePlaceholdersL leaves unexpectedly, iPHArray is cleared + if ( err != KErrNone ) + { + if( err != KErrDiskFull ) + { + iContainerPHArray.ResetAndDestroy(); + iPHArray.ResetAndDestroy(); + iTempReadyPHArray.ResetAndDestroy(); + } + User::Leave( err ); + } SetNextRequest( ERequestHarvest ); } break; @@ -2036,7 +2142,7 @@ // TInt CHarvesterAO::RunError( TInt aError ) { - WRITELOG( "CHarvesterAO::RunError" ); + WRITELOG1( "CHarvesterAO::RunError, error: %d", aError ); OstTrace0( TRACE_NORMAL, CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError" ); switch( iNextRequest ) @@ -2045,6 +2151,21 @@ { WRITELOG( "CHarvesterAO::RunError - state ERequestHarvest" ); OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError - state ERequestHarvest" ); + if( aError == KErrDiskFull || aError == KErrNoMemory ) + { + SetNextRequest( ERequestIdle ); + } + } + break; + + case ERequestContainerPlaceholder: + { + WRITELOG( "CHarvesterAO::RunError - state ERequestContainerPlaceholder" ); + OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError - state ERequestContainerPlaceholder" ); + if( aError == KErrDiskFull || aError == KErrNoMemory ) + { + SetNextRequest( ERequestIdle ); + } } break; @@ -2161,14 +2282,14 @@ if( MMdSHarvesterDiskSpaceObserver::EMore == aDiskSpaceDirection ) { - WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL() - disk full"); - OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL - disk full" ); + WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL() - disk space available"); + OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL - disk space available" ); iDiskFull = EFalse; } else { - WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL() - disk space available"); - OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL - disk space available" ); + WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL() - disk full"); + OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL - disk full" ); iDiskFull = ETrue; if( iServerPaused ) { @@ -2376,6 +2497,7 @@ else { delete hd; + hd = NULL; err = KErrUnknown; } @@ -2383,6 +2505,10 @@ { aMessage.Complete( err ); } + else if( err != KErrNone ) + { + HarvestCompleted( aMessage.Identity(), uri->Des(), err ); + } albumIds.Close(); } @@ -2573,6 +2699,7 @@ else { delete hd; + hd = NULL; err = KErrUnknown; } @@ -2580,6 +2707,10 @@ { aMessage.Complete( err ); } + else if( err != KErrNone ) + { + HarvestCompleted( aMessage.Identity(), uri->Des(), err ); + } albumIds.Close(); } @@ -2997,25 +3128,6 @@ { WRITELOG("CHarvesterAO::BootScanL() - begin"); OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - begin" ); - - TInt drive( -1 ); - TInt massStorageError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) ); - if( massStorageError == KErrNone ) - { - TVolumeInfo massStorageVolumeInfo; - iFs.Volume( massStorageVolumeInfo, drive ); - const TUint32 massStorageMediaId( massStorageVolumeInfo.iUniqueID ); - massStorageError = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, drive ); - if( massStorageError == KErrNone ) - { - iFs.Volume( massStorageVolumeInfo, drive ); - // Update mass storage media id if the mass storage is not memory card - if( massStorageVolumeInfo.iUniqueID != massStorageMediaId && massStorageMediaId != 0 ) - { - iMdEHarvesterSession->CheckMassStorageMediaId( massStorageMediaId ); - } - } - } TVolumeInfo volumeInfo; iFs.Volume( volumeInfo, EDriveC ); @@ -3191,8 +3303,6 @@ iMdEHarvesterSession->RemoveFilesNotPresent( volumeInfo.iUniqueID, ETrue ); - iMassMemoryIdChecked = ETrue; - WRITELOG("CHarvesterAO::BootScanL() - end"); OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - end" ); } diff -r 910a23996aa0 -r c5e73110f733 harvester/server/src/harvesterserver.cpp --- a/harvester/server/src/harvesterserver.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/server/src/harvesterserver.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -162,7 +162,7 @@ WRITELOG( "CHarvesterServer::NewLC() - begin" ); CHarvesterServer* self = new (ELeave) CHarvesterServer( - CActive::EPriorityUserInput, KHarvesterServerPolicy, + KHarvesterServerSessionPriority, KHarvesterServerPolicy, ESharableSessions ); CleanupStack::PushL( self ); self->ConstructL(); diff -r 910a23996aa0 -r c5e73110f733 harvester/server/src/reharvesterao.cpp --- a/harvester/server/src/reharvesterao.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/server/src/reharvesterao.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -19,8 +19,8 @@ #include "mdeobject.h" #include "mdsutils.h" -const TInt KResumeTime = 2000000; //microseconds -const TInt KTimeIncrease = 500000; //microseconds +const TInt KResumeTime = 3000000; //microseconds +const TInt KTimeIncrease = 1000000; //microseconds const TInt KTimeLimit = 30000000; //microseconds // --------------------------------------------------------------------------- diff -r 910a23996aa0 -r c5e73110f733 harvester/server/traces/fixed_id.definitions --- a/harvester/server/traces/fixed_id.definitions Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/server/traces/fixed_id.definitions Fri Aug 06 09:56:02 2010 +0300 @@ -168,6 +168,7 @@ [TRACE]TRACE_NORMAL[0x3]_DUP5_CHARVESTERAO_HARVESTFILEWITHUID=0x77 [TRACE]TRACE_NORMAL[0x3]_DUP5_CHARVESTERAO_HARVESTINGCOMPLETED=0x33 [TRACE]TRACE_NORMAL[0x3]_DUP5_CHARVESTERAO_REGISTERPROCESSORIGIN=0x82 +[TRACE]TRACE_NORMAL[0x3]_DUP5_CHARVESTERAO_RUNERROR=0xc4 [TRACE]TRACE_NORMAL[0x3]_DUP5_CHARVESTERAO_RUNL=0x56 [TRACE]TRACE_NORMAL[0x3]_DUP6_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x2c [TRACE]TRACE_NORMAL[0x3]_DUP6_CHARVESTERAO_HANDLESESSIONOPENED=0x42 diff -r 910a23996aa0 -r c5e73110f733 harvester/server/traces/harvesteraoTraces.h --- a/harvester/server/traces/harvesteraoTraces.h Fri Jul 23 10:03:59 2010 +0300 +++ b/harvester/server/traces/harvesteraoTraces.h Fri Aug 06 09:56:02 2010 +0300 @@ -164,6 +164,7 @@ #define DUP5_CHARVESTERAO_BOOTSCANL 0x3009c #define CHARVESTERAO_MEMORYLOW 0x3009d #define CHARVESTERAO_MEMORYGOOD 0x3009e +#define DUP5_CHARVESTERAO_RUNERROR 0x300c4 #endif diff -r 910a23996aa0 -r c5e73110f733 inc/mdscommoninternal.h --- a/inc/mdscommoninternal.h Fri Jul 23 10:03:59 2010 +0300 +++ b/inc/mdscommoninternal.h Fri Aug 06 09:56:02 2010 +0300 @@ -50,7 +50,7 @@ const TInt KMaxTitleFieldLength = 255; -const TInt KTriggerDbMaintenanceTreasholdValue( 2500 ); +const TInt KTriggerDbMaintenanceTreasholdValue( 3000 ); _LIT( KMdSServerName,"!MdSServer" ); // Server name _LIT( KMdSServerProcessString,"!MdSServer*" ); diff -r 910a23996aa0 -r c5e73110f733 inc/mdssqliteconnection.h --- a/inc/mdssqliteconnection.h Fri Jul 23 10:03:59 2010 +0300 +++ b/inc/mdssqliteconnection.h Fri Aug 06 09:56:02 2010 +0300 @@ -237,11 +237,15 @@ /** * cleanup method (from TBase) - * according to status does Commit/Rollback/nothing + * according to status does Rollback or nothing if commit was succesfull */ inline void Close() { - if ( iErrorState != KErrNone ) + // Internal error state is KErrNone if the transaction could be created successfully, + // and the state is resetted if the transaction is committed succesfully. Only if the + // transaction is started succesfully but not committed, it needs to be rolled back + // to close the ongoing transaction + if ( iErrorState == KErrNone ) { TRAP( iErrorState, iConnection.TransactionRollbackL() ); } @@ -259,17 +263,6 @@ } /** - * Rolls back the transaction explicitly - * - possibility to receive leave - * eliminates actions on destructor. - */ - inline void RollbackL() - { - iConnection.TransactionRollbackL(); - Reset(); - } - - /** * Resets the transaction * (does not commit or rollback or do anything) */ diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeoCoderPlugin/group/bld.inf --- a/locationmanager/ReverseGeoCoderPlugin/group/bld.inf Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/ReverseGeoCoderPlugin/group/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -19,7 +19,7 @@ PRJ_EXPORTS - + PRJ_MMPFILES reversegeocoderplugin.mmp diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeoCoderPlugin/sis/ReverseGeoCoderPlugin_stub.sis Binary file locationmanager/ReverseGeoCoderPlugin/sis/ReverseGeoCoderPlugin_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeoCoderPlugin/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/ReverseGeoCoderPlugin/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for ReverseGeoCoderPlugin + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeoCoderPlugin/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/ReverseGeoCoderPlugin/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"ReverseGeoCoder Plugin Patch"},(0x2002DD11), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\epoc32\RELEASE\armv5\UREL\ReverseGeoCoderPlugin.dll"-"c:\sys\bin\ReverseGeoCoderPlugin.dll" +"\epoc32\data\z\resource\plugins\reversegeocoderplugin.rsc"-"c:\resource\plugins\reversegeocoderplugin.rsc" diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeoCoderPlugin/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/ReverseGeoCoderPlugin/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"reversegeocoderplugin"}, (0x2002DD11), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/group/bld.inf --- a/locationmanager/ReverseGeocode/group/bld.inf Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/ReverseGeocode/group/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -19,6 +19,8 @@ DEFAULT PRJ_EXPORTS + PRJ_MMPFILES reversegeocode.mmp + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/inc/internalreversegeocode.h --- a/locationmanager/ReverseGeocode/inc/internalreversegeocode.h Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/ReverseGeocode/inc/internalreversegeocode.h Fri Aug 06 09:56:02 2010 +0300 @@ -33,72 +33,70 @@ public MConnectionTimeoutHandlerInterface { public: - /** - * Factory function to create the instance - * @param aObserver The observer instance that is to be notified when reverse geocoding is over - * @return A pointer to the CInternalReverseGeocode instance - */ + /** + * Factory function to create the instance + * @param aObserver The observer instance that is to be notified when reverse geocoding is over + * @return A pointer to the CInternalReverseGeocode instance + */ static CInternalReverseGeocode* NewL( MReverseGeocodeObserver& aObserver ); - /** - * Gets the address for the given geo-coordinaates. - * @param aLocality The locality information - * aOption The connection option whether its silent or not - */ + /** + * Gets the address for the given geo-coordinaates. + * @param aLocality The locality information + * aOption The connection option whether its silent or not + */ virtual void GetAddressByCoordinateL( TLocality aLocality, const TConnectionOption aOption ); /** - * Checks if a silent connection is allowed - * @return ETrue If silentconnection is allowed - */ + * Checks if a silent connection is allowed + * @return ETrue If silentconnection is allowed + */ virtual TBool SilentConnectionAllowed(); - - - /** - * Helper function to get the appropriate language for the request. - * @param aLanguage The language for the request - */ + + /** + * Helper function to get the appropriate language for the request. + * @param aLanguage The language for the request + */ void GetLanguageForTheRequest( TDes8& aLanguage ); - /** - * destructor - * - */ + /** + * destructor + * + */ ~CInternalReverseGeocode(); - // MConnectionTimeoutHandlerInterface - /** - * Closes the connection once it times out - * @param aErrorCode The Error code - */ + // MConnectionTimeoutHandlerInterface + /** + * Closes the connection once it times out + * @param aErrorCode The Error code + */ void HandleTimedoutEvent(TInt aErrorCode); protected: - /** - * Second phase construction - */ + /** + * Second phase construction + */ void ConstructL(); - - + /** - * First phase construction. - * @param aObserver The observer instance that is to be notified when reverse geocoding is over - */ + * First phase construction. + * @param aObserver The observer instance that is to be notified when reverse geocoding is over + */ CInternalReverseGeocode( MReverseGeocodeObserver& aObserver ); //From MClientObserver /** - * callback which notifies progess of HTTP request - * @param aEvent The Httpstatus - */ + * callback which notifies progess of HTTP request + * @param aEvent The Httpstatus + */ void ClientEvent( const THttpStatus& aEvent ); /** - * callback through which the HTTP body data is recieved. - * @param aBodyData The body recieved - */ + * callback through which the HTTP body data is recieved. + * @param aBodyData The body recieved + */ void ClientBodyReceived(const TDesC8& aBodyData); /* @@ -110,10 +108,10 @@ //From MXmlHandlerObserver /** - * callback which notifys the completion of parsing. - * @param aError The err code - * aAddressInfo The address info obtained after parsing - */ + * callback which notifys the completion of parsing. + * @param aError The err code + * aAddressInfo The address info obtained after parsing + */ void OnParseCompletedL( TInt aError, MAddressInfo& aAddressInfo ); /* @@ -135,13 +133,13 @@ private: /** - * Starts the timer - */ + * Starts the timer + */ void StartTimer(); /** - * Closes the http connection and notifies the observer - */ + * Closes the http connection and notifies the observer + */ void CloseConnection(); private: diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/sis/ReverseGeocode_stub.sis Binary file locationmanager/ReverseGeocode/sis/ReverseGeocode_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/ReverseGeocode/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for ReverseGeocode + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/ReverseGeocode/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"ReverseGeocode Patch"},(0xEF7E39A4), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\ReverseGeocode.dll" -"c:\sys\bin\ReverseGeocode.dll" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/ReverseGeocode/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"reversegeocode"}, (0xEF7E39A4), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/src/connectiontimerhandler.cpp --- a/locationmanager/ReverseGeocode/src/connectiontimerhandler.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/ReverseGeocode/src/connectiontimerhandler.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -46,7 +46,7 @@ CConnectionTimerHandler* self = new( ELeave ) CConnectionTimerHandler(aConnectionTimeoutHandlerInterface); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop(); + CleanupStack::Pop(); // self return self; } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/src/internalreversegeocode.cpp --- a/locationmanager/ReverseGeocode/src/internalreversegeocode.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/ReverseGeocode/src/internalreversegeocode.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -425,7 +425,6 @@ return retVal; } - // ---------------------------------------------------------------------------- // CInternalReverseGeocode::GetCurrentRegisterNw() // ---------------------------------------------------------------------------- diff -r 910a23996aa0 -r c5e73110f733 locationmanager/ReverseGeocode/src/xmlhandler.cpp --- a/locationmanager/ReverseGeocode/src/xmlhandler.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/ReverseGeocode/src/xmlhandler.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -44,7 +44,7 @@ { LOG("CXmlHandler::NewL ,begin"); CXmlHandler* self = CXmlHandler::NewLC( aObserver, aAddressInfo ); - CleanupStack::Pop(); + CleanupStack::Pop(); //self return self; } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/client/group/locationmanagerclient.mmp --- a/locationmanager/client/group/locationmanagerclient.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/client/group/locationmanagerclient.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -52,7 +52,6 @@ LIBRARY lbs.lib LIBRARY mdccommon.lib -DEBUGLIBRARY flogger.lib PAGED BYTEPAIRCOMPRESSTARGET OPTION ARMCC -O3 -OTime diff -r 910a23996aa0 -r c5e73110f733 locationmanager/client/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/client/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for MdS LocationManager Client + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/client/sis/locationmanagerclient_stub.sis Binary file locationmanager/client/sis/locationmanagerclient_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/client/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/client/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"LocationManagerClient Patch"},(0x200071BF), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\locationmanager.dll" -"c:\sys\bin\locationmanager.dll" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/client/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/client/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"LocationManagerClient"}, (0x200071BF), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/client/src/rlocationmanager.cpp --- a/locationmanager/client/src/rlocationmanager.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/client/src/rlocationmanager.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -33,19 +33,31 @@ { LOG( "RLocationManager::LaunchServer begin" ); - // DLL launch - RProcess server; - TInt ret = server.Create( KLocServerFileName, KNullDesC ); + TFindServer findLocServer( KLocServerName ); + TFullName name; - if ( ret != KErrNone ) // Loading failed. + TInt result = findLocServer.Next( name ); + if ( result == KErrNone ) { - return ret; + LOG( "StartServer() - Server already running" ); + + // Server already running + return KErrNone; } - TRequestStatus status( KErrNone ); - server.Rendezvous( status ); - - if ( status != KRequestPending ) + RProcess server; + result = server.Create( KLocServerFileName, KNullDesC ); + if ( result != KErrNone ) + { + LOG1( "CreateServerProcess() - failed to create server process, error: %d", result ); + return result; + } + + // Process created successfully + TRequestStatus stat( KErrNone ); + server.Rendezvous( stat ); + + if ( stat != KRequestPending ) { LOG( "RLocationManager::LaunchServer Failed" ); server.Kill( 0 ); // Abort startup. @@ -54,15 +66,17 @@ { server.Resume(); // Logon OK - start the server. } - - User::WaitForRequest( status ); // wait for start or death + + User::WaitForRequest( stat ); // wait for start or death // we can't use the 'exit reason' if the server panicked as this // is the panic 'reason' and may be '0' wehich cannot be distinguished // from KErrNone - ret = ( server.ExitType() == EExitPanic ) ? KErrCommsBreak : status.Int(); + result = ( server.ExitType() == EExitPanic ) ? KErrCommsBreak : stat.Int(); server.Close(); + LOG( "RLocationManager::LaunchServer end" ); - return ret; + + return result; } // -------------------------------------------------------------------------- diff -r 910a23996aa0 -r c5e73110f733 locationmanager/data/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/data/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Build information file +* +*/ +#include "../inc/locplatsupport.mmh" + +PRJ_PLATFORMS + DEFAULT + +PRJ_EXPORTS +200071BE.txt /epoc32/data/z/private/10202BE9/200071BE.txt +200071BE.txt /epoc32/WINSCW/C/private/10202BE9/200071BE.txt +../sis/locationmanager_stub.sis /epoc32/data/z/system/install/locationmanager_stub.sis + +PRJ_MMPFILES + +PRJ_TESTMMPFILES + +PRJ_TESTEXPORTS + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/group/bld.inf --- a/locationmanager/geoconverter/group/bld.inf Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/geoconverter/group/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -26,3 +26,4 @@ PRJ_TESTEXPORTS + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/group/geoconverter.mmp --- a/locationmanager/geoconverter/group/geoconverter.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/geoconverter/group/geoconverter.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -58,7 +58,6 @@ LIBRARY lbslocationinfodatatypes.lib #endif LIBRARY lbs.lib -DEBUGLIBRARY flogger.lib LIBRARY libc.lib PAGED diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/geoconverter/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for MdS GeoConverter + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/sis/geoconverter_stub.sis Binary file locationmanager/geoconverter/sis/geoconverter_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/geoconverter/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"GeoConverter Patch"},(0x2002E6A1), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\geoconverter.dll" -"c:\sys\bin\geoconverter.dll" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/geoconverter/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"geoconverter"}, (0x2002E6A1), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geoconverter/src/cgeoconverter.cpp --- a/locationmanager/geoconverter/src/cgeoconverter.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/geoconverter/src/cgeoconverter.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -31,7 +31,7 @@ CGeoConverter* self = new( ELeave ) CGeoConverter( aObserver ); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop(); + CleanupStack::Pop(); // self return self; } @@ -185,7 +185,6 @@ default: LOG("Unknown network mode"); User::Leave(KErrNotSupported); - break; } //Add the cell information to the location info class. This class //would be sent to the Location Monitor server that would perform the diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/group/geotagger.mmp --- a/locationmanager/geotagger/group/geotagger.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/geotagger/group/geotagger.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -68,7 +68,6 @@ LIBRARY estor.lib LIBRARY platformenv.lib -DEBUGLIBRARY flogger.lib LIBRARY ecom.lib LIBRARY libc.lib diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/inc/cinternalgeotagger.h --- a/locationmanager/geotagger/inc/cinternalgeotagger.h Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/geotagger/inc/cinternalgeotagger.h Fri Aug 06 09:56:02 2010 +0300 @@ -120,11 +120,6 @@ */ void AddressInfoL( const TItemId aCountryTagId, const TItemId aCityTagId ); - /** - * Remove location info incase reverse geo code fails. - * @param aLocationId location id - */ - void RemoveLocationInfoOnFailureL(const TItemId aLocationId); //MReverseGeocodeObserver /** diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/geotagger/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for MdS GeoTagger + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/sis/geotagger_stub.sis Binary file locationmanager/geotagger/sis/geotagger_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/geotagger/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"GeoTagger Patch"},(0x2002700E), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\geotagger.dll" -"c:\sys\bin\geotagger.dll" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/geotagger/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"geotagger"}, (0x2002700E), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/geotagger/src/cinternalgeotagger.cpp --- a/locationmanager/geotagger/src/cinternalgeotagger.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/geotagger/src/cinternalgeotagger.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -113,19 +113,14 @@ //for reverse geocoding (geo-tagging) #ifdef LOC_REVERSEGEOCODE - if (!iRevGeocoderPlugin) - { - + TRAP_IGNORE( iRevGeocoderPlugin = reinterpret_cast( REComSession::CreateImplementationL(KReverseGeoCodeUid, iDtorKey));) - if(iRevGeocoderPlugin) - { - iRevGeocoderPlugin->AddObserverL(*this); + iRevGeocoderPlugin->AddObserverL(*this); - } - } + #endif //LOC_REVERSEGEOCODE LOG("CInternalGeoTagger::ConstructL ,end"); @@ -204,7 +199,7 @@ void CInternalGeoTagger::HandleSessionOpened(CMdESession& /*aSession*/, TInt aError) { LOG("CInternalGeoTagger::HandleSessionOpened ,begin"); - if ( iMdeSessionOwnFlag && iASW && iASW->IsStarted() ) + if ( iASW && iASW->IsStarted() ) { iASW->AsyncStop(); } @@ -217,7 +212,7 @@ iTagCreator->SetSession( iMdeSession ); #endif } - else if(iMdeSessionOwnFlag) + else { delete iMdeSession; iMdeSession = NULL; @@ -232,16 +227,15 @@ void CInternalGeoTagger::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/) { LOG("CInternalGeoTagger::HandleSessionError ,begin"); - if ( iMdeSessionOwnFlag && iASW && iASW->IsStarted() ) + if (iASW && iASW->IsStarted() ) { iASW->AsyncStop(); } iSessionReady = EFalse; - if(iMdeSessionOwnFlag) - { - delete iMdeSession; - iMdeSession = NULL; - } + + delete iMdeSession; + iMdeSession = NULL; + LOG("CInternalGeoTagger::HandleSessionError ,end"); } @@ -890,50 +884,6 @@ // -------------------------------------------------------------------------- -// CInternalGeoTagger::RemoveLocationInfoOnFailureL() -// Remove the location info when reverse geo code fail so that retry can be ignore for the next iteration -// -------------------------------------------------------------------------- -// -void CInternalGeoTagger::RemoveLocationInfoOnFailureL(const TItemId aLocationId) - { - - LOG("CInternalGeoTagger::RemoveLocationInfoOnFailureL ,start"); - - CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL(); - CMdEObjectDef& locObjDef = namespaceDef.GetObjectDefL( Location::KLocationObject ); - CMdEObject* location = iMdeSession->OpenObjectL(aLocationId, locObjDef); - CleanupStack::PushL( location ); - - CMdEPropertyDef& propLatDef = locObjDef.GetPropertyDefL( Location::KLatitudeProperty ); - CMdEPropertyDef& propLongDef = locObjDef.GetPropertyDefL( Location::KLongitudeProperty ); - - if (location->PropertyCount(propLatDef) == 0) - { - location->AddReal64PropertyL(propLatDef, KZeroLatLon ); //iLatitude - } - if (location->PropertyCount(propLongDef) == 0) - { - location->AddReal64PropertyL(propLongDef, KZeroLatLon ); //iLongitude - } - - CMdEProperty* modProp = NULL; - CMdEObjectDef& objImageDef = namespaceDef.GetObjectDefL( Image::KImageObject ); - CMdEPropertyDef& propModifiedDef = objImageDef.GetPropertyDefL( Object::KLastModifiedDateProperty ); - location->Property( propModifiedDef, modProp, 0 ); - if ( modProp ) - { - TTime timestamp( 0 ); - timestamp.UniversalTime(); - modProp->SetTimeValueL( timestamp ); - } - // commit to DB - iMdeSession->CommitObjectL(*location); - CleanupStack::PopAndDestroy( location ); - - LOG("CInternalGeoTagger::RemoveLocationInfoOnFailureL ,end"); - } - -// -------------------------------------------------------------------------- // CInternalGeoTagger::ReverseGeocodeComplete() // Get address details like street, city, state, etc. // -------------------------------------------------------------------------- @@ -959,10 +909,7 @@ else { LOG1("Reverse geocode err - %d", aErrorcode); - // reverse geo code fails. may be because of lat/lon value (e.g. mid of ocean) - // based on error code, Remove lat/lon from location table so that it should n't try to for the next time. ?? - // May not be a good idea to remove lan/lon because it may fails due to n/w. - //TRAP_IGNORE(RemoveLocationInfoOnFailureL(iLocationId)); + IterateNextLocation(); } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/group/bld.inf --- a/locationmanager/group/bld.inf Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/group/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -14,7 +14,8 @@ * Description: Build information file * */ -#include "../inc/locplatsupport.mmh" + +#include "../data/bld.inf" #ifdef _LOC_GEOTAGGING_CELLID #include "../geoconverter/group/bld.inf" @@ -35,9 +36,6 @@ DEFAULT PRJ_EXPORTS -../data/200071BE.txt /epoc32/data/z/private/10202BE9/200071BE.txt -../data/200071BE.txt /epoc32/WINSCW/C/private/10202BE9/200071BE.txt -../sis/locationmanager_stub.sis /epoc32/data/z/system/install/locationmanager_stub.sis PRJ_MMPFILES diff -r 910a23996aa0 -r c5e73110f733 locationmanager/inc/locationmanagerdefs.h --- a/locationmanager/inc/locationmanagerdefs.h Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/inc/locationmanagerdefs.h Fri Aug 06 09:56:02 2010 +0300 @@ -18,7 +18,7 @@ #ifndef __LOCATIONMANAGERDEFS_H__ #define __LOCATIONMANAGERDEFS_H__ -_LIT( KLocServerFileName, "LocationManagerServer.exe"); +_LIT( KLocServerFileName, "locationmanagerserver.exe"); _LIT( KLocServerName, "LocationManagerServer" ); const TInt KLocationManagerServerMinor = 0; @@ -66,6 +66,8 @@ EArgumentState }; +const TInt KLocManagerSessionPriority = 5; + #endif // __LOCATIONMANAGERDEFS_H__ // End of file. diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/group/locationtrail.mmp --- a/locationmanager/locationtrail/group/locationtrail.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/locationtrail/group/locationtrail.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -78,7 +78,6 @@ LIBRARY commsdat.lib LIBRARY geotagger.lib -DEBUGLIBRARY flogger.lib LIBRARY libc.lib #ifdef _LOC_REVERSEGEOCODE diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/locationtrail/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for MdS LocationTrail + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/sis/locationtrail_stub.sis Binary file locationmanager/locationtrail/sis/locationtrail_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/locationtrail/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"LocationTrail Patch"},(0x200071BD), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\LocationTrail.dll" -"c:\sys\bin\LocationTrail.dll" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/locationtrail/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"locationtrail"}, (0x200071BD), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/src/clocationrecord.cpp --- a/locationmanager/locationtrail/src/clocationrecord.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/locationtrail/src/clocationrecord.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -136,16 +136,12 @@ #ifdef LOC_REVERSEGEOCODE iTagCreator = CTagCreator::NewL(); + iRevGeocoderPlugin = reinterpret_cast( + REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey)); - if (!iRevGeocoderPlugin) - { - iRevGeocoderPlugin = reinterpret_cast( - REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey)); - if(iRevGeocoderPlugin) - { - iRevGeocoderPlugin->AddObserverL(*this); - } - } + iRevGeocoderPlugin->AddObserverL(*this); + + #endif @@ -362,7 +358,7 @@ LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %Ld", aTime.Int64() ); TBuf str1; aTime.FormatL( str1, KDateTimeFormat ); - // LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 ); + LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 ); #endif TTimeIntervalSeconds interval; @@ -377,7 +373,7 @@ LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i]->iTimeStamp.Int64() ); TBuf str; iTrail[i]->iTimeStamp.FormatL( str, KDateTimeFormat ); - //LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str ); + LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str ); LOG1( "CLocationRecord::GetLocationByTimeL - timeDiff: %d", timeDiff ); #endif @@ -1207,8 +1203,6 @@ const TReal64 KMeterInDegrees = 0.000009; const TReal64 KPi = 3.14159265358979; const TReal32 K180Degrees = 180.0; - - //TLocationData locationData = iMediaItems[0].iLocationData; TReal64 latitude = iMediaItems[0]->iLocationData.iPosition.Latitude(); TReal64 longitude = iMediaItems[0]->iLocationData.iPosition.Longitude(); @@ -1581,7 +1575,6 @@ LOG( "CLocationRecord::HandleFindLocationFromDB(), begin" ); if ( iMediaItems.Count() > 0 ) { - //TODO: by module owner TInt trapErr = KErrNone; TRAP(trapErr,FindLocationFromDBL()); // no memory, don't proceed further @@ -1852,10 +1845,21 @@ iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState; } #else + // cell id based geo tagging is not supported.. go for remapping. locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); iMediaItems[0]->iLocationId = locationId; - CreateRelationL( iMediaItems[0]->iObjectId, locationId ); + TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId ); TLocationSnapshotItem* firstPtr = iMediaItems[0]; + + // Go for remapping.. get locationdata from trail with object time + TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId ); + TRemapItem remapItem; + remapItem.iObjectId = iMediaItems[0]->iObjectId; + remapItem.iTime = timestamp; + remapItem.iLocationId = locationId; + remapItem.iRelationId = relationId; + iRemapper->Append( remapItem ); + iMediaItems.Remove(0); delete firstPtr; iMediaItems.Compress(); @@ -1909,7 +1913,6 @@ iNewItem.iLocationData.iQuality = aPosition.HorizontalAccuracy(); TItemId locationId = DoCreateLocationL( iNewItem.iLocationData ); iRemapper->UpdateRelationsL( locationId ); - // TODO: remap. #ifdef LOC_REVERSEGEOCODE if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress)) { @@ -1939,7 +1942,17 @@ TLocationSnapshotItem* item = iMediaItems[0]; TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); iMediaItems[0]->iLocationId = locationId; - CreateRelationL( iMediaItems[0]->iObjectId, locationId ); + TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId ); + + // Go for remapping.. get locationdata from trail with object time + TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId ); + TRemapItem remapItem; + remapItem.iObjectId = iMediaItems[0]->iObjectId; + remapItem.iTime = timestamp; + remapItem.iLocationId = locationId; + remapItem.iRelationId = relationId; + iRemapper->Append( remapItem ); + if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0) { iLastMediaItem = *(iMediaItems[0]); @@ -1983,7 +1996,16 @@ // Fails may be becuase of n/w reason..create location + relation so that we can handle at 3:00 AM. TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData ); iMediaItems[0]->iLocationId = locationId; - CreateRelationL( iMediaItems[0]->iObjectId, locationId ); + TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId ); + + // Go for remapping.. get locationdata from trail with object time + TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId ); + TRemapItem remapItem; + remapItem.iObjectId = iMediaItems[0]->iObjectId; + remapItem.iTime = timestamp; + remapItem.iLocationId = locationId; + remapItem.iRelationId = relationId; + iRemapper->Append( remapItem ); iMediaItems.Remove(0); iMediaItems.Compress(); @@ -2242,7 +2264,6 @@ iNetLocationQuery->FindL(1, 1); iMediaHandlingFlag |= KLocationQueryInProgress; - // iMediaHandlingFlag |= KNetQueryInProgress; } else { diff -r 910a23996aa0 -r c5e73110f733 locationmanager/locationtrail/src/ctracklog.cpp --- a/locationmanager/locationtrail/src/ctracklog.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/locationtrail/src/ctracklog.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -223,6 +223,8 @@ RFile64 file; RFileWriteStream writer; + CleanupClosePushL( writer ); + TInt err; err = file.Open( iFs, iTmpFileName, EFileRead ); if ( err != KErrNone ) @@ -249,8 +251,6 @@ writer.Sink()->SeekL( MStreamBuf::EWrite, TStreamPos( endpos )); } - CleanupClosePushL( writer ); - TInt count = iTrackLogItemArray.Count(); for( TInt i = 0; i < count; i++ ) diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/server/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for MdS Location Manager Server + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/sis/locationmanagerserver_stub.sis Binary file locationmanager/server/sis/locationmanagerserver_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/server/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"LocationManagerServer Patch"},(0x200071BE), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/server/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"locationmanagerserver"}, (0x200071BE), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/src/clocationgeotagtimerao.cpp --- a/locationmanager/server/src/clocationgeotagtimerao.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/server/src/clocationgeotagtimerao.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -70,7 +70,7 @@ new( ELeave ) CLocationGeoTagTimerAO(aMdeSession, aObserver); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop(); + CleanupStack::Pop(); //self return self; } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/src/clocationmanagerserver.cpp --- a/locationmanager/server/src/clocationmanagerserver.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/server/src/clocationmanagerserver.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -76,6 +76,7 @@ { TRAP( ret, RunServerL() ); delete cleanup; + cleanup = NULL; } return ret; } @@ -99,7 +100,7 @@ // -------------------------------------------------------------------------- // CLocationManagerServer::CLocationManagerServer() - : CPolicyServer( CActive::EPriorityStandard, + : CPolicyServer( KLocManagerSessionPriority, KLocationManagerPolicy, ESharableSessions ), iASW(NULL), @@ -133,10 +134,6 @@ LOG ("CLocationManagerServer::ConstructL() begin"); StartL( KLocServerName ); - - RProcess process; - process.SetPriority( EPriorityBackground ); - process.Close(); // initialize etel InitialisePhoneL(); @@ -149,45 +146,49 @@ iNwRegistrationStatusHandler = CNwRegistrationStatusHandler::NewL(iPhone); - iMdeSession = CMdESession::NewL( *this ); iLocationRecord = CLocationRecord::NewL(*this, iPhone); iTrackLog = CTrackLog::NewL(); + iMdeSession = CMdESession::NewL( *this ); + + iLocationRecord->SetObserver( this ); - iASW->Start(); + iLocationRecord->SetAddObserver( iTrackLog ); + + iTrackLog->AddGpxObserver( this ); + + CRepository* repository = CRepository::NewLC( KRepositoryUid ); + TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay ); + + LOG1("iLocManStopDelay:%d", iLocManStopDelay); + + if ( err != KErrNone ) + { + LOG1("iLocManStopDelay err:%d", err); + iLocManStopDelay = KLocationTrailShutdownDelay; + } + + err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay ); + CleanupStack::PopAndDestroy( repository ); + + LOG1("iLocManStopRemapDelay:%d", iLocManStopRemapDelay); + + if ( err != KErrNone ) + { + LOG1("iLocManStopRemapDelay err:%d", err); + iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay; + } + + if( !iSessionReady ) + { + iASW->Start(); + } + delete iASW; - iASW = NULL; - if(iSessionReady) + iASW = NULL; + + if( iSessionReady ) { LOG("Session is ready to give service"); - - iLocationRecord->SetObserver( this ); - - iLocationRecord->SetAddObserver( iTrackLog ); - - iTrackLog->AddGpxObserver( this ); - - CRepository* repository = CRepository::NewLC( KRepositoryUid ); - TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay ); - - LOG1("iLocManStopDelay:%d", iLocManStopDelay); - - if ( err != KErrNone ) - { - LOG1("iLocManStopDelay err:%d", err); - iLocManStopDelay = KLocationTrailShutdownDelay; - } - - err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay ); - CleanupStack::PopAndDestroy( repository ); - - LOG1("iLocManStopRemapDelay:%d", iLocManStopRemapDelay); - - if ( err != KErrNone ) - { - LOG1("iLocManStopRemapDelay err:%d", err); - iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay; - } - //Create the instance of the geotagging timer object // Create timer, if n/w or reverse geo code based feature flag is enabled #if defined(LOC_REVERSEGEOCODE) || defined(LOC_GEOTAGGING_CELLID) @@ -199,8 +200,13 @@ else { LOG("Unable to open MDE session. Closing.."); - User::Leave(KErrCouldNotConnect); + User::Leave( KErrCouldNotConnect ); } + + RProcess process; + process.SetPriority( EPriorityBackground ); + process.Close(); + LOG ("CLocationManagerServer::ConstructL() end"); } @@ -227,6 +233,8 @@ iTrackLog = NULL; delete iTimer; iTimer = NULL; + delete iRelationQuery; + iRelationQuery = NULL; delete iASW; iASW = NULL; delete iMdeSession; @@ -1108,6 +1116,7 @@ } iCopyReqs[i].iMessage.Complete( aError ); delete iCopyReqs[i].iQuery; + iCopyReqs[i].iQuery = NULL; iCopyReqs.Remove( i ); break; } @@ -1154,6 +1163,7 @@ { iCopyReqs[i].iMessage.Complete( KErrNone ); delete iCopyReqs[i].iQuery; + iCopyReqs[i].iQuery = NULL; iCopyReqs.Remove( i ); break; } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/src/clocationmanagersession.cpp --- a/locationmanager/server/src/clocationmanagersession.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/server/src/clocationmanagersession.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -52,8 +52,8 @@ // we are expecting the application to start and stop else on server terminate, we will do the same. // this is not okay when user takes a photograph and then transfer photo using BT/PC . // at this point, it will stop the trail for camera where as camera session is still valid. - // DON"T CALL StopGPSPositioningL METHOD. -// TRAP_IGNORE(Server().StopGPSPositioningL()); + + Server().CancelNotificationRequest( iNotificationHandle ); Server().CancelLocationRequest( iLocationHandle ); Server().CancelTrackLogNotificationRequest( iTrackLogNotificationHandle ); diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/src/clocationservertimerhandler.cpp --- a/locationmanager/server/src/clocationservertimerhandler.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/server/src/clocationservertimerhandler.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -53,7 +53,7 @@ new( ELeave ) CLocationServerTimerHandler(aLocationServerTimerObserver); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop(); + CleanupStack::Pop(); //self return self; } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/server/src/nwregistrationstatushandler.cpp --- a/locationmanager/server/src/nwregistrationstatushandler.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/server/src/nwregistrationstatushandler.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -49,7 +49,7 @@ CNwRegistrationStatusHandler* self = new( ELeave ) CNwRegistrationStatusHandler(aMobilePhone); CleanupStack::PushL( self ); self->ConstructL(); - CleanupStack::Pop(); + CleanupStack::Pop(); //self return self; } diff -r 910a23996aa0 -r c5e73110f733 locationmanager/tagcreator/group/tagcreator.mmp --- a/locationmanager/tagcreator/group/tagcreator.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/locationmanager/tagcreator/group/tagcreator.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -49,7 +49,6 @@ LIBRARY mdeclient.lib LIBRARY estor.lib LIBRARY platformenv.lib -DEBUGLIBRARY flogger.lib PAGED diff -r 910a23996aa0 -r c5e73110f733 locationmanager/tagcreator/sis/depends.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/tagcreator/sis/depends.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,24 @@ + + + + + 1 + MdS Location Manager + Upgrade package for MdS Tag Creator + + + + S60 + + 5 + 0 + + 2009 + 16 + + + + + + \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/tagcreator/sis/package.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/tagcreator/sis/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,29 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;packet-header (name, uid, major, minor, build, type) +#{"TagCreator Patch"},(0x2002701E), 2, 0, 0, TYPE=SA, RU + +; Localised vendor name +%{"Nokia"} + +; Unique vendor name +:"Nokia" + +;Files +"\EPOC32\RELEASE\ARMV5\UREL\tagcreator.dll" -"c:\sys\bin\tagcreator.dll" \ No newline at end of file diff -r 910a23996aa0 -r c5e73110f733 locationmanager/tagcreator/sis/stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmanager/tagcreator/sis/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,30 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +;Languages +&EN + +;Header +# {"tagcreator"}, (0x2002701E), 1, 0, 0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files + + diff -r 910a23996aa0 -r c5e73110f733 locationmanager/tagcreator/sis/tagcreator_stub.sis Binary file locationmanager/tagcreator/sis/tagcreator_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 mds_plat/harvester_framework_api/inc/harvesterclient.h --- a/mds_plat/harvester_framework_api/inc/harvesterclient.h Fri Jul 23 10:03:59 2010 +0300 +++ b/mds_plat/harvester_framework_api/inc/harvesterclient.h Fri Aug 06 09:56:02 2010 +0300 @@ -32,6 +32,7 @@ class MHarvesterEventObserver; class CHarvesterRequestActive; class CHarvesterRequestQueue; +class CHarvesterNotificationQueue; class MHarvesterSessionObserver; class CHarvesterSessionWatcher; @@ -336,8 +337,9 @@ * @param aService Service request which to execute on server side * @param aArgs Parameters for harvesting * @param aStatus Status of the asunchronous call + * @param aUri Uri of the file to be harvested */ - void HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus ); + void HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus, TDesC& aUri ); /** * Restricted method for doing fast harvesting. These files @@ -360,11 +362,6 @@ * Private method for version. */ TVersion Version() const; - - /** - * Harvester client active object. - */ - CHarvesterClientAO* iHarvesterClientAO; /** * Pointer to Harvester event observer active object. @@ -375,6 +372,11 @@ * Request queue processor. */ CHarvesterRequestQueue* iRequestQueue; + + /** + * Notification queue processor. + */ + CHarvesterNotificationQueue* iNotificationQueue; /** * Harvester session observer AO. diff -r 910a23996aa0 -r c5e73110f733 mds_plat/location_manager_api/tsrc/group/LocationManagerTestScripter.mmp --- a/mds_plat/location_manager_api/tsrc/group/LocationManagerTestScripter.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/mds_plat/location_manager_api/tsrc/group/LocationManagerTestScripter.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -33,7 +33,6 @@ MACRO LOC_REVERSEGEOCODE #endif - SOURCEPATH ../src SOURCE LocationManagerTestScripter.cpp SOURCE LocationManagerTestScripterBlocks.cpp diff -r 910a23996aa0 -r c5e73110f733 metadataengine/server/group/mdsserver.mmp --- a/metadataengine/server/group/mdsserver.mmp Fri Jul 23 10:03:59 2010 +0300 +++ b/metadataengine/server/group/mdsserver.mmp Fri Aug 06 09:56:02 2010 +0300 @@ -93,7 +93,6 @@ LIBRARY flogger.lib LIBRARY hash.lib LIBRARY inetprotutil.lib -LIBRARY platformenv.lib UNPAGED diff -r 910a23996aa0 -r c5e73110f733 metadataengine/server/inc/mdspreferences.h --- a/metadataengine/server/inc/mdspreferences.h Fri Jul 23 10:03:59 2010 +0300 +++ b/metadataengine/server/inc/mdspreferences.h Fri Aug 06 09:56:02 2010 +0300 @@ -225,7 +225,7 @@ EPreferenceExtraSortAsc | EPreferenceExtraSortDesc; - CMdsClauseBuffer* sortBuffer = CMdsClauseBuffer::NewLC( 8 ); // estimated minimum lenght for sort rules + CMdsClauseBuffer* sortBuffer = CMdsClauseBuffer::NewLC( 12 ); // minimum reserved lenght for sort rules // check if there is some order rules if( KSortFlags & aFlags ) diff -r 910a23996aa0 -r c5e73110f733 metadataengine/server/src/mdsmaintenanceengine.cpp --- a/metadataengine/server/src/mdsmaintenanceengine.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/metadataengine/server/src/mdsmaintenanceengine.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -16,8 +16,6 @@ */ // INCLUDE FILES -#include - #include "mdsmaintenanceengine.h" #include "mdslogger.h" #include "mdsmanipulationengine.h" @@ -283,31 +281,6 @@ User::LeaveIfError( fs.Volume( volumeInfo, EDriveC ) ); MMdsPreferences::InsertL( KCMediaIdKey, MMdsPreferences::EPreferenceValueSet, (TUint32) volumeInfo.iUniqueID ); - - TInt drive( -1 ); - TInt massStorageError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) ); - if( massStorageError == KErrNone ) - { - TVolumeInfo massStorageVolumeInfo; - massStorageError = fs.Volume( massStorageVolumeInfo, drive ); - if( massStorageError == KErrNone ) - { - const TUint32 massStorageMediaId( massStorageVolumeInfo.iUniqueID ); - massStorageError = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, drive ); - if( massStorageError == KErrNone ) - { - massStorageError = fs.Volume( massStorageVolumeInfo, drive ); - // Update mass storage media id if the mass storage is not memory card - if( massStorageError == KErrNone && - massStorageVolumeInfo.iUniqueID != massStorageMediaId && - massStorageMediaId != 0 ) - { - MMdsPreferences::InsertL( KMassStorageMediaIdKey, MMdsPreferences::EPreferenceValueSet, - (TUint32) massStorageMediaId ); - } - } - } - } CleanupStack::PopAndDestroy( &fs ); } diff -r 910a23996aa0 -r c5e73110f733 metadataengine/server/src/mdsmanipulationengine.cpp --- a/metadataengine/server/src/mdsmanipulationengine.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/metadataengine/server/src/mdsmanipulationengine.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -155,7 +155,7 @@ CleanupClosePushL(objStmt); RMdSTransaction transaction( connection ); - CleanupClosePushL(transaction); + CleanupClosePushL (transaction ); const TInt beginError( transaction.Error() ); if( beginError != KErrNone ) { @@ -1074,13 +1074,19 @@ CMdSSqLiteConnection& connection = MMdSDbConnectionPool::GetDefaultDBL(); RMdSTransaction transaction( connection ); CleanupClosePushL( transaction ); - User::LeaveIfError( transaction.Error() ); + const TInt beginError( transaction.Error() ); + if( beginError != KErrNone ) + { + CleanupStack::PopAndDestroy( &transaction ); + } iManipulate->CheckMassStorageMediaIdL( aMediaId ); - transaction.CommitL(); - - CleanupStack::PopAndDestroy( &transaction ); + if( beginError == KErrNone ) + { + transaction.CommitL(); + CleanupStack::PopAndDestroy( &transaction ); + } } void CMdSManipulationEngine::AddRelationDefL( TDefId aNamespaceId, const TDesC& aRelationDefName ) diff -r 910a23996aa0 -r c5e73110f733 metadataengine/server/src/mdssqliteconnection.cpp --- a/metadataengine/server/src/mdssqliteconnection.cpp Fri Jul 23 10:03:59 2010 +0300 +++ b/metadataengine/server/src/mdssqliteconnection.cpp Fri Aug 06 09:56:02 2010 +0300 @@ -544,6 +544,11 @@ if (err != KErrNone) { _LIT( KMdsTransactionBegin, "Transaction begin error" ); + if( !iNotFinishFindQuery ) + { + iEnableTransaction = ETrue; + } + iTransactionOngoing = EFalse; TraceAndLeaveL( KMdsTransactionBegin, err ); } CleanupStack::PopAndDestroy( &emptyRow ); @@ -582,16 +587,16 @@ RRowData emptyRow; CleanupClosePushL( emptyRow ); TRAPD( err, ExecuteL(KRollback, emptyRow) ); + if (err != KErrNone) + { + _LIT( KMdsTransactionRollback, "Transaction rollback error" ); + TraceAndLeaveL( KMdsTransactionRollback, err ); + } if( !iNotFinishFindQuery ) { iEnableTransaction = ETrue; } iTransactionOngoing = EFalse; - if (err != KErrNone) - { - _LIT( KMdsTransactionRollback, "Transaction rollback error" ); - TraceAndLeaveL( KMdsTransactionRollback, err ); - } CleanupStack::PopAndDestroy( &emptyRow ); } diff -r 910a23996aa0 -r c5e73110f733 package_definition.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package_definition.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 910a23996aa0 -r c5e73110f733 package_map.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package_map.xml Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,1 @@ + diff -r 910a23996aa0 -r c5e73110f733 rom/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rom/bld.inf Fri Aug 06 09:56:02 2010 +0300 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Build information file +* +*/ + + +#include +#include "../locationmanager/inc/locplatsupport.mmh" + +PRJ_PLATFORMS + DEFAULT + +PRJ_EXPORTS + +#if defined(_LOC_GEOTAGGING_CELLID) +#ifdef _LOC_REVERSEGEOCODE +mds_cellid_reverse_geocode_enabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) +#else +mds_cellidenabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) +#endif +#elif defined(_LOC_REVERSEGEOCODE) +#ifdef _LOC_GEOTAGGING_CELLID +mds_cellid_reverse_geocode_enabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) +#else +mds_reverse_geocode_enabled_only.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) +#endif +#else +mds.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby) +#endif + +#ifdef RD_MDS_2_5 +ContentListingFramework.iby CORE_MW_LAYER_IBY_EXPORT_PATH( ContentListingFramework.iby ) +#endif + +//Stubs +../sis/mds/mds_stub.sis /epoc32/data/z/system/install/mds_stub.sis + +PRJ_TESTMMPFILES + +PRJ_TESTEXPORTS +mds_testers.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds_testers.iby) + diff -r 910a23996aa0 -r c5e73110f733 rom/mds_cellid_reverse_geocode_enabled.iby --- a/rom/mds_cellid_reverse_geocode_enabled.iby Fri Jul 23 10:03:59 2010 +0300 +++ b/rom/mds_cellid_reverse_geocode_enabled.iby Fri Aug 06 09:56:02 2010 +0300 @@ -121,4 +121,16 @@ data=ZSYSTEM\install\mds_stub.sis system\install\mds_stub.sis data=ZSYSTEM\install\mdswatchdog_stub.sis system\install\mdswatchdog_stub.sis +data=ZSYSTEM\install\locationmanagerclient_stub.sis system\install\locationmanagerclient_stub.sis +data=ZSYSTEM\install\locationtrail_stub.sis system\install\locationtrail_stub.sis +data=ZSYSTEM\install\locationmanagerserver_stub.sis system\install\locationmanagerserver_stub.sis + +data=ZSYSTEM\install\ReverseGeocode_stub.sis system\install\ReverseGeocode_stub.sis +data=ZSYSTEM\install\ReverseGeoCoderPlugin_stub.sis system\install\ReverseGeoCoderPlugin_stub.sis +data=ZSYSTEM\install\tagcreator_stub.sis system\install\tagcreator_stub.sis +data=ZSYSTEM\install\geotagger_stub.sis system\install\geotagger_stub.sis +data=ZSYSTEM\install\geoconverter_stub.sis system\install\geoconverter_stub.sis + + + #endif //__METADATA_IBY__ diff -r 910a23996aa0 -r c5e73110f733 rom/mds_cellidenabled.iby --- a/rom/mds_cellidenabled.iby Fri Jul 23 10:03:59 2010 +0300 +++ b/rom/mds_cellidenabled.iby Fri Aug 06 09:56:02 2010 +0300 @@ -113,4 +113,9 @@ data=ZSYSTEM\install\mds_stub.sis system\install\mds_stub.sis data=ZSYSTEM\install\mdswatchdog_stub.sis system\install\mdswatchdog_stub.sis +data=ZSYSTEM\install\locationmanagerclient_stub.sis system\install\locationmanagerclient_stub.sis +data=ZSYSTEM\install\locationtrail_stub.sis system\install\locationtrail_stub.sis +data=ZSYSTEM\install\locationmanagerserver_stub.sis system\install\locationmanagerserver_stub.sis +data=ZSYSTEM\install\geotagger_stub.sis system\install\geotagger_stub.sis +data=ZSYSTEM\install\geoconverter_stub.sis system\install\geoconverter_stub.sis #endif //__METADATA_IBY__ diff -r 910a23996aa0 -r c5e73110f733 rom/mds_reverse_geocode_enabled_only.iby --- a/rom/mds_reverse_geocode_enabled_only.iby Fri Jul 23 10:03:59 2010 +0300 +++ b/rom/mds_reverse_geocode_enabled_only.iby Fri Aug 06 09:56:02 2010 +0300 @@ -118,4 +118,11 @@ data=ZSYSTEM\install\mds_stub.sis system\install\mds_stub.sis data=ZSYSTEM\install\mdswatchdog_stub.sis system\install\mdswatchdog_stub.sis +data=ZSYSTEM\install\locationmanagerclient_stub.sis system\install\locationmanagerclient_stub.sis +data=ZSYSTEM\install\locationtrail_stub.sis system\install\locationtrail_stub.sis +data=ZSYSTEM\install\locationmanagerserver_stub.sis system\install\locationmanagerserver_stub.sis +data=ZSYSTEM\install\ReverseGeocode_stub.sis system\install\ReverseGeocode_stub.sis +data=ZSYSTEM\install\ReverseGeoCoderPlugin_stub.sis system\install\ReverseGeoCoderPlugin_stub.sis +data=ZSYSTEM\install\tagcreator_stub.sis system\install\tagcreator_stub.sis +data=ZSYSTEM\install\geotagger_stub.sis system\install\geotagger_stub.sis #endif //__METADATA_IBY__ diff -r 910a23996aa0 -r c5e73110f733 sis/mds/mds_stub.sis Binary file sis/mds/mds_stub.sis has changed diff -r 910a23996aa0 -r c5e73110f733 sis/mds/package.pkg --- a/sis/mds/package.pkg Fri Jul 23 10:03:59 2010 +0300 +++ b/sis/mds/package.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,7 @@ &EN ;packet-header (name, uid, major, minor, build, type) -#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 12, TYPE=SA, RU +#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 13, TYPE=SA, RU ; Localised vendor name %{"Nokia"} diff -r 910a23996aa0 -r c5e73110f733 sis/mds/package_cellid_reverse_geocode_enabled.pkg --- a/sis/mds/package_cellid_reverse_geocode_enabled.pkg Fri Jul 23 10:03:59 2010 +0300 +++ b/sis/mds/package_cellid_reverse_geocode_enabled.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,7 @@ &EN ;packet-header (name, uid, major, minor, build, type) -#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 12, TYPE=SA, RU +#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 13, TYPE=SA, RU ; Localised vendor name %{"Nokia"} diff -r 910a23996aa0 -r c5e73110f733 sis/mds/package_cellidenabled.pkg --- a/sis/mds/package_cellidenabled.pkg Fri Jul 23 10:03:59 2010 +0300 +++ b/sis/mds/package_cellidenabled.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,7 @@ &EN ;packet-header (name, uid, major, minor, build, type) -#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 12, TYPE=SA, RU +#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 13, TYPE=SA, RU ; Localised vendor name %{"Nokia"} diff -r 910a23996aa0 -r c5e73110f733 sis/mds/package_reverse_geocode_enabled_only.pkg --- a/sis/mds/package_reverse_geocode_enabled_only.pkg Fri Jul 23 10:03:59 2010 +0300 +++ b/sis/mds/package_reverse_geocode_enabled_only.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,7 @@ &EN ;packet-header (name, uid, major, minor, build, type) -#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 12, TYPE=SA, RU +#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 13, TYPE=SA, RU ; Localised vendor name %{"Nokia"} diff -r 910a23996aa0 -r c5e73110f733 sis/mds/package_separate.pkg --- a/sis/mds/package_separate.pkg Fri Jul 23 10:03:59 2010 +0300 +++ b/sis/mds/package_separate.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,7 @@ &EN ;packet-header (name, uid, major, minor, build, type) -#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 12, TYPE=SA, RU +#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 13, TYPE=SA, RU ; Localised vendor name %{"Nokia"} diff -r 910a23996aa0 -r c5e73110f733 sis/mds/stub.pkg --- a/sis/mds/stub.pkg Fri Jul 23 10:03:59 2010 +0300 +++ b/sis/mds/stub.pkg Fri Aug 06 09:56:02 2010 +0300 @@ -17,7 +17,7 @@ &EN ; Header -#{"Metadata System"}, (0x200009F5), 10, 10, 12, TYPE=SA +#{"Metadata System"}, (0x200009F5), 10, 10, 13, TYPE=SA ; Localised Vendor name %{"Nokia"}