--- a/inc/musicplayerbldvariant.hrh Tue Feb 02 00:09:33 2010 +0200
+++ b/inc/musicplayerbldvariant.hrh Fri Feb 19 22:48:30 2010 +0200
@@ -21,7 +21,7 @@
#define MUSICPLAYERBLDVARIANT_HRH
-#define IAD_INCLUDE_BACKSTEPPING
+#undef IAD_INCLUDE_BACKSTEPPING
#define IAD_INCLUDE_ENHANCED_HOMESCREEN
#define IAD_INCLUDE_UPNP
#define IAD_INCLUDE_SINGLE_CLICK
Binary file mpxmusicplayer/Conf/mpxmusicplayer.confml has changed
Binary file mpxmusicplayer/Conf/mpxmusicplayer_101FFCD0.crml has changed
--- a/mpxmusicplayer/activeidle/aiplayerplugin/data/aiplayerplugin.rss Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2007-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: Resource definitions for project aiplayerplugin
-*
-*/
-
-
-#include <aicontentpublisheruid.hrh>
-#include <ecom/registryinfov2.rh>
-#include "aiplayerpluginuids.hrh"
-
-// ---------------------------------------------------------------------------
-// registry_info
-// ECOM registry information
-// ---------------------------------------------------------------------------
-//
-RESOURCE REGISTRY_INFO registry_info
- {
- resource_format_version = RESOURCE_FORMAT_VERSION_2;
- dll_uid = AI_UID_ECOM_DLL_CONTENTPUBLISHER_PLAYERPLUGIN;
-
- // Interface info array
- interfaces =
- {
- INTERFACE_INFO
- {
- // UID of the implemented interface
- interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PLAYERPLUGIN;
- version_no = 1;
- display_name = "PlayerPlugin";
- default_data = "";
- opaque_data = " ";
- rom_only = 1;
- }
- };
- }
- };
- }
--- a/mpxmusicplayer/activeidle/aiplayerplugin/data/aiplayerpluginresource.rss Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 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: Resource definitions for project aiplayerplugin
-*
-*/
-
-
-NAME MPAI
-
-#include <avkon.rh>
-#include <eikon.rh>
-#include <aiplayerplugin.loc>
-
-RESOURCE RSS_SIGNATURE { }
-RESOURCE TBUF { buf=""; }
-
-// ---------------------------------------------------------------------------
-// ?resource_name
-// ?description
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mpx_qtn_aipp_unknown_artist
- {
- buf = qtn_aipp_unknown_artist;
- }
-
--- a/mpxmusicplayer/activeidle/aiplayerplugin/group/aiplayerplugin.mmp Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-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: Project definition file for project aiplayerplugin
-*
-*/
-
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-
-TARGET aiplayerplugin2.dll
-TARGETTYPE PLUGIN
-UID 0x10009D8D 0x10207B72
-
-CAPABILITY CAP_ECOM_PLUGIN
-VENDORID VID_DEFAULT
-
-VERSION 15.0
-
-SOURCEPATH ../src
-SOURCE aiplayerplugin.cpp
-SOURCE aiplayerpluginengine.cpp
-
-SOURCEPATH ../data
-START RESOURCE aiplayerplugin.rss
-TARGET aiplayerplugin2.rsc
-LANGUAGE_IDS
-END
-
-SOURCEPATH ../data
-START RESOURCE aiplayerpluginresource.rss
-TARGETPATH APP_RESOURCE_DIR
-HEADER
-LANGUAGE_IDS
-END
-
-USERINCLUDE ../inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY avkon.lib
-LIBRARY ws32.lib
-LIBRARY cone.lib
-LIBRARY efsrv.lib // TParse
-LIBRARY bafl.lib // BaflUtils
-LIBRARY estor.lib // RWriteStream
-LIBRARY aiutils.lib
-LIBRARY commonengine.lib // stringloader
-LIBRARY apgrfx.lib // TaskList
-LIBRARY apparc.lib // StartApp
-LIBRARY mpxcommon.lib // mpxparameter
-LIBRARY mpxplaybackutility.lib
--- a/mpxmusicplayer/activeidle/aiplayerplugin/group/bld.inf Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2007-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: Build information file for project aiplayerplugin
-*
-*/
-
-#include <bldvariant.hrh>
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-#ifdef RD_CUSTOMIZABLE_AI
-../loc/aiplayerplugin.loc APP_LAYER_LOC_EXPORT_PATH(aiplayerplugin.loc)
-#endif
-
-PRJ_MMPFILES
-#ifdef RD_CUSTOMIZABLE_AI
-aiplayerplugin.mmp
-#endif
-
-PRJ_TESTMMPFILES
-
-PRJ_TESTEXPORTS
-
--- a/mpxmusicplayer/activeidle/aiplayerplugin/inc/aiplayerplugin.h Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
-* 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: AI ecom plugin class. Main interface to XML AI framework.
-*
-*/
-
-
-#ifndef C_AIPLAYERPLUGIN_H
-#define C_AIPLAYERPLUGIN_H
-
-// INCLUDES
-#include <aicontentpublisher.h>
-#include <aicontentobserver.h>
-#include <aipropertyextension.h>
-#include <aieventhandlerextension.h>
-
-#include "aiplayerpluginengine.h"
-#include "aiplayerpluginengineobserver.h"
-
-class MAiPluginSettings;
-class MAiContentObserver;
-class MAiContentItemIterator;
-class CCoeEnv;
-
-
-/**
- * Music Player Player Plugin.
- * This class implements AI ecom plugin. This is the main interface to
- * the XML AI framework.
- *
- * @lib aiplayerplugin2.lib
- * @since S60 5.0
- */
-NONSHARABLE_CLASS( CAiPlayerPlugin ) : public CAiContentPublisher,
- public MAiPropertyExtension,
- public MAiEventHandlerExtension,
- public MAiPlayerPluginEngineObserver
- {
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CAiPlayerPlugin* NewL();
-
- /**
- * Destructor.
- */
- virtual ~CAiPlayerPlugin();
-
-public:
-
- /**
- * From CAiContentPublisher
- * See aicontentpublisher.h for detailed description.
- * @since S60 5.0
- */
- void Resume( TAiTransitionReason aReason );
- void Suspend( TAiTransitionReason aReason );
- void Stop( TAiTransitionReason aReason );
- void SubscribeL( MAiContentObserver& aObserver );
- void ConfigureL( RAiSettingsItemArray& aSettings );
- TAny* Extension( TUid aUid );
-
- /**
- * From MAiPropertyExtension
- * See aipropertyextension.h for detailed description.
- * @since S60 5.0
- */
- TAny* GetPropertyL( TInt aProperty );
- void SetPropertyL( TInt aProperty, TAny* aValue );
-
- /**
- * From MAiEventHandlerExtension
- * See aieventhandlerextension.h for detailed description.
- * @since S60 5.0
- */
- void HandleEvent( TInt aEvent, const TDesC& aParam );
-
- /**
- * From MAiPlayerPluginEngineObserver
- * See aiplayerpluginengine.h for detailed description.
- * @since S60 5.0
- */
- void PlayerStateChanged( TMPlayerState aState );
- void TrackInfoChanged( const TDesC& aTitle, const TDesC& aArtist );
- void PlaybackPositionChanged( TInt aPosition );
- void VolumeChanged( TInt aVolume );
-
-private:
-
- CAiPlayerPlugin();
- void ConstructL();
-
- /**
- * Helper class for HandleEvent received from MAiEventHandlerExtension
- */
- void DoHandleEventL( TInt aEvent, const TDesC& aParam );
-
- /**
- * Callback function invoked through iCleanTimer upon timeout.
- */
- static TInt ClearL( TAny* aPtr );
-
-private: // Data
-
- RPointerArray<MAiContentObserver> iObservers;
- TAiPublisherInfo iInfo;
- MAiContentItemIterator* iContent;
- MAiContentItemIterator* iResources;
- MAiContentItemIterator* iEvents;
-
- CAiPlayerPluginEngine* iEngine;
- TMPlayerState iState;
-
- TBuf<128> iDuration;
- TBuf<128> iElapsedTime;
- HBufC* iLongFormatString;
- HBufC* iShortFormatString;
- HBufC* iUnknownArtistText;
- TInt iResourceOffset;
-
- CCoeEnv* iCoeEnv; // Not owned
- TBool iPlayStarted;
- CPeriodic* iCleanTimer;
- TInt iLastSetVolume;
- };
-
-#endif // C_AIPLAYERPLUGIN_H
-
-
--- a/mpxmusicplayer/activeidle/aiplayerplugin/inc/aiplayerplugincontentmodel.h Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* 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: SDK, AI Player Plugin Content Model API
-*
-*/
-
-
-#ifndef AIPLPLCONTENTMODEL_H
-#define AIPLPLCONTENTMODEL_H
-
-#include <aicontentmodel.h>
-#include "aiplayerpluginuids.hrh"
-
-// Plug-in Implementation UID.
-const TInt KImplUidMusicPlayerPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PLAYERPLUGIN;
-const TUid KUidMusicPlayerPlugin = { KImplUidMusicPlayerPlugin };
-
-
-// ================================= CONTENT ===================================
-
-/**
- * Content Ids
- */
-enum TAiPlplContentIds
- {
- EAiPlplContentArtistCaption
- ,EAiPlplContentTitleCaption
- ,EAiPlplContentDurationCaption
- ,EAiPlplContentVolume
- ,EAiPlplContentStatus
- ,EAiPlplContentElapsedTime
- };
-
-/**
- * Content that the plugin will publish
- */
-const TAiContentItem KAiPlplContent[] =
- {
- { EAiPlplContentArtistCaption, L"Artist", KAiContentTypeText }
- ,{ EAiPlplContentTitleCaption, L"Title", KAiContentTypeText }
- ,{ EAiPlplContentDurationCaption, L"Duration", KAiContentTypeText }
- //Current volume level. Content needs to be re-published every time when volume is changed
- //Always published as resource see KAiPlplResources \ VolumeLevel
- ,{ EAiPlplContentVolume, L"Volume", KAiContentTypeText }
- //Current player status. Content needs to be re-published every time when player status is changed.
- //When player is stoped, the plug-in MUST publish empty item
- //Always published as resource see KAiPlplResources \ Status
- ,{ EAiPlplContentStatus, L"Status", KAiContentTypeBitmap }
- ,{ EAiPlplContentElapsedTime, L"ElapsedTime",KAiContentTypeText }
- };
-
-
-// ================================ RESOURCES ==================================
-
-
-/**
- * Resource Ids
- */
-enum TAiPlplPluginResourceIds
- {
- EAiPlplResourceVol0
- ,EAiPlplResourceVol1
- ,EAiPlplResourceVol2
- ,EAiPlplResourceVol3
- ,EAiPlplResourceVol4
- ,EAiPlplResourceVol5
- ,EAiPlplResourceVol6
- ,EAiPlplResourceVol7
- ,EAiPlplResourceVol8
- ,EAiPlplResourceVol9
- ,EAiPlplResourceVol10
- ,EAiPlplResourcePlayIcon
- ,EAiPlplResourcePauseIcon
- };
-
-/**
- * Resources that the plugin will publish
- */
-const TAiContentItem KAiPlplResources[] =
- {
- //UI resources that represents volume levels
- { EAiPlplResourceVol0, L"Vol0", KAiContentTypeText }
- ,{ EAiPlplResourceVol1, L"Vol1", KAiContentTypeText }
- ,{ EAiPlplResourceVol2, L"Vol2", KAiContentTypeText }
- ,{ EAiPlplResourceVol3, L"Vol3", KAiContentTypeText }
- ,{ EAiPlplResourceVol4, L"Vol4", KAiContentTypeText }
- ,{ EAiPlplResourceVol5, L"Vol5", KAiContentTypeText }
- ,{ EAiPlplResourceVol6, L"Vol6", KAiContentTypeText }
- ,{ EAiPlplResourceVol7, L"Vol7", KAiContentTypeText }
- ,{ EAiPlplResourceVol8, L"Vol8", KAiContentTypeText }
- ,{ EAiPlplResourceVol9, L"Vol9", KAiContentTypeText }
- ,{ EAiPlplResourceVol10, L"Vol10", KAiContentTypeText }
-
- //UI resources that represents status
- ,{ EAiPlplResourcePlayIcon, L"PlayIcon", KAiContentTypeBitmap }
- ,{ EAiPlplResourcePauseIcon, L"PauseIcon", KAiContentTypeBitmap }
- };
-
-// ============================ SERVICES (Events) ==============================
-
-/**
- * Event Ids.
- */
-enum TAiPlplEventIds
- {
- EAiPlplEventVolInc
- ,EAiPlplEventVolDec
- ,EAiPlplEventLaunchLibrary
- ,EAiPlplEventVolSet
- ,EAiPlplEventVolMute
- ,EAiPlplEventVolRestore
- };
-
-/**
- * Services that the plugin can perform
- */
-const TAiContentItem KAiPlplEvents[] =
- {
- { EAiPlplEventVolInc, L"VolInc", "" }
- ,{ EAiPlplEventVolDec, L"VolDec", "" }
- ,{ EAiPlplEventLaunchLibrary, L"Library", "" }
- ,{ EAiPlplEventVolSet, L"VolSet", "" }
- ,{ EAiPlplEventVolMute, L"Mute", "" }
- ,{ EAiPlplEventVolRestore, L"Restore", "" }
- };
-
-#endif // AIPLPLCONTENTMODEL_H
--- a/mpxmusicplayer/activeidle/aiplayerplugin/inc/aiplayerpluginengine.h Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
-* Copyright (c) 2007-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: Engine which interfaces to MPX framework.
-*
-*/
-
-
-#ifndef C_AIPLAYERPLUGINENGINE_H
-#define C_AIPLAYERPLUGINENGINE_H
-
-#include <e32base.h>
-#include <mpxplaybackobserver.h>
-
-#include "aiplayerpluginengineobserver.h"
-
-class MMPXPlaybackUtility;
-
-
-/**
- * Music Player Player Plugin Engine.
- * This class provides interface to MPX framework.
- *
- * @lib aiplayerplugin2.lib
- * @since S60 5.0
- */
-NONSHARABLE_CLASS( CAiPlayerPluginEngine ) : public CBase,
- public MMPXPlaybackObserver,
- public MMPXPlaybackCallback
- {
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CAiPlayerPluginEngine* NewL( MAiPlayerPluginEngineObserver& aObserver );
-
- /**
- * Destructor.
- */
- virtual ~CAiPlayerPluginEngine();
-
- /**
- * From MMPXPlaybackObserver
- * See mpxplaybackobserver.h for detailed description.
- * @since S60 5.0
- */
- void HandlePlaybackMessage( CMPXMessage* aMessage, TInt aError );
-
- /**
- * From MMPXPlaybackCallback
- * See mpxplaybackobserver.h for detailed description.
- * @since S60 5.0
- */
- void HandlePropertyL( TMPXPlaybackProperty aProperty, TInt aValue, TInt aError );
- void HandleSubPlayerNamesL( TUid aPlayer, const MDesCArray* aSubPlayers, TBool aComplete, TInt aError );
- void HandleMediaL( const CMPXMedia& aMedia, TInt aError );
- void HandlePlaybackCommandComplete( CMPXCommand* aCommandResult, TInt aError );
-
-public:
-
- /**
- * Get the current state of the active player.
- *
- * @return Active player state
- * @see TMPlayerState
- */
- TMPlayerState PlayerState();
-
- /**
- * Get the title of the currently playing song.
- *
- * @return Song title
- */
- const TDesC& Title();
-
- /**
- * Get the artist of the currently playing song.
- *
- * @return Artist
- */
- const TDesC& Artist();
-
- /**
- * Get the current position.
- *
- * @return Current position.
- */
- TInt Position();
-
- /**
- * Get the duration of the currently playing song.
- *
- * @return Song duration.
- */
- TInt Duration();
-
- /**
- * Get the current volume.
- *
- * @return Current volume.
- */
- TInt Volume();
-
- /**
- * Set volume.
- *
- * @param aVolume Volume level
- */
- void SetVolumeL( TInt aVolume );
-
-private:
-
- /**
- * C++ default constructor.
- */
- CAiPlayerPluginEngine( MAiPlayerPluginEngineObserver& aObserver );
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
- /**
- * Handle playback message
- *
- * @param aMessage playback message
- */
- void DoHandlePlaybackMessageL( const CMPXMessage& aMessage );
-
- /**
- * Handle playback property
- *
- * @param aProperty the property
- * @param aValue the value of the property
- * @param aError error code
- */
- void DoHandlePropertyL( TInt aProperty, TInt aValue, TInt aError );
-
- /**
- * Handle playback state changed.
- *
- * @param aState New Playback state
- */
- void DoHandleStateChangedL( TMPXPlaybackState aState );
-
- /**
- * Displays error notes.
- *
- * @param aError Error ID to be handled.
- */
- void HandleErrorL( TInt aError );
-
- /**
- * Map states from TMPXPlaybackState to TMPlayerState
- *
- * @param aState State in TMPXPlaybackState format
- * @return State in TMPlayerState format, or KErrNotFound
- * if the state can't be mapped
- */
- TMPlayerState MapState( TMPXPlaybackState aState );
-
- /**
- * Map volume from MPX player to AI volume level.
- *
- * @param aVolume Volume level from MPX player
- * @return Volume level for AI.
- */
- TInt MapToAiVolume( TInt aVolume );
-
- /**
- * Map volume from AI to MPX player volume level.
- *
- * @param aVolume Volume level from AI
- * @return Volume level for MPX player.
- */
- TInt MapToMpxVolume( TInt aVolume );
-
- /**
- * Request media.
- */
- void RequestMediaL();
-
-private: // Data
-
- MAiPlayerPluginEngineObserver* iObserver; // Not owned
- MMPXPlaybackUtility* iPlaybackUtility; // Owned
-
- HBufC* iTitle;
- HBufC* iArtist;
- TInt iMaxVolume;
- TInt iVolume;
- TInt iPosition;
- TInt iDuration;
- };
-
-#endif // C_CAiPlayerPluginEngine_H
-
-// End of File
--- a/mpxmusicplayer/activeidle/aiplayerplugin/inc/aiplayerpluginengineobserver.h Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 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: Music Player stautus observer
-*
-*/
-
-
-#ifndef M_AIPLAYERPLUGINENGINEOBSERVER_H
-#define M_AIPLAYERPLUGINENGINEOBSERVER_H
-
-#include <e32std.h>
-
-/**
- * Player state.
- */
-enum TMPlayerState
- {
- EMPlayerStatePlaying,
- EMPlayerStatePaused,
- EMPlayerStateSeeking,
- EMPlayerStateOther
- };
-
-/**
- * Observer interface to be implemented by a client of AiPlayerPluginEngine.
- *
- * @lib aiplayerplugin2.lib
- * @since S60 5.0
- */
-class MAiPlayerPluginEngineObserver
- {
-public:
-
- /**
- * Called when active player instance's state changes
- *
- * @since S60 5.0
- * @param aState Active player state
- * @see TMPlayerState
- */
- virtual void PlayerStateChanged( TMPlayerState aState ) = 0;
-
- /**
- * Called when track info changes (i.e. track changes or current track's
- * info is updated) in the active player instance.
- *
- * @since S60 5.0
- * @param aTitle Current track's title.
- * @param aArtist Current track's artist.
- */
- virtual void TrackInfoChanged( const TDesC& aTitle, const TDesC& aArtist ) = 0;
-
- /**
- * Called each second during playback.
- *
- * @since S60 5.0
- * @param aPosition Current playback position in seconds.
- */
- virtual void PlaybackPositionChanged( TInt aPosition ) = 0;
-
- /**
- * Called when the player volume is changed.
- *
- * @since S60 5.0
- * @param aVolume volume level.
- */
- virtual void VolumeChanged( TInt aVolume ) = 0;
- };
-
-
-#endif // ?M_AIPLAYERPLUGINENGINEOBSERVER_H
--- a/mpxmusicplayer/activeidle/aiplayerplugin/inc/aiplayerpluginuids.hrh Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2007-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: Resource headers for project aiplayerplugin
-*
-*/
-
-
-#ifndef AIPLAYERPLUGINUIDS_HRH
-#define AIPLAYERPLUGINUIDS_HRH
-
-/** Ecom implementation uid for player plugin */
-#define AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PLAYERPLUGIN 0x10207B73
-
-/** Ecom dll uid for player plugin */
-#define AI_UID_ECOM_DLL_CONTENTPUBLISHER_PLAYERPLUGIN 0x10207B72
-
-#endif // AIPLAYERPLUGINUIDS_HRH
--- a/mpxmusicplayer/activeidle/aiplayerplugin/loc/aiplayerplugin.loc Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 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: Localization strings for project aiplayerplugin
-*
-*/
-
-
-// LOCALISATION STRINGS
-
-// d:Text shown when artist is unknown
-// l:list_double_large_graphic_pane_t1_cp2
-// w:
-// r:5.0
-//
-#define qtn_aipp_unknown_artist "Unknown artist"
--- a/mpxmusicplayer/activeidle/aiplayerplugin/src/aiplayerplugin.cpp Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,632 +0,0 @@
-/*
-* 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: Active Idle player plug-in
-*
-*/
-
-
-#include <ecom/implementationproxy.h>
-#include <aiutility.h>
-
-#include <AknUtils.h>
-#include <StringLoader.h>
-#include <bautils.h>
-#include <avkon.rsg>
-
-#include <data_caging_path_literals.hrh> // KDC_APP_BITMAP_DIR
-#include <apgcli.h> // RApaLsSession
-#include <apacmdln.h> // CApaCommandLine
-#include <apgtask.h>
-
-#include <mpxlog.h>
-#include <mpxconstants.h> // KAppUidMusicPlayer
-#include <mpxparameter.h>
-#include <mpxmusicplayerviewplugin.hrh>
-#include <aiplayerpluginresource.rsg>
-
-#include "aiplayerplugin.h"
-#include "aiplayerpluginuids.hrh"
-#include "aiplayerplugincontentmodel.h"
-
-_LIT(KMPXZeroDurationMark, "--");
-const TInt KMPXMinSecSeparatorIndex = 2;
-const TInt KMPXOneSecInMicroSecs = 1000000;
-const TInt KMPXOneHourInSeconds = 60*60;
-const TInt KMPXTimeIndicatorLength = 16;
-const TInt KPlayerMusicPlayerParameterGranularity = 50;
-_LIT( KMPXAiPlayerRscPath, "z:aiplayerpluginresource.rsc" );
-
-const TInt KMPlayerResumeWaitTime = 1000000; // 1.0s
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::ConstructL()
- {
- MPX_DEBUG1("CAiPlayerPlugin::ConstructL() - begin");
-
- iInfo.iUid = KUidMusicPlayerPlugin;
- iInfo.iName.Copy(_L8("PlayerPlugin"));
-
- iContent = AiUtility::CreateContentItemArrayIteratorL(KAiPlplContent);
- iResources = AiUtility::CreateContentItemArrayIteratorL(KAiPlplResources);
- iEvents = AiUtility::CreateContentItemArrayIteratorL(KAiPlplEvents);
-
- // Read time format strings from AVKON resource
- iLongFormatString = StringLoader::LoadL(R_QTN_TIME_DURAT_LONG_WITH_ZERO);
- iShortFormatString = StringLoader::LoadL(R_QTN_TIME_DURAT_MIN_SEC_WITH_ZERO);
-
- iCoeEnv = CCoeEnv::Static();
-
- TParse parse;
- parse.Set(KMPXAiPlayerRscPath, &KDC_APP_RESOURCE_DIR, NULL);
- TFileName resourceFile;
- resourceFile.Append(parse.FullName());
- BaflUtils::NearestLanguageFile(iCoeEnv->FsSession(), resourceFile);
- iResourceOffset = iCoeEnv->AddResourceFileL(resourceFile);
- iUnknownArtistText = StringLoader::LoadL(R_MPX_QTN_AIPP_UNKNOWN_ARTIST);
-
- iPlayStarted = EFalse;
- iCleanTimer = CPeriodic::NewL(CActive::EPriorityStandard);
-
- MPX_DEBUG1("CAiPlayerPlugin::ConstructL() - end");
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::NewL
-// ----------------------------------------------------------------------------
-//
-CAiPlayerPlugin* CAiPlayerPlugin::NewL()
- {
- CAiPlayerPlugin* self = new (ELeave) CAiPlayerPlugin;
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::CAiPlayerPlugin
-// ----------------------------------------------------------------------------
-//
-CAiPlayerPlugin::CAiPlayerPlugin()
- : iEngine(NULL)
- {
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::~CAiPlayerPlugin()
-// ----------------------------------------------------------------------------
-//
-CAiPlayerPlugin::~CAiPlayerPlugin()
- {
- iObservers.Close();
-
- Release( iContent );
- Release( iResources );
- Release( iEvents );
-
- if ( iResourceOffset )
- {
- iCoeEnv->DeleteResourceFile(iResourceOffset);
- }
-
- delete iEngine;
-
- delete iLongFormatString;
- delete iShortFormatString;
- delete iUnknownArtistText;
-
- iCoeEnv = NULL;
- iCleanTimer->Cancel();
- delete iCleanTimer;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::Resume
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::Resume( TAiTransitionReason aReason )
- {
- MPX_DEBUG1("CAiPlayerPlugin::ResumeL");
- if ( !iEngine )
- {
- TRAPD(err, iEngine = CAiPlayerPluginEngine::NewL(*this));
- if ( err == KErrNone )
- {
- iState = iEngine->PlayerState();
- PlayerStateChanged( iState );
- if (iState == EMPlayerStatePlaying || iState == EMPlayerStatePaused )
- {
- TrackInfoChanged( iEngine->Title(), iEngine->Artist() );
- VolumeChanged( iEngine->Volume() );
- PlaybackPositionChanged( iEngine->Position() );
- }
- }
- }
- else if ( aReason == EAiGeneralThemeChanged )
- {
- PlayerStateChanged( iEngine->PlayerState() );
- }
-
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::Suspend
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::Suspend( TAiTransitionReason /*aReason*/ )
- {
- MPX_DEBUG1("CAiPlayerPlugin::Suspend");
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::Stop
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::Stop( TAiTransitionReason /*aReason*/ )
- {
- MPX_DEBUG1("CAiPlayerPlugin::Stop");
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::SubscribeL
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::SubscribeL( MAiContentObserver& aObserver )
- {
- MPX_DEBUG1("CAiPlayerPlugin::SubscribeL");
- return iObservers.AppendL(&aObserver);
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::ConfigureL
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::ConfigureL( RAiSettingsItemArray& /*aSettings*/ )
- {
- MPX_DEBUG1("CAiPlayerPlugin::ConfigureL");
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::Extension
-// ----------------------------------------------------------------------------
-//
-TAny* CAiPlayerPlugin::Extension( TUid aUid )
- {
- if (aUid == KExtensionUidProperty)
- {
- return static_cast<MAiPropertyExtension*>(this);
- }
- else if (aUid == KExtensionUidEventHandler)
- {
- return static_cast<MAiEventHandlerExtension*>(this);
- }
- return NULL; // Requested extension not supported
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::GetPropertyL
-// ----------------------------------------------------------------------------
-//
-TAny* CAiPlayerPlugin::GetPropertyL( TInt aProperty )
- {
- switch (aProperty)
- {
- case EAiPublisherInfo:
- return &iInfo;
-
- case EAiPublisherContent:
- return static_cast<MAiContentItemIterator*>(iContent);
-
- case EAiPublisherResources:
- return static_cast<MAiContentItemIterator*>(iResources);
-
- case EAiPublisherEvents:
- return static_cast<MAiContentItemIterator*>(iEvents);
- }
-
- User::Leave(KErrNotSupported);
- return NULL;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::SetPropertyL
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- {
- if (aValue)
- {
- switch (aProperty)
- {
- case EAiPublisherInfo:
- {
- const TAiPublisherInfo* info =
- static_cast<const TAiPublisherInfo*>(aValue);
-
- iInfo.iUid.iUid = info->iUid.iUid;
- iInfo.iName.Copy( info->iName );
- }
- break;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::HandleEvent
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::HandleEvent( TInt aEvent, const TDesC& aParam )
- {
- MPX_DEBUG1("CAiPlayerPlugin::HandleEvent");
- TRAPD(err, DoHandleEventL( aEvent, aParam ) );
- if ( err != KErrNone )
- {
- MPX_DEBUG2("CAiPlayerPlugin::HandleEvent err[%d]", err);
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::DoHandleEventL
-// ----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::DoHandleEventL( TInt aEvent, const TDesC& aParam )
- {
- MPX_DEBUG2("CAiPlayerPlugin::DoHandleEventL %d", aEvent);
-
- TInt volume = iEngine->Volume();
- switch (aEvent)
- {
- case EAiPlplEventVolInc:
- {
- iEngine->SetVolumeL(++volume);
- iLastSetVolume = volume;
- }
- break;
- case EAiPlplEventVolDec:
- {
- iEngine->SetVolumeL(--volume);
- iLastSetVolume = volume;
- }
- break;
- case EAiPlplEventVolSet:
- {
- TLex lex;
- lex.Assign(aParam);
- if( lex.Val(volume) == KErrNone )
- {
- iEngine->SetVolumeL(volume);
- }
- iLastSetVolume = volume;
- }
- break;
- case EAiPlplEventVolMute:
- {
- iLastSetVolume = volume;
- iEngine->SetVolumeL(0);
- }
- break;
- case EAiPlplEventVolRestore:
- {
- if( iLastSetVolume == 0 )
- {
- // So that "muting muted" don't function funky way.
- iLastSetVolume = 1;
- }
- iEngine->SetVolumeL(iLastSetVolume);
- }
- break;
- case EAiPlplEventLaunchLibrary:
- {
- MPX_DEBUG1("CAiPlayerPlugin::DoHandleEventL() EAiPlplEventLaunchLibrary");
- //Launch player
- TApaTaskList tasList(iEikonEnv->WsSession());
- TApaTask task = tasList.FindApp(KAppUidMusicPlayerX);
- if (task.Exists())
- {
- MPX_DEBUG1("CAiPlayerPlugin::DoHandleEventL() Music app is already launched. Go to Now Playing view.");
- RWsSession& wsSession( iCoeEnv->WsSession() );
- CMPXParameter* param = new ( ELeave ) CMPXParameter();
- CleanupStack::PushL( param );
- param->iType.iUid = KMPXPluginTypePlaybackUid;
- param->iCmdForward = EMPXCmdFwdNowPlaying;
-
- MPX_DEBUG1( "CAiPlayerPlugin::DoHandleEventL start Externalize" );
- CBufBase* buffer = CBufFlat::NewL( KPlayerMusicPlayerParameterGranularity );
- CleanupStack::PushL( buffer );
- RBufWriteStream writeStream( *buffer );
- CleanupClosePushL( writeStream );
- param->ExternalizeL( writeStream );
- writeStream.CommitL();
- buffer->Compress();
- CleanupStack::PopAndDestroy( &writeStream );
-
- MPX_DEBUG2( "CAiPlayerPlugin::DoHandleEventL start Send message, message size = %d", buffer->Size() );
- wsSession.SendMessageToWindowGroup( task.WgId(), KAppUidMusicPlayerX, buffer->Ptr( 0 ));
- MPX_DEBUG1( "CAiPlayerPlugin::DoHandleEventL Send message complete" );
- CleanupStack::PopAndDestroy( buffer );
- CleanupStack::PopAndDestroy( param );
- }
- else
- {
- // Launch Music Player Application
- MPX_DEBUG1("CAiPlayerPlugin::DoHandleEventL() Launch Music app for the first time");
- RProcess process;
- TApaAppInfo appInfo;
- RApaLsSession session;
- TInt res = session.Connect(); // Ignore error
- CleanupClosePushL( session );
- TInt err = session.GetAppInfo( appInfo, KAppUidMusicPlayerX );
- if ( !err )
- {
- process.Create( appInfo.iFullName, KNullDesC );// Ignore error
- TRAP( err,
- {
- CApaCommandLine* commandLine = CApaCommandLine::NewLC();
- commandLine->SetDocumentNameL( KNullDesC );
- commandLine->SetExecutableNameL( appInfo.iFullName );
- commandLine->SetProcessEnvironmentL( process );
- session.StartApp( *commandLine ); // Ignore error
- CleanupStack::PopAndDestroy(); // commandLine
- });
- process.Resume();
- process.Close();
- }
- CleanupStack::PopAndDestroy(); // Close RApaLsSession session
- }
- }
- break;
- default:
- break;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPlayerPlugin::ClearL
-// ----------------------------------------------------------------------------
-//
-TInt CAiPlayerPlugin::ClearL(TAny* aPtr)
- {
- MPX_DEBUG1("CAiPlayerPlugin::ClearL");
- CAiPlayerPlugin* plugin = reinterpret_cast<CAiPlayerPlugin*> (aPtr);
- for (TInt i = 0; i < plugin->iObservers.Count(); i++)
- {
- MAiContentObserver* observer = plugin->iObservers[i];
- observer->Clean((MAiPropertyExtension&) *plugin, EAiPlplContentArtistCaption, 1);
- observer->Clean((MAiPropertyExtension&) *plugin, EAiPlplContentTitleCaption, 1);
- observer->Clean((MAiPropertyExtension&) *plugin, EAiPlplContentDurationCaption, 1);
- observer->Clean((MAiPropertyExtension&) *plugin, EAiPlplContentElapsedTime,1);
- observer->Clean((MAiPropertyExtension&) *plugin, EAiPlplContentStatus, 1);
- observer->Clean((MAiPropertyExtension&) *plugin, EAiPlplContentVolume,1);
- observer->Commit(0);
- }
- plugin->iCleanTimer->Cancel();
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CAiPlayerPlugin::PlayerStateChanged
-// -----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::PlayerStateChanged( TMPlayerState aState )
- {
- MPX_DEBUG2("CAiPlayerPlugin::PlayerStateChanged [%d]", aState);
- iState = aState;
- for (TInt i = 0; i < iObservers.Count(); i++)
- {
- MAiContentObserver* observer = iObservers[i];
- observer->StartTransaction(reinterpret_cast<TInt32>(this));
- switch(iState)
- {
- case EMPlayerStatePlaying:
- {
- iPlayStarted = ETrue;
- iCleanTimer->Cancel();
- observer->Publish(*this,
- EAiPlplContentStatus,
- EAiPlplResourcePlayIcon,
- 1);
- }
- break;
- case EMPlayerStatePaused:
- {
- iPlayStarted = ETrue;
- iCleanTimer->Cancel();
- observer->Publish(*this,
- EAiPlplContentStatus,
- EAiPlplResourcePauseIcon,
- 1);
- PlaybackPositionChanged(iEngine->Position());
- }
- break;
- case EMPlayerStateSeeking:
- PlaybackPositionChanged(iEngine->Position());
- break;
- default: // EMPlayerStateOther
- if ( iPlayStarted )
- {
- iCleanTimer->Start(KMPlayerResumeWaitTime,
- KMPlayerResumeWaitTime,
- TCallBack(ClearL,this));
- }
- iPlayStarted = EFalse;
- break;
- }
- observer->Commit(reinterpret_cast<TInt32>(this));
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAiPlayerPlugin::TrackInfoChanged
-// -----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::TrackInfoChanged( const TDesC& aTitle, const TDesC& aArtist )
- {
- MPX_DEBUG1("CAiPlayerPlugin::TrackInfoChanged");
- for (TInt i = 0; i < iObservers.Count(); i++)
- {
- MAiContentObserver* observer = iObservers[i];
- observer->StartTransaction(reinterpret_cast<TInt32>(this));
-
- if ( &aTitle && aTitle.Length() ) //Check if hte reference exists add if is not empty
- {
- observer->Publish(*this, EAiPlplContentTitleCaption, aTitle, 1);
- }
- if ( &aArtist && aArtist.Length() ) //Check if hte reference exists add if is not empty
- {
- observer->Publish(*this, EAiPlplContentArtistCaption, aArtist, 1);
- }
- else
- {
- observer->Publish(*this, EAiPlplContentArtistCaption, *iUnknownArtistText, 1);
- }
- observer->Commit(reinterpret_cast<TInt32>(this));
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAiPlayerPlugin::PlaybackPositionChanged
-// -----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::PlaybackPositionChanged( TInt aPosition )
- {
- MPX_DEBUG1("CAiPlayerPlugin::PlaybackPositionChanged");
-
- TBuf<KMPXTimeIndicatorLength> elapsed;
- TBuf<KMPXTimeIndicatorLength> total;
-
- TInt64 playbackPosInSeconds;
- TInt64 totalLengthInSeconds;
-
- playbackPosInSeconds = aPosition;
- totalLengthInSeconds = iEngine->Duration();
-
- TPtrC format = *iShortFormatString;
-
- if (totalLengthInSeconds >= KMPXOneHourInSeconds)
- {
- // For tracks longer than an hour we use different time format and a
- // slightly different layout which has more space for the time labels.
- format.Set(*iLongFormatString);
- }
-
- TTime elapsedTime(playbackPosInSeconds * KMPXOneSecInMicroSecs);
- TTime totalTime(totalLengthInSeconds * KMPXOneSecInMicroSecs);
-
- if (aPosition == 0)
- {
- totalLengthInSeconds = 0;
- }
-
- // Convert total playing time to texts.
- elapsedTime.FormatL(elapsed, format);
-
- if (totalLengthInSeconds)
- {
- // Time remaining
- totalTime.FormatL(total, format);
- }
- else
- {
- // Time remaining: --:--
- TLocale locale;
- TBuf<KMPXTimeIndicatorLength> pos;
- TChar separator = locale.TimeSeparator(KMPXMinSecSeparatorIndex);
- total = KMPXZeroDurationMark;
- total.Append(separator);
- total += KMPXZeroDurationMark;
- }
-
- AknTextUtils::LanguageSpecificNumberConversion(elapsed);
- AknTextUtils::LanguageSpecificNumberConversion(total);
-
- iElapsedTime.Copy(elapsed);
-
- iDuration.Copy(elapsed);
- iDuration.Append(_L("/"));
- iDuration.Append(total);
-
- if ( iState == EMPlayerStatePlaying || iState == EMPlayerStatePaused || iState == EMPlayerStateSeeking )
- {
- for (TInt i = 0; i < iObservers.Count(); i++)
- {
- MAiContentObserver* observer = iObservers[i];
- observer->StartTransaction(reinterpret_cast<TInt32>(this));
-
- //for (Classic view)
- observer->Publish(*this,
- EAiPlplContentElapsedTime,
- iElapsedTime,
- 1);
-
- //for (Navibar view)
- observer->Publish(*this,
- EAiPlplContentDurationCaption,
- iDuration,
- 1);
-
- observer->Commit(reinterpret_cast<TInt32>(this));
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAiPlayerPlugin::VolumeChanged
-// -----------------------------------------------------------------------------
-//
-void CAiPlayerPlugin::VolumeChanged( TInt aVolume )
- {
- MPX_DEBUG1("CAiPlayerPlugin::VolumeChanged");
-
- for (TInt i = 0; i < iObservers.Count(); i++)
- {
- MAiContentObserver* observer = iObservers[i];
- observer->StartTransaction(reinterpret_cast<TInt32>(this));
-
- // Order of enum TAiPlplPluginResourceIds is important
- // must stay EAiPlplResourceVol0= 0 ... EAiPlplResourceVol10 = 10
- // for this to work
- if ( aVolume>=0 && aVolume<=10 )
- {
- observer->Publish(*this,
- EAiPlplContentVolume,
- aVolume,
- 1);
- }
- observer->Commit(reinterpret_cast<TInt32>(this));
- }
- }
-
-// ======== GLOBAL FUNCTIONS ========
-
-// Provide a key pair value table for ECOM.
-// Used to identify the correct construction function for the requested interface.
-const TImplementationProxy ImplementationTable[] =
-{
- IMPLEMENTATION_PROXY_ENTRY( AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PLAYERPLUGIN,
- CAiPlayerPlugin::NewL )
-};
-
-
-// Return an instance of the proxy table.
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-{
- aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
- return ImplementationTable;
-}
-
--- a/mpxmusicplayer/activeidle/aiplayerplugin/src/aiplayerpluginengine.cpp Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,514 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Music Player stautus observer
-*
-*/
-
-
-#include <mpxplaybackutility.h>
-#include <mpxplaybackmessage.h>
-#include <mpxmedia.h>
-#include <mpxmediageneraldefs.h>
-#include <mpxmediamusicdefs.h>
-#include <mpxmessagegeneraldefs.h>
-#include <mpxplaybackmessagedefs.h>
-#include <mpxlog.h>
-
-#include "aiplayerpluginengine.h"
-
-const TInt KMPXOneSecInMilliSecs( 1000 );
-const TInt KVolumeLevelMin = 0;
-const TInt KVolumeLevelMax = 10;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CAiPlayerPluginEngine::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::ConstructL()
- {
- MPX_DEBUG1("CAiPlayerPluginEngine::ConstructL");
- // Get the playback utility instance from engine.
- iPlaybackUtility = MMPXPlaybackUtility::NewL( KPbModeActivePlayer, this );
-
- TMPXPlaybackState state( EPbStateNotInitialised );
-
- // Not fatal error if fetching the playback state fails
- TRAP_IGNORE( state = iPlaybackUtility->StateL() );
-
- if( state != EPbStateNotInitialised &&
- state != EPbStateInitialising )
- {
- // Playback is already ongoing. We aren't going to receive EMediaChanged
- // for the current song so we need manually update the media info
- RequestMediaL();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAiPlayerPluginEngine::NewL
-// ---------------------------------------------------------------------------
-//
-CAiPlayerPluginEngine* CAiPlayerPluginEngine::NewL( MAiPlayerPluginEngineObserver& aObserver )
- {
- MPX_DEBUG1("CAiPlayerPluginEngine::NewL");
- CAiPlayerPluginEngine* self = new ( ELeave ) CAiPlayerPluginEngine( aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAiPlayerPluginEngine::CAiPlayerPluginEngine
-// ---------------------------------------------------------------------------
-//
-CAiPlayerPluginEngine::CAiPlayerPluginEngine( MAiPlayerPluginEngineObserver& aObserver )
- : iObserver( &aObserver ),
- iPlaybackUtility(NULL),
- iTitle(NULL),
- iArtist(NULL),
- iMaxVolume(KVolumeLevelMax),
- iVolume(KErrNotFound),
- iPosition(KErrNotFound),
- iDuration(KErrNotFound)
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAiPlayerPluginEngine::~CAiPlayerPluginEngine
-// ---------------------------------------------------------------------------
-//
-CAiPlayerPluginEngine::~CAiPlayerPluginEngine()
- {
- MPX_DEBUG1("CAiPlayerPluginEngine::~CAiPlayerPluginEngine");
- if ( iPlaybackUtility )
- {
- iPlaybackUtility->Close();
- }
- delete iTitle;
- delete iArtist;
- }
-
-// ---------------------------------------------------------------------------
-// From MMPXPlaybackObserver
-// Handle playback message.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::HandlePlaybackMessage( CMPXMessage* aMessage, TInt aError )
- {
- if ( aError == KErrNone && aMessage )
- {
- TRAP_IGNORE( DoHandlePlaybackMessageL( *aMessage ) );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From MMPXPlaybackCallback
-// Handle playback property.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::HandlePropertyL( TMPXPlaybackProperty aProperty, TInt aValue, TInt aError )
- {
- DoHandlePropertyL( aProperty, aValue, aError );
- }
-
-// ---------------------------------------------------------------------------
-// From MMPXPlaybackCallback
-// Method is called continously until aComplete=ETrue, signifying that
-// it is done and there will be no more callbacks
-// Only new items are passed each time
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::HandleSubPlayerNamesL(
- TUid /* aPlayer */,
- const MDesCArray* /* aSubPlayers */,
- TBool /* aComplete */,
- TInt /* aError */ )
- {
- // do nothing
- }
-
-// ---------------------------------------------------------------------------
-// From MMPXPlaybackCallback
-// Handle media
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::HandleMediaL( const CMPXMedia& aMedia, TInt aError )
- {
- MPX_DEBUG1("CAiPlayerPluginEngine::HandleMediaL");
- if ( KErrNone == aError )
- {
- delete iTitle;
- iTitle = NULL;
- if ( aMedia.IsSupported( KMPXMediaGeneralTitle ) )
- {
- iTitle = (aMedia.ValueText( KMPXMediaGeneralTitle )).AllocL();
- }
- else if ( aMedia.IsSupported( KMPXMediaGeneralUri ) )
- {
- TParsePtrC filePath( aMedia.ValueText( KMPXMediaGeneralUri ) );
- iTitle = (filePath.Name()).AllocL();
- }
- delete iArtist;
- iArtist = NULL;
- iArtist = (aMedia.ValueText( KMPXMediaMusicArtist )).AllocL();
-
- iObserver->TrackInfoChanged( *iTitle, *iArtist );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From MMPXPlaybackCallback
-// Handle completion of a asynchronous command
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::HandlePlaybackCommandComplete( CMPXCommand* /*aCommandResult*/, TInt /*aError*/ )
- {
- // do nothing
- }
-
-// ---------------------------------------------------------------------------
-// Get the current state of the active player
-// ---------------------------------------------------------------------------
-//
-TMPlayerState CAiPlayerPluginEngine::PlayerState()
- {
- MPX_DEBUG1("CAiPlayerPluginEngine::PlayerState");
- TMPXPlaybackState state( EPbStateNotInitialised );
- TRAP_IGNORE( state = iPlaybackUtility->StateL() );
- return MapState( state );
- }
-
-// ---------------------------------------------------------------------------
-// CAiPlayerPluginEngine::Title
-// ---------------------------------------------------------------------------
-//
-const TDesC& CAiPlayerPluginEngine::Title()
- {
- if ( iTitle )
- {
- return *iTitle;
- }
- else
- {
- return KNullDesC;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAiPlayerPluginEngine::Artist
-// ---------------------------------------------------------------------------
-//
-const TDesC& CAiPlayerPluginEngine::Artist()
- {
- if ( iArtist )
- {
- return *iArtist;
- }
- else
- {
- return KNullDesC;
- }
- }
-
-// ----------------------------------------------------
-// CAiPlayerPluginEngine::Position
-// ----------------------------------------------------
-//
-TInt CAiPlayerPluginEngine::Position()
- {
- return iPosition;
- }
-
-// ----------------------------------------------------
-// CAiPlayerPluginEngine::Duration
-// ----------------------------------------------------
-//
-TInt CAiPlayerPluginEngine::Duration()
- {
- return iDuration;
- }
-
-// ----------------------------------------------------
-// CAiPlayerPluginEngine::Volume
-// ----------------------------------------------------
-//
-TInt CAiPlayerPluginEngine::Volume()
- {
- return iVolume;
- }
-
-// ----------------------------------------------------
-// CAiPlayerPluginEngine::SetVolumeL
-// ----------------------------------------------------
-//
-void CAiPlayerPluginEngine::SetVolumeL( TInt aValue )
- {
- MPX_DEBUG2("CAiPlayerPluginEngine::SetVolumeL(%d)", aValue );
- if ( aValue == iVolume )
- {
- return;
- }
- if ( aValue < KVolumeLevelMin || aValue > KVolumeLevelMax )
- {
- User::Leave(KErrArgument);
- }
- else
- {
- // iVolume will be updated upon callback DoHandlePropertyL
- iPlaybackUtility->SetL( EPbPropertyVolume, MapToMpxVolume(aValue) ) ;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Handle playback message.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::DoHandlePlaybackMessageL( const CMPXMessage& aMessage )
- {
- MPX_DEBUG1("CAiPlayerPluginEngine::DoHandlePlaybackMessageL");
-
- TMPXMessageId id( aMessage.ValueTObjectL<TMPXMessageId>( KMPXMessageGeneralId ) );
- if ( KMPXMessageGeneral == id )
- {
- TInt event( aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralEvent ) );
- MPX_DEBUG2("CAiPlayerPluginEngine::DoHandlePlaybackMessageL(%d)", event );
- switch ( event )
- {
- case TMPXPlaybackMessage::EPropertyChanged:
- {
- TInt error( KErrNone );
- DoHandlePropertyL(
- aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralType ),
- aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralData ),
- error );
- break;
- }
- case TMPXPlaybackMessage::EStateChanged:
- {
- TMPXPlaybackState state( aMessage.ValueTObjectL<TMPXPlaybackState>( KMPXMessageGeneralType ));
- MPX_DEBUG2("CAiPlayerPluginEngine::HandlePlaybackMessageL - EStateChanged(%d)", state);
-
- DoHandleStateChangedL( state );
- break;
- }
- case TMPXPlaybackMessage::EMediaChanged:
- case TMPXPlaybackMessage::EPlaylistUpdated:
- {
- iPlaybackUtility->PropertyL( *this, EPbPropertyPosition );
- iPlaybackUtility->PropertyL( *this, EPbPropertyDuration );
- RequestMediaL();
- break;
- }
- case TMPXPlaybackMessage::ECommandReceived:
- {
- MPX_DEBUG2("CAiPlayerPluginEngine::HandlePlaybackMessageL - ECommandReceived(%d)",
- aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralType ) );
- break;
- }
- case TMPXPlaybackMessage::EActivePlayerChanged:
- {
- MPX_DEBUG3("CAiPlayerPluginEngine::HandlePlaybackMessageL - EActivePlayerChanged(%d, %d)",
- aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralType ),
- aMessage.ValueTObjectL<TInt>( KMPXMessageGeneralData ) );
- iPlaybackUtility->PropertyL( *this, EPbPropertyPosition );
- iPlaybackUtility->PropertyL( *this, EPbPropertyDuration );
- iPlaybackUtility->PropertyL( *this, EPbPropertyMaxVolume );
- iPlaybackUtility->PropertyL( *this, EPbPropertyVolume );
- DoHandleStateChangedL( iPlaybackUtility->StateL() );
- // refresh media property
- RequestMediaL();
- break;
- }
- case TMPXPlaybackMessage::EDownloadStateChanged:
- {
- iPlaybackUtility->PropertyL( *this, EPbPropertyPosition );
- iPlaybackUtility->PropertyL( *this, EPbPropertyDuration );
- RequestMediaL();
- break;
- }
- default:
- {
- break;
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Handle playback property.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::DoHandlePropertyL( TInt aProperty, TInt aValue, TInt aError )
- {
- MPX_DEBUG4("CAiPlayerPluginEngine::DoHandlePropertyL - Property(%d); Value(%d); Error(%d)", aProperty, aValue, aError );
- if ( KErrNone == aError )
- {
- switch ( aProperty )
- {
- case EPbPropertyPosition:
- {
- iPosition = aValue / KMPXOneSecInMilliSecs;
- iObserver->PlaybackPositionChanged( iPosition );
- break;
- }
- case EPbPropertyDuration:
- {
- iDuration = aValue / KMPXOneSecInMilliSecs;
- break;
- }
- case EPbPropertyMaxVolume:
- {
- iMaxVolume = aValue;
- break;
- }
- case EPbPropertyVolume:
- {
- TInt volume = MapToAiVolume(aValue);
- if ( iVolume != volume )
- {
- iVolume = volume;
- iObserver->VolumeChanged( iVolume );
- }
-
- break;
- }
- default:
- {
- break;
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Handle playback state changed.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::DoHandleStateChangedL( TMPXPlaybackState aState )
- {
- TMPlayerState state = MapState( aState );
- MPX_DEBUG3("CAiPlayerPluginEngine::DoHandleStateChangedL - State mapped from (%d) to (%d)", aState, state );
- iObserver->PlayerStateChanged(state);
- }
-
-// ---------------------------------------------------------------------------
-// Displays error notes.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::HandleErrorL( TInt aError )
- {
- MPX_DEBUG2("CAiPlayerPluginEngine::HandleErrorL(%d)", aError );
- }
-
-// ---------------------------------------------------------------------------
-// Map states from TMPXPlaybackState to TMPlayerState
-// ---------------------------------------------------------------------------
-//
-TMPlayerState CAiPlayerPluginEngine::MapState( TMPXPlaybackState aState )
- {
- TMPlayerState state = EMPlayerStateOther;
- switch ( aState )
- {
- case EPbStatePlaying:
- state = EMPlayerStatePlaying;
- break;
- case EPbStatePaused:
- state = EMPlayerStatePaused;
- break;
- case EPbStateSeekingForward:
- case EPbStateSeekingBackward:
- state = EMPlayerStateSeeking;
- break;
- default:
- break;
- }
- return state;
- }
-
-// ---------------------------------------------------------------------------
-// Maps volume from MPX player to AI volume.
-// ---------------------------------------------------------------------------
-//
-TInt CAiPlayerPluginEngine::MapToAiVolume( TInt aVolume )
- {
- TInt volume;
- if ( iMaxVolume == KVolumeLevelMax )
- {
- // No need to translate
- volume = aVolume;
- }
- else if ( aVolume == KVolumeLevelMin )
- {
- volume = KVolumeLevelMin;
- }
- else if ( aVolume == iMaxVolume )
- {
- volume = KVolumeLevelMax;
- }
- else
- {
- volume = (TInt) ((aVolume * KVolumeLevelMax) / iMaxVolume);
- }
- return volume;
- }
-
-// ---------------------------------------------------------------------------
-// Maps volume from AI to MPX player volume.
-// ---------------------------------------------------------------------------
-//
-TInt CAiPlayerPluginEngine::MapToMpxVolume( TInt aVolume )
- {
- TInt volume;
- if ( iMaxVolume == KVolumeLevelMax )
- {
- // No need to translate
- volume = aVolume;
- }
- else if ( aVolume == KVolumeLevelMin )
- {
- volume = KVolumeLevelMin;
- }
- else if ( aVolume == KVolumeLevelMax )
- {
- volume = iMaxVolume;
- }
- else
- {
- volume = (TInt) ((aVolume * iMaxVolume) / KVolumeLevelMax);
- }
- return volume;
- }
-
-// ---------------------------------------------------------------------------
-// Requests Media.
-// ---------------------------------------------------------------------------
-//
-void CAiPlayerPluginEngine::RequestMediaL()
- {
- MMPXSource* s = iPlaybackUtility->Source();
- if ( s )
- {
- RArray<TMPXAttribute> attrs;
- CleanupClosePushL(attrs);
- attrs.Append( KMPXMediaGeneralUri );
- attrs.Append( KMPXMediaGeneralTitle );
- attrs.Append( KMPXMediaMusicArtist );
- s->MediaL( attrs.Array(), *this );
- CleanupStack::PopAndDestroy( &attrs );
- }
- }
-// End of File
--- a/mpxmusicplayer/activeidle/group/bld.inf Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Build information file for project Active Idle plugin.
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-#include "../aiplayerplugin/group/bld.inf"
-
-PRJ_EXPORTS
-../rom/mpxactiveidleplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpxactiveidleplugin.iby)
-../rom/mpxactiveidlepluginrsc.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(mpxactiveidlepluginrsc.iby)
--- a/mpxmusicplayer/activeidle/rom/mpxactiveidleplugin.iby Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* Copyright (c) 2004 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: IBY file for Player plugin
-*
-*/
-
-#ifndef MPXACTIVEIDLEPLUGIN_IBY
-#define MPXACTIVEIDLEPLUGIN_IBY
-
-#include <bldvariant.hrh>
-#include <data_caging_paths_for_iby.hrh>
-
-#ifdef RD_CUSTOMIZABLE_AI
-ECOM_PLUGIN( aiplayerplugin2.dll, aiplayerplugin2.rsc )
-#endif // RD_CUSTOMIZABLE_AI
-
-#endif // MPXACTIVEIDLEPLUGIN_IBY
-
-// End of File
--- a/mpxmusicplayer/activeidle/rom/mpxactiveidlepluginrsc.iby Tue Feb 02 00:09:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: IBY file for Player plugin resource
-*
-*/
-
-
-#ifndef MPXACTIVEIDLEPLUGINRSC_IBY
-#define MPXACTIVEIDLEPLUGINRSC_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-data=DATAZ_\APP_RESOURCE_DIR\aiplayerpluginresource.rsc APP_RESOURCE_DIR\aiplayerpluginresource.rsc
-
-#endif // MPXACTIVEIDLEPLUGINRSC_IBY
--- a/mpxmusicplayer/app/src/mpxappui.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxmusicplayer/app/src/mpxappui.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -211,9 +211,6 @@
// initialize FeatureManager
FeatureManager::InitializeLibL();
- // Check updates from IAD, continue UI launching even if something fails there
- TRAP_IGNORE( CheckUpdatesL() );
-
if ( FeatureManager::FeatureSupported( KFeatureIdCoverDisplay ) )
{
iCoverDisplay = ETrue;
@@ -3336,6 +3333,11 @@
TMPXPlaybackCommand cmd = EPbCmdEnd;
switch ( aCommand )
{
+ case EMPXCmdCheckIADUpdates:
+ {
+ TRAP_IGNORE( CheckUpdatesL() );
+ break;
+ }
case EMPXCmdPlay:
case EMPXCmdPause:
case EMPXCmdPlayPause:
Binary file mpxmusicplayer/cenrep/101ffcd0.txt has changed
--- a/mpxmusicplayer/commonui/data/mpxcommonui.rss Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxmusicplayer/commonui/data/mpxcommonui.rss Fri Feb 19 22:48:30 2010 +0200
@@ -755,4 +755,30 @@
{
buf = qtn_fldr_rename_query;
}
+
+//----------------------------------------------------
+//
+// r_attendee_query
+//
+//
+//----------------------------------------------------
+//
+RESOURCE DIALOG r_rename_query
+ {
+ flags = EGeneralQueryFlags;
+ buttons = R_AVKON_SOFTKEYS_YES_NO;
+ items =
+ {
+ DLG_LINE
+ {
+ type = EAknCtQuery;
+ id = EGeneralQuery;
+ control = AVKON_CONFIRMATION_QUERY
+ {
+ layout = EConfirmationQueryLayout;
+ };
+ }
+ };
+ }
+
// End of File
--- a/mpxmusicplayer/commonui/src/mpxcommonuihelper.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxmusicplayer/commonui/src/mpxcommonuihelper.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -1200,8 +1200,8 @@
if ( iCollectionUiHelper->TitleExistsL( EMPXPlaylist, aNewName, EMPXOtherType ) )
{
HBufC* info = StringLoader::LoadLC( R_MPX_PLAYLIST_NAME_EXIST, aNewName );
-
- if( CEikonEnv::Static()->QueryWinL( KNullDesC, *info ) )
+ CAknQueryDialog* query = new(ELeave)CAknQueryDialog( *info );
+ if( query->ExecuteLD( R_RENAME_QUERY ) )
{
if ( !LaunchRenameDialogL( aOldName, aNewName, aPath ) )
{
@@ -1923,8 +1923,8 @@
if ( iCollectionUiHelper->TitleExistsL( EMPXPlaylist, aName, EMPXOtherType ) )
{
HBufC* info = StringLoader::LoadLC( R_MPX_PLAYLIST_NAME_EXIST, aName );
-
- if( CEikonEnv::Static()->QueryWinL( KNullDesC, *info ) )
+ CAknQueryDialog* query = new(ELeave)CAknQueryDialog( *info );
+ if( query->ExecuteLD( R_RENAME_QUERY ) )
{
if ( !PlaylistCreateNameExistL( aName, aParse ) )
{
--- a/mpxmusicplayer/group/bld.inf Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxmusicplayer/group/bld.inf Fri Feb 19 22:48:30 2010 +0200
@@ -19,7 +19,6 @@
#include <platform_paths.hrh>
#include "../help/group/bld.inf"
#include "../commonui/group/bld.inf"
-#include "../activeidle/group/bld.inf"
#include "../metadatahandler/group/bld.inf"
#include "../mediakeyhandler/group/bld.inf"
#include "../app/group/bld.inf"
--- a/mpxplugins/serviceplugins/collectionplugins/inc/mpxdbmanager.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/inc/mpxdbmanager.h Fri Feb 19 22:48:30 2010 +0200
@@ -293,6 +293,130 @@
IMPORT_C RSqlStatement ExecuteSelectQueryOnAllDrivesL(TInt aDrive, TRefByValue<const TDesC> aFmt,
...);
+ /**
+ * Copy all databases from RAM disk back to normal drive, E, F,...
+ *
+ * @return none
+ */
+ IMPORT_C void CopyDBsFromRamL();
+
+ /**
+ * Copy all databases to RAM disk back from normal drive, E, F,...
+ *
+ * @return none
+ */
+ IMPORT_C void CopyDBsToRamL( TBool aIsMTPInUse = EFalse);
+
+
+ /**
+ * Check if RAM disk is enough to operatte. If not, DBs will be copied back to drives.
+ *
+ * @return TInt index to the database handler
+ */
+ IMPORT_C void EnsureRamSpaceL() ;
+
+ /**
+ * Move DBs from RAMDisk to disks
+ */
+ //IMPORT_C void BackupDBsL();
+
+ private:
+
+ /**
+ * Find available RAMDISK
+ * @return error code
+ */
+ TInt GetRAMDiskPath();
+
+ /**
+ * Check if RAM disk is available to copy.
+ *
+ * @return ETrue if there is enough space, EFalse otherwise
+ */
+ TBool IsRamDiskSpaceAvailable();
+
+ /**
+ * To block a diskspace so that it can gurantee for a write back from RAM disk
+ *
+ * @return ETrue if the dummy file is created successfully, EFalse otherwise
+ */
+ TBool BlockDiskSpace( TDriveUnit aDrive, TInt aOrigDbSize, TBool aIsMTPInUse = EFalse );
+
+ /**
+ * To copy db from regular drive to RAM
+ *
+ * @return ETrue if succeed
+ * @leave KErrDiskFull if there is any difficulty copying files
+ */
+ TBool DoCopyDBToRamL( TDriveUnit aDrive, TBool aIsMTPInUse );
+
+ /**
+ * To copy db back regular drive from RAM
+ *
+ */
+ void DoCopyDBFromRamL( TInt aIndex );
+
+ /**
+ * To replace dummy file with new content
+ * Writes over previous dummy file without freeing disk space
+ */
+ void ReplaceFileL( const TDesC& aSrcName, const TDesC& aDstName );
+
+ /**
+ * To calculate necessary file size of the dummy file
+ *
+ * @return TInt64 estimated file size
+ */
+ TInt64 CalculateInitalDummyDBSize( const TVolumeInfo& aVol, TInt aOrigDbSize, TBool aIsMTPInUse = EFalse);
+
+ /**
+ * Get database index by giving drive index
+ *
+ * @return TInt index to the database handler
+ */
+ TInt GetDatabaseIndex(TInt aDrive);
+
+ /**
+ * Sum up the total size in bytes of the databases.
+ *
+ * @param aSize - On return, the total size of the databases.
+ * @return TInt System error.
+ */
+ TInt GetTotalDatabasesSize(TInt& aSize);
+
+ /**
+ * Sum up the total size in bytes of the databases on the RAM drive.
+ *
+ * @param aSize - On return, the total size of the databases on the RAM drive.
+ * @return TInt System error.
+ */
+ TInt GetTotalRamDatabasesSize(TInt& aSize);
+
+ /**
+ * Remove dummy file
+ *
+ * @return TInt index to the database handler
+ */
+ void RemoveDummyFile( TInt index );
+
+
+
+/**
+ * Check if disksapce is enough to operatte. If not, it leaves with KErrDiskFull
+ *
+ */
+ void EnsureDiskSpaceL(TInt aDrive) ;
+
+ /**
+ * Begin transaction, leaves on error
+ */
+ void DoBeginL();
+
+ /**
+ * Commit transaction, leaves on error
+ */
+ void DoCommitL();
+
protected: // Types
typedef struct
@@ -300,6 +424,12 @@
TInt iDrive;
TBool iOpen;
HBufC* iAliasname;
+#ifdef __RAMDISK_PERF_ENABLE
+ TBool iUseRAMdb;
+ HBufC* iOrigFullFilePath;
+ HBufC* iTargetFullFilePath;
+ TFileName iDummyFilePath;
+#endif //__RAMDISK_PERF_ENABLE
} DatabaseHandle;
protected: // Data
@@ -492,6 +622,14 @@
RArray<TSqlStatementState> iPreparedStatements;
RPointerArray<RSqlStatement> iStatements;
+
+ // Defined for RAM disk performance
+ TBool iRAMDiskPerfEnabled; // flag to indicate RAM disk feature is enabled from cenrep.
+ TUint64 iMaximumAllowedRAMDiskSpaceToCopy; // maximum number of megabytes allow to do RAM disk operation.
+ TFileName iRAMFolder;
+ TChar iRAMDrive;
+ TBool iRAMInUse;
+ TInt64 iEstimatedDBSizes;
};
#endif // MPXDBMANAGER_H
--- a/mpxplugins/serviceplugins/collectionplugins/inc/mpxdbtable.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/inc/mpxdbtable.h Fri Feb 19 22:48:30 2010 +0200
@@ -373,6 +373,13 @@
IMPORT_C void ExecuteMediaQueryOnDriveL(TInt aDrive,const TArray<TMPXAttribute>& aAttrs,
CMPXMediaArray& aMediaArray, const TDesC& aQuery);
+ /**
+ * Executes a sum query with a string and two int parameters.
+ * @param aQuery query to be executed
+ * @param aPlaylistId string parameter
+ * @param aDrive integer parameter
+ */
+ IMPORT_C TInt ExecuteSumExQueryL(const TDesC& aQuery, TUint32 aPlaylistId, TInt aDrive);
protected: // Data
CMPXDbManager& iDbManager;
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/bwinscw/mpxsqlitedbcommonu.def Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/bwinscw/mpxsqlitedbcommonu.def Fri Feb 19 22:48:30 2010 +0200
@@ -1,124 +1,128 @@
EXPORTS
- ??0CMPXDbManager@@IAE@AAVRFs@@@Z @ 1 NONAME ; CMPXDbManager::CMPXDbManager(class RFs &)
- ??0CMPXDbTable@@IAE@AAVCMPXDbManager@@@Z @ 2 NONAME ; CMPXDbTable::CMPXDbTable(class CMPXDbManager &)
- ??1CMPXDbActiveTask@@UAE@XZ @ 3 NONAME ; CMPXDbActiveTask::~CMPXDbActiveTask(void)
- ??1CMPXDbManager@@UAE@XZ @ 4 NONAME ; CMPXDbManager::~CMPXDbManager(void)
- ??1CMPXDbTable@@MAE@XZ @ 5 NONAME ; CMPXDbTable::~CMPXDbTable(void)
- ?AddItemChangedMessageL@MPXDbCommonUtil@@SAXAAVCMPXMediaArray@@VTMPXItemId@@W4TMPXChangeEventType@@W4TMPXGeneralCategory@@I1@Z @ 6 NONAME ; void MPXDbCommonUtil::AddItemChangedMessageL(class CMPXMediaArray &, class TMPXItemId, enum TMPXChangeEventType, enum TMPXGeneralCategory, unsigned int, class TMPXItemId)
- ?AddSqlCriterionL@MPXDbCommonUtil@@SAHAAVCDesC16Array@@ABVTDesC16@@1@Z @ 7 NONAME ; int MPXDbCommonUtil::AddSqlCriterionL(class CDesC16Array &, class TDesC16 const &, class TDesC16 const &)
- ?AddSqlCriterionL@MPXDbCommonUtil@@SAHAAVCDesC16Array@@ABVTDesC16@@H@Z @ 8 NONAME ; int MPXDbCommonUtil::AddSqlCriterionL(class CDesC16Array &, class TDesC16 const &, int)
- ?AppendMediaL@MPXDbCommonUtil@@SAXAAVCMPXMediaArray@@ABVTDesC16@@W4TMPXGeneralType@@W4TMPXGeneralCategory@@VTMPXItemId@@HI@Z @ 9 NONAME ; void MPXDbCommonUtil::AppendMediaL(class CMPXMediaArray &, class TDesC16 const &, enum TMPXGeneralType, enum TMPXGeneralCategory, class TMPXItemId, int, unsigned int)
- ?AppendValueL@MPXDbCommonUtil@@SAXAAVCDesC16Array@@0ABVTDesC16@@1@Z @ 10 NONAME ; void MPXDbCommonUtil::AppendValueL(class CDesC16Array &, class CDesC16Array &, class TDesC16 const &, class TDesC16 const &)
- ?AppendValueL@MPXDbCommonUtil@@SAXAAVCDesC16Array@@0ABVTDesC16@@K@Z @ 11 NONAME ; void MPXDbCommonUtil::AppendValueL(class CDesC16Array &, class CDesC16Array &, class TDesC16 const &, unsigned long)
- ?AttributeExists@MPXDbCommonUtil@@SAHABV?$TArray@VTMPXAttribute@@@@ABVTMPXAttribute@@@Z @ 12 NONAME ; int MPXDbCommonUtil::AttributeExists(class TArray<class TMPXAttribute> const &, class TMPXAttribute const &)
- ?BaseConstructL@CMPXDbTable@@IAEXXZ @ 13 NONAME ; void CMPXDbTable::BaseConstructL(void)
- ?BeginL@CMPXDbManager@@QAEXXZ @ 14 NONAME ; void CMPXDbManager::BeginL(void)
- ?CheckDiskSpaceL@CMPXDbManager@@QAEXH@Z @ 15 NONAME ; void CMPXDbManager::CheckDiskSpaceL(int)
- ?CloseAllDatabases@CMPXDbManager@@QAEXXZ @ 16 NONAME ; void CMPXDbManager::CloseAllDatabases(void)
- ?CloseDatabaseL@CMPXDbManager@@QAEXH@Z @ 17 NONAME ; void CMPXDbManager::CloseDatabaseL(int)
- ?CommitL@CMPXDbManager@@QAEXXZ @ 18 NONAME ; void CMPXDbManager::CommitL(void)
- ?ConstructL@CMPXDbManager@@IAEXABV?$TBuf@$0BAA@@@@Z @ 19 NONAME ; void CMPXDbManager::ConstructL(class TBuf<256> const &)
- ?CreateFullPathL@MPXDbCommonUtil@@SAPAVHBufC16@@HABVTDesC16@@@Z @ 20 NONAME ; class HBufC16 * MPXDbCommonUtil::CreateFullPathL(int, class TDesC16 const &)
- ?CreateTablesL@CMPXDbManager@@IAEXAAVRSqlDatabase@@@Z @ 21 NONAME ; void CMPXDbManager::CreateTablesL(class RSqlDatabase &)
- ?CurrentDateDesLC@MPXDbCommonUtil@@SAPAVHBufC16@@XZ @ 22 NONAME ; class HBufC16 * MPXDbCommonUtil::CurrentDateDesLC(void)
- ?CurrentTimeDesLC@MPXDbCommonUtil@@SAPAVHBufC16@@XZ @ 23 NONAME ; class HBufC16 * MPXDbCommonUtil::CurrentTimeDesLC(void)
- ?DatabaseCount@CMPXDbManager@@QBEHXZ @ 24 NONAME ; int CMPXDbManager::DatabaseCount(void) const
- ?DbDrive@CMPXDbManager@@QBEHH@Z @ 25 NONAME ; int CMPXDbManager::DbDrive(int) const
- ?DeleteFile@MPXDbCommonUtil@@SAHAAVRFs@@ABVTDesC16@@@Z @ 26 NONAME ; int MPXDbCommonUtil::DeleteFile(class RFs &, class TDesC16 const &)
- ?DesToTTimeL@MPXDbCommonUtil@@SA?AVTTime@@ABVTDesC16@@@Z @ 27 NONAME ; class TTime MPXDbCommonUtil::DesToTTimeL(class TDesC16 const &)
- ?DoCancel@CMPXDbActiveTask@@MAEXXZ @ 28 NONAME ; void CMPXDbActiveTask::DoCancel(void)
- ?DoCheckTable@CMPXDbTable@@IAEHAAVRSqlDatabase@@ABVTDesC16@@@Z @ 29 NONAME ; int CMPXDbTable::DoCheckTable(class RSqlDatabase &, class TDesC16 const &)
- ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@0@Z @ 30 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, class TDesC16 const &)
- ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@0K@Z @ 31 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, class TDesC16 const &, unsigned long)
- ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@@Z @ 32 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &)
- ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@K@Z @ 33 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, unsigned long)
- ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@KK@Z @ 34 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, unsigned long, unsigned long)
- ?ExecuteIntQueryL@CMPXDbTable@@IAEKHABVTDesC16@@@Z @ 35 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(int, class TDesC16 const &)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMedia@@ABVTDesC16@@@Z @ 36 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMedia &, class TDesC16 const &)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMedia@@ABVTDesC16@@H@Z @ 37 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMedia &, class TDesC16 const &, int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@22@Z @ 38 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2@Z @ 39 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2H2H@Z @ 40 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, int, class TDesC16 const &, int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2H@Z @ 41 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2HHI@Z @ 42 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, int, int, unsigned int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@@Z @ 43 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@H@Z @ 44 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@HH@Z @ 45 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int, int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@HHI@Z @ 46 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int, int, unsigned int)
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@HABVTDesC16@@@Z @ 47 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, int, class TDesC16 const &)
- ?ExecuteQueryL@CMPXDbManager@@QAAXHV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 48 NONAME ; void CMPXDbManager::ExecuteQueryL(int, class TRefByValue<class TDesC16 const >, ...)
- ?ExecuteSelectQueryL@CMPXDbManager@@QAA?AVRSqlStatement@@HV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 49 NONAME ; class RSqlStatement CMPXDbManager::ExecuteSelectQueryL(int, class TRefByValue<class TDesC16 const >, ...)
- ?ExecuteSelectQueryL@CMPXDbManager@@QAA?AVRSqlStatement@@V?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 50 NONAME ; class RSqlStatement CMPXDbManager::ExecuteSelectQueryL(class TRefByValue<class TDesC16 const >, ...)
- ?ExecuteSelectQueryL@CMPXDbManager@@QAAAAVRSqlStatement@@IABVTDesC16@@HV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 51 NONAME ; class RSqlStatement & CMPXDbManager::ExecuteSelectQueryL(unsigned int, class TDesC16 const &, int, class TRefByValue<class TDesC16 const >, ...)
- ?ExecuteSelectQueryL@CMPXDbManager@@QAAAAVRSqlStatement@@IHHV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 52 NONAME ; class RSqlStatement & CMPXDbManager::ExecuteSelectQueryL(unsigned int, int, int, class TRefByValue<class TDesC16 const >, ...)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@00@Z @ 53 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@0@Z @ 54 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@0K0K@Z @ 55 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &, unsigned long, class TDesC16 const &, unsigned long)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@@Z @ 56 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@K@Z @ 57 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, unsigned long)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@KK@Z @ 58 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, unsigned long, unsigned long)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@KKK@Z @ 59 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, unsigned long, unsigned long, unsigned long)
- ?ExecuteSumQueryL@CMPXDbTable@@IAEKABVTDesC16@@0K@Z @ 60 NONAME ; unsigned long CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &, unsigned long)
- ?FillInSupportedUIDsL@MPXDbCommonUtil@@SAXABV?$TArray@VTMPXAttribute@@@@AAV?$RArray@H@@@Z @ 61 NONAME ; void MPXDbCommonUtil::FillInSupportedUIDsL(class TArray<class TMPXAttribute> const &, class RArray<int> &)
- ?FillItemChangedMessageL@MPXDbCommonUtil@@SAXAAVCMPXMedia@@VTMPXItemId@@W4TMPXChangeEventType@@W4TMPXGeneralCategory@@I1@Z @ 62 NONAME ; void MPXDbCommonUtil::FillItemChangedMessageL(class CMPXMedia &, class TMPXItemId, enum TMPXChangeEventType, enum TMPXGeneralCategory, unsigned int, class TMPXItemId)
- ?FindAndReplaceSingleQuote@MPXDbCommonUtil@@SAXABVTDesC16@@AAVTDes16@@@Z @ 63 NONAME ; void MPXDbCommonUtil::FindAndReplaceSingleQuote(class TDesC16 const &, class TDes16 &)
- ?FindItemChangedMessageL@MPXDbCommonUtil@@SAHABVCMPXMediaArray@@ABVCMPXMedia@@@Z @ 64 NONAME ; int MPXDbCommonUtil::FindItemChangedMessageL(class CMPXMediaArray const &, class CMPXMedia const &)
- ?Fs@CMPXDbManager@@QAEAAVRFs@@XZ @ 65 NONAME ; class RFs & CMPXDbManager::Fs(void)
- ?GenerateUniqueIdL@MPXDbCommonUtil@@SAKAAVRFs@@W4TMPXGeneralCategory@@ABVTDesC16@@H@Z @ 66 NONAME ; unsigned long MPXDbCommonUtil::GenerateUniqueIdL(class RFs &, enum TMPXGeneralCategory, class TDesC16 const &, int)
- ?GetChangeMessages@CMPXDbActiveTask@@QAEAAVCMPXMediaArray@@XZ @ 67 NONAME ; class CMPXMediaArray & CMPXDbActiveTask::GetChangeMessages(void)
- ?GetColumnTextL@MPXDbCommonUtil@@SA?AVTPtrC16@@AAVRSqlStatement@@H@Z @ 68 NONAME ; class TPtrC16 MPXDbCommonUtil::GetColumnTextL(class RSqlStatement &, int)
- ?GetCommand@CMPXDbActiveTask@@QAEAAVCMPXMedia@@XZ @ 69 NONAME ; class CMPXMedia & CMPXDbActiveTask::GetCommand(void)
- ?GetDRMTypeL@MPXDbCommonUtil@@SA?AW4TMCDrmType@@ABVTDesC16@@@Z @ 70 NONAME ; enum TMCDrmType MPXDbCommonUtil::GetDRMTypeL(class TDesC16 const &)
- ?GetDriveIdMatchVolIdL@MPXDbCommonUtil@@SAHAAVRFs@@I@Z @ 71 NONAME ; int MPXDbCommonUtil::GetDriveIdMatchVolIdL(class RFs &, unsigned int)
- ?GetDriveL@MPXDbCommonUtil@@SAHABVTDesC16@@AAVTDriveUnit@@@Z @ 72 NONAME ; int MPXDbCommonUtil::GetDriveL(class TDesC16 const &, class TDriveUnit &)
- ?GetMimeTypeForUriL@MPXDbCommonUtil@@SA?AVTDataType@@ABVTDesC16@@@Z @ 73 NONAME ; class TDataType MPXDbCommonUtil::GetMimeTypeForUriL(class TDesC16 const &)
- ?GetStep@CMPXDbActiveTask@@QAEHXZ @ 74 NONAME ; int CMPXDbActiveTask::GetStep(void)
- ?GetTask@CMPXDbActiveTask@@QAEKXZ @ 75 NONAME ; unsigned long CMPXDbActiveTask::GetTask(void)
- ?GetVisibleChange@CMPXDbActiveTask@@QAE?AW4TChangeVisibility@1@XZ @ 76 NONAME ; enum CMPXDbActiveTask::TChangeVisibility CMPXDbActiveTask::GetVisibleChange(void)
- ?GetVolIdMatchDriveIdL@MPXDbCommonUtil@@SAIAAVRFs@@H@Z @ 77 NONAME ; unsigned int MPXDbCommonUtil::GetVolIdMatchDriveIdL(class RFs &, int)
- ?InTransaction@CMPXDbManager@@QAEHXZ @ 78 NONAME ; int CMPXDbManager::InTransaction(void)
- ?InitDatabasesL@CMPXDbManager@@QAEXV?$RArray@H@@@Z @ 79 NONAME ; void CMPXDbManager::InitDatabasesL(class RArray<int>)
- ?IsInitialized@CMPXDbManager@@QAEHXZ @ 80 NONAME ; int CMPXDbManager::IsInitialized(void)
- ?IsOpen@CMPXDbManager@@QBEHH@Z @ 81 NONAME ; int CMPXDbManager::IsOpen(int) const
- ?IsRemoteDrive@CMPXDbManager@@QAEHW4TDriveNumber@@@Z @ 82 NONAME ; int CMPXDbManager::IsRemoteDrive(enum TDriveNumber)
- ?NewL@CMPXDbActiveTask@@SAPAV1@AAVMMPXDbActiveTaskObserver@@@Z @ 83 NONAME ; class CMPXDbActiveTask * CMPXDbActiveTask::NewL(class MMPXDbActiveTaskObserver &)
- ?NewL@CMPXResource@@SAPAV1@ABVTDesC16@@@Z @ 84 NONAME ; class CMPXResource * CMPXResource::NewL(class TDesC16 const &)
- ?NewLC@CMPXResource@@SAPAV1@ABVTDesC16@@@Z @ 85 NONAME ; class CMPXResource * CMPXResource::NewLC(class TDesC16 const &)
- ?OpenAllDatabasesL@CMPXDbManager@@QAEXXZ @ 86 NONAME ; void CMPXDbManager::OpenAllDatabasesL(void)
- ?OpenDatabaseL@CMPXDbManager@@QAEXH@Z @ 87 NONAME ; void CMPXDbManager::OpenDatabaseL(int)
- ?PrependMediaL@MPXDbCommonUtil@@SAXAAVCMPXMediaArray@@ABVTDesC16@@W4TMPXGeneralType@@W4TMPXGeneralCategory@@VTMPXItemId@@HIH@Z @ 88 NONAME ; void MPXDbCommonUtil::PrependMediaL(class CMPXMediaArray &, class TDesC16 const &, enum TMPXGeneralType, enum TMPXGeneralCategory, class TMPXItemId, int, unsigned int, int)
- ?PrintDatabaseL@CMPXDbManager@@QAEXXZ @ 89 NONAME ; void CMPXDbManager::PrintDatabaseL(void)
- ?ProcessPatternCharsLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 90 NONAME ; class HBufC16 * MPXDbCommonUtil::ProcessPatternCharsLC(class TDesC16 const &)
- ?ProcessSingleQuotesLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 91 NONAME ; class HBufC16 * MPXDbCommonUtil::ProcessSingleQuotesLC(class TDesC16 const &)
- ?ReadDesCArrayL@CMPXResource@@QAEPAVCDesC16ArrayFlat@@H@Z @ 92 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadDesCArrayL(int)
- ?ReadDesCArrayLC@CMPXResource@@QAEPAVCDesC16ArrayFlat@@H@Z @ 93 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadDesCArrayLC(int)
- ?ReadHBufCL@CMPXResource@@QAEPAVHBufC16@@H@Z @ 94 NONAME ; class HBufC16 * CMPXResource::ReadHBufCL(int)
- ?ReadMenuArrayL@CMPXResource@@QAEPAVCDesC16ArrayFlat@@HAAV?$RArray@H@@@Z @ 95 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadMenuArrayL(int, class RArray<int> &)
- ?ReadMenuArrayLC@CMPXResource@@QAEPAVCDesC16ArrayFlat@@HAAV?$RArray@H@@@Z @ 96 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadMenuArrayLC(int, class RArray<int> &)
- ?RecreateAllDatabasesL@CMPXDbManager@@QAEXXZ @ 97 NONAME ; void CMPXDbManager::RecreateAllDatabasesL(void)
- ?RecreateDatabaseL@CMPXDbManager@@QAEXH@Z @ 98 NONAME ; void CMPXDbManager::RecreateDatabaseL(int)
- ?RegenerateAllDatabasesL@CMPXDbManager@@QAEXXZ @ 99 NONAME ; void CMPXDbManager::RegenerateAllDatabasesL(void)
- ?RegisterTableL@CMPXDbManager@@QAEXAAVMMPXTable@@@Z @ 100 NONAME ; void CMPXDbManager::RegisterTableL(class MMPXTable &)
- ?Release@CMPXResource@@QAEXXZ @ 101 NONAME ; void CMPXResource::Release(void)
- ?RollbackL@CMPXDbManager@@QAEXXZ @ 102 NONAME ; void CMPXDbManager::RollbackL(void)
- ?RunError@CMPXDbActiveTask@@MAEHH@Z @ 103 NONAME ; int CMPXDbActiveTask::RunError(int)
- ?RunL@CMPXDbActiveTask@@MAEXXZ @ 104 NONAME ; void CMPXDbActiveTask::RunL(void)
+ ?StringFromArrayLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVCDesC16Array@@ABVTDesC16@@@Z @ 1 NONAME ; class HBufC16 * MPXDbCommonUtil::StringFromArrayLC(class CDesC16Array const &, class TDesC16 const &)
+ ?IsInitialized@CMPXDbManager@@QAEHXZ @ 2 NONAME ; int CMPXDbManager::IsInitialized(void)
+ ?AppendValueL@MPXDbCommonUtil@@SAXAAVCDesC16Array@@0ABVTDesC16@@1@Z @ 3 NONAME ; void MPXDbCommonUtil::AppendValueL(class CDesC16Array &, class CDesC16Array &, class TDesC16 const &, class TDesC16 const &)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEKABVTDesC16@@0K@Z @ 4 NONAME ; unsigned long CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &, unsigned long)
+ ?DbDrive@CMPXDbManager@@QBEHH@Z @ 5 NONAME ; int CMPXDbManager::DbDrive(int) const
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@0@Z @ 6 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &)
+ ?DesToTTimeL@MPXDbCommonUtil@@SA?AVTTime@@ABVTDesC16@@@Z @ 7 NONAME ; class TTime MPXDbCommonUtil::DesToTTimeL(class TDesC16 const &)
+ ?CloseDatabaseL@CMPXDbManager@@QAEXH@Z @ 8 NONAME ; void CMPXDbManager::CloseDatabaseL(int)
+ ?AddSqlCriterionL@MPXDbCommonUtil@@SAHAAVCDesC16Array@@ABVTDesC16@@1@Z @ 9 NONAME ; int MPXDbCommonUtil::AddSqlCriterionL(class CDesC16Array &, class TDesC16 const &, class TDesC16 const &)
+ ?TTimeToDesLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTTime@@@Z @ 10 NONAME ; class HBufC16 * MPXDbCommonUtil::TTimeToDesLC(class TTime const &)
+ ?ConstructL@CMPXDbManager@@IAEXABV?$TBuf@$0BAA@@@@Z @ 11 NONAME ; void CMPXDbManager::ConstructL(class TBuf<256> const &)
+ ?SetVisibleChange@CMPXDbActiveTask@@QAEXW4TChangeVisibility@1@@Z @ 12 NONAME ; void CMPXDbActiveTask::SetVisibleChange(enum CMPXDbActiveTask::TChangeVisibility)
+ ?ExecuteSelectQueryL@CMPXDbManager@@QAA?AVRSqlStatement@@HV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 13 NONAME ; class RSqlStatement CMPXDbManager::ExecuteSelectQueryL(int, class TRefByValue<class TDesC16 const >, ...)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMedia@@ABVTDesC16@@@Z @ 14 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMedia &, class TDesC16 const &)
+ ?StringFromArraysLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVCDesC16Array@@0ABVTDesC16@@1@Z @ 15 NONAME ; class HBufC16 * MPXDbCommonUtil::StringFromArraysLC(class CDesC16Array const &, class CDesC16Array const &, class TDesC16 const &, class TDesC16 const &)
+ ?CurrentDateDesLC@MPXDbCommonUtil@@SAPAVHBufC16@@XZ @ 16 NONAME ; class HBufC16 * MPXDbCommonUtil::CurrentDateDesLC(void)
+ ?ReadMenuArrayLC@CMPXResource@@QAEPAVCDesC16ArrayFlat@@HAAV?$RArray@H@@@Z @ 17 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadMenuArrayLC(int, class RArray<int> &)
+ ?NewL@CMPXResource@@SAPAV1@ABVTDesC16@@@Z @ 18 NONAME ; class CMPXResource * CMPXResource::NewL(class TDesC16 const &)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@HH@Z @ 19 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int, int)
+ ?AppendMediaL@MPXDbCommonUtil@@SAXAAVCMPXMediaArray@@ABVTDesC16@@W4TMPXGeneralType@@W4TMPXGeneralCategory@@VTMPXItemId@@HI@Z @ 20 NONAME ; void MPXDbCommonUtil::AppendMediaL(class CMPXMediaArray &, class TDesC16 const &, enum TMPXGeneralType, enum TMPXGeneralCategory, class TMPXItemId, int, unsigned int)
+ ?EnsureRamSpaceL@CMPXDbManager@@QAEXXZ @ 21 NONAME ; void CMPXDbManager::EnsureRamSpaceL(void)
+ ?ExecuteSelectQueryL@CMPXDbManager@@QAAAAVRSqlStatement@@IHHV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 22 NONAME ; class RSqlStatement & CMPXDbManager::ExecuteSelectQueryL(unsigned int, int, int, class TRefByValue<class TDesC16 const >, ...)
+ ?CopyDBsToRamL@CMPXDbManager@@QAEXH@Z @ 23 NONAME ; void CMPXDbManager::CopyDBsToRamL(int)
+ ?AppendValueL@MPXDbCommonUtil@@SAXAAVCDesC16Array@@0ABVTDesC16@@K@Z @ 24 NONAME ; void MPXDbCommonUtil::AppendValueL(class CDesC16Array &, class CDesC16Array &, class TDesC16 const &, unsigned long)
+ ?RunL@CMPXDbActiveTask@@MAEXXZ @ 25 NONAME ; void CMPXDbActiveTask::RunL(void)
+ ?CreateFullPathL@MPXDbCommonUtil@@SAPAVHBufC16@@HABVTDesC16@@@Z @ 26 NONAME ; class HBufC16 * MPXDbCommonUtil::CreateFullPathL(int, class TDesC16 const &)
+ ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@HH@Z @ 27 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, int, int)
+ ?GetTask@CMPXDbActiveTask@@QAEKXZ @ 28 NONAME ; unsigned long CMPXDbActiveTask::GetTask(void)
+ ?RecreateAllDatabasesL@CMPXDbManager@@QAEXXZ @ 29 NONAME ; void CMPXDbManager::RecreateAllDatabasesL(void)
+ ?ReadDesCArrayL@CMPXResource@@QAEPAVCDesC16ArrayFlat@@H@Z @ 30 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadDesCArrayL(int)
+ ??1CMPXDbActiveTask@@UAE@XZ @ 31 NONAME ; CMPXDbActiveTask::~CMPXDbActiveTask(void)
+ ?FillInSupportedUIDsL@MPXDbCommonUtil@@SAXABV?$TArray@VTMPXAttribute@@@@AAV?$RArray@H@@@Z @ 32 NONAME ; void MPXDbCommonUtil::FillInSupportedUIDsL(class TArray<class TMPXAttribute> const &, class RArray<int> &)
+ ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@0@Z @ 33 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, class TDesC16 const &)
+ ?SqlCriterion64LC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@_J1@Z @ 34 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterion64LC(class TDesC16 const &, long long, long long)
+ ?ExecuteSelectQueryL@CMPXDbManager@@QAAAAVRSqlStatement@@IABVTDesC16@@HV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 35 NONAME ; class RSqlStatement & CMPXDbManager::ExecuteSelectQueryL(unsigned int, class TDesC16 const &, int, class TRefByValue<class TDesC16 const >, ...)
+ ?UpdateMediaL@CMPXDbTable@@MAEXAAVRSqlStatement@@ABV?$TArray@VTMPXAttribute@@@@AAVCMPXMedia@@@Z @ 36 NONAME ; void CMPXDbTable::UpdateMediaL(class RSqlStatement &, class TArray<class TMPXAttribute> const &, class CMPXMedia &)
+ ?CreateTablesL@CMPXDbManager@@IAEXAAVRSqlDatabase@@@Z @ 37 NONAME ; void CMPXDbManager::CreateTablesL(class RSqlDatabase &)
+ ??1CMPXDbManager@@UAE@XZ @ 38 NONAME ; CMPXDbManager::~CMPXDbManager(void)
+ ?ExecuteQueryL@CMPXDbManager@@QAAXHV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 39 NONAME ; void CMPXDbManager::ExecuteQueryL(int, class TRefByValue<class TDesC16 const >, ...)
+ ?CommitL@CMPXDbManager@@QAEXXZ @ 40 NONAME ; void CMPXDbManager::CommitL(void)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2@Z @ 41 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &)
+ ??1CMPXDbTable@@MAE@XZ @ 42 NONAME ; CMPXDbTable::~CMPXDbTable(void)
+ ?ProcessSingleQuotesLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 43 NONAME ; class HBufC16 * MPXDbCommonUtil::ProcessSingleQuotesLC(class TDesC16 const &)
+ ?GetDRMTypeL@MPXDbCommonUtil@@SA?AW4TMCDrmType@@ABVTDesC16@@@Z @ 44 NONAME ; enum TMCDrmType MPXDbCommonUtil::GetDRMTypeL(class TDesC16 const &)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@H@Z @ 45 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@@Z @ 46 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &)
+ ?InitDatabasesL@CMPXDbManager@@QAEXV?$RArray@H@@@Z @ 47 NONAME ; void CMPXDbManager::InitDatabasesL(class RArray<int>)
+ ?GetChangeMessages@CMPXDbActiveTask@@QAEAAVCMPXMediaArray@@XZ @ 48 NONAME ; class CMPXMediaArray & CMPXDbActiveTask::GetChangeMessages(void)
+ ?ExecuteSelectQueryL@CMPXDbManager@@QAA?AVRSqlStatement@@V?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 49 NONAME ; class RSqlStatement CMPXDbManager::ExecuteSelectQueryL(class TRefByValue<class TDesC16 const >, ...)
+ ?ReadHBufCL@CMPXResource@@QAEPAVHBufC16@@H@Z @ 50 NONAME ; class HBufC16 * CMPXResource::ReadHBufCL(int)
+ ?GetCommand@CMPXDbActiveTask@@QAEAAVCMPXMedia@@XZ @ 51 NONAME ; class CMPXMedia & CMPXDbActiveTask::GetCommand(void)
+ ?GetMimeTypeForUriL@MPXDbCommonUtil@@SA?AVTDataType@@ABVTDesC16@@@Z @ 52 NONAME ; class TDataType MPXDbCommonUtil::GetMimeTypeForUriL(class TDesC16 const &)
+ ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@0K@Z @ 53 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, class TDesC16 const &, unsigned long)
+ ?OpenDatabaseL@CMPXDbManager@@QAEXH@Z @ 54 NONAME ; void CMPXDbManager::OpenDatabaseL(int)
+ ?ExecuteMediaQueryOnDriveL@CMPXDbTable@@IAEXHABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@@Z @ 55 NONAME ; void CMPXDbTable::ExecuteMediaQueryOnDriveL(int, class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2HHI@Z @ 56 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, int, int, unsigned int)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@22@Z @ 57 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+ ?NewLC@CMPXResource@@SAPAV1@ABVTDesC16@@@Z @ 58 NONAME ; class CMPXResource * CMPXResource::NewLC(class TDesC16 const &)
+ ?RegisterTableL@CMPXDbManager@@QAEXAAVMMPXTable@@@Z @ 59 NONAME ; void CMPXDbManager::RegisterTableL(class MMPXTable &)
+ ?PrintDatabaseL@CMPXDbManager@@QAEXXZ @ 60 NONAME ; void CMPXDbManager::PrintDatabaseL(void)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2H@Z @ 61 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, int)
+ ?RollbackL@CMPXDbManager@@QAEXXZ @ 62 NONAME ; void CMPXDbManager::RollbackL(void)
+ ?BeginL@CMPXDbManager@@QAEXXZ @ 63 NONAME ; void CMPXDbManager::BeginL(void)
+ ??0CMPXDbManager@@IAE@AAVRFs@@@Z @ 64 NONAME ; CMPXDbManager::CMPXDbManager(class RFs &)
+ ?RecreateDatabaseL@CMPXDbManager@@QAEXH@Z @ 65 NONAME ; void CMPXDbManager::RecreateDatabaseL(int)
+ ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@K@Z @ 66 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, unsigned long)
+ ?RegenerateAllDatabasesL@CMPXDbManager@@QAEXXZ @ 67 NONAME ; void CMPXDbManager::RegenerateAllDatabasesL(void)
+ ?NewL@CMPXDbActiveTask@@SAPAV1@AAVMMPXDbActiveTaskObserver@@@Z @ 68 NONAME ; class CMPXDbActiveTask * CMPXDbActiveTask::NewL(class MMPXDbActiveTaskObserver &)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@0K0K@Z @ 69 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &, unsigned long, class TDesC16 const &, unsigned long)
+ ?ReadDesCArrayLC@CMPXResource@@QAEPAVCDesC16ArrayFlat@@H@Z @ 70 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadDesCArrayLC(int)
+ ?ExecuteIntQueryL@CMPXDbTable@@IAEKHABVTDesC16@@@Z @ 71 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(int, class TDesC16 const &)
+ ?AttributeExists@MPXDbCommonUtil@@SAHABV?$TArray@VTMPXAttribute@@@@ABVTMPXAttribute@@@Z @ 72 NONAME ; int MPXDbCommonUtil::AttributeExists(class TArray<class TMPXAttribute> const &, class TMPXAttribute const &)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@HHI@Z @ 73 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int, int, unsigned int)
+ ?OpenAllDatabasesL@CMPXDbManager@@QAEXXZ @ 74 NONAME ; void CMPXDbManager::OpenAllDatabasesL(void)
+ ?Release@CMPXResource@@QAEXXZ @ 75 NONAME ; void CMPXResource::Release(void)
+ ?CopyDBsFromRamL@CMPXDbManager@@QAEXXZ @ 76 NONAME ; void CMPXDbManager::CopyDBsFromRamL(void)
+ ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@@Z @ 77 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &)
+ ?GetVisibleChange@CMPXDbActiveTask@@QAE?AW4TChangeVisibility@1@XZ @ 78 NONAME ; enum CMPXDbActiveTask::TChangeVisibility CMPXDbActiveTask::GetVisibleChange(void)
+ ?SqlCriterion64LC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@_J@Z @ 79 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterion64LC(class TDesC16 const &, long long)
+ ?GetStep@CMPXDbActiveTask@@QAEHXZ @ 80 NONAME ; int CMPXDbActiveTask::GetStep(void)
+ ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@0@Z @ 81 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, class TDesC16 const &)
+ ?GetVolIdMatchDriveIdL@MPXDbCommonUtil@@SAIAAVRFs@@H@Z @ 82 NONAME ; unsigned int MPXDbCommonUtil::GetVolIdMatchDriveIdL(class RFs &, int)
+ ?FindItemChangedMessageL@MPXDbCommonUtil@@SAHABVCMPXMediaArray@@ABVCMPXMedia@@@Z @ 83 NONAME ; int MPXDbCommonUtil::FindItemChangedMessageL(class CMPXMediaArray const &, class CMPXMedia const &)
+ ?IsOpen@CMPXDbManager@@QBEHH@Z @ 84 NONAME ; int CMPXDbManager::IsOpen(int) const
+ ?PrependMediaL@MPXDbCommonUtil@@SAXAAVCMPXMediaArray@@ABVTDesC16@@W4TMPXGeneralType@@W4TMPXGeneralCategory@@VTMPXItemId@@HIH@Z @ 85 NONAME ; void MPXDbCommonUtil::PrependMediaL(class CMPXMediaArray &, class TDesC16 const &, enum TMPXGeneralType, enum TMPXGeneralCategory, class TMPXItemId, int, unsigned int, int)
+ ?GetDriveL@MPXDbCommonUtil@@SAHABVTDesC16@@AAVTDriveUnit@@@Z @ 86 NONAME ; int MPXDbCommonUtil::GetDriveL(class TDesC16 const &, class TDriveUnit &)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@HABVTDesC16@@@Z @ 87 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, int, class TDesC16 const &)
+ ?AddItemChangedMessageL@MPXDbCommonUtil@@SAXAAVCMPXMediaArray@@VTMPXItemId@@W4TMPXChangeEventType@@W4TMPXGeneralCategory@@I1@Z @ 88 NONAME ; void MPXDbCommonUtil::AddItemChangedMessageL(class CMPXMediaArray &, class TMPXItemId, enum TMPXChangeEventType, enum TMPXGeneralCategory, unsigned int, class TMPXItemId)
+ ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@0H0H@Z @ 89 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, class TDesC16 const &, int, class TDesC16 const &, int)
+ ?RunError@CMPXDbActiveTask@@MAEHH@Z @ 90 NONAME ; int CMPXDbActiveTask::RunError(int)
+ ??0CMPXDbTable@@IAE@AAVCMPXDbManager@@@Z @ 91 NONAME ; CMPXDbTable::CMPXDbTable(class CMPXDbManager &)
+ ?DoCheckTable@CMPXDbTable@@IAEHAAVRSqlDatabase@@ABVTDesC16@@@Z @ 92 NONAME ; int CMPXDbTable::DoCheckTable(class RSqlDatabase &, class TDesC16 const &)
+ ?StartL@CMPXDbActiveTask@@QAEXKABVCMPXMedia@@@Z @ 93 NONAME ; void CMPXDbActiveTask::StartL(unsigned long, class CMPXMedia const &)
+ ?DoCancel@CMPXDbActiveTask@@MAEXXZ @ 94 NONAME ; void CMPXDbActiveTask::DoCancel(void)
+ ?ExecuteIntQueryL@CMPXDbTable@@IAEKABVTDesC16@@KK@Z @ 95 NONAME ; unsigned long CMPXDbTable::ExecuteIntQueryL(class TDesC16 const &, unsigned long, unsigned long)
+ ?Fs@CMPXDbManager@@QAEAAVRFs@@XZ @ 96 NONAME ; class RFs & CMPXDbManager::Fs(void)
+ ?GenerateUniqueIdL@MPXDbCommonUtil@@SAKAAVRFs@@W4TMPXGeneralCategory@@ABVTDesC16@@H@Z @ 97 NONAME ; unsigned long MPXDbCommonUtil::GenerateUniqueIdL(class RFs &, enum TMPXGeneralCategory, class TDesC16 const &, int)
+ ?DeleteFile@MPXDbCommonUtil@@SAHAAVRFs@@ABVTDesC16@@@Z @ 98 NONAME ; int MPXDbCommonUtil::DeleteFile(class RFs &, class TDesC16 const &)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@00@Z @ 99 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+ ?ExecuteSelectQueryOnAllDrivesL@CMPXDbManager@@QAA?AVRSqlStatement@@HV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 100 NONAME ; class RSqlStatement CMPXDbManager::ExecuteSelectQueryOnAllDrivesL(int, class TRefByValue<class TDesC16 const >, ...)
+ ?ReadMenuArrayL@CMPXResource@@QAEPAVCDesC16ArrayFlat@@HAAV?$RArray@H@@@Z @ 101 NONAME ; class CDesC16ArrayFlat * CMPXResource::ReadMenuArrayL(int, class RArray<int> &)
+ ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@H@Z @ 102 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, int)
+ ?GetDriveIdMatchVolIdL@MPXDbCommonUtil@@SAHAAVRFs@@I@Z @ 103 NONAME ; int MPXDbCommonUtil::GetDriveIdMatchVolIdL(class RFs &, unsigned int)
+ ?BaseConstructL@CMPXDbTable@@IAEXXZ @ 104 NONAME ; void CMPXDbTable::BaseConstructL(void)
?SetHBuf@MPXDbCommonUtil@@SAHAAPAVHBufC16@@PBVTDesC16@@H@Z @ 105 NONAME ; int MPXDbCommonUtil::SetHBuf(class HBufC16 * &, class TDesC16 const *, int)
- ?SetVisibleChange@CMPXDbActiveTask@@QAEXW4TChangeVisibility@1@@Z @ 106 NONAME ; void CMPXDbActiveTask::SetVisibleChange(enum CMPXDbActiveTask::TChangeVisibility)
- ?SqlCriterion64LC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@_J1@Z @ 107 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterion64LC(class TDesC16 const &, long long, long long)
- ?SqlCriterion64LC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@_J@Z @ 108 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterion64LC(class TDesC16 const &, long long)
- ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@00@Z @ 109 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
- ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@0@Z @ 110 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, class TDesC16 const &)
- ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@0H0H@Z @ 111 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, class TDesC16 const &, int, class TDesC16 const &, int)
- ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@H@Z @ 112 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, int)
- ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@HH@Z @ 113 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, int, int)
- ?StartL@CMPXDbActiveTask@@QAEXKABVCMPXMedia@@@Z @ 114 NONAME ; void CMPXDbActiveTask::StartL(unsigned long, class CMPXMedia const &)
- ?StringFromArrayLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVCDesC16Array@@ABVTDesC16@@@Z @ 115 NONAME ; class HBufC16 * MPXDbCommonUtil::StringFromArrayLC(class CDesC16Array const &, class TDesC16 const &)
- ?StringFromArraysLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVCDesC16Array@@0ABVTDesC16@@1@Z @ 116 NONAME ; class HBufC16 * MPXDbCommonUtil::StringFromArraysLC(class CDesC16Array const &, class CDesC16Array const &, class TDesC16 const &, class TDesC16 const &)
- ?TTimeToDesLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTTime@@@Z @ 117 NONAME ; class HBufC16 * MPXDbCommonUtil::TTimeToDesLC(class TTime const &)
- ?UpdateMediaL@CMPXDbTable@@MAEXAAVRSqlStatement@@ABV?$TArray@VTMPXAttribute@@@@AAVCMPXMedia@@@Z @ 118 NONAME ; void CMPXDbTable::UpdateMediaL(class RSqlStatement &, class TArray<class TMPXAttribute> const &, class CMPXMedia &)
- ?Version@CMPXDbManager@@QBE?AVTVersion@@XZ @ 119 NONAME ; class TVersion CMPXDbManager::Version(void) const
- ?ExecuteMediaQueryL@CMPXDbTable@@IAEXHABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@H@Z @ 120 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(int, class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int)
- ?ExecuteMediaQueryOnDriveL@CMPXDbTable@@IAEXHABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@@Z @ 121 NONAME ; void CMPXDbTable::ExecuteMediaQueryOnDriveL(int, class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &)
- ?ExecuteSelectQueryOnAllDrivesL@CMPXDbManager@@QAA?AVRSqlStatement@@HV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 122 NONAME ; class RSqlStatement CMPXDbManager::ExecuteSelectQueryOnAllDrivesL(int, class TRefByValue<class TDesC16 const >, ...)
+ ?FindAndReplaceSingleQuote@MPXDbCommonUtil@@SAXABVTDesC16@@AAVTDes16@@@Z @ 106 NONAME ; void MPXDbCommonUtil::FindAndReplaceSingleQuote(class TDesC16 const &, class TDes16 &)
+ ?SqlCriterionLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@00@Z @ 107 NONAME ; class HBufC16 * MPXDbCommonUtil::SqlCriterionLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMedia@@ABVTDesC16@@H@Z @ 108 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMedia &, class TDesC16 const &, int)
+ ?CurrentTimeDesLC@MPXDbCommonUtil@@SAPAVHBufC16@@XZ @ 109 NONAME ; class HBufC16 * MPXDbCommonUtil::CurrentTimeDesLC(void)
+ ?AddSqlCriterionL@MPXDbCommonUtil@@SAHAAVCDesC16Array@@ABVTDesC16@@H@Z @ 110 NONAME ; int MPXDbCommonUtil::AddSqlCriterionL(class CDesC16Array &, class TDesC16 const &, int)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@KKK@Z @ 111 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, unsigned long, unsigned long, unsigned long)
+ ?InTransaction@CMPXDbManager@@QAEHXZ @ 112 NONAME ; int CMPXDbManager::InTransaction(void)
+ ?DatabaseCount@CMPXDbManager@@QBEHXZ @ 113 NONAME ; int CMPXDbManager::DatabaseCount(void) const
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXHABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@H@Z @ 114 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(int, class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, int)
+ ?ExecuteSumExQueryL@CMPXDbTable@@IAEHABVTDesC16@@KH@Z @ 115 NONAME ; int CMPXDbTable::ExecuteSumExQueryL(class TDesC16 const &, unsigned long, int)
+ ?CheckDiskSpaceL@CMPXDbManager@@QAEXH@Z @ 116 NONAME ; void CMPXDbManager::CheckDiskSpaceL(int)
+ ?ProcessPatternCharsLC@MPXDbCommonUtil@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 117 NONAME ; class HBufC16 * MPXDbCommonUtil::ProcessPatternCharsLC(class TDesC16 const &)
+ ?GetColumnTextL@MPXDbCommonUtil@@SA?AVTPtrC16@@AAVRSqlStatement@@H@Z @ 118 NONAME ; class TPtrC16 MPXDbCommonUtil::GetColumnTextL(class RSqlStatement &, int)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@K@Z @ 119 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, unsigned long)
+ ?CloseAllDatabases@CMPXDbManager@@QAEXXZ @ 120 NONAME ; void CMPXDbManager::CloseAllDatabases(void)
+ ?ExecuteMediaQueryL@CMPXDbTable@@IAEXABV?$TArray@VTMPXAttribute@@@@AAVCMPXMediaArray@@ABVTDesC16@@2H2H@Z @ 121 NONAME ; void CMPXDbTable::ExecuteMediaQueryL(class TArray<class TMPXAttribute> const &, class CMPXMediaArray &, class TDesC16 const &, class TDesC16 const &, int, class TDesC16 const &, int)
+ ?FillItemChangedMessageL@MPXDbCommonUtil@@SAXAAVCMPXMedia@@VTMPXItemId@@W4TMPXChangeEventType@@W4TMPXGeneralCategory@@I1@Z @ 122 NONAME ; void MPXDbCommonUtil::FillItemChangedMessageL(class CMPXMedia &, class TMPXItemId, enum TMPXChangeEventType, enum TMPXGeneralCategory, unsigned int, class TMPXItemId)
+ ?Version@CMPXDbManager@@QBE?AVTVersion@@XZ @ 123 NONAME ; class TVersion CMPXDbManager::Version(void) const
+ ?IsRemoteDrive@CMPXDbManager@@QAEHW4TDriveNumber@@@Z @ 124 NONAME ; int CMPXDbManager::IsRemoteDrive(enum TDriveNumber)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@@Z @ 125 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &)
+ ?ExecuteSumQueryL@CMPXDbTable@@IAEHABVTDesC16@@KK@Z @ 126 NONAME ; int CMPXDbTable::ExecuteSumQueryL(class TDesC16 const &, unsigned long, unsigned long)
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/eabi/mpxsqlitedbcommonu.def Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/eabi/mpxsqlitedbcommonu.def Fri Feb 19 22:48:30 2010 +0200
@@ -28,110 +28,114 @@
_ZN11CMPXDbTable18ExecuteMediaQueryLERK6TArrayI13TMPXAttributeER14CMPXMediaArrayiRK7TDesC16 @ 27 NONAME
_ZN11CMPXDbTable18ExecuteMediaQueryLERK6TArrayI13TMPXAttributeER9CMPXMediaRK7TDesC16 @ 28 NONAME
_ZN11CMPXDbTable18ExecuteMediaQueryLERK6TArrayI13TMPXAttributeER9CMPXMediaRK7TDesC16i @ 29 NONAME
- _ZN11CMPXDbTableC2ER13CMPXDbManager @ 30 NONAME
- _ZN11CMPXDbTableD0Ev @ 31 NONAME
- _ZN11CMPXDbTableD1Ev @ 32 NONAME
- _ZN11CMPXDbTableD2Ev @ 33 NONAME
- _ZN12CMPXResource10ReadHBufCLEi @ 34 NONAME
- _ZN12CMPXResource14ReadDesCArrayLEi @ 35 NONAME
- _ZN12CMPXResource14ReadMenuArrayLEiR6RArrayIiE @ 36 NONAME
- _ZN12CMPXResource15ReadDesCArrayLCEi @ 37 NONAME
- _ZN12CMPXResource15ReadMenuArrayLCEiR6RArrayIiE @ 38 NONAME
- _ZN12CMPXResource4NewLERK7TDesC16 @ 39 NONAME
- _ZN12CMPXResource5NewLCERK7TDesC16 @ 40 NONAME
- _ZN12CMPXResource7ReleaseEv @ 41 NONAME
- _ZN13CMPXDbManager10ConstructLERK4TBufILi256EE @ 42 NONAME
- _ZN13CMPXDbManager13CreateTablesLER12RSqlDatabase @ 43 NONAME
- _ZN13CMPXDbManager13ExecuteQueryLEi11TRefByValueIK7TDesC16Ez @ 44 NONAME
- _ZN13CMPXDbManager13InTransactionEv @ 45 NONAME
- _ZN13CMPXDbManager13IsInitializedEv @ 46 NONAME
- _ZN13CMPXDbManager13IsRemoteDriveE12TDriveNumber @ 47 NONAME
- _ZN13CMPXDbManager13OpenDatabaseLEi @ 48 NONAME
- _ZN13CMPXDbManager14CloseDatabaseLEi @ 49 NONAME
- _ZN13CMPXDbManager14InitDatabasesLE6RArrayIiE @ 50 NONAME
- _ZN13CMPXDbManager14PrintDatabaseLEv @ 51 NONAME
- _ZN13CMPXDbManager14RegisterTableLER9MMPXTable @ 52 NONAME
- _ZN13CMPXDbManager15CheckDiskSpaceLEi @ 53 NONAME
- _ZN13CMPXDbManager17CloseAllDatabasesEv @ 54 NONAME
- _ZN13CMPXDbManager17OpenAllDatabasesLEv @ 55 NONAME
- _ZN13CMPXDbManager17RecreateDatabaseLEi @ 56 NONAME
- _ZN13CMPXDbManager19ExecuteSelectQueryLE11TRefByValueIK7TDesC16Ez @ 57 NONAME
- _ZN13CMPXDbManager19ExecuteSelectQueryLEi11TRefByValueIK7TDesC16Ez @ 58 NONAME
- _ZN13CMPXDbManager19ExecuteSelectQueryLEjRK7TDesC16i11TRefByValueIS1_Ez @ 59 NONAME
- _ZN13CMPXDbManager19ExecuteSelectQueryLEjii11TRefByValueIK7TDesC16Ez @ 60 NONAME
- _ZN13CMPXDbManager21RecreateAllDatabasesLEv @ 61 NONAME
- _ZN13CMPXDbManager23RegenerateAllDatabasesLEv @ 62 NONAME
- _ZN13CMPXDbManager2FsEv @ 63 NONAME
- _ZN13CMPXDbManager6BeginLEv @ 64 NONAME
- _ZN13CMPXDbManager7CommitLEv @ 65 NONAME
- _ZN13CMPXDbManager9RollbackLEv @ 66 NONAME
- _ZN13CMPXDbManagerC1ER3RFs @ 67 NONAME
- _ZN13CMPXDbManagerC2ER3RFs @ 68 NONAME
- _ZN13CMPXDbManagerD0Ev @ 69 NONAME
- _ZN13CMPXDbManagerD1Ev @ 70 NONAME
- _ZN13CMPXDbManagerD2Ev @ 71 NONAME
- _ZN15MPXDbCommonUtil10DeleteFileER3RFsRK7TDesC16 @ 72 NONAME
- _ZN15MPXDbCommonUtil11DesToTTimeLERK7TDesC16 @ 73 NONAME
- _ZN15MPXDbCommonUtil11GetDRMTypeLERK7TDesC16 @ 74 NONAME
- _ZN15MPXDbCommonUtil12AppendMediaLER14CMPXMediaArrayRK7TDesC1615TMPXGeneralType19TMPXGeneralCategory10TMPXItemIdij @ 75 NONAME
- _ZN15MPXDbCommonUtil12AppendValueLER12CDesC16ArrayS1_RK7TDesC16S4_ @ 76 NONAME
- _ZN15MPXDbCommonUtil12AppendValueLER12CDesC16ArrayS1_RK7TDesC16m @ 77 NONAME
- _ZN15MPXDbCommonUtil12TTimeToDesLCERK5TTime @ 78 NONAME
- _ZN15MPXDbCommonUtil13PrependMediaLER14CMPXMediaArrayRK7TDesC1615TMPXGeneralType19TMPXGeneralCategory10TMPXItemIdiji @ 79 NONAME
- _ZN15MPXDbCommonUtil14GetColumnTextLER13RSqlStatementi @ 80 NONAME
- _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16S2_ @ 81 NONAME
- _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16S2_S2_ @ 82 NONAME
- _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16S2_iS2_i @ 83 NONAME
- _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16i @ 84 NONAME
- _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16ii @ 85 NONAME
- _ZN15MPXDbCommonUtil15AttributeExistsERK6TArrayI13TMPXAttributeERKS1_ @ 86 NONAME
- _ZN15MPXDbCommonUtil15CreateFullPathLEiRK7TDesC16 @ 87 NONAME
- _ZN15MPXDbCommonUtil16AddSqlCriterionLER12CDesC16ArrayRK7TDesC16S4_ @ 88 NONAME
- _ZN15MPXDbCommonUtil16AddSqlCriterionLER12CDesC16ArrayRK7TDesC16i @ 89 NONAME
- _ZN15MPXDbCommonUtil16CurrentDateDesLCEv @ 90 NONAME
- _ZN15MPXDbCommonUtil16CurrentTimeDesLCEv @ 91 NONAME
- _ZN15MPXDbCommonUtil16SqlCriterion64LCERK7TDesC16x @ 92 NONAME
- _ZN15MPXDbCommonUtil16SqlCriterion64LCERK7TDesC16xx @ 93 NONAME
- _ZN15MPXDbCommonUtil17GenerateUniqueIdLER3RFs19TMPXGeneralCategoryRK7TDesC16i @ 94 NONAME
- _ZN15MPXDbCommonUtil17StringFromArrayLCERK12CDesC16ArrayRK7TDesC16 @ 95 NONAME
- _ZN15MPXDbCommonUtil18GetMimeTypeForUriLERK7TDesC16 @ 96 NONAME
- _ZN15MPXDbCommonUtil18StringFromArraysLCERK12CDesC16ArrayS2_RK7TDesC16S5_ @ 97 NONAME
- _ZN15MPXDbCommonUtil20FillInSupportedUIDsLERK6TArrayI13TMPXAttributeER6RArrayIiE @ 98 NONAME
- _ZN15MPXDbCommonUtil21GetDriveIdMatchVolIdLER3RFsj @ 99 NONAME
- _ZN15MPXDbCommonUtil21GetVolIdMatchDriveIdLER3RFsi @ 100 NONAME
- _ZN15MPXDbCommonUtil21ProcessPatternCharsLCERK7TDesC16 @ 101 NONAME
- _ZN15MPXDbCommonUtil21ProcessSingleQuotesLCERK7TDesC16 @ 102 NONAME
- _ZN15MPXDbCommonUtil22AddItemChangedMessageLER14CMPXMediaArray10TMPXItemId19TMPXChangeEventType19TMPXGeneralCategoryjS2_ @ 103 NONAME
- _ZN15MPXDbCommonUtil23FillItemChangedMessageLER9CMPXMedia10TMPXItemId19TMPXChangeEventType19TMPXGeneralCategoryjS2_ @ 104 NONAME
- _ZN15MPXDbCommonUtil23FindItemChangedMessageLERK14CMPXMediaArrayRK9CMPXMedia @ 105 NONAME
- _ZN15MPXDbCommonUtil25FindAndReplaceSingleQuoteERK7TDesC16R6TDes16 @ 106 NONAME
- _ZN15MPXDbCommonUtil7SetHBufERP7HBufC16PK7TDesC16i @ 107 NONAME
- _ZN15MPXDbCommonUtil9GetDriveLERK7TDesC16R10TDriveUnit @ 108 NONAME
- _ZN16CMPXDbActiveTask10GetCommandEv @ 109 NONAME
- _ZN16CMPXDbActiveTask16GetVisibleChangeEv @ 110 NONAME
- _ZN16CMPXDbActiveTask16SetVisibleChangeENS_17TChangeVisibilityE @ 111 NONAME
- _ZN16CMPXDbActiveTask17GetChangeMessagesEv @ 112 NONAME
- _ZN16CMPXDbActiveTask4NewLER24MMPXDbActiveTaskObserver @ 113 NONAME
- _ZN16CMPXDbActiveTask4RunLEv @ 114 NONAME
- _ZN16CMPXDbActiveTask6StartLEmRK9CMPXMedia @ 115 NONAME
- _ZN16CMPXDbActiveTask7GetStepEv @ 116 NONAME
- _ZN16CMPXDbActiveTask7GetTaskEv @ 117 NONAME
- _ZN16CMPXDbActiveTask8DoCancelEv @ 118 NONAME
- _ZN16CMPXDbActiveTask8RunErrorEi @ 119 NONAME
- _ZN16CMPXDbActiveTaskD0Ev @ 120 NONAME
- _ZN16CMPXDbActiveTaskD1Ev @ 121 NONAME
- _ZN16CMPXDbActiveTaskD2Ev @ 122 NONAME
- _ZNK13CMPXDbManager13DatabaseCountEv @ 123 NONAME
- _ZNK13CMPXDbManager6IsOpenEi @ 124 NONAME
- _ZNK13CMPXDbManager7DbDriveEi @ 125 NONAME
- _ZNK13CMPXDbManager7VersionEv @ 126 NONAME
- _ZTI11CMPXDbTable @ 127 NONAME ; #<TI>#
- _ZTI12CMPXResource @ 128 NONAME ; #<TI>#
- _ZTI13CMPXDbManager @ 129 NONAME ; #<TI>#
- _ZTV11CMPXDbTable @ 130 NONAME ; #<VT>#
- _ZTV12CMPXResource @ 131 NONAME ; #<VT>#
- _ZTV13CMPXDbManager @ 132 NONAME ; #<VT>#
- _ZN11CMPXDbTable18ExecuteMediaQueryLEiRK6TArrayI13TMPXAttributeER14CMPXMediaArrayRK7TDesC16i @ 133 NONAME
- _ZN11CMPXDbTable25ExecuteMediaQueryOnDriveLEiRK6TArrayI13TMPXAttributeER14CMPXMediaArrayRK7TDesC16 @ 134 NONAME
- _ZN13CMPXDbManager30ExecuteSelectQueryOnAllDrivesLEi11TRefByValueIK7TDesC16Ez @ 135 NONAME
+ _ZN11CMPXDbTable18ExecuteMediaQueryLEiRK6TArrayI13TMPXAttributeER14CMPXMediaArrayRK7TDesC16i @ 30 NONAME
+ _ZN11CMPXDbTable18ExecuteSumExQueryLERK7TDesC16mi @ 31 NONAME
+ _ZN11CMPXDbTable25ExecuteMediaQueryOnDriveLEiRK6TArrayI13TMPXAttributeER14CMPXMediaArrayRK7TDesC16 @ 32 NONAME
+ _ZN11CMPXDbTableC2ER13CMPXDbManager @ 33 NONAME
+ _ZN11CMPXDbTableD0Ev @ 34 NONAME
+ _ZN11CMPXDbTableD1Ev @ 35 NONAME
+ _ZN11CMPXDbTableD2Ev @ 36 NONAME
+ _ZN12CMPXResource10ReadHBufCLEi @ 37 NONAME
+ _ZN12CMPXResource14ReadDesCArrayLEi @ 38 NONAME
+ _ZN12CMPXResource14ReadMenuArrayLEiR6RArrayIiE @ 39 NONAME
+ _ZN12CMPXResource15ReadDesCArrayLCEi @ 40 NONAME
+ _ZN12CMPXResource15ReadMenuArrayLCEiR6RArrayIiE @ 41 NONAME
+ _ZN12CMPXResource4NewLERK7TDesC16 @ 42 NONAME
+ _ZN12CMPXResource5NewLCERK7TDesC16 @ 43 NONAME
+ _ZN12CMPXResource7ReleaseEv @ 44 NONAME
+ _ZN13CMPXDbManager10ConstructLERK4TBufILi256EE @ 45 NONAME
+ _ZN13CMPXDbManager13CopyDBsToRamLEi @ 46 NONAME
+ _ZN13CMPXDbManager13CreateTablesLER12RSqlDatabase @ 47 NONAME
+ _ZN13CMPXDbManager13ExecuteQueryLEi11TRefByValueIK7TDesC16Ez @ 48 NONAME
+ _ZN13CMPXDbManager13InTransactionEv @ 49 NONAME
+ _ZN13CMPXDbManager13IsInitializedEv @ 50 NONAME
+ _ZN13CMPXDbManager13IsRemoteDriveE12TDriveNumber @ 51 NONAME
+ _ZN13CMPXDbManager13OpenDatabaseLEi @ 52 NONAME
+ _ZN13CMPXDbManager14CloseDatabaseLEi @ 53 NONAME
+ _ZN13CMPXDbManager14InitDatabasesLE6RArrayIiE @ 54 NONAME
+ _ZN13CMPXDbManager14PrintDatabaseLEv @ 55 NONAME
+ _ZN13CMPXDbManager14RegisterTableLER9MMPXTable @ 56 NONAME
+ _ZN13CMPXDbManager15CheckDiskSpaceLEi @ 57 NONAME
+ _ZN13CMPXDbManager15CopyDBsFromRamLEv @ 58 NONAME
+ _ZN13CMPXDbManager15EnsureRamSpaceLEv @ 59 NONAME
+ _ZN13CMPXDbManager17CloseAllDatabasesEv @ 60 NONAME
+ _ZN13CMPXDbManager17OpenAllDatabasesLEv @ 61 NONAME
+ _ZN13CMPXDbManager17RecreateDatabaseLEi @ 62 NONAME
+ _ZN13CMPXDbManager19ExecuteSelectQueryLE11TRefByValueIK7TDesC16Ez @ 63 NONAME
+ _ZN13CMPXDbManager19ExecuteSelectQueryLEi11TRefByValueIK7TDesC16Ez @ 64 NONAME
+ _ZN13CMPXDbManager19ExecuteSelectQueryLEjRK7TDesC16i11TRefByValueIS1_Ez @ 65 NONAME
+ _ZN13CMPXDbManager19ExecuteSelectQueryLEjii11TRefByValueIK7TDesC16Ez @ 66 NONAME
+ _ZN13CMPXDbManager21RecreateAllDatabasesLEv @ 67 NONAME
+ _ZN13CMPXDbManager23RegenerateAllDatabasesLEv @ 68 NONAME
+ _ZN13CMPXDbManager2FsEv @ 69 NONAME
+ _ZN13CMPXDbManager30ExecuteSelectQueryOnAllDrivesLEi11TRefByValueIK7TDesC16Ez @ 70 NONAME
+ _ZN13CMPXDbManager6BeginLEv @ 71 NONAME
+ _ZN13CMPXDbManager7CommitLEv @ 72 NONAME
+ _ZN13CMPXDbManager9RollbackLEv @ 73 NONAME
+ _ZN13CMPXDbManagerC1ER3RFs @ 74 NONAME
+ _ZN13CMPXDbManagerC2ER3RFs @ 75 NONAME
+ _ZN13CMPXDbManagerD0Ev @ 76 NONAME
+ _ZN13CMPXDbManagerD1Ev @ 77 NONAME
+ _ZN13CMPXDbManagerD2Ev @ 78 NONAME
+ _ZN15MPXDbCommonUtil10DeleteFileER3RFsRK7TDesC16 @ 79 NONAME
+ _ZN15MPXDbCommonUtil11DesToTTimeLERK7TDesC16 @ 80 NONAME
+ _ZN15MPXDbCommonUtil11GetDRMTypeLERK7TDesC16 @ 81 NONAME
+ _ZN15MPXDbCommonUtil12AppendMediaLER14CMPXMediaArrayRK7TDesC1615TMPXGeneralType19TMPXGeneralCategory10TMPXItemIdij @ 82 NONAME
+ _ZN15MPXDbCommonUtil12AppendValueLER12CDesC16ArrayS1_RK7TDesC16S4_ @ 83 NONAME
+ _ZN15MPXDbCommonUtil12AppendValueLER12CDesC16ArrayS1_RK7TDesC16m @ 84 NONAME
+ _ZN15MPXDbCommonUtil12TTimeToDesLCERK5TTime @ 85 NONAME
+ _ZN15MPXDbCommonUtil13PrependMediaLER14CMPXMediaArrayRK7TDesC1615TMPXGeneralType19TMPXGeneralCategory10TMPXItemIdiji @ 86 NONAME
+ _ZN15MPXDbCommonUtil14GetColumnTextLER13RSqlStatementi @ 87 NONAME
+ _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16S2_ @ 88 NONAME
+ _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16S2_S2_ @ 89 NONAME
+ _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16S2_iS2_i @ 90 NONAME
+ _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16i @ 91 NONAME
+ _ZN15MPXDbCommonUtil14SqlCriterionLCERK7TDesC16ii @ 92 NONAME
+ _ZN15MPXDbCommonUtil15AttributeExistsERK6TArrayI13TMPXAttributeERKS1_ @ 93 NONAME
+ _ZN15MPXDbCommonUtil15CreateFullPathLEiRK7TDesC16 @ 94 NONAME
+ _ZN15MPXDbCommonUtil16AddSqlCriterionLER12CDesC16ArrayRK7TDesC16S4_ @ 95 NONAME
+ _ZN15MPXDbCommonUtil16AddSqlCriterionLER12CDesC16ArrayRK7TDesC16i @ 96 NONAME
+ _ZN15MPXDbCommonUtil16CurrentDateDesLCEv @ 97 NONAME
+ _ZN15MPXDbCommonUtil16CurrentTimeDesLCEv @ 98 NONAME
+ _ZN15MPXDbCommonUtil16SqlCriterion64LCERK7TDesC16x @ 99 NONAME
+ _ZN15MPXDbCommonUtil16SqlCriterion64LCERK7TDesC16xx @ 100 NONAME
+ _ZN15MPXDbCommonUtil17GenerateUniqueIdLER3RFs19TMPXGeneralCategoryRK7TDesC16i @ 101 NONAME
+ _ZN15MPXDbCommonUtil17StringFromArrayLCERK12CDesC16ArrayRK7TDesC16 @ 102 NONAME
+ _ZN15MPXDbCommonUtil18GetMimeTypeForUriLERK7TDesC16 @ 103 NONAME
+ _ZN15MPXDbCommonUtil18StringFromArraysLCERK12CDesC16ArrayS2_RK7TDesC16S5_ @ 104 NONAME
+ _ZN15MPXDbCommonUtil20FillInSupportedUIDsLERK6TArrayI13TMPXAttributeER6RArrayIiE @ 105 NONAME
+ _ZN15MPXDbCommonUtil21GetDriveIdMatchVolIdLER3RFsj @ 106 NONAME
+ _ZN15MPXDbCommonUtil21GetVolIdMatchDriveIdLER3RFsi @ 107 NONAME
+ _ZN15MPXDbCommonUtil21ProcessPatternCharsLCERK7TDesC16 @ 108 NONAME
+ _ZN15MPXDbCommonUtil21ProcessSingleQuotesLCERK7TDesC16 @ 109 NONAME
+ _ZN15MPXDbCommonUtil22AddItemChangedMessageLER14CMPXMediaArray10TMPXItemId19TMPXChangeEventType19TMPXGeneralCategoryjS2_ @ 110 NONAME
+ _ZN15MPXDbCommonUtil23FillItemChangedMessageLER9CMPXMedia10TMPXItemId19TMPXChangeEventType19TMPXGeneralCategoryjS2_ @ 111 NONAME
+ _ZN15MPXDbCommonUtil23FindItemChangedMessageLERK14CMPXMediaArrayRK9CMPXMedia @ 112 NONAME
+ _ZN15MPXDbCommonUtil25FindAndReplaceSingleQuoteERK7TDesC16R6TDes16 @ 113 NONAME
+ _ZN15MPXDbCommonUtil7SetHBufERP7HBufC16PK7TDesC16i @ 114 NONAME
+ _ZN15MPXDbCommonUtil9GetDriveLERK7TDesC16R10TDriveUnit @ 115 NONAME
+ _ZN16CMPXDbActiveTask10GetCommandEv @ 116 NONAME
+ _ZN16CMPXDbActiveTask16GetVisibleChangeEv @ 117 NONAME
+ _ZN16CMPXDbActiveTask16SetVisibleChangeENS_17TChangeVisibilityE @ 118 NONAME
+ _ZN16CMPXDbActiveTask17GetChangeMessagesEv @ 119 NONAME
+ _ZN16CMPXDbActiveTask4NewLER24MMPXDbActiveTaskObserver @ 120 NONAME
+ _ZN16CMPXDbActiveTask4RunLEv @ 121 NONAME
+ _ZN16CMPXDbActiveTask6StartLEmRK9CMPXMedia @ 122 NONAME
+ _ZN16CMPXDbActiveTask7GetStepEv @ 123 NONAME
+ _ZN16CMPXDbActiveTask7GetTaskEv @ 124 NONAME
+ _ZN16CMPXDbActiveTask8DoCancelEv @ 125 NONAME
+ _ZN16CMPXDbActiveTask8RunErrorEi @ 126 NONAME
+ _ZN16CMPXDbActiveTaskD0Ev @ 127 NONAME
+ _ZN16CMPXDbActiveTaskD1Ev @ 128 NONAME
+ _ZN16CMPXDbActiveTaskD2Ev @ 129 NONAME
+ _ZNK13CMPXDbManager13DatabaseCountEv @ 130 NONAME
+ _ZNK13CMPXDbManager6IsOpenEi @ 131 NONAME
+ _ZNK13CMPXDbManager7DbDriveEi @ 132 NONAME
+ _ZNK13CMPXDbManager7VersionEv @ 133 NONAME
+ _ZTI11CMPXDbTable @ 134 NONAME
+ _ZTI12CMPXResource @ 135 NONAME
+ _ZTI13CMPXDbManager @ 136 NONAME
+ _ZTV11CMPXDbTable @ 137 NONAME
+ _ZTV12CMPXResource @ 138 NONAME
+ _ZTV13CMPXDbManager @ 139 NONAME
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/group/mpxsqlitedbcommon.mmp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/group/mpxsqlitedbcommon.mmp Fri Feb 19 22:48:30 2010 +0200
@@ -27,6 +27,9 @@
CAPABILITY CAP_GENERAL_DLL
+MACRO __RAMDISK_PERF_ENABLE
+#define __RAMDISK_PERF_ENABLE
+
VERSION 15.0
SOURCEPATH ../src
@@ -59,6 +62,7 @@
LIBRARY bafl.lib
LIBRARY ecom.lib // DestroyedImplementation
LIBRARY mpxcommon.lib
+LIBRARY centralrepository.lib
#if defined(ARMCC)
deffile ../eabi/
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbcommonutil.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbcommonutil.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -41,6 +41,120 @@
// CONSTANTS
_LIT(KPathStart, ":\\");
+// ============================ FILE EXTENSION TO MIME MAP ==============================
+
+// ----------------------------------------------------------------------------------------------------------
+// Statically allocated Mime Map
+// ----------------------------------------------------------------------------------------------------------
+//
+
+_LIT( KExtensionAac, "aac" );
+_LIT( KExtensionAif, "aif");
+_LIT( KExtensionAifc, "aifc");
+_LIT( KExtensionAiff, "aiff");
+_LIT( KExtensionAmr, "amr" );
+_LIT( KExtensionAu, "au" );
+_LIT( KExtensionAwb, "awb" );
+_LIT( KExtensionMid, "mid" );
+_LIT( KExtensionMidi, "midi" );
+_LIT( KExtensionMka, "mka" );
+_LIT( KExtensionMp3, "mp3" );
+_LIT( KExtensionOgg, "ogg");
+_LIT( KExtensionRa, "ra");
+_LIT( KExtensionRam, "ram");
+_LIT( KExtensionRmi, "rmi");
+_LIT( KExtensionSnd, "snd" );
+_LIT( KExtensionSpMid, "spmid" );
+_LIT( KExtensionWav, "wav" );
+_LIT( KExtensionWma, "wma" );
+
+_LIT8( KMimeTypeAac, "audio/aac" );
+_LIT8( KMimeTypeAiff, "audio/x-aiff");
+_LIT8( KMimeTypeAmr, "audio/amr" );
+_LIT8( KMimeTypeAu, "audio/au" );
+_LIT8( KMimeTypeAwb, "audio/amr-wb" );
+_LIT8( KMimeTypeBasic, "audio/basic");
+_LIT8( KMimeTypeMatroska, "audio/x-matroska");
+_LIT8( KMimeTypeMid, "audio/mid");
+_LIT8( KMimeTypeMidi, "audio/midi" );
+_LIT8( KMimeTypeMpeg, "audio/mpeg" );
+_LIT8( KMimeTypeOgg, "audio/ogg");
+_LIT8( KMimeTypeReal, "audio/x-pn-realaudio");
+_LIT8( KMimeTypeSpMidi, "audio/sp-midi" );
+_LIT8( KMimeTypeWav, "audio/wav" );
+_LIT8( KMimeTypeWma, "audio/x-ms-wma");
+
+struct TMimeMapItem {
+ const TDesC * iExt;
+ const TDesC8 * iType;
+};
+
+// We need to explicitly cast here as LitC::operator& requires writable DLL data (even though it is just a cast)
+#define MIME_MAP_ITEM(ext,type) { &REINTERPRET_CAST(const TDesC&, ext), &REINTERPRET_CAST(const TDesC8&, type) }
+
+// THIS ARRAY MUST BE SORTED BY EXTENSION
+static const TMimeMapItem KMimeMap [] = {
+ MIME_MAP_ITEM( KExtensionAac, KMimeTypeAac),
+ MIME_MAP_ITEM( KExtensionAif, KMimeTypeAiff ),
+ MIME_MAP_ITEM( KExtensionAifc, KMimeTypeAiff ),
+ MIME_MAP_ITEM( KExtensionAiff, KMimeTypeAiff ),
+ MIME_MAP_ITEM( KExtensionAmr, KMimeTypeAmr ),
+ MIME_MAP_ITEM( KExtensionAu, KMimeTypeAu ), // KMimeTypeAudioBasic? "audio/x-au"?
+ MIME_MAP_ITEM( KExtensionAwb, KMimeTypeAwb ),
+ MIME_MAP_ITEM( KExtensionMid, KMimeTypeMidi ),
+ MIME_MAP_ITEM( KExtensionMidi, KMimeTypeMidi ),
+ MIME_MAP_ITEM( KExtensionMka, KMimeTypeMatroska ),
+ MIME_MAP_ITEM( KExtensionMp3, KMimeTypeMpeg ),
+ MIME_MAP_ITEM( KExtensionOgg, KMimeTypeOgg ),
+ MIME_MAP_ITEM( KExtensionRa, KMimeTypeReal ),
+ MIME_MAP_ITEM( KExtensionRam, KMimeTypeReal ),
+ MIME_MAP_ITEM( KExtensionRmi, KMimeTypeMid ),
+ MIME_MAP_ITEM( KExtensionSnd, KMimeTypeBasic ),
+ MIME_MAP_ITEM( KExtensionSpMid, KMimeTypeSpMidi ),
+ MIME_MAP_ITEM( KExtensionWav, KMimeTypeWav ), // "audio/x-wav"?
+ MIME_MAP_ITEM( KExtensionWma, KMimeTypeWma )
+};
+
+// ----------------------------------------------------------------------------------------------------------
+// Look for Mime Type from map by file extension
+// Returns NULL if file extension is not known
+// ----------------------------------------------------------------------------------------------------------
+//
+static const TDesC8 * FindMimeTypeFromMap ( const TDesC& aFilename )
+ {
+ // extract extension
+ TPtrC extension;
+ TInt pos = aFilename.LocateReverseF( '.' );
+ if ( pos < 0 || ++pos >= aFilename.Length() )
+ {
+ return NULL;
+ }
+ extension.Set( aFilename.Mid( pos ) );
+
+ // binary search from Mime Map
+ TUint begin = 0;
+ TUint end = sizeof KMimeMap / sizeof (TMimeMapItem);
+ while (begin < end)
+ {
+ TUint at = (begin + end) / 2;
+ const TMimeMapItem & item = KMimeMap[at];
+ TUint r = item.iExt->CompareF(extension);
+ if (r == 0)
+ {
+ return item.iType;
+ }
+ else if (r > 0)
+ {
+ end = at;
+ }
+ else
+ {
+ begin = at + 1;
+ }
+ }
+ return NULL;
+}
+
// ============================ MEMBER FUNCTIONS ==============================
// ----------------------------------------------------------------------------------------------------------
@@ -809,7 +923,11 @@
{
MPX_FUNC("MPXDbUtil::GetMimeTypeForUriL");
- TParsePtrC parse(aUri);
+ if ( const TDesC8 * type = FindMimeTypeFromMap (aUri) )
+ {
+ return TDataType(*type);
+ }
+
RApaLsSession appArc;
User::LeaveIfError(appArc.Connect());
CleanupClosePushL(appArc);
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -27,6 +27,11 @@
//#include <sqlrowsetutil.h>
//#endif
#include <sysutil.h>
+#ifdef __RAMDISK_PERF_ENABLE
+#include <centralrepository.h>
+#include <BAUTILS.H>
+#include <mpxinternalcrkeys.h>
+#endif //__RAMDISK_PERF_ENABLE
#include <mpxlog.h>
@@ -68,6 +73,19 @@
const TInt KMaxLogQuery = 248;
const TInt KBufIncrement = 10;
+#ifdef __RAMDISK_PERF_ENABLE
+_LIT(KSecurePath, "[%x]%S");
+_LIT(KRAMAliasName, "%S");
+_LIT( KDummyDbFile, "%c:\\private\\10281e17\\dummydb.dat" );
+const TInt64 KMPMegaByte = 1048576;
+const TInt64 KMPEstimatedSongInBytes = KMPMegaByte * 2;
+const TInt KMPEstimatedSizePerDBEntry = 3000; // worst scenario, can be lower if needed
+const TInt KMPMinimumRAMSizeToRun = 6 * KMPMegaByte;
+// if RAM is lower than 5MB, doesn't seem enough for SQL as well.
+// so we set this number to move back DBs before being kicked out
+
+#endif //__RAMDISK_PERF_ENABLE
+
// Used to suppress overflow when appending formatted text to a buffer.
class TOverflowHandle :
public TDesOverflow
@@ -102,7 +120,10 @@
//
EXPORT_C CMPXDbManager::CMPXDbManager(
RFs& aFs) :
- iFs(aFs)
+ iFs(aFs),
+ iRAMDiskPerfEnabled(EFalse),
+ iMaximumAllowedRAMDiskSpaceToCopy(0),
+ iRAMInUse(EFalse)
{
MPX_FUNC("CMPXDbManager::CMPXDbManager");
}
@@ -116,6 +137,35 @@
{
MPX_FUNC("CMPXDbManager::ConstructL");
iDbFile = aDatabaseFile.AllocL();
+
+#ifdef __RAMDISK_PERF_ENABLE
+ TInt flags( 0 );
+ CRepository* repository = CRepository::NewLC( KCRUidMPXMPFeatures );
+ User::LeaveIfError( repository->Get( KMPXMPLocalVariation, flags ));
+ MPX_DEBUG2("CMPXDbManager::ConstructL KMPXMPLocalVariation %d", flags);
+ iRAMDiskPerfEnabled = static_cast<TBool>( flags & KMPXEnableRAMDisk );
+
+ TInt temp;
+ User::LeaveIfError( repository->Get( KMAXAllowedDiskSpaceToCopy, temp) );
+ iMaximumAllowedRAMDiskSpaceToCopy = temp * KMPMegaByte;
+ CleanupStack::PopAndDestroy(repository);
+
+ if ( iRAMDiskPerfEnabled )
+ {
+ MPX_DEBUG1("CMPXDbManager::ConstructL RAMDisk performance is enabled.");
+ MPX_DEBUG2("CMPXDbManager::ConstructL RAMDisk iMaximumAllowedRAMDiskSpaceToCopy=%Lu", iMaximumAllowedRAMDiskSpaceToCopy);
+ if ( GetRAMDiskPath() != KErrNone )
+ {
+ // Error finding ram drive, disable ram disk
+ iRAMDiskPerfEnabled = EFalse;
+ }
+ }
+ else
+ {
+ MPX_DEBUG2("CMPXDbManager::ConstructL RAMDisk performance is NOT enabled flag=%d", flags);
+ MPX_DEBUG2("CMPXDbManager::ConstructL RAMDisk iMaximumAllowedRAMDiskSpaceToCopy=%Lu", iMaximumAllowedRAMDiskSpaceToCopy);
+ }
+#endif //__RAMDISK_PERF_ENABLE
}
// ----------------------------------------------------------------------------
@@ -141,6 +191,14 @@
CloseAllDatabases();
delete iDbFile;
+#ifdef __RAMDISK_PERF_ENABLE
+ TInt count(iDatabaseHandles.Count());
+ for (TInt i = 0; i < count; ++i)
+ {
+ RemoveDummyFile(i);
+ }
+#endif //__RAMDISK_PERF_ENABLE
+ iDatabaseHandles.Close();
}
// ----------------------------------------------------------------------------
@@ -165,20 +223,344 @@
if (++iTransactionCount == 1)
{
- TInt err = iDatabase.Exec(KBeginTransaction);
+ DoBeginL();
+ }
+ }
+
+void CMPXDbManager::DoBeginL()
+ {
+ MPX_FUNC("CMPXDbManager::DoBeginL");
+
+ TInt err = iDatabase.Exec(KBeginTransaction);
- // transforms SQL error to KErrNotReady
- if( (err <= KSqlErrGeneral && err >= KSqlErrNotDb) || err == KSqlErrStmtExpired )
+ // transforms SQL error to KErrNotReady
+ if( (err <= KSqlErrGeneral && err >= KSqlErrNotDb) || err == KSqlErrStmtExpired )
+ {
+ User::Leave(KErrNotReady);
+ }
+ else
+ {
+ User::LeaveIfError(err);
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// Copy all DBs to RAM disk
+// ----------------------------------------------------------------------------
+//
+EXPORT_C void CMPXDbManager::CopyDBsToRamL( TBool aIsMTPInUse )
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::CopyDBsToRamL");
+ if( iRAMDiskPerfEnabled )
+ {
+ if ( !IsRamDiskSpaceAvailable() )
+ {
+ return;
+ }
+
+ // Check if we are over the allowed ram space.
+ TInt dbSize=0;
+ TInt err = GetTotalDatabasesSize(dbSize);
+ if ( err || (dbSize > iMaximumAllowedRAMDiskSpaceToCopy) )
{
- User::Leave(KErrNotReady);
+ MPX_DEBUG2("<--CMPXDbManager::CopyDBsToRamL Over the allowed Ram disk limit %Lu", iMaximumAllowedRAMDiskSpaceToCopy );
+ return;
+ }
+
+ TInt transactionCount = iTransactionCount;
+ if (iTransactionCount > 0)
+ {
+ iTransactionCount = 0;
+ DoCommitL();
}
- else
+
+ TInt count(iDatabaseHandles.Count());
+ TBool ret = EFalse;
+ for ( TInt i = 0; i < count ; ++i )
{
- User::LeaveIfError(err);
+ if ( iDatabaseHandles[i].iUseRAMdb )
+ {
+ // already used
+ MPX_DEBUG1("CMPXDbManager::CopyDBsToRamL iUseRAMdb already ETrue");
+ continue;
+ }
+ iDatabaseHandles[i].iUseRAMdb = ETrue;
+ TRAPD(err, ret = DoCopyDBToRamL( iDatabaseHandles[i].iDrive, aIsMTPInUse ))
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("CMPXDbManager::CopyDBsToRamL error=%d", err);
+ // remove dymmy file
+ RemoveDummyFile(i);
+ // try to close database that is opened from RAM disk
+ TRAP_IGNORE(CloseDatabaseL( iDatabaseHandles[i].iDrive ));
+ iDatabaseHandles[i].iUseRAMdb = EFalse;
+ // reopen database from drive not from RAM
+ OpenDatabaseL( iDatabaseHandles[i].iDrive );
+ continue; // continue to copy for next drive
+ }
+ if ( !ret )
+ {
+ iDatabaseHandles[i].iUseRAMdb = EFalse;
+ }
+ }
+
+ if (transactionCount > 0)
+ {
+ DoBeginL();
+ iTransactionCount = transactionCount;
}
}
+ iRAMInUse = ETrue;
+
+ MPX_DEBUG1("<--CMPXDbManager::CopyDBsToRamL");
+#endif //__RAMDISK_PERF_ENABLE
+
}
+
+// ----------------------------------------------------------------------------
+// CMPXDbManager::DoCopyDBsToRamL
+// ----------------------------------------------------------------------------
+//
+TBool CMPXDbManager::DoCopyDBToRamL( TDriveUnit aDrive, TBool aIsMTPInUse )
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG2("-->CMPXDbManager::DoCopyDBsToRamL drive=%d", (TInt)aDrive);
+ TFileName dst;
+ TFileName src;
+ dst.Append(iRAMFolder);
+ src.Append(aDrive.Name());
+ src.Append(KDBFilePath);
+ TRAPD( err, BaflUtils::EnsurePathExistsL( iFs, dst ));
+ if ( err != KErrNone )
+ {
+ return EFalse;
+ }
+ TFileName filename;
+ filename.Format(KSecurePath, User::Identity().iUid, iDbFile); //x:\private\10281e17\[sldfdsf]mpxv2_5.db
+ src.Append(filename);
+ MPX_DEBUG2("RAMDisk src path=%S", &src);
+ TEntry entry;
+ iFs.Entry( src, entry );
+ if (!BlockDiskSpace( aDrive, entry.iSize, aIsMTPInUse ) )
+ {
+ MPX_DEBUG1("CMPXDbManager::DoCopyDBsToRamL() BlockDiskSpace failed");
+ return EFalse; // continue for next drive
+ }
+ TBuf<2> d;
+ d.Append(aDrive.Name());
+ HBufC* temp = HBufC::NewLC(KMaxFileName);
+ temp->Des().Append(d.Left(1));
+ temp->Des().Append(iDbFile->Des());
+ filename.Format(KSecurePath, User::Identity().iUid, temp);
+ CleanupStack::PopAndDestroy(temp);
+ dst.Append(filename);
+ MPX_DEBUG2("RAMDisk dst path=%S", &dst);
+ TInt index( GetDatabaseIndex((TInt)aDrive) );
+ delete iDatabaseHandles[index].iOrigFullFilePath;
+ iDatabaseHandles[index].iOrigFullFilePath = 0;
+ delete iDatabaseHandles[index].iTargetFullFilePath;
+ iDatabaseHandles[index].iTargetFullFilePath = 0;
+
+ // Save these path so it is convenient to copy back
+ iDatabaseHandles[index].iOrigFullFilePath = HBufC::NewL(src.Length());
+ iDatabaseHandles[index].iTargetFullFilePath = HBufC::NewL(dst.Length());
+
+ iDatabaseHandles[index].iOrigFullFilePath->Des().Append(src);
+ iDatabaseHandles[index].iTargetFullFilePath->Des().Append(dst);
+
+ TRAP(err, CloseDatabaseL(aDrive));
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("<--CMPXDbManager::DoCopyDBsToRamL error=%d", err);
+ TInt index(GetDatabaseIndex((TInt)aDrive));
+ if ( index >= 0 )
+ {
+ RemoveDummyFile( index );
+ }
+ return EFalse;
+ }
+ User::LeaveIfError( BaflUtils::CopyFile(iFs, src, dst ));
+ OpenDatabaseL((TInt)aDrive);
+
+ MPX_DEBUG2("RAMDisk Database opened=%d", (TInt)aDrive);
+ MPX_DEBUG1("<--CMPXDbManager::DoCopyDBsToRamL");
+ return ETrue;
+#endif //__RAMDISK_PERF_ENABLE
+ }
+
+// ----------------------------------------------------------------------------
+// Copy all DBs from RAM disk back to normal drives
+// ----------------------------------------------------------------------------
+//
+EXPORT_C void CMPXDbManager::CopyDBsFromRamL()
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::CopyDBsFromRamL");
+ if( iRAMDiskPerfEnabled )
+ {
+ TInt transactionCount = iTransactionCount;
+ if (iTransactionCount > 0)
+ {
+ iTransactionCount = 0;
+ DoCommitL();
+ }
+
+ TInt count(iDatabaseHandles.Count());
+ for (TInt i = 0; i < count && iDatabaseHandles[i].iUseRAMdb; ++i)
+ {
+ TRAPD(err, DoCopyDBFromRamL(i));
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("<--CMPXDbManager::CopyDBsFromRamL error=%d", err);
+ //anyting wrong, delete the temp file and open database from drive
+ RemoveDummyFile(i);
+ // delete Db on RAM
+ User::LeaveIfError( BaflUtils::DeleteFile(iFs,
+ *iDatabaseHandles[i].iTargetFullFilePath));
+ }
+ iDatabaseHandles[i].iUseRAMdb = EFalse;
+ // open db from drive
+ OpenDatabaseL( iDatabaseHandles[i].iDrive );
+ }
+
+ if (transactionCount > 0)
+ {
+ DoBeginL();
+ iTransactionCount = transactionCount;
+ }
+ }
+ iRAMInUse = EFalse;
+
+ MPX_DEBUG1("<--CMPXDbManager::CopyDBsFromRamL");
+#endif //__RAMDISK_PERF_ENABLE
+ }
+
+
+// ----------------------------------------------------------------------------
+// CMPXDbManager::DoCopyDBsToRamL
+// ----------------------------------------------------------------------------
+//
+void CMPXDbManager::DoCopyDBFromRamL( TInt aIndex )
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::DoCopyDBsFromRamL");
+ MPX_DEBUG2("-->CMPXDbManager::DoCopyDBsFromRamL Drive %d will be closed before copying db from RAM.",
+ iDatabaseHandles[aIndex].iDrive);
+
+ CloseDatabaseL(iDatabaseHandles[aIndex].iDrive);
+
+ // Delete existing DB on drive
+ User::LeaveIfError( BaflUtils::DeleteFile(iFs,
+ *iDatabaseHandles[aIndex].iOrigFullFilePath));
+ MPX_DEBUG1("CMPXDbManager::DoCopyDBsFromRamL old DB on drive deleted");
+
+ // Rename dummy file to be orignal file name
+ User::LeaveIfError( BaflUtils::RenameFile(iFs,
+ iDatabaseHandles[aIndex].iDummyFilePath,
+ *iDatabaseHandles[aIndex].iOrigFullFilePath) );
+ MPX_DEBUG1("CMPXDbManager::CopyDBsFromRamL RAMDisk renamed.");
+
+ //Copy Db from RAM to replace dummy file
+ ReplaceFileL( *iDatabaseHandles[aIndex].iTargetFullFilePath, *iDatabaseHandles[aIndex].iOrigFullFilePath);
+
+ MPX_DEBUG1("CMPXDbManager::CopyDBsFromRamL RAMDisk copied back.");
+
+ // Delete existing DB on RAM
+ User::LeaveIfError( BaflUtils::DeleteFile(iFs, *iDatabaseHandles[aIndex].iTargetFullFilePath));
+ MPX_DEBUG1("CMPXDbManager::DoCopyDBsFromRamL RAMDisk deleted");
+
+ MPX_DEBUG1("<--CMPXDbManager::DoCopyDBsFromRamL");
+#endif //__RAMDISK_PERF_ENABLE
+ }
+
+// ----------------------------------------------------------------------------
+// CMPXDbManager::ReplaceFileL
+//
+// Replaces a file with another writing over the destination file.
+// Leaves on error.
+// Implementation follows CFileMan::Copy except that
+// - we don't resize target file to zero
+// - we can assume that files already exist
+// - we don't copy file attributes & timestamp
+// ----------------------------------------------------------------------------
+//
+void CMPXDbManager::ReplaceFileL( const TDesC& aSrcName, const TDesC& aDstName )
+ {
+ // open files
+ RFile srcFile;
+ User::LeaveIfError( srcFile.Open(iFs, aSrcName, EFileRead|EFileShareReadersOnly) );
+ CleanupClosePushL( srcFile );
+
+ RFile dstFile;
+ User::LeaveIfError( dstFile.Open(iFs, aDstName, EFileWrite|EFileWriteDirectIO|EFileShareExclusive) );
+ CleanupClosePushL( dstFile );
+
+ // resize destination file
+ TInt remainingBytes;
+ User::LeaveIfError( srcFile.Size(remainingBytes) );
+ User::LeaveIfError( dstFile.SetSize(remainingBytes) );
+
+ // allocate buffer
+ const TInt KBigBufSize = 512 * 1024;
+ const TInt KMediumBufSize = 32 * 1024;
+ const TInt KSmallBufSize = 4 * 1024;
+ HBufC8* bufPtr=HBufC8::New( Min(KBigBufSize, remainingBytes) );
+ if (bufPtr==NULL)
+ bufPtr=HBufC8::New(KMediumBufSize);
+ if (bufPtr==NULL)
+ bufPtr=HBufC8::New(KSmallBufSize);
+ if (bufPtr == NULL)
+ User::Leave(KErrNoMemory);
+ CleanupStack::PushL(bufPtr);
+
+ // copy
+ TPtr8 copyBuf=bufPtr->Des();
+ TInt pos=0;
+ while( remainingBytes > 0 )
+ {
+ TInt s = Min( remainingBytes, copyBuf.MaxSize() );
+ TInt ret = srcFile.Read(pos, copyBuf, s);
+ if (ret == KErrNone && copyBuf.Length()!= s )
+ {
+ ret = KErrCorrupt;
+ }
+ if (ret == KErrNone)
+ {
+ ret = dstFile.Write(pos, copyBuf, s);
+ }
+ User::LeaveIfError (ret);
+ pos += s;
+ remainingBytes -= s;
+ }
+ User::LeaveIfError( dstFile.Flush() );
+ CleanupStack::PopAndDestroy(3); // bufPtr, dstFile, srcFile
+ }
+
+// ----------------------------------------------------------------------------
+// CMPXDbManager::RemoveDummyFile
+// ----------------------------------------------------------------------------
+//
+void CMPXDbManager::RemoveDummyFile( TInt index )
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::RemoveDummyFile");
+
+ if ( iDatabaseHandles[index].iDummyFilePath.Length() )
+ {
+ TInt err = BaflUtils::DeleteFile(iFs, iDatabaseHandles[index].iDummyFilePath);
+ if ( !err )
+ {
+ iDatabaseHandles[index].iDummyFilePath.Zero();
+ }
+ }
+ MPX_DEBUG1("<--CMPXDbManager::RemoveDummyFile");
+#endif //__RAMDISK_PERF_ENABLE
+
+ }
+
+
// ----------------------------------------------------------------------------
// Commits a transaction on all databases.
// ----------------------------------------------------------------------------
@@ -191,20 +573,31 @@
{
if (--iTransactionCount == 0)
{
- TInt err = iDatabase.Exec(KCommitTransaction);
-
- // transforms SQL error to KErrNotReady
- if( (err <= KSqlErrGeneral && err >= KSqlErrNotDb) || err == KSqlErrStmtExpired )
- {
- User::Leave(KErrNotReady);
- }
- else
- {
- User::LeaveIfError(err);
- }
+ DoCommitL();
}
}
}
+
+// ----------------------------------------------------------------------------
+// Commits a transaction on all databases.
+// ----------------------------------------------------------------------------
+//
+void CMPXDbManager::DoCommitL()
+ {
+ MPX_FUNC("CMPXDbManager::DoCommitL");
+ TInt err = iDatabase.Exec(KCommitTransaction);
+
+ // transforms SQL error to KErrNotReady
+ if( (err <= KSqlErrGeneral && err >= KSqlErrNotDb) || err == KSqlErrStmtExpired )
+ {
+ MPX_DEBUG2("CMPXDbManager::CommitL failed err=%d", err);
+ User::Leave(KErrNotReady);
+ }
+ else
+ {
+ User::LeaveIfError(err);
+ }
+ }
// ----------------------------------------------------------------------------
// Rolls back a transaction on all databases.
@@ -273,6 +666,12 @@
handle.iAliasname = HBufC::NewL(KAliasName().Length());
handle.iAliasname->Des().Format(KAliasName, &driveName);
handle.iOpen = EFalse;
+#ifdef __RAMDISK_PERF_ENABLE
+ handle.iOrigFullFilePath = HBufC::NewL(0);
+ handle.iTargetFullFilePath = HBufC::NewL(0);
+ handle.iDummyFilePath.Zero();
+ handle.iUseRAMdb = EFalse;
+#endif //__RAMDISK_PERF_ENABLE
iDatabaseHandles.AppendL(handle);
@@ -313,8 +712,10 @@
{
if (iDatabaseHandles[i].iDrive == aDrive)
{
+ MPX_DEBUG2("CMPXDbManager::OpenDatabaseL found %d", aDrive);
if (!iDatabaseHandles[i].iOpen)
{
+ MPX_DEBUG1("CMPXDbManager::OpenDatabaseL not open found");
// make sure the database is created
CreateDatabaseL(drive);
@@ -329,6 +730,7 @@
}
if (!found)
{
+ MPX_DEBUG1("CMPXDbManager::OpenDatabaseL not found");
User::Leave(KErrArgument);
}
@@ -366,8 +768,10 @@
{
if (iDatabaseHandles[i].iDrive == aDrive)
{
+ MPX_DEBUG2("CMPXDbManager::CloseDatabaseL found %d", aDrive);
if (iDatabaseHandles[i].iOpen)
{
+ MPX_DEBUG1("CMPXDbManager::CloseDatabaseL found open");
DetachDatabaseL(drive);
}
@@ -378,6 +782,7 @@
}
if (!found)
{
+ MPX_DEBUG1("CMPXDbManager::CloseDatabaseL not found");
User::Leave(KErrArgument);
}
@@ -401,6 +806,11 @@
for (TInt i = 0; i < count; ++i)
{
delete iDatabaseHandles[i].iAliasname;
+#ifdef __RAMDISK_PERF_ENABLE
+ delete iDatabaseHandles[i].iOrigFullFilePath;
+ delete iDatabaseHandles[i].iTargetFullFilePath;
+ iDatabaseHandles[i].iDummyFilePath.Zero();
+#endif //__RAMDISK_PERF_ENABLE
}
iDatabaseHandles.Reset();
@@ -1295,7 +1705,7 @@
if (database.Open(filename->Des()) != KErrNone)
{
- MPX_DEBUG2("CMPXDbManager::CreateDatabaseL - cannot open the database on drive %d", TInt(aDrive));
+ MPX_DEBUG3("CMPXDbManager::CreateDatabaseL - cannot open db on drive %d %S", TInt(aDrive), filename);
// close the database first
database.Close();
@@ -1350,19 +1760,50 @@
{
HBufC* filename = CreateFilenameL(aDrive);
CleanupStack::PushL(filename);
+
+#ifdef __RAMDISK_PERF_ENABLE
+ if( iDatabaseHandles[i].iUseRAMdb )
+ {
+ delete iDatabaseHandles[i].iAliasname;
+ iDatabaseHandles[i].iAliasname = HBufC::NewL(KAliasName().Length());
+ HBufC* temp = HBufC::NewLC(2); // form of DE, DF, DX,...
+ temp->Des().Append(iRAMDrive); // length == 2
+ TDriveUnit pdrive(aDrive);
+ temp->Des().Append(pdrive.Name().Left(1)); //length == 2+ 1
+ iDatabaseHandles[i].iAliasname->Des().Format(KRAMAliasName, temp);
+ MPX_DEBUG2("CMPXDbManager::AttachDatabaseL - RAM change aliasname of %S", iDatabaseHandles[i].iAliasname );
+ CleanupStack::PopAndDestroy(temp);
+ }
+ else
+#endif //__RAMDISK_PERF_ENABLE
+ {
+ delete iDatabaseHandles[i].iAliasname;
+ TDriveUnit drive(aDrive);
+ const TDesC& driveName = drive.Name();
+ iDatabaseHandles[i].iAliasname = HBufC::NewL(KAliasName().Length());
+ iDatabaseHandles[i].iAliasname->Des().Format(KAliasName, &driveName);
+ MPX_DEBUG2("CMPXDbManager::AttachDatabaseL - normal change aliasname of %S", iDatabaseHandles[i].iAliasname);
+ }
- User::LeaveIfError(iDatabase.Attach(filename->Des(),
- *(iDatabaseHandles[i].iAliasname)));
+ TInt err = iDatabase.Attach(filename->Des(), *(iDatabaseHandles[i].iAliasname));
+ MPX_DEBUG2("CMPXDbManager::AttachDatabaseL - Attach Error =%d", err);
+ User::LeaveIfError(err);
iDatabaseHandles[i].iOpen = ETrue;
CleanupStack::PopAndDestroy(filename);
}
+ else
+ {
+ MPX_DEBUG1("CMPXDbManager::AttachDatabaseL - found already open");
+ }
+
found = ETrue;
break;
}
}
if (!found)
{
+ MPX_DEBUG1("CMPXDbManager::AttachDatabaseL - not found");
User::Leave(KErrNotFound);
}
}
@@ -1384,9 +1825,24 @@
{
if (iDatabaseHandles[i].iDrive == aDrive)
{
- if (iDatabaseHandles[i].iOpen)
+#ifdef __RAMDISK_PERF_ENABLE
+ if ( iDatabaseHandles[i].iOpen || iDatabaseHandles[i].iUseRAMdb )
+#else //__RAMDISK_PERF_ENABLE
+ if ( iDatabaseHandles[i].iOpen )
+#endif //__RAMDISK_PERF_ENABLE
+
{
- User::LeaveIfError(iDatabase.Detach(*(iDatabaseHandles[i].iAliasname)));
+ MPX_DEBUG1("CMPXDbManager::DetachDatabaseL found drive that is opening");
+ TInt err = iDatabase.Detach(*(iDatabaseHandles[i].iAliasname));
+ if ( err )
+ {
+ MPX_DEBUG2("CMPXDbManager::DetachDatabaseL detach failed Error=%d", err);
+ }
+ else
+ {
+ MPX_DEBUG2("CMPXDbManager::DetachDatabaseL iAliasname=%S", iDatabaseHandles[i].iAliasname);
+ }
+ User::LeaveIfError(err);
iDatabaseHandles[i].iOpen = EFalse;
}
@@ -1396,6 +1852,7 @@
}
if (!found)
{
+ MPX_DEBUG1("CMPXDbManager::DetachDatabaseL drive not found in iDatabaseHandlers");
User::Leave(KErrNotFound);
}
}
@@ -1414,8 +1871,33 @@
const TDesC& securefilePath = KSecureFilePath;
TDriveUnit cdrive(KRootDrive());
- const TDesC& driveName = aDrive.Name();
- filename->Des().Format(securefilePath, &driveName, User::Identity().iUid, iDbFile);
+#ifdef __RAMDISK_PERF_ENABLE
+ TInt index(GetDatabaseIndex((TInt)aDrive));
+ if ( index >=0 && iDatabaseHandles[index].iUseRAMdb && aDrive != cdrive )
+ {
+ MPX_DEBUG1("CMPXDbManager::CreateFilenameL - use RAMDisk");
+ TFileName path;
+ path.Append(iRAMDrive);
+ path.Append(_L(":"));
+ TBuf<2> d;
+ d.Append(aDrive.Name());
+ HBufC* temp = HBufC::NewLC(KMaxFileName);
+ temp->Des().Append(d.Left(1)); // attach original drive name
+ temp->Des().Append(iDbFile->Des());
+ filename->Des().Format(securefilePath, &path, User::Identity().iUid, temp);
+ MPX_DEBUG3("CMPXDbManager::CreateFilenameL - path=%S filename=%S", &path, filename);
+ CleanupStack::PopAndDestroy(temp);
+ }
+ else
+#endif //__RAMDISK_PERF_ENABLE
+ {
+ MPX_DEBUG1("CMPXDbManager::CreateFilenameL - use normal drive");
+ const TDesC& driveName = aDrive.Name();
+ filename->Des().Format(securefilePath, &driveName, User::Identity().iUid, iDbFile);
+
+ }
+
+ MPX_DEBUG2("CMPXDbManager::CreateFilenameL filename = %S", filename);
return filename;
}
@@ -1512,43 +1994,13 @@
MPX_DEBUG1("invalid driveId, leave with KErrNotReady");
User::Leave(KErrNotReady);
}
-
- // handle the case of C drive
- TDriveUnit drive(aDrive);
- TDriveUnit cdrive(KRootDrive());
-
- if(drive == cdrive)
- {
- if (SysUtil::DiskSpaceBelowCriticalLevelL(&iFs, 0, aDrive))
- {
- User::Leave(KErrDiskFull);
- }
-
- return;
- }
+
+#ifndef __RAMDISK_PERF_ENABLE
+
+ EnsureDiskSpaceL(aDrive);
+
+#endif //__RAMDISK_PERF_ENABLE
- // handle other drives (eg. removable EDriveE)
- TInt count(iDatabaseHandles.Count());
- for (TInt i = 0; i < count; ++i)
- {
-
- if (((KDbManagerAllDrives == aDrive) ||
- (aDrive == iDatabaseHandles[i].iDrive)) &&
- iDatabaseHandles[i].iOpen)
- {
- if (SysUtil::DiskSpaceBelowCriticalLevelL(&iFs, 0,
- iDatabaseHandles[i].iDrive))
- {
- User::Leave(KErrDiskFull);
- }
- }
-
- if (aDrive == iDatabaseHandles[i].iDrive)
- {
- // exit if just one drive to check
- break;
- }
- }
}
// ----------------------------------------------------------------------------
@@ -1984,7 +2436,24 @@
// remove old databases before creating/replacing new database
TInt driveNameLen = aDrive.Name().Length();
- TFileName dbFileName(aDrive.Name()); //initialise with drive name
+ TFileName dbFileName;
+
+#ifdef __RAMDISK_PERF_ENABLE
+ TInt index(GetDatabaseIndex((TInt)aDrive));
+ if( index >= 0 && iDatabaseHandles[index].iUseRAMdb )
+ {
+ dbFileName.Append(iRAMDrive); // RAM
+ dbFileName.Append(_L(":")); // RAM
+ }
+ else
+#endif //__RAMDISK_PERF_ENABLE
+ {
+ MPX_DEBUG1("CMPXDbManager::CreateDatabaseL - E:");
+ dbFileName.Append(aDrive.Name()); //initialise with drive name
+ }
+
+
+ MPX_DEBUG2("CMPXDbManager::CreateDatabaseL - dbFileName=%S", &dbFileName);
dbFileName.Append(KDBFilePath); // append private path
//append file name
@@ -2048,5 +2517,491 @@
CleanupStack::PopAndDestroy(filename);
CleanupStack::PopAndDestroy(&database);
}
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::GetRAMDiskPath
+// ---------------------------------------------------------------------------
+//
+TInt CMPXDbManager::GetRAMDiskPath()
+ {
+ TInt error = KErrNotSupported;
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::GetRAMDiskPath");
+ TDriveList driveList;
+ TBool ramDriveFound = EFalse;
+ TInt driveOffset = 'A';
+ iRAMFolder.Zero();
+
+ error = iFs.DriveList( driveList );
+ if ( error == KErrNone )
+ {
+ for ( TInt i = 0; i < driveList.Length(); i++ )
+ {
+ if ( driveList[i] != 0 )
+ {
+ TDriveInfo info;
+ TInt err = iFs.Drive( info, i );
+ if ( !err && info.iType == EMediaRam )
+ {
+ iRAMDrive = driveOffset + i;
+ iRAMFolder.Append(iRAMDrive);
+ iRAMFolder.Append(_L(":"));
+ iRAMFolder.Append(KDBFilePath);
+ ramDriveFound = ETrue;
+ MPX_DEBUG2("RAMDisk path=%S", &iRAMFolder);
+ break;
+ }
+ }
+ }
+
+ // Check if ram drive is found.
+ if ( !ramDriveFound )
+ {
+ error = KErrNotFound;
+ }
+ }
+ MPX_DEBUG2("CMPXDbManager::GetRAMDiskPath Get DriveList error=%d", error);
+ MPX_DEBUG1("<--CMPXDbManager::GetRAMDiskPath");
+#endif //__RAMDISK_PERF_ENABLE
+ return error;
+ }
+// ---------------------------------------------------------------------------
+// CMPXDbManager::IsRamDiskSpaceAvailable
+// ---------------------------------------------------------------------------
+//
+TBool CMPXDbManager::IsRamDiskSpaceAvailable()
+ {
+
+#ifdef __RAMDISK_PERF_ENABLE
+
+ MPX_DEBUG1("-->CMPXDbManager::IsDiskSpaceAvailable" );
+ TInt driveIndex;
+ RFs::CharToDrive(iRAMDrive, driveIndex);
+ TVolumeInfo vol;
+ TInt err = iFs.Volume( vol, driveIndex );
+ if ( err == KErrNone )
+ {
+ MPX_DEBUG2("CMPXDbManager::IsRamDiskSpaceAvailable Free in bytes =%Lu", vol.iFree);
+ if ( vol.iFree > KMPMinimumRAMSizeToRun )
+ {
+ MPX_DEBUG1("CMPXDbManager::IsRamDiskSpaceAvailable Ok to copy");
+ return ETrue;
+ }
+ MPX_DEBUG1("CMPXDbManager::IsRamDiskSpaceAvailable NOT Ok to copy");
+ return EFalse;
+ }
+
+ MPX_DEBUG2("CMPXDbManager::IsRamDiskSpaceAvailable Disk Not available to use. %d", err);
+ MPX_DEBUG1("<--CMPXDbManager::IsDiskSpaceAvailable");
+
+#endif //__RAMDISK_PERF_ENABLE
+
+ return EFalse;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::BlockDiskSpaceL
+// ---------------------------------------------------------------------------
+//
+TBool CMPXDbManager::BlockDiskSpace( TDriveUnit aDrive, TInt aOrigDbSize, TBool aIsMTPInUse )
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+
+ MPX_DEBUG2("-->CMPXDbManager::BlockDiskSpaceL %d", (TInt)aDrive );
+
+ // if current DB size can not fit in RAM, abort now
+ TInt ramDrive;
+ RFs::CharToDrive(iRAMDrive, ramDrive);
+ TVolumeInfo vol;
+ TInt err = iFs.Volume( vol, ramDrive );
+ if ( vol.iFree <= aOrigDbSize + KMPMinimumRAMSizeToRun )
+ {
+ MPX_DEBUG1("-->CMPXDbManager::BlockDiskSpaceL Not enough even for copy original DB file, leave" );
+ return EFalse;
+ }
+
+ // ensure you have the disk volume and database
+ err = iFs.Volume( vol, (TInt)aDrive );
+ if (err != KErrNone)
+ {
+ MPX_DEBUG2("CMPXDbManager::BlockDiskSpaceL Volume not available on drive %d", (TInt)aDrive);
+ return EFalse;
+ }
+
+ TInt index( GetDatabaseIndex((TInt)aDrive) );
+ if (index < 0)
+ {
+ MPX_DEBUG2("CMPXDbManager::BlockDiskSpaceL Database not available for drive %d", (TInt)aDrive);
+ return EFalse;
+ }
+
+ // Check if the drive has enough space to block
+ MPX_DEBUG2("CMPXDbManager::BlockDiskSpaceL Disk total free space in bytes =%Lu", vol.iFree);
+ TInt64 blockingSize( CalculateInitalDummyDBSize( vol, aOrigDbSize, aIsMTPInUse ));
+ MPX_DEBUG2("CMPXDbManager::BlockDiskSpaceL Disk blocking size =%Lu", blockingSize);
+ if ( vol.iFree <= blockingSize + 1*KMPMegaByte )
+ {
+ MPX_DEBUG1("CMPXDbManager::BlockDiskSpaceL NOk to block");
+ return EFalse;
+ }
+
+ // Create and resize the dummy file
+ TFileName dummyDbFileName;
+ TChar ch;
+ RFs::DriveToChar((TInt)aDrive, ch );
+ dummyDbFileName.Format( KDummyDbFile, (TUint)ch);
+ RFile dummyDb;
+ err = dummyDb.Replace( iFs, dummyDbFileName, EFileWrite );
+ if (err != KErrNone)
+ {
+ MPX_DEBUG2("CMPXDbManager::BlockDiskSpaceL Can't open dummy file %d", err);
+ return EFalse;
+ }
+ err = dummyDb.SetSize( blockingSize );
+ if ( err )
+ {
+ MPX_DEBUG2("CMPXDbManager::BlockDiskSpaceL Can't resize dummy file %d", err);
+ dummyDb.Close();
+ return EFalse;
+ }
+
+ dummyDb.Close();
+ MPX_DEBUG1("CMPXDbManager::BlockDiskSpaceL Ok to block");
+
+ iDatabaseHandles[index].iDummyFilePath.Copy(dummyDbFileName);
+ MPX_DEBUG1("<--CMPXDbManager::BlockDiskSpace");
+
+ return ETrue;
+#else
+ return EFalse;
+#endif //__RAMDISK_PERF_ENABLE
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::CalculateInitalDummyDBSizeL
+//
+//a) MTP case
+//-------------
+// totalNumOfSongsCanFit = <disk free space> / 2 MB;
+// metadataSize = totalNumOfSongsCanFit * 3000B
+// estimatedDBSize = metadataSize + <orig DB size>;
+// dummyDBSize = MIN (iMaximumAllowedRAMDiskSpaceToCopy , estimatedDBSize )
+
+//b) Harvesting case
+//-------------------
+// totalNumOfSongsCanFit = <disk total size>/ 2 MB
+// metadataSize = totalNumOfSongsCanFit * 3000B
+// estimatedSize = metadataSize+ <orig DB size>
+// freeDiskSpace = <disk free space> - 1 MB
+// dummyDBSize = MIN (freeDiskSpace, iMaximumAllowedRAMDiskSpaceToCopy , estimatedSize);
+//
+// ---------------------------------------------------------------------------
+//
+TInt64 CMPXDbManager::CalculateInitalDummyDBSize( const TVolumeInfo& aVol, TInt aOrigDbSize, TBool aIsMTPInUse )
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::CalculateInitalDummyDBSize");
+
+ if ( aIsMTPInUse )
+ {
+ TInt64 totalNumOfSongsCanFit = aVol.iFree / KMPEstimatedSongInBytes;
+ MPX_DEBUG2("-->CMPXDbManager::CalculateInitalDummyDBSize aVol.iFree=%Lu", aVol.iFree );
+ MPX_DEBUG2("-->CMPXDbManager::CalculateInitalDummyDBSize totalNumOfSongsCanFit=%Lu", totalNumOfSongsCanFit );
+ TInt64 estimatedSize = totalNumOfSongsCanFit * (TInt64) KMPEstimatedSizePerDBEntry + aOrigDbSize;
+ MPX_DEBUG2("-->CMPXDbManager::CalculateInitalDummyDBSize (MTP case) estimated DB size from calculation=%Lu", estimatedSize );
+ if ( estimatedSize > iMaximumAllowedRAMDiskSpaceToCopy )
+ {
+ MPX_DEBUG2("<--CMPXDbManager::CalculateInitalDummyDBSize returned iMaximumAllowedRAMDiskSpaceToCopy %d", iMaximumAllowedRAMDiskSpaceToCopy);
+ return iMaximumAllowedRAMDiskSpaceToCopy;
+ }
+ else
+ {
+ MPX_DEBUG2("<--CMPXDbManager::CalculateInitalDummyDBSize returned %Lu", estimatedSize );
+ return estimatedSize;
+ }
+ }
+ else
+ {
+ TInt64 totalNumOfSongsCanFit = aVol.iSize / KMPEstimatedSongInBytes;
+ TInt64 estimatedSize = totalNumOfSongsCanFit * (TInt64) KMPEstimatedSizePerDBEntry + aOrigDbSize;
+ MPX_DEBUG2("-->CMPXDbManager::CalculateInitalDummyDBSize estimated DB size from calculation=%Lu", estimatedSize );
+ if ( estimatedSize > iMaximumAllowedRAMDiskSpaceToCopy )
+ {
+ MPX_DEBUG1("<--CMPXDbManager::CalculateInitalDummyDBSize");
+ // If estimated size is larger than expected free RAM size,
+ // and if the RAM size is larger than free disk space,
+ // then use free disk space. 1*KMPMegaByte prevent MP to use up all diskspace
+ //return iMaximumAllowedRAMDiskSpaceToCopy > aVol.iFree - 1*KMPMegaByte
+ // ? aVol.iFree - 1*KMPMegaByte : iMaximumAllowedRAMDiskSpaceToCopy;
+ return iMaximumAllowedRAMDiskSpaceToCopy;
+ }
+ else
+ {
+ MPX_DEBUG1("<--CMPXDbManager::CalculateInitalDummyDBSize");
+ // If estimated size is larger than disk free size, use free diskspace size,
+ //return estimatedSize > aVol.iFree - 1*KMPMegaByte
+ // ? aVol.iFree - 1*KMPMegaByte : estimatedSize;
+ return estimatedSize;
+ }
+ }
+
+#endif //__RAMDISK_PERF_ENABLE
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::GetDatabaseIndex
+// ---------------------------------------------------------------------------
+//
+TInt CMPXDbManager::GetDatabaseIndex(TInt aDrive)
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG2("-->CMPXDbManager::GetDatabaseIndex %d", aDrive );
+ TInt count(iDatabaseHandles.Count());
+ for (TInt i = 0; i < count; ++i)
+ {
+ if ( iDatabaseHandles[i].iDrive == aDrive )
+ {
+ return i;
+ }
+ }
+#endif //__RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("<--CMPXDbManager::GetDatabaseIndex returned -1");
+ return -1;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::EnsureRamSpaceL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMPXDbManager::EnsureRamSpaceL()
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::EnsureRamSpaceL");
+
+ if ( iRAMInUse )
+ {
+ TVolumeInfo vol;
+ TInt driveIndex;
+ RFs::CharToDrive( iRAMDrive, driveIndex );
+
+ TInt errRAM = iFs.Volume( vol, driveIndex );
+ if ( errRAM == KErrNone && vol.iFree < KMPMinimumRAMSizeToRun )
+ {
+ // RAM not enough, copy back to normal drive and continue to harvest.
+ MPX_DEBUG1("CMPXDbManager::EnsureRamSpaceL RAM diskspace is full, copy dbs back");
+ CopyDBsFromRamL();
+ }
+ else
+ {
+ TInt size=0;
+ TInt err = GetTotalRamDatabasesSize(size);
+ if ( err || (size > iMaximumAllowedRAMDiskSpaceToCopy) )
+ {
+ // Databases using too much RAM space, copy back to normal drive and continue to harvest.
+ if ( err )
+ {
+ MPX_DEBUG2("CMPXDbManager::EnsureRamSpaceL Get DBs Size Err = %d, copy dbs back", err);
+ }
+ else
+ {
+ MPX_DEBUG2("CMPXDbManager::EnsureRamSpaceL DBs using too much RAM space size = %d, copy dbs back", size);
+ }
+ CopyDBsFromRamL();
+ }
+ }
+ }
+ MPX_DEBUG1("<--CMPXDbManager::EnsureRamSpaceL");
+#endif //__RAMDISK_PERF_ENABLE
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::EnsureDiskSpaceL
+// ---------------------------------------------------------------------------
+//
+void CMPXDbManager::EnsureDiskSpaceL(TInt aDrive)
+ {
+ MPX_DEBUG2("-->CMPXDbManager::EnsureDiskSpaceL for drive %d", aDrive);
+ // handle the case of C drive
+ TDriveUnit drive(aDrive);
+ TDriveUnit cdrive(KRootDrive());
+
+ if(drive == cdrive)
+ {
+ if (SysUtil::DiskSpaceBelowCriticalLevelL(&iFs, 0, aDrive))
+ {
+ MPX_DEBUG1("CMPXDbManager::EnsureDiskSpaceL Error diskspace full");
+ User::Leave(KErrDiskFull);
+ }
+
+ return;
+ }
+
+ // handle other drives (eg. removable EDriveE)
+ TInt count(iDatabaseHandles.Count());
+ for (TInt i = 0; i < count; ++i)
+ {
+ if (((KDbManagerAllDrives == aDrive) ||
+ (aDrive == iDatabaseHandles[i].iDrive)) &&
+ iDatabaseHandles[i].iOpen)
+ {
+ if (SysUtil::DiskSpaceBelowCriticalLevelL(&iFs, 0,
+ iDatabaseHandles[i].iDrive))
+ {
+ MPX_DEBUG1("CMPXDbManager::EnsureDiskSpaceL Error diskspace full");
+ User::Leave(KErrDiskFull);
+ }
+ }
+
+ if (aDrive == iDatabaseHandles[i].iDrive)
+ {
+ // exit if just one drive to check
+ break;
+ }
+ }
+ MPX_DEBUG1("<--CMPXDbManager::EnsureDiskSpaceL");
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::DoBackupDBs
+// ---------------------------------------------------------------------------
+//
+/*EXPORT_C void CMPXDbManager::BackupDBsL()
+ {
+#ifdef __RAMDISK_PERF_ENABLE
+ MPX_DEBUG1("-->CMPXDbManager::BackupDBsL");
+
+ TInt transactionCount = iTransactionCount;
+ if (iTransactionCount > 0)
+ {
+ iTransactionCount = 0;
+ DoCommitL();
+ }
+
+ TInt count(iDatabaseHandles.Count());
+ for (TInt i = 0; i < count && iDatabaseHandles[i].iUseRAMdb ; ++i)
+ {
+ CloseDatabaseL( iDatabaseHandles[i].iDrive );
+
+ TInt err= BaflUtils::CopyFile(iFs,
+ iDatabaseHandles[i].iTargetFullFilePath->Des(),
+ iDatabaseHandles[i].iOrigFullFilePath->Des());
+
+ MPX_DEBUG2("CMPXDbManager::BackupDBsL err = %d", err);
+
+ OpenDatabaseL( iDatabaseHandles[i].iDrive );
+ }
+
+ if (transactionCount > 0)
+ {
+ DoBeginL();
+ iTransactionCount = transactionCount;
+ }
+ MPX_DEBUG1("<--CMPXDbManager::BackupDBsL");
+#endif //__RAMDISK_PERF_ENABLE
+ }*/
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::GetTotalDatabasesSize
+// ---------------------------------------------------------------------------
+//
+TInt CMPXDbManager::GetTotalDatabasesSize(TInt& aSize)
+ {
+ MPX_FUNC("CMPXDbManager::GetTotalDatabasesSize");
+ TInt err = KErrNotSupported;
+#ifdef __RAMDISK_PERF_ENABLE
+ TInt size=0;
+ TInt count(iDatabaseHandles.Count());
+ err = KErrNone;
+ for ( TInt i = 0; i < count ; ++i )
+ {
+ // Generate database name.
+ TFileName dbFilename;
+ TDriveUnit drive(iDatabaseHandles[i].iDrive);
+ dbFilename.Append(drive.Name());
+ dbFilename.Append(KDBFilePath);
+ TFileName filename;
+ filename.Format(KSecurePath, User::Identity().iUid, iDbFile); //x:\private\10281e17\[sldfdsf]mpxv2_5.db
+ dbFilename.Append(filename);
+ MPX_DEBUG2("CMPXDbManager::GetTotalDatabasesSize - Database name = %S", &dbFilename);
+ TEntry entry;
+ err = iFs.Entry( dbFilename, entry );
+ if (err == KErrNotFound || err == KErrNotReady )
+ {
+ MPX_DEBUG3("CMPXDbManager::GetTotalDatabasesSize - Ignored %S, error = %d", &dbFilename, err);
+ err = KErrNone;
+ continue;
+ }
+ if ( err != KErrNone )
+ {
+ break;
+ }
+ MPX_DEBUG3("CMPXDbManager::GetTotalDatabasesSize - Size of Db %S = %d", &dbFilename, entry.iSize);
+ // sum up size
+ size += entry.iSize;
+ }
+ aSize = size;
+ MPX_DEBUG2("CMPXDbManager::GetTotalDatabasesSize - Total Size of Dbs = %d", size);
+
+#endif //__RAMDISK_PERF_ENABLE
+ MPX_DEBUG2("CMPXDbManager::GetTotalDatabasesSize - Return err = %d", err);
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CMPXDbManager::GetTotalRamDatabasesSize
+// ---------------------------------------------------------------------------
+//
+TInt CMPXDbManager::GetTotalRamDatabasesSize(TInt& aSize)
+ {
+ MPX_FUNC("CMPXDbManager::GetTotalRamDatabasesSize");
+ TInt err = KErrNotSupported;
+#ifdef __RAMDISK_PERF_ENABLE
+ TInt size=0;
+ TInt count(iDatabaseHandles.Count());
+ err = KErrNone;
+ for ( TInt i = 0; i < count ; ++i )
+ {
+ // make sure this db is in ram drive.
+ if ( !iDatabaseHandles[i].iUseRAMdb )
+ {
+ continue;
+ }
+ // Generate database name.
+ TFileName dbFilename;
+ dbFilename.Append(iRAMFolder);
+ TBuf<2> d;
+ TDriveUnit drive(iDatabaseHandles[i].iDrive);
+ d.Append(drive.Name());
+ HBufC* temp = HBufC::NewLC(KMaxFileName);
+ temp->Des().Append(d.Left(1));
+ temp->Des().Append(iDbFile->Des());
+ TFileName filename;
+ filename.Format(KSecurePath, User::Identity().iUid, temp);
+ CleanupStack::PopAndDestroy(temp);
+ dbFilename.Append(filename);
+ MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSize - Database name = %S", &dbFilename);
+ TEntry entry;
+ err = iFs.Entry( dbFilename, entry );
+ if ( (err != KErrNone) && (err != KErrNotFound) )
+ {
+ break;
+ }
+ MPX_DEBUG3("CMPXDbManager::GetTotalRamDatabasesSize - Size of Db %S = %d", &dbFilename, entry.iSize);
+ // sum up size
+ size += entry.iSize;
+ }
+ aSize = size;
+ MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSize - Total Size of Dbs = %d", size);
+#endif //__RAMDISK_PERF_ENABLE
+ MPX_DEBUG2("CMPXDbManager::GetTotalRamDatabasesSize - Return err = %d", err);
+ return err;
+ }
+
// End of File
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbtable.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbtable.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -764,6 +764,41 @@
}
// ----------------------------------------------------------------------------
+// CMPXDbTable::ExecuteSumExQueryL
+// ----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMPXDbTable::ExecuteSumExQueryL(
+ const TDesC& aQuery,
+ TUint32 aPlaylistId,
+ TInt aDrive)
+ {
+ MPX_FUNC("CMPXDbTable::ExecuteSumExQueryL");
+
+ HBufC* query = HBufC::NewLC(aQuery.Length() + KMCIntegerLen);
+ query->Des().Format(aQuery, aPlaylistId);
+
+ RSqlStatement recordset(iDbManager.ExecuteSelectQueryOnAllDrivesL(aDrive, *query));
+ CleanupClosePushL(recordset);
+
+ TInt sum(0);
+ TInt err(KErrNone);
+ while ((err = recordset.Next()) == KSqlAtRow)
+ {
+ sum += recordset.ColumnInt64(KMPXTableDefaultIndex);
+ }
+
+ CleanupStack::PopAndDestroy(&recordset);
+ CleanupStack::PopAndDestroy(query);
+
+ if (err != KSqlAtEnd)
+ {
+ User::Leave(KErrCorrupt);
+ }
+
+ return sum;
+ }
+
+// ----------------------------------------------------------------------------
// CMPXDbTable::ExecuteMediaQueryL
// ----------------------------------------------------------------------------
//
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/group/mpxsqlitedbhgplugin.mmp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/group/mpxsqlitedbhgplugin.mmp Fri Feb 19 22:48:30 2010 +0200
@@ -32,6 +32,8 @@
MACRO __ENABLE_PODCAST_IN_MUSIC_MENU
#define __ENABLE_PODCAST_IN_MUSIC_MENU
//MACRO RD_MPX_COLLECTION_CACHE
+MACRO __RAMDISK_PERF_ENABLE
+#define __RAMDISK_PERF_ENABLE
SOURCEPATH ../src
SOURCE mpxdbplugin.cpp
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbhandler.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbhandler.h Fri Feb 19 22:48:30 2010 +0200
@@ -1009,6 +1009,7 @@
* @see MMPXDbPlaylistObserver
*/
virtual TInt HandlePlaylistDurationL(TUint32 aPlaylistId);
+ virtual void HandlePlaylistInfoL(TUint32 aPlaylistId, TInt& aCount, TInt& aDuration);
private:
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbplaylist.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbplaylist.h Fri Feb 19 22:48:30 2010 +0200
@@ -44,6 +44,7 @@
{
public:
virtual TInt HandlePlaylistDurationL(TUint32 aPlaylistId) = 0;
+ virtual void HandlePlaylistInfoL(TUint32 aPlaylistId, TInt& aCount, TInt& aDuration) = 0;
};
class CMPXDbPlaylist : public CMPXDbTable
{
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbplaylistsongs.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbplaylistsongs.h Fri Feb 19 22:48:30 2010 +0200
@@ -216,9 +216,10 @@
/**
* Get the number of songs for a playlist
* @param aPlaylistId identifies the playlist
+ * @param aDriveId identifies the database to be query
* @return number of songs
*/
- TInt CountL(TUint32 aPlaylistId);
+ TInt CountL(TUint32 aPlaylistId, TInt aDriveId);
private:
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbpluginqueries.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/inc/mpxdbpluginqueries.h Fri Feb 19 22:48:30 2010 +0200
@@ -283,7 +283,7 @@
_LIT(KQueryPlaylistSongsDeleteForCategory, "DELETE FROM :dbname.PlaylistSongs WHERE PlaylistSongs.SongId=Music.UniqueId AND Music.%S=%u");
_LIT(KQueryPlaylistSongsDeleteForArtistAlbum, "DELETE FROM :dbname.PlaylistSongs WHERE PlaylistSongs.SongId=Music.UniqueId AND Music.Artist=%u AND Music.Album=%u");
-_LIT(KQueryPlaylistSongsCount, "SELECT count(*) FROM :dbname.PlaylistSongs WHERE PlaylistId=%u");
+_LIT(KQueryPlaylistSongsCount, "SELECT count(*) FROM :dbname.music as m,:pldbname.Playlistsongs as pl WHERE pl.PlaylistId=%u AND m.UniqueId=pl.SongId AND m.Deleted=0");
_LIT(KQueryPlaylistSongsPlaylistSongCount, "SELECT count(*) FROM :dbname.PlaylistSongs WHERE PlaylistId=%u AND SongId=%u");
_LIT(KQueryPlaylistSongsSongCount, "SELECT count(*) FROM :dbname.PlaylistSongs WHERE SongId=%u");
_LIT(KQueryPlaylistSongsGetSongs, "SELECT UniqueId,SongId,Ordinal FROM :dbname.PlaylistSongs WHERE PlaylistId=%u ORDER BY Ordinal");
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -1356,6 +1356,9 @@
}
}
+#ifdef __RAMDISK_PERF_ENABLE
+ iDbManager->CopyDBsToRamL();
+#endif //__RAMDISK_PERF_ENABLE
iDbMusic->RefreshStartL();
BeginTransactionL();
@@ -1386,6 +1389,10 @@
{
iSynchronizeBasicTable = EFalse;
}
+
+#ifdef __RAMDISK_PERF_ENABLE
+ iDbManager->CopyDBsFromRamL();
+#endif //__RAMDISK_PERF_ENABLE
}
// ----------------------------------------------------------------------------
@@ -1394,9 +1401,20 @@
//
void CMPXDbHandler::MtpStartL()
{
+ MPX_DEBUG1("-->CMPXDbHandler::MtpStartL");
iMtpInUse = ETrue;
iOpOnDbCount = 0;
+
+#ifdef __RAMDISK_PERF_ENABLE
+ TRAPD(err, iDbManager->CopyDBsToRamL(iMtpInUse));
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("CMPXDbHandler::MtpStartL error=%d", err);
+ }
+#endif //__RAMDISK_PERF_ENABLE
+
iDbManager->BeginL();
+ MPX_DEBUG1("<--CMPXDbHandler::MtpStartL");
}
// ----------------------------------------------------------------------------
@@ -1405,9 +1423,20 @@
//
void CMPXDbHandler::MtpEndL()
{
+ MPX_DEBUG1("-->CMPXDbHandler::MtpEndL");
iMtpInUse = EFalse;
iOpOnDbCount = 0;
iDbManager->CommitL();
+
+#ifdef __RAMDISK_PERF_ENABLE
+ TRAPD(err, iDbManager->CopyDBsFromRamL());
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("CMPXDbHandler::MtpEndL error=%d", err);
+ }
+#endif //__RAMDISK_PERF_ENABLE
+
+ MPX_DEBUG1("<--CMPXDbHandler::MtpEndL");
}
// ----------------------------------------------------------------------------
@@ -1489,6 +1518,16 @@
{
MPX_FUNC("CMPXDbHandler::BeginTransactionL");
+#ifdef __RAMDISK_PERF_ENABLE
+ // EnsureRamSpaceL will copy dbs from ram if ram space is low or dbs exceeded
+ // max space.
+ TRAPD(err, iDbManager->EnsureRamSpaceL());
+ if (err)
+ {
+ //error but continue
+ }
+#endif //__RAMDISK_PERF_ENABLE
+
if(!iMtpInUse)
{
iDbManager->BeginL();
@@ -2938,6 +2977,37 @@
{
return GetPlaylistDurationL(aPlaylistId);
}
+void CMPXDbHandler::HandlePlaylistInfoL(
+ TUint32 aPlaylistId,
+ TInt& aCount,
+ TInt& aDuration)
+ {
+ MPX_FUNC("CMPXDbHandler::HandlePlaylistInfoL");
+ MPX_DEBUG2("CMPXDbHandler::HandlePlaylistInfoL(0x%x)", aPlaylistId);
+
+ RArray<TMPXAttribute> attributes;
+ CleanupClosePushL(attributes);
+ attributes.AppendL(KMPXMediaGeneralId);
+ attributes.AppendL(TMPXAttribute(KMPXMediaIdGeneral, EMPXMediaGeneralDuration));
+
+ CMPXMediaArray* mediaArray = CMPXMediaArray::NewL();
+ CleanupStack::PushL(mediaArray);
+
+ GetPlaylistSongsL(aPlaylistId, attributes.Array(), *mediaArray);
+
+ aCount = mediaArray->Count();
+ for (TInt index = 0; index < aCount; ++index)
+ {
+ CMPXMedia* media((*mediaArray)[index]);
+ if (media->IsSupported(KMPXMediaGeneralDuration))
+ {
+ aDuration += media->ValueTObjectL<TInt>(KMPXMediaGeneralDuration);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(mediaArray);
+ CleanupStack::PopAndDestroy(&attributes);
+ }
TInt CMPXDbHandler::HandleGetAlbumsCountForArtistL(TUint32 aArtistId)
{
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbmusic.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbmusic.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -1570,6 +1570,13 @@
}
}
+ if (attributeId & EMPXMediaGeneralMimeType)
+ {
+ const TDesC& mimeTypeText( aMedia.ValueText(KMPXMediaGeneralMimeType) );
+ MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicMimeType, mimeTypeText);
+ MPX_DEBUG2(" MimeType[%S]", &mimeTypeText);
+ }
+
if (attributeId & EMPXMediaGeneralUri)
{
const TDesC& uri = aMedia.ValueText(KMPXMediaGeneralUri);
@@ -1586,12 +1593,14 @@
MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicLocation,
uri.Mid(KMCPathStartPos));
MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicDRM, DRMTypeL(uri));
+ MPX_DEBUG3(" VolumeId[%u] Location[%S]", volId, &uri);
- const TDesC& mimeTypeText(MPXDbCommonUtil::GetMimeTypeForUriL(uri).Des());
- MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicMimeType, mimeTypeText);
-
- MPX_DEBUG3(" VolumeId[%u] Location[%S]", volId, &uri);
- MPX_DEBUG2(" MimeType[%S]", &mimeTypeText);
+ if (!aMedia.IsSupported(KMPXMediaGeneralMimeType))
+ {
+ TBuf< KMaxDataTypeLength > mimeTypeText(MPXDbCommonUtil::GetMimeTypeForUriL(uri).Des());
+ MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicMimeType, mimeTypeText);
+ MPX_DEBUG2(" MimeType[%S]", &mimeTypeText);
+ }
if (!aMusicTable && !aMedia.IsSupported(KMPXMediaGeneralTitle))
{
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplaylist.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplaylist.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -563,12 +563,18 @@
{
// Setup basic info - with first record of a group
TUint32 playlistId(recordset.ColumnInt64(EPlaylistUniqueId));
+ TUint32 volId(recordset.ColumnInt64(EPlaylistVolumeId));
+ TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
TBool valid(ETrue);
TInt songCount(-1);
if (criteriaCounterSet)
{
- songCount = iPlaylistSongs->CountL(playlistId);
+ if (driveId >= 0)
+ {
+ //valid disk
+ songCount = iPlaylistSongs->CountL(playlistId, driveId);
+ }
valid = (criteriaCounter == songCount);
}
@@ -703,6 +709,8 @@
TUint32 playlistId(aRecord.ColumnInt64(EPlaylistUniqueId));
TInt count(aAttrs.Count());
+ TUint32 volId(aRecord.ColumnInt64(EPlaylistVolumeId));
+ TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
for (TInt i = 0; i < count; ++i)
{
TInt contentId(aAttrs[i].ContentId());
@@ -730,8 +738,6 @@
(attributeId & EMPXMediaGeneralDrive) ||
(attributeId & EMPXMediaGeneralFlags))
{
- TUint32 volId(aRecord.ColumnInt64(EPlaylistVolumeId));
- TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
// LTAN-7GH6BZ, crash if eject memory card when adding song to existing playlist
// due to special timing issue, it is possible drive number is -1 and create a
@@ -798,22 +804,27 @@
} // end if contentId == KMPXMediaIdGeneral
} // end for
+ TInt plSongCount(0);
+ TInt plSongDuration(0);
if (countRequested)
{
- TInt count = iPlaylistSongs->CountL(playlistId);
+ if (driveId >= 0)
+ {
+ //valid disk
+ iObserver.HandlePlaylistInfoL(playlistId, plSongCount, plSongDuration);
+ }
aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralCount,
- count );
-
+ plSongCount );
+
MPX_DEBUG1(" EMPXMediaGeneralCount");
- MPX_DEBUG2(" Count[%d]", count);
+ MPX_DEBUG2(" Count[%d]", plSongCount);
}
if (durationRequested)
{
- TInt duration = iObserver.HandlePlaylistDurationL(playlistId);
- aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralDuration, duration);
-
- MPX_DEBUG1(" EMPXMediaGeneralDuration");
- MPX_DEBUG2(" Duration[%d]", duration);
+ aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralDuration, plSongDuration);
+
+ MPX_DEBUG1(" EMPXMediaGeneralDuration");
+ MPX_DEBUG2(" Duration[%d]", plSongDuration);
}
aMedia.SetTObjectValueL<TMPXGeneralType>(KMPXMediaGeneralType, EMPXItem);
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplaylistsongs.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplaylistsongs.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -120,7 +120,12 @@
TInt aDriveId)
{
MPX_FUNC("CMPXDbPlaylistSongs::AddSongL");
- return AddSongL(aPlaylistId, CountL(aPlaylistId), aMedia, aDriveId);
+ TInt count(0);
+ if (aDriveId >= 0)
+ {
+ count = CountL(aPlaylistId, aDriveId);
+ }
+ return AddSongL(aPlaylistId, count, aMedia, aDriveId);
}
// ----------------------------------------------------------------------------
@@ -631,10 +636,11 @@
// ----------------------------------------------------------------------------
//
TInt CMPXDbPlaylistSongs::CountL(
- TUint32 aPlaylistId)
+ TUint32 aPlaylistId,
+ TInt aDriveId)
{
MPX_FUNC("CMPXDbPlaylist::CountL");
- return ExecuteSumQueryL(KQueryPlaylistSongsCount, aPlaylistId);
+ return ExecuteSumExQueryL(KQueryPlaylistSongsCount, aPlaylistId, aDriveId);
}
// ----------------------------------------------------------------------------
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplugin.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbplugin.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -1291,8 +1291,7 @@
{
MPXDbCommonUtil::PrependMediaL(*aArray, *iShuffleAllText,
EMPXItem, EMPXCommand, 0, 0, 0, 1);
- aArray->AtL(1)->SetTObjectValueL(KMPXMediaColDetailNumberOfItems,
- iDbHandler->NumberOfItemsL(EMPXSong));
+ aArray->AtL(1)->SetTObjectValueL(KMPXMediaColDetailNumberOfItems, 0);
TInt pPath(0);
CMPXMedia* pMedia = aArray->AtL(0);
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/group/mpxsqlitedbplugin.mmp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/group/mpxsqlitedbplugin.mmp Fri Feb 19 22:48:30 2010 +0200
@@ -32,6 +32,8 @@
MACRO __ENABLE_PODCAST_IN_MUSIC_MENU
#define __ENABLE_PODCAST_IN_MUSIC_MENU
//MACRO RD_MPX_COLLECTION_CACHE
+MACRO __RAMDISK_PERF_ENABLE
+#define __RAMDISK_PERF_ENABLE
SOURCEPATH ../src
SOURCE mpxdbplugin.cpp
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbhandler.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbhandler.h Fri Feb 19 22:48:30 2010 +0200
@@ -1009,6 +1009,7 @@
* @see MMPXDbPlaylistObserver
*/
virtual TInt HandlePlaylistDurationL(TUint32 aPlaylistId);
+ virtual void HandlePlaylistInfoL(TUint32 aPlaylistId, TInt& aCount, TInt& aDuration);
private:
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbplaylist.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbplaylist.h Fri Feb 19 22:48:30 2010 +0200
@@ -44,6 +44,7 @@
{
public:
virtual TInt HandlePlaylistDurationL(TUint32 aPlaylistId) = 0;
+ virtual void HandlePlaylistInfoL(TUint32 aPlaylistId, TInt& aCount, TInt& aDuration) = 0;
};
class CMPXDbPlaylist : public CMPXDbTable
{
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbplaylistsongs.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbplaylistsongs.h Fri Feb 19 22:48:30 2010 +0200
@@ -216,9 +216,10 @@
/**
* Get the number of songs for a playlist
* @param aPlaylistId identifies the playlist
+ * @param aDriveId identifies the database to be query
* @return number of songs
*/
- TInt CountL(TUint32 aPlaylistId);
+ TInt CountL(TUint32 aPlaylistId, TInt aDriveId);
private:
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbpluginqueries.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/inc/mpxdbpluginqueries.h Fri Feb 19 22:48:30 2010 +0200
@@ -283,7 +283,7 @@
_LIT(KQueryPlaylistSongsDeleteForCategory, "DELETE FROM :dbname.PlaylistSongs WHERE PlaylistSongs.SongId=Music.UniqueId AND Music.%S=%u");
_LIT(KQueryPlaylistSongsDeleteForArtistAlbum, "DELETE FROM :dbname.PlaylistSongs WHERE PlaylistSongs.SongId=Music.UniqueId AND Music.Artist=%u AND Music.Album=%u");
-_LIT(KQueryPlaylistSongsCount, "SELECT count(*) FROM :dbname.PlaylistSongs WHERE PlaylistId=%u");
+_LIT(KQueryPlaylistSongsCount, "SELECT count(*) FROM :dbname.music as m,:pldbname.Playlistsongs as pl WHERE pl.PlaylistId=%u AND m.UniqueId=pl.SongId AND m.Deleted=0");
_LIT(KQueryPlaylistSongsPlaylistSongCount, "SELECT count(*) FROM :dbname.PlaylistSongs WHERE PlaylistId=%u AND SongId=%u");
_LIT(KQueryPlaylistSongsSongCount, "SELECT count(*) FROM :dbname.PlaylistSongs WHERE SongId=%u");
_LIT(KQueryPlaylistSongsGetSongs, "SELECT UniqueId,SongId,Ordinal FROM :dbname.PlaylistSongs WHERE PlaylistId=%u ORDER BY Ordinal");
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbhandler.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbhandler.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -1356,6 +1356,9 @@
}
}
+#ifdef __RAMDISK_PERF_ENABLE
+ iDbManager->CopyDBsToRamL();
+#endif //__RAMDISK_PERF_ENABLE
iDbMusic->RefreshStartL();
BeginTransactionL();
@@ -1386,6 +1389,10 @@
{
iSynchronizeBasicTable = EFalse;
}
+
+#ifdef __RAMDISK_PERF_ENABLE
+ iDbManager->CopyDBsFromRamL();
+#endif //__RAMDISK_PERF_ENABLE
}
// ----------------------------------------------------------------------------
@@ -1394,9 +1401,20 @@
//
void CMPXDbHandler::MtpStartL()
{
+ MPX_DEBUG1("-->CMPXDbHandler::MtpStartL");
iMtpInUse = ETrue;
iOpOnDbCount = 0;
+
+#ifdef __RAMDISK_PERF_ENABLE
+ TRAPD(err, iDbManager->CopyDBsToRamL(iMtpInUse));
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("CMPXDbHandler::MtpStartL error=%d", err);
+ }
+#endif //__RAMDISK_PERF_ENABLE
+
iDbManager->BeginL();
+ MPX_DEBUG1("<--CMPXDbHandler::MtpStartL");
}
// ----------------------------------------------------------------------------
@@ -1405,9 +1423,20 @@
//
void CMPXDbHandler::MtpEndL()
{
+ MPX_DEBUG1("-->CMPXDbHandler::MtpEndL");
iMtpInUse = EFalse;
iOpOnDbCount = 0;
iDbManager->CommitL();
+
+#ifdef __RAMDISK_PERF_ENABLE
+ TRAPD(err, iDbManager->CopyDBsFromRamL());
+ if ( err != KErrNone )
+ {
+ MPX_DEBUG2("CMPXDbHandler::MtpEndL error=%d", err);
+ }
+#endif //__RAMDISK_PERF_ENABLE
+
+ MPX_DEBUG1("<--CMPXDbHandler::MtpEndL");
}
// ----------------------------------------------------------------------------
@@ -1489,6 +1518,16 @@
{
MPX_FUNC("CMPXDbHandler::BeginTransactionL");
+#ifdef __RAMDISK_PERF_ENABLE
+ // EnsureRamSpaceL will copy dbs from ram if ram space is low or dbs exceeded
+ // max space.
+ TRAPD(err, iDbManager->EnsureRamSpaceL());
+ if (err)
+ {
+ //error but continue
+ }
+#endif //__RAMDISK_PERF_ENABLE
+
if(!iMtpInUse)
{
iDbManager->BeginL();
@@ -2938,6 +2977,37 @@
{
return GetPlaylistDurationL(aPlaylistId);
}
+void CMPXDbHandler::HandlePlaylistInfoL(
+ TUint32 aPlaylistId,
+ TInt& aCount,
+ TInt& aDuration)
+ {
+ MPX_FUNC("CMPXDbHandler::HandlePlaylistInfoL");
+ MPX_DEBUG2("CMPXDbHandler::HandlePlaylistInfoL(0x%x)", aPlaylistId);
+
+ RArray<TMPXAttribute> attributes;
+ CleanupClosePushL(attributes);
+ attributes.AppendL(KMPXMediaGeneralId);
+ attributes.AppendL(TMPXAttribute(KMPXMediaIdGeneral, EMPXMediaGeneralDuration));
+
+ CMPXMediaArray* mediaArray = CMPXMediaArray::NewL();
+ CleanupStack::PushL(mediaArray);
+
+ GetPlaylistSongsL(aPlaylistId, attributes.Array(), *mediaArray);
+
+ aCount = mediaArray->Count();
+ for (TInt index = 0; index < aCount; ++index)
+ {
+ CMPXMedia* media((*mediaArray)[index]);
+ if (media->IsSupported(KMPXMediaGeneralDuration))
+ {
+ aDuration += media->ValueTObjectL<TInt>(KMPXMediaGeneralDuration);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(mediaArray);
+ CleanupStack::PopAndDestroy(&attributes);
+ }
TInt CMPXDbHandler::HandleGetAlbumsCountForArtistL(TUint32 aArtistId)
{
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbmusic.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbmusic.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -1570,6 +1570,13 @@
}
}
+ if (attributeId & EMPXMediaGeneralMimeType)
+ {
+ const TDesC& mimeTypeText( aMedia.ValueText(KMPXMediaGeneralMimeType) );
+ MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicMimeType, mimeTypeText);
+ MPX_DEBUG2(" MimeType[%S]", &mimeTypeText);
+ }
+
if (attributeId & EMPXMediaGeneralUri)
{
const TDesC& uri = aMedia.ValueText(KMPXMediaGeneralUri);
@@ -1586,12 +1593,14 @@
MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicLocation,
uri.Mid(KMCPathStartPos));
MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicDRM, DRMTypeL(uri));
+ MPX_DEBUG3(" VolumeId[%u] Location[%S]", volId, &uri);
- const TDesC& mimeTypeText(MPXDbCommonUtil::GetMimeTypeForUriL(uri).Des());
- MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicMimeType, mimeTypeText);
-
- MPX_DEBUG3(" VolumeId[%u] Location[%S]", volId, &uri);
- MPX_DEBUG2(" MimeType[%S]", &mimeTypeText);
+ if (!aMedia.IsSupported(KMPXMediaGeneralMimeType))
+ {
+ TBuf< KMaxDataTypeLength > mimeTypeText(MPXDbCommonUtil::GetMimeTypeForUriL(uri).Des());
+ MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicMimeType, mimeTypeText);
+ MPX_DEBUG2(" MimeType[%S]", &mimeTypeText);
+ }
if (!aMusicTable && !aMedia.IsSupported(KMPXMediaGeneralTitle))
{
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylist.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylist.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -563,12 +563,18 @@
{
// Setup basic info - with first record of a group
TUint32 playlistId(recordset.ColumnInt64(EPlaylistUniqueId));
+ TUint32 volId(recordset.ColumnInt64(EPlaylistVolumeId));
+ TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
TBool valid(ETrue);
TInt songCount(-1);
if (criteriaCounterSet)
{
- songCount = iPlaylistSongs->CountL(playlistId);
+ if (driveId >= 0)
+ {
+ //valid disk
+ songCount = iPlaylistSongs->CountL(playlistId, driveId);
+ }
valid = (criteriaCounter == songCount);
}
@@ -703,6 +709,8 @@
TUint32 playlistId(aRecord.ColumnInt64(EPlaylistUniqueId));
TInt count(aAttrs.Count());
+ TUint32 volId(aRecord.ColumnInt64(EPlaylistVolumeId));
+ TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
for (TInt i = 0; i < count; ++i)
{
TInt contentId(aAttrs[i].ContentId());
@@ -730,8 +738,6 @@
(attributeId & EMPXMediaGeneralDrive) ||
(attributeId & EMPXMediaGeneralFlags))
{
- TUint32 volId(aRecord.ColumnInt64(EPlaylistVolumeId));
- TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
// LTAN-7GH6BZ, crash if eject memory card when adding song to existing playlist
// due to special timing issue, it is possible drive number is -1 and create a
@@ -798,22 +804,27 @@
} // end if contentId == KMPXMediaIdGeneral
} // end for
+ TInt plSongCount(0);
+ TInt plSongDuration(0);
if (countRequested)
{
- TInt count = iPlaylistSongs->CountL(playlistId);
+ if (driveId >= 0)
+ {
+ //valid disk
+ iObserver.HandlePlaylistInfoL(playlistId, plSongCount, plSongDuration);
+ }
aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralCount,
- count );
+ plSongCount );
MPX_DEBUG1(" EMPXMediaGeneralCount");
- MPX_DEBUG2(" Count[%d]", count);
+ MPX_DEBUG2(" Count[%d]", plSongCount);
}
if (durationRequested)
{
- TInt duration = iObserver.HandlePlaylistDurationL(playlistId);
- aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralDuration, duration);
+ aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralDuration, plSongDuration);
MPX_DEBUG1(" EMPXMediaGeneralDuration");
- MPX_DEBUG2(" Duration[%d]", duration);
+ MPX_DEBUG2(" Duration[%d]", plSongDuration);
}
aMedia.SetTObjectValueL<TMPXGeneralType>(KMPXMediaGeneralType, EMPXItem);
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylistsongs.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylistsongs.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -120,7 +120,12 @@
TInt aDriveId)
{
MPX_FUNC("CMPXDbPlaylistSongs::AddSongL");
- return AddSongL(aPlaylistId, CountL(aPlaylistId), aMedia, aDriveId);
+ TInt count(0);
+ if (aDriveId >= 0)
+ {
+ count = CountL(aPlaylistId, aDriveId);
+ }
+ return AddSongL(aPlaylistId, count, aMedia, aDriveId);
}
// ----------------------------------------------------------------------------
@@ -631,10 +636,11 @@
// ----------------------------------------------------------------------------
//
TInt CMPXDbPlaylistSongs::CountL(
- TUint32 aPlaylistId)
+ TUint32 aPlaylistId,
+ TInt aDriveId)
{
MPX_FUNC("CMPXDbPlaylist::CountL");
- return ExecuteSumQueryL(KQueryPlaylistSongsCount, aPlaylistId);
+ return ExecuteSumExQueryL(KQueryPlaylistSongsCount, aPlaylistId, aDriveId);
}
// ----------------------------------------------------------------------------
--- a/mpxplugins/viewplugins/plugins/podcastplaybackviewplugin/data/101ffcb9.rss Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/plugins/podcastplaybackviewplugin/data/101ffcb9.rss Fri Feb 19 22:48:30 2010 +0200
@@ -70,7 +70,6 @@
opaque_data = "<p>0x101FFC06;0x101FFC3C</p>"
"<t>0x101FFCA0;</t>"
"<a>0x102072C3;</a>"
- "<f>0x0003</f>"
"<i>"EMPXViewPluginPriorityLowest"</i>";
}
};
--- a/mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewimp.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/collectionview/src/mpxcollectionviewimp.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -107,7 +107,6 @@
#include <e32property.h>
#include <mpxfindinmusicshop.h>
#include <mpxfindinmusicshopcommon.h> // KFindInMShopKeyInValid
-#include <MusicWapCenRepKeys.h>
#include <mpxcollectionopenutility.h>
// cenrep key need to be checked whether USB cable is connected in MTP/Combined Mode
@@ -625,29 +624,24 @@
TInt usbStatus;
RProperty::Get(KPSUidUsbWatcher, KUsbWatcherSelectedPersonality, usbStatus);
-
- // if object doesn't exist or the usb doesn't connect
- if(( retval2 != KErrAlreadyExists )
- || ( usbStatus != KUsbPersonalityIdPCSuite
- || usbStatus != KUsbPersonalityIdMS
- || usbStatus != KUsbPersonalityIdPTP
- || usbStatus != KUsbPersonalityIdMTP
- || usbStatus != KUsbPersonalityIdPCSuiteMTP ))
- {
+ // Whenever usb is connected
+ if ( usbStatus == KUsbPersonalityIdMTP
+ || usbStatus == KUsbPersonalityIdMS
+ || usbStatus == KUsbPersonalityIdPTP
+ || usbStatus == KUsbPersonalityIdPCSuiteMTP
+ || usbStatus == KUsbPersonalityIdPCSuite )
+ {
RProperty::Set( KMPXViewPSUid,
- KMPXUSBUnblockingPSStatus,
+ KMPXUSBUnblockingPSStatus,
+ EMPXUSBUnblockingPSStatusActive);
+ }
+ else
+ {
+ RProperty::Set( KMPXViewPSUid,
+ KMPXUSBUnblockingPSStatus,
EMPXUSBUnblockingPSStatusUninitialized );
- }
- // if usb mode is in MTP mode or pc suite mode
- else if ( usbStatus == KUsbPersonalityIdMTP
- || usbStatus == KUsbPersonalityIdPCSuiteMTP
- || usbStatus == KUsbPersonalityIdPCSuite )
- {
- RProperty::Set( KMPXViewPSUid,
- KMPXUSBUnblockingPSStatus,
- EMPXUSBUnblockingPSStatusActive );
- }
- }
+ }
+ }
// ---------------------------------------------------------------------------
// Delete the selected items
@@ -6031,6 +6025,7 @@
aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
}
break;
}
--- a/mpxplugins/viewplugins/views/collectionviewhg/group/mpxcollectionviewhg.mmp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/collectionviewhg/group/mpxcollectionviewhg.mmp Fri Feb 19 22:48:30 2010 +0200
@@ -101,7 +101,9 @@
LIBRARY featmgr.lib
// Cover UI end
+#ifdef IAD_INCLUDE_BACKSTEPPING
LIBRARY mpxbacksteppingutility.lib
+#endif // IAD_INCLUDE_BACKSTEPPING
// Added by Harri for Hurriganes MediaWall mod
LIBRARY ws32.lib
--- a/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgimp.h Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/collectionviewhg/inc/mpxcollectionviewhgimp.h Fri Feb 19 22:48:30 2010 +0200
@@ -53,7 +53,11 @@
class CMediatorCommandInitiator;
class CSendUi;
class CUpnpCopyCommand;
+
+#ifdef BACKSTEPPING_INCLUDED
class MMPXBackSteppingUtility;
+#endif // BACKSTEPPING_INCLUDED
+
class MMPXCollectionUtility;
class MMPXPlaybackUtility;
class MMPXPlayerManager;
@@ -847,6 +851,8 @@
void OpenGenreL();
void OpenPodcastsL();
+ static TInt IADCheckTimerCallBack(TAny* aHgViewObject); //directly called
+ void StartCheckingforIADUpdates(); //indirectly called
private: // Data
@@ -939,7 +945,10 @@
TBool iPodcast;
#endif // __ENABLE_PODCAST_IN_MUSIC_MENU
+#ifdef BACKSTEPPING_INCLUDED
MMPXBackSteppingUtility* iBackSteppingUtility;
+ TBool iActivateBackStepping;
+#endif // BACKSTEPPING_INCLUDED
TBool iUSBOnGoing;
TBool iInAlbumArtDialog;
@@ -967,10 +976,12 @@
CEikProgressInfo* iProgressInfo;
TBool iIsAddingToPlaylist; // flag used to handle the return by adding songs incrementally
CUpnpCopyCommand* iUpnpCopyCommand;
- TBool iActivateBackStepping;
+
TBool iOpeningNote; // Waitnote is opening
TBool iMarkedAll;
TBool iFirstIncrementalBatch;
+
+ CPeriodic* iTimer;
};
#endif // C_CMPXCOLLECTIONVIEWHGIMP_H
--- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -80,12 +80,13 @@
#include <mpxcollectioncommanddefs.h>
#include <mpxviewpluginmanager.h>
#include <mpxviewplugin.h>
+#ifdef BACKSTEPPING_INCLUDED
#include <mpxbacksteppingutility.h>
+#endif // BACKSTEPPING_INCLUDED
#include <mpxcollectionopenutility.h>
#include <mpxfindinmusicshop.h>
#include <mpxfindinmusicshopcommon.h> // KFindInMShopKeyInValid
-#include <MusicWapCenRepKeys.h>
// cenrep key need to be checked whether USB cable is connected in MTP/Combined Mode
#include <UsbWatcherInternalPSKeys.h>
@@ -162,6 +163,7 @@
const TInt KMPXCollectionArtistAlbum( 3 );
const TInt KMPXCollectionGenre( 5 );
+const TInt KMPXTimeoutTimer = 1000000; // 1 second
// ======== MEMBER FUNCTIONS ========
@@ -269,10 +271,20 @@
delete iMediaRecognizer;
}
+ if ( iTimer )
+ {
+ if ( iTimer->IsActive() )
+ iTimer->Cancel();
+
+ delete iTimer;
+ iTimer = NULL;
+ }
+#ifdef BACKSTEPPING_INCLUDED
if( iBackSteppingUtility )
{
iBackSteppingUtility->Close();
}
+#endif // BACKSTEPPING_INCLUDED
if ( iResourceOffset )
{
@@ -389,6 +401,8 @@
iViewUtility->AddObserverL( this );
iBottomIndex = new (ELeave) CArrayFixFlat<TInt>( 1 );
+ iTimer = CPeriodic::NewL( CActive::EPriorityIdle );
+
iCommonUiHelper = CMPXCommonUiHelper::NewL( iCollectionUtility );
iCollectionUiHelper = CMPXCollectionHelperFactory::NewCollectionUiHelperL();
@@ -509,11 +523,13 @@
iCachedSelectionIndex = new ( ELeave )CArrayFixFlat<TInt>( KMPXArrayGranularity );
iIncrementalOpenUtil = CMPXCollectionOpenUtility::NewL( this );
+#ifdef BACKSTEPPING_INCLUDED
// Initialize the Back Stepping Service Utility with the MPX Music Player
iBackSteppingUtility = MMPXBackSteppingUtility::UtilityL();
iBackSteppingUtility->InitializeL(
TUid::Uid( KMusicPlayerAppUidConstant ) );
iActivateBackStepping = EFalse;
+#endif //BACKSTEPPING_INCLUDED
iIsAddingToPlaylist = EFalse;
@@ -595,28 +611,24 @@
RProperty::Get(KPSUidUsbWatcher, KUsbWatcherSelectedPersonality, usbStatus);
- // if object doesn't exist or the usb doesn't connect
- if(( retval2 != KErrAlreadyExists )
- || ( usbStatus != KUsbPersonalityIdPCSuite
- || usbStatus != KUsbPersonalityIdMS
- || usbStatus != KUsbPersonalityIdPTP
- || usbStatus != KUsbPersonalityIdMTP
- || usbStatus != KUsbPersonalityIdPCSuiteMTP ))
+ // Whenever usb is connected
+ if ( usbStatus == KUsbPersonalityIdMTP
+ || usbStatus == KUsbPersonalityIdMS
+ || usbStatus == KUsbPersonalityIdPTP
+ || usbStatus == KUsbPersonalityIdPCSuiteMTP
+ || usbStatus == KUsbPersonalityIdPCSuite )
{
RProperty::Set( KMPXViewPSUid,
- KMPXUSBUnblockingPSStatus,
+ KMPXUSBUnblockingPSStatus,
+ EMPXUSBUnblockingPSStatusActive);
+ }
+ else
+ {
+ RProperty::Set( KMPXViewPSUid,
+ KMPXUSBUnblockingPSStatus,
EMPXUSBUnblockingPSStatusUninitialized );
}
- // if usb mode is in MTP mode or pc suite mode
- else if ( usbStatus == KUsbPersonalityIdMTP
- || usbStatus == KUsbPersonalityIdPCSuiteMTP
- || usbStatus == KUsbPersonalityIdPCSuite )
- {
- RProperty::Set( KMPXViewPSUid,
- KMPXUSBUnblockingPSStatus,
- EMPXUSBUnblockingPSStatusActive );
- }
- }
+ }
// ---------------------------------------------------------------------------
// Delete the selected items in TBone View
@@ -4003,11 +4015,23 @@
//
CEikMenuBar* menuBar( MenuBar() );
#ifdef SINGLE_CLICK_INCLUDED
- iContainer->EnableMarking( EFalse );
- menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR_NO_MARKING );
+ if(iContainer)
+ {
+ iContainer->EnableMarking( EFalse );
+ }
+ if(menuBar)
+ {
+ menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR_NO_MARKING );
+ }
#else
- iContainer->EnableMarking( ETrue );
+ if(iContainer)
+ {
+ iContainer->EnableMarking( ETrue );
+ }
+ if(menuBar)
+ {
menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR );
+ }
#endif
TBool IsUSBEvent( EFalse );
if( type == EMcMsgUSBMassStorageStart || type == EMcMsgUSBMTPStart )
@@ -4189,11 +4213,13 @@
// View is not active. Ignore.
return;
}
+ #ifdef BACKSTEPPING_INCLUDED
// handle deferred notification when view is in focus but not for view transitions
if ( iActivateBackStepping )
{
HandleBacksteppingActivation();
}
+ #endif // BACKSTEPPING_INCLUDED
iCollectionReady = aComplete;
#ifdef __ENABLE_PODCAST_IN_MUSIC_MENU
@@ -4582,6 +4608,13 @@
}
}
+ MPX_DEBUG1( "HandleOpenL CheckingTimer" );
+ if ( iTimer && !iTimer->IsActive() )
+ {
+ MPX_DEBUG1( "HandleOpenL Starting" );
+ iTimer->Start( KMPXTimeoutTimer, KMPXTimeoutTimer, TCallBack( IADCheckTimerCallBack, this));
+ }
+
MPX_PERF_CHECKPT("Collection View opened");
}
@@ -5564,6 +5597,7 @@
TInt currentDepth( cpath->Levels() );
if ( currentDepth == 2 ) // 2 is the level of music main view
{
+#ifdef BACKSTEPPING_INCLUDED
// let Back Stepping Service handle the event
TInt statusInfo( KMPXBackSteppingNotConsumed );
if( iViewUtility &&
@@ -5580,6 +5614,7 @@
if ( statusInfo == KMPXBackSteppingNotConsumed )
// event not consumed by Back Stepping utility, handle here
//
+#endif // BACKSTEPPING_INCLUDED
{
AppUi()->HandleCommandL( aCommand );
}
@@ -5989,6 +6024,7 @@
CloseWaitNoteL();
iOpeningNote = EFalse;
}
+#ifdef BACKSTEPPING_INCLUDED
iActivateBackStepping = EFalse;
MPX_DEBUG3("CMPXCollectionViewHgImp::HandleForegroundEventL - is in foreground=%d, this view=0x%x",
aForeground, Id().iUid );
@@ -5998,6 +6034,7 @@
{
iActivateBackStepping = ETrue;
}
+#endif // BACKSTEPPING_INCLUDED
{
CAknView::HandleForegroundEventL( aForeground );
}
@@ -6010,6 +6047,7 @@
//
void CMPXCollectionViewHgImp::HandleBacksteppingActivation()
{
+#ifdef BACKSTEPPING_INCLUDED
TInt viewId( iViewUtility->ActiveViewType().iUid );
TBuf8<KMVPrefixLen + KMaxIntLen> buf;
buf.Copy( KMVPrefix );
@@ -6021,6 +6059,7 @@
);
MPX_DEBUG3("CMPXCollectionViewHgImp::HandleBacksteppingActivation - viewId=0x%x, statusInfo=%d", viewId, statusInfo );
iActivateBackStepping = EFalse;
+#endif // BACKSTEPPING_INCLUDED
}
// ---------------------------------------------------------------------------
@@ -6516,6 +6555,7 @@
aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
}
break;
}
@@ -8086,4 +8126,40 @@
CleanupStack::PopAndDestroy( path );
}
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::IADCheckTimerCallBack
+// -----------------------------------------------------------------------------
+//
+TInt CMPXCollectionViewHgImp::IADCheckTimerCallBack(TAny* aHgViewObject)
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::IADCheckTimerCallBack" );
+
+ if (aHgViewObject)
+ {
+ CMPXCollectionViewHgImp* hgViewObject = static_cast<CMPXCollectionViewHgImp*>(aHgViewObject);
+ hgViewObject->StartCheckingforIADUpdates();
+ }
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::StartCheckingforIADUpdates
+// -----------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::StartCheckingforIADUpdates()
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::StartCheckingforIADUpdates" );
+
+ if ( iTimer )
+ {
+ iTimer->Cancel();
+ delete iTimer;
+ iTimer = NULL;
+ }
+
+ AppUi()->HandleCommandL(EMPXCmdCheckIADUpdates);
+ }
+
+
// End of File
--- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgplaylisthelper.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgplaylisthelper.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -172,20 +172,20 @@
if (!iIsInitializing)
{
- if (aEnableShuffle)
- {
- TTime time;
- time.UniversalTime();
- TInt64 seed = time.Int64();
- TInt randIndex = Math::Rand(seed) % aPath.Count();
- aPath.Set(randIndex);
- }
-
CMPXCollectionPlaylist* playlist = CMPXCollectionPlaylist::NewL( aPath );
CleanupStack::PushL( playlist );
+
+ if (aEnableShuffle)
+ {
+ TTime time;
+ time.UniversalTime();
+ TInt64 seed = time.Int64();
+ TInt randIndex = Math::Rand(seed) % aPath.Count();
+ aPath.Set(randIndex);
+ playlist->SetShuffleEnabledL( aEnableShuffle );
+ iPlaybackUtility->SetL( EPbPropertyRandomMode, aEnableShuffle );
+ }
- playlist->SetShuffleEnabledL( aEnableShuffle );
- iPlaybackUtility->SetL( EPbPropertyRandomMode, aEnableShuffle );
iPlaybackUtility->InitL( *playlist, ETrue );
CleanupStack::PopAndDestroy( playlist );
--- a/mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewimp.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/commonplaybackview/src/mpxcommonplaybackviewimp.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -204,20 +204,15 @@
iViewUtility->AddObserverL( this );
TInt flags( 0 );
- CRepository* repository( CRepository::NewL( KCRUidMPXMPFeatures ));
+ CRepository* repository( CRepository::NewLC( KCRUidMPXMPFeatures ));
User::LeaveIfError( repository->Get( KMPXMPLocalVariation, flags ));
- delete repository;
+ CleanupStack::PopAndDestroy( repository );
repository = NULL;
+
iChangeRTForAllProfiles =
static_cast<TBool>( flags & KMPXChangeRTForAll );
- // Pre-load Equalizer & Audio Effects views
- iViewUtility->PreLoadViewL(
- TUid::Uid( KMPXPluginTypeEqualizerUid ) );
- iViewUtility->PreLoadViewL(
- TUid::Uid( KMPXPluginTypeAudioEffectsUid ) );
-
iLayout = new (ELeave) CMPXCommonPlaybackViewLayout();
iCollectionUtility = MMPXCollectionUtility::NewL( this );
@@ -2026,7 +2021,7 @@
}
case EAknSoftkeyBack:
{
- AppUi()->HandleCommandL( EMPXCmdGotoCollection );
+
#ifdef BACKSTEPPING_INCLUDED
// let Back Stepping Service handle the event
TInt statusInfo( KMPXBackSteppingNotConsumed );
--- a/mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewimp.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/pdsbplaybackview/src/mpxpdsbplaybackviewimp.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -887,13 +887,16 @@
TMPXPlaybackState state = iPlaybackUtility->StateL();
CAknButton* pausePlayControl;
pausePlayControl = (CAknButton*)(toolbar->ComponentControl( 1 ));
- if ((state == EPbStateInitialising) || (state == EPbStatePlaying))
+ if (pausePlayControl)
{
- pausePlayControl->SetCurrentState(0, ETrue);
- }
- else
- {
- pausePlayControl->SetCurrentState(1, ETrue);
+ if( (state == EPbStateInitialising) || (state == EPbStatePlaying) )
+ {
+ pausePlayControl->SetCurrentState(0, ETrue);
+ }
+ else
+ {
+ pausePlayControl->SetCurrentState(1, ETrue);
+ }
}
if ( state == EPbStatePlaying ||
state == EPbStatePaused ||
--- a/mpxplugins/viewplugins/views/waitnotedialog/src/mpxscanningdialog.cpp Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/viewplugins/views/waitnotedialog/src/mpxscanningdialog.cpp Fri Feb 19 22:48:30 2010 +0200
@@ -332,7 +332,11 @@
if( op == EMcMsgRefreshEnd )
{
MPX_DEBUG1("CMPXScanningWaitDialog::HandleCollectionMessageL refresh end");
- iNumItemsAdded = mmcCount;
+ // Do not reset iNumItemsAdded while KErrLocked or KErrDiskFull.
+ if( data != KErrLocked && data != KErrDiskFull )
+ {
+ iNumItemsAdded = mmcCount;
+ }
switch ( iWaitNoteType )
{
case EMPXScanningNote:
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/hsps/00/manifest.dat Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/hsps/00/manifest.dat Fri Feb 19 22:48:30 2010 +0200
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<package version="1.0">
+<package version="2.0">
<family>qhd_tch</family>
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/00/MusicWidget.css Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/00/MusicWidget.css Fri Feb 19 22:48:30 2010 +0200
@@ -95,14 +95,6 @@
}
-box:focus
- {
- touchfeedbackdown: basic;
- touchfeedbackdrag: sensitive;
- focus-background:"SKIN(268458534 9896)";
- }
-
-
image
{
margin-left: auto;
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/00/MusicWidget.xml Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/00/MusicWidget.xml Fri Feb 19 22:48:30 2010 +0200
@@ -13,14 +13,7 @@
<box id="area1" focusable="true" _s60-initial-focus="1">
<actions>
<action>
- <trigger name="stylus">
- <property name="eventtype" value="up" />
- </trigger>
<trigger name="activate"/>
- <trigger name="keyevent">
- <property name="scancode" value="3"/>
- <property name="eventtype" value="1"/>
- </trigger>
<event name="MWPublisher/area1_image1(MWTrigger1)"/>
</action>
</actions>
@@ -40,14 +33,7 @@
<box id="textbox2" focusable="true">
<actions>
<action>
- <trigger name="stylus">
- <property name="eventtype" value="up" />
- </trigger>
<trigger name="activate"/>
- <trigger name="keyevent">
- <property name="scancode" value="3"/>
- <property name="eventtype" value="1"/>
- </trigger>
<event name="MWPublisher/default_text(MWTrigger2)"/>
</action>
<action>
@@ -85,14 +71,7 @@
<box id="toolbarbutton1" class="toolbarbuttonbox" focusable="true">
<actions>
<action>
- <trigger name="stylus">
- <property name="eventtype" value="up" />
- </trigger>
<trigger name="activate"/>
- <trigger name="keyevent">
- <property name="scancode" value="3"/>
- <property name="eventtype" value="1"/>
- </trigger>
<event name="MWPublisher/toolbar_b1(TB1Trigger)"/>
</action>
<action>
@@ -111,14 +90,7 @@
<box id="toolbarbutton2" class="toolbarbuttonbox" focusable="true">
<actions>
<action>
- <trigger name="stylus">
- <property name="eventtype" value="up" />
- </trigger>
<trigger name="activate"/>
- <trigger name="keyevent">
- <property name="scancode" value="3"/>
- <property name="eventtype" value="1"/>
- </trigger>
<event name="MWPublisher/toolbar_b2(TB2Trigger)"/>
</action>
<action>
@@ -140,14 +112,7 @@
<box id="toolbarbutton3" class="toolbarbuttonbox" focusable="true">
<actions>
<action>
- <trigger name="stylus">
- <property name="eventtype" value="up" />
- </trigger>
<trigger name="activate"/>
- <trigger name="keyevent">
- <property name="scancode" value="3"/>
- <property name="eventtype" value="1"/>
- </trigger>
<event name="MWPublisher/toolbar_b3(TB3Trigger)"/>
</action>
<action>
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/37/MusicWidget.css Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/37/MusicWidget.css Fri Feb 19 22:48:30 2010 +0200
@@ -95,15 +95,6 @@
display: none;
}
-
-box:focus
- {
- touchfeedbackdown: basic;
- touchfeedbackdrag: sensitive;
- focus-background:"SKIN(268458534 9896)";
- }
-
-
image
{
margin-left: auto;
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/50/MusicWidget.css Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/50/MusicWidget.css Fri Feb 19 22:48:30 2010 +0200
@@ -95,15 +95,6 @@
display: none;
}
-
-box:focus
- {
- touchfeedbackdown: basic;
- touchfeedbackdrag: sensitive;
- focus-background:"SKIN(268458534 9896)";
- }
-
-
image
{
margin-left: auto;
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/57/MusicWidget.css Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/57/MusicWidget.css Fri Feb 19 22:48:30 2010 +0200
@@ -96,14 +96,6 @@
}
-box:focus
- {
- touchfeedbackdown: basic;
- touchfeedbackdrag: sensitive;
- focus-background:"SKIN(268458534 9896)";
- }
-
-
image
{
margin-left: auto;
--- a/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/94/MusicWidget.css Tue Feb 02 00:09:33 2010 +0200
+++ b/musichomescreen_multiview/data/themes/default/install/musicwidget_10207c18/xuikon/94/MusicWidget.css Fri Feb 19 22:48:30 2010 +0200
@@ -96,14 +96,6 @@
}
-box:focus
- {
- touchfeedbackdown: basic;
- touchfeedbackdrag: sensitive;
- focus-background:"SKIN(268458534 9896)";
- }
-
-
image
{
margin-left: auto;
--- a/musicplayer_plat/mpx_music_player_app_api/inc/mpxappui.hrh Tue Feb 02 00:09:33 2010 +0200
+++ b/musicplayer_plat/mpx_music_player_app_api/inc/mpxappui.hrh Fri Feb 19 22:48:30 2010 +0200
@@ -54,7 +54,8 @@
EMPXCmdGotoCollection,
EMPXCmdVolumeMute,
EMPXCmdVolumeUnMute,
- EMPXCmdCancelReorder
+ EMPXCmdCancelReorder,
+ EMPXCmdCheckIADUpdates
};
#endif // MPXAPPUI_HRH
--- a/musicplayer_plat/mpx_music_player_app_api/inc/mpxinternalcrkeys.h Tue Feb 02 00:09:33 2010 +0200
+++ b/musicplayer_plat/mpx_music_player_app_api/inc/mpxinternalcrkeys.h Fri Feb 19 22:48:30 2010 +0200
@@ -49,6 +49,10 @@
// +128 to disable podcasting
#define KMPXDisablePodcastingOption 0x0008
+// Feature to enable RAM disk database copying
+#define KMPXEnableRAMDisk 0x00f0
+
+#define KMAXAllowedDiskSpaceToCopy 0x9
// Feature to enable Go To MusicShop option in option menus.
#define KMPXEnableGoToMusicShopOption 0x0010
--- a/musicplayer_plat/mpx_music_wap_adapter_cenrep_api/group/bld.inf Tue Feb 02 00:09:33 2010 +0200
+++ b/musicplayer_plat/mpx_music_wap_adapter_cenrep_api/group/bld.inf Fri Feb 19 22:48:30 2010 +0200
@@ -24,4 +24,4 @@
PRJ_EXPORTS
-../inc/MusicWapCenRepKeys.h APP_LAYER_PLATFORM_EXPORT_PATH(MusicWapCenRepKeys.h)
+//../inc/MusicWapCenRepKeys.h APP_LAYER_PLATFORM_EXPORT_PATH(MusicWapCenRepKeys.h)