diff -r 3fec62e6e7fc -r 90fe62538f66 controlpanelui/src/tonefetcher/tonefetcherengine/private/CToneSelection.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controlpanelui/src/tonefetcher/tonefetcherengine/private/CToneSelection.h Tue Aug 31 15:15:28 2010 +0300 @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * The header file for mde tone fetcher. + * + */ + +#ifndef CTONESELECTION_H +#define CTONESELECTION_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class MToneSelectionWatcher; +class CToneSelection; + +/** +* CMFActiveCaller +* +* CMFActiveCaller is used for generating a call from active scheduler. +* Typical use is to start some operation after a short delay. +*/ +NONSHARABLE_CLASS (CMFActiveCaller) : public CActive + { + public: + static CMFActiveCaller* NewL( CToneSelection* aObserver ); + virtual ~CMFActiveCaller(); + + private: + CMFActiveCaller( CToneSelection* aObserver ); + void ConstructL(); + + public: + void Start( TInt aMilliseconds ); + void Stop(); + void Request(); + + private: + void RunL(); + void DoCancel(); + + private: + // timer + RTimer iTimer; + + // observer that gets called + CToneSelection* iObserver; + }; + +// CLASS DECLARATION +/** + * This class is used for quering tones from mde. + * + */ +class CToneSelection : public CBase, + public MMdESessionObserver, + public MMdEQueryObserver, + public MMdEObjectObserver, + public MMdEObjectPresentObserver + { + public: + enum TStorageType + { + EPhoneMemory = 0, ERomStorage, EMassStorage, EMemoryCard + }; + + enum TQueryAttribute + { + EAttrMediaType = 20, // integer + EAttrFileSize, // integer + EAttrStorageType, // integer + EAttrMediaFileId, // integer + EAttrFileName, // string + EAttrFullName, // string + EAttrSongName, // string + EAttrArtist, // string + EAttrAlbum, // string + EAttrGenre, // string + EAttrComposer + }; + + public: + static CToneSelection* NewL( MToneSelectionWatcher *aWatcher ); + static CToneSelection* NewLC( MToneSelectionWatcher *aWatcher ); + + virtual ~CToneSelection(); + //iTimer's callback function. + void ChangeObject(); + void QueryTonesL(); + void SetAttr( int attr, int value ); + TBool QueryReady(); + + private: + CToneSelection( MToneSelectionWatcher *aWatcher ); + void ConstructL(); + void ExcludeMusicPropertiesL( CMdELogicCondition& aCondition ); + void LeaveIfSessionClosedL(); + CMdEPropertyDef& PropertyDefL(TInt aAttr); + CMdEPropertyDef& PropertyDefL(CMdESession* aSession, TInt aAttr); + + private: + // from MMdESessionObserver + void HandleSessionOpened( CMdESession& aSession, TInt aError ); + void HandleSessionError( CMdESession& aSession, TInt aError ); + + private: + // from MMdEQueryObserver (mdequery.h) + void HandleQueryNewResults( CMdEQuery& aQuery, TInt aFirstNewItemIndex, + TInt aNewItemCount ); + void HandleQueryCompleted( CMdEQuery& aQuery, TInt aError ); + private: + // from MMdEObjectObserver + void HandleObjectNotification( CMdESession& aSession, + TObserverNotificationType aType, + const RArray& aObjectIdArray ); + + private: + // from MMdEObjectPresentObserver + void HandleObjectPresentNotification( CMdESession& aSession, + TBool aPresent, const RArray& aObjectIdArray); + void AddObjectObserverL(); + void HandleObjectChanged(); + private: + + MToneSelectionWatcher* iToneSelectionWatcher; + + // session to metadata engine + CMdESession* iSession; + + CMdENamespaceDef* iDefNS; + + // metadata query + CMdEObjectQuery* iQuery; + TBool iIsQuerying; + + // used for saving the quering result. + RPointerArray iResultArray; + + // is metadata session open + TBool iSessionOpen; + + // max audio file file size + TInt iMaxFileSize; + + TInt iMediaFileCounter; + // for generating active object calls + CMFActiveCaller* iObjectNotificationCaller; + + }; +#endif /* CTONESELECTION_H */ +