profilesservices/MediaFileList/Inc/mediafilehandler.h
branchRCL_3
changeset 24 8ee96d21d9bf
parent 23 8bda91a87a00
child 25 7e0eff37aedb
--- a/profilesservices/MediaFileList/Inc/mediafilehandler.h	Thu Aug 19 10:12:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,580 +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:   Used to interact with the MDE. 
-*
-*/
-
-
-
-#ifndef MEDIAFILEHANDLER_H
-#define MEDIAFILEHANDLER_H
-
-
-// INCLUDES
-
-#include "mediafiledialogutils.h"
-
-
-#include <mdesession.h>
-#include <mdequery.h>
-#include <mdelogiccondition.h>
-#include <mdeconstants.h>
-#include <mdeobjectquery.h>
-#include <mdccommon.h>
-#include <mdeitem.h>
-#include <mdeobject.h>
-
-
-// FORWARD DECLARATIONS
-class CSearchList;
-class CRomFileList;
-class CArtistQuery;
-
-// CONSTANTS
-
-_LIT( KMimeTypeAMR, "audio/amr" );
-_LIT( KMimeTypeWAV, "audio/wav" );
-_LIT( KMimeMp3, "mp3" );
-_LIT( KDriveZ, "z:\\" );
-_LIT( KSpace, " " );
-
-
-/**
-* CMediaFileData
-* 
-* Used for storing metadata information for one media file.
-*/
-NONSHARABLE_CLASS (CMediaFileData) : public CBase
-    {
-    public:
-        static CMediaFileData* NewL();
-        virtual ~CMediaFileData();
-
-    private:
-        CMediaFileData();
-        void ConstructL();
-        
-    public:
-        const TDesC& Attr( TInt aAttr );
-        void GetAttr( TInt aAttr, TDes& aValue );
-        void SetAttrL( TInt aAttr, const TDesC& aValue );
-
-    public:
-        TInt iMediaFileType;
-        
-    private:
-        HBufC* iFullName;
-        HBufC* iName;
-        HBufC* iArtist;
-        HBufC* iAlbum;
-        HBufC* iGenre;
-        HBufC* iComposer;
-    };
-
-
-/**
-* MMediaFileHandlerObserver
-*
-* For observing CMediaFileHandler events.  
-*/
-NONSHARABLE_CLASS (MMediaFileHandlerObserver)
-	{
-    public:
-    enum TMediaFileHandlerEvent
-        {
-        EInitComplete,
-        EQueryComplete,
-        EQueryCanceled,
-        EUnknownQueryComplete,
-        EMediaFileChanged,
-        EScanRomComplete,
-        EError
-        };
-    
-    enum TScanRomState
-        {
-        ENoneRomScan,
-        ERomScanInProgress,
-        ERomScanComplete,
-        ERomScanError
-        };
-	
-	public:
-		virtual void HandleMFEventL( TInt aEvent, TInt aError ) = 0;
-	};
-
-
-
-/**
-* CMediaFileHandler
-*
-* Used for making media file queries. For example get all songs for
-* one artist. Uses metadata engine.
-*/
-NONSHARABLE_CLASS (CMediaFileHandler) : public CBase, 
-                                        public MMdESessionObserver,
-                                        public MMdEQueryObserver,
-                                        public MMdEObjectObserver,
-                                        public MMdEObjectPresentObserver,
-                                        public MMFActiveCallerObserver
-    {
-    public:
-    enum TMediaType
-        {
-        EMediaTypeTone = 0,
-        EMediaTypeVideo,
-        EMediaTypeRecording,
-        EMediaTypeMusic
-        };
-
-    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      // string
-        };
-
-    enum TQueryType
-        {
-        EQueryNone = 0,
-        EQueryAudio,
-        EQueryMusic,
-        EQueryVideo,
-        EQueryRecording,
-        EQueryTone,
-        ESearchAudio,
-        ESearchVideo,
-        ESearchMusic,
-        ESearchTones,
-        EQueryEmpty,
-        EQueryUnknown,
-        
-        EQueryArtist,
-        EQueryArtistAlbum,
-        EQueryArtistAll,
-        EQueryArtistUnknown,
-        EQueryArtistEmpty,
-        };
-
-    public:
-        static CMediaFileHandler* NewL();
-        virtual ~CMediaFileHandler();
-
-    private:
-	    CMediaFileHandler();
-        void ConstructL();
-
-    public:
-        void SetAttrL( TInt aAttr, TInt aValue );
-        void SetAttrL( TInt aAttr, const TDesC& aValue );
-        void SetAttrL( TInt aAttr, TAny* aValue );
-
-    public:
-        void QueryMusicL( TInt aAttr );
-        void QueryMusicL( TInt aAttr, const TDesC& aFindText );
-        void QueryMusicUnknownL( TInt aAttr );
-        void QueryMusicUnknownCountL( TInt aAttr );
-        void QueryAttributeValuesL( TInt aAttr );
-        void QueryArtistL( TInt aAttr, const TDesC& aArtist, 
-                           const TDesC& aAlbum, TBool aRefresh = EFalse );
-        void QueryArtistEmptyL();
-        void QueryEmptyL();
-        void QueryRomEmptyL( TInt aQueryType );
-        
-        void QueryVideosL( TInt aAttr );
-        void QueryRecordingsL( TInt aAttr );
-        void QueryTonesL( TInt aAttr );
-        void QueryDefaultTonesL( TInt /*aAttr*/ );
-       
-        void SearchL( const TDesC& aSearchText );
-        void SearchAudioL( const TDesC& aSearchText );
-        
-        void StartRomScaning( TInt aQueryType );
-        
-    public:
-        TInt UnknownArtistCount();
-        TInt UnknownArtistCountL();
-        TInt ResultCount();
-        TBool QueryReady();
-        TInt Attribute( TInt aIndex, TInt aAttr, TInt aQueryId );
-        void GetAttributeL( TInt aIndex, TInt aAttr, TDes& aValue, TInt aQueryId );
-        void GetAttribute( TInt aIndex, TInt aAttr, TDes& aValue, TInt aQueryId );
-        CMediaFileData* ReadMediaFileDataL( TInt aId );
-        void CancelQuery();
-        
-        /**
-        * Remove an item from list of search reuslt
-        * @param aIndex Search list's index.
-        * @return None.
-        */
-        void Remove( TInt aIndex );
-
-    public:
-        TInt ItemIndex( const TDesC& aItemText, TInt aIndex );
-        TInt ItemIndex( TInt aItemId, TInt aIndex );
-        
-    private:
-        
-        void SearchVideoL( const TDesC& aSearchText );
-        void SearchMusicL( const TDesC& aSearchText );
-        void SearchTonesL( const TDesC& aSearchText );
-        static TInt SearchTones( TAny *aObj );
-        static TInt SearchVideo( TAny *aObj );
-
-      
-    public:
-        void SetObserver( MMediaFileHandlerObserver* aObserver );
-        void SetQueryId( TInt aId );
-        void EnableObserverCall( TBool aEnable );
-        
-        
-    public:
-	CMediaFileData* RomMediaFileDataL( TInt aId ,TInt aMediaType );
-           
-    private:
-        CMdEPropertyDef& PropertyDefL( TInt aAttr );
-        void StrCopy( TDes& aTarget, const TDesC& aSource );
-        void CheckAttrL( TInt aAttr );
-        void CallObserverWithDelay();
-        void CallObserver( TInt aEvent, TInt aError );
-        void AddObjectObserverL();
-        
-    public:
-        static CMdEPropertyDef& PropertyDefL( CMdESession* aSession, TInt aAttr );
-        
-    private:
-        void ExcludeRecordingsL( CMdELogicCondition& aCondition );
-        void ExcludeRomFilesL( CMdELogicCondition& aCondition );
-        void ExcludeMimeTypesL( CMdELogicCondition& aCondition, TInt aAttr );
-        void IncludeMusicPropertiesL( CMdELogicCondition& aCondition );
-        void ExcludeMusicPropertiesL( CMdELogicCondition& aCondition );
-        void IncludeMusicSearchConditionL( CMdELogicCondition& aCondition,
-                                           const TDesC& aSearchText );
-        void IncludeToneSearchConditionL( CMdELogicCondition& aCondition,
-                                           const TDesC& aSearchText );
-        void IncludeVideoSearchConditionL( CMdELogicCondition& aCondition,
-                                           const TDesC& aSearchText );
-
-
-        
-    private:
-        void LeaveIfSessionClosedL();
-        void Panic( TInt aReason );
-        TInt MediaType( TInt aQueryType );
-        
-
-    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 );
-        void HandleQueryCompletedL( CMdEQuery& aQuery, TInt aError );
-        
-    private:  // from MMdEObjectObserver
-        void HandleObjectNotification( CMdESession& aSession, 
-                                       TObserverNotificationType aType,
-                                       const RArray<TItemId>& aObjectIdArray);
-                                       
-    private:  // from MMdEObjectPresentObserver
-        void HandleObjectPresentNotification( CMdESession& aSession, 
-                         TBool aPresent, const RArray<TItemId>& aObjectIdArray);
-        
-    private:   // from MMFActiveCallerObserver
-         void HandleActiveCallL( TInt aCallId );
-
-    private:
-    
-        // media file event observer
-        MMediaFileHandlerObserver* iObserver;
-       
-        // session to metadata engine
-        CMdESession* iSession;
-      
-        // metadata query
-        CMdEObjectQuery* iQuery;
-        
-        // used for optimizing artist queries
-        CArtistQuery* iArtistQuery;
-
-        // search result list - ui shows items from this list
-        CSearchList* iSearchList;
-
-        // metadata search text
-        TBuf<KBufSize128> iSearchText;
-         
-        // for generating active object calls
-        CMFActiveCaller* iQueryCaller;
-        // for generating active object calls
-        CMFActiveCaller* iObjectNotificationCaller;
-        
-        // for finding out file drive type
-        CDriveUtil* iDriveUtil;
-        
-        // mime types that are exluded from queries
-        CMimeTypeList* iExcludedMimeTypes;
-
-        // for starting video query after short delay
-        CIdle* iIdle;
-
-        // used to prevent observer call when query is canceled fro ui
-        TBool iObserverCallEnabled;
-        
-        // query id from UI, not used in this class
-        TInt iQueryId;
-        
-        // max audio file file size
-        TInt iMaxFileSize;
-        
-        // is metadata session open
-        TBool iSessionOpen;
-
-        // query type 
-        TInt iQueryType;
-
-        // query error
-        TInt iQueryError;
-        
-        // query event
-        TInt iQueryEvent;
-        
-	    TBool iVideoSearchDisabled; 
-        
-        TInt iMediaFileCounter;
-        //for scan data from rom
-        CRomFileList* iRomFileList;
-	    //Record the rom scan state.
-	    TInt iRomScanState;
-	    //Tone query in progress
-	    TBool iQueryinProgress;
-
-    };
-
-
-
-
-/**
-* CSearchListItem
-*
-* Data for one media file item CSearchList.
-*/
-NONSHARABLE_CLASS (CSearchListItem) : public CBase 
-    {
-    public:
-        static CSearchListItem* NewLC();
-        static CSearchListItem* NewL();
-        virtual ~CSearchListItem();
-
-    private:
-        CSearchListItem();
-        void ConstructL();
-        
-    public:
-        void SetTitleL( const TDesC& aText, TBool aFullName );
-        const TDesC& Title() const;
- 
-    public:
-        TInt iId;
-        TInt iMediaType;
-        TInt iStorageType;
-    private:
-        HBufC* iTitle;
-    };
-
-
-/**
-* CRomFileList
-* 
-* Used for reading media files from rom.
-*/
-NONSHARABLE_CLASS (CRomFileList) : public CBase
-    {
-    public:
-        static CRomFileList* NewL();
-        virtual ~CRomFileList();
-
-    private:
-        CRomFileList();
-        void ConstructL();
-    public:
-        void ReadDirectoryL( const TDesC& aDirectory, RArray<TFileName>& aList );
-        void ReadDirectoryL( const TDesC& aDirectory, 
-                                         RPointerArray<CSearchListItem>& aList );
-
-        void ReadRomFilesL();
-        void ReadRomVediosL();
-        const TDesC& Item( TInt aIndex , TInt aType );
-        TInt RomFileItem( CSearchListItem* aItem, TInt aIndex);
-        TInt RomVedioItem( CSearchListItem* aItem, TInt aIndex);
-        TInt Count( TInt aType );
-        void Reset();
-        
-    public:
-//    //Used to return the rom file attribute in rom;
-//    TInt RomFileAttribute(TInt aIndex, TInt aAttr);
-    //Used to return the title of rom item
-    TInt GetRomFileName(TInt aIndex, TInt aType, TDes& aValue);
-private:
-    CSearchListItem* SearchListItemFromRomL(const TDesC& aFileName,
-            TInt aIndex);
-	//Used to get the title of rom item
-	void RomItemTitle(TInt aIndex, TDes& aTitle );
-        
-private:
-        TFileName iFileName;
-        RArray<TFileName> iList;
-        RArray<TFileName> iVedioList;
-        RPointerArray<CSearchListItem> iRomToneList;
-        RPointerArray<CSearchListItem> iRomVideoList;
-
-    };
-
-/**
-* CSearchList
-*
-* List for storing search result for one (most recent) metadata query.
-*/
-NONSHARABLE_CLASS (CSearchList) : public CBase 
-    {
-    public:
-        static CSearchList* NewL();
-        virtual ~CSearchList();
-
-    private:
-        CSearchList();
-        void ConstructL();
-        
-    public:
-        void SetSession( CMdESession* aSession );
-        void SetRomFileList( CRomFileList* aRomFileList );
-        void TakeResultL( CMdEObjectQuery* aQuery, TInt aMediaType );
-        void TakeArtistResultL( CArtistQuery* aArtistQuery );
-        void TakeDistinctResultL( CMdEObjectQuery* aQuery, TInt aMediaType );
-        void SearchInToneL( CRomFileList* aQuery,  const TDesC& aSearchText );
-        void VideoSearchInRomL( CRomFileList* aQuery,  const TDesC& aSearchText );
-  
-        void AddAlbumItemL( const TDesC& aAlbum );
-        void AddItemL( CMdEObject& aObject, TInt aMediaType );
-        void AddRomItemL( CRomFileList* aRomList, TInt aMediaType );
-        void AddArtistItemL( CMdEObject& aObject, TInt aQueryType, const TDesC& aAlbum );
-
-        void Reset();
-        void Sort();
-        TInt Count();
-        void GetAttributeL( TInt aIndex, TInt aAttr, TDes& aValue );
-        TInt Attribute( TInt aIndex, TInt aAttr );
-        void SetSearchId( TInt aId );
-        TInt SearchId();
-        
-        /**
-        * Remove an item from the list of search results.
-        * @param aIndex List's index.
-        * @return None.
-        */
-        void Remove( TInt aIndex );
-        
-    public:
-        TInt ItemIndex( TInt aId );
-        TInt ItemIndex( const TDesC& aText );
-        TInt ItemIndex( const TDesC& aText, TInt aIndex );
-        TInt ItemIndex( TInt aId, TInt aIndex );
-        
-    private:
-        static TInt Compare( const CSearchListItem& aFirst, 
-                             const CSearchListItem& aSecond );
-        void Panic( TInt aReason );
-        const TDesC& TextL( CMdEObject& aObject, TInt aId );
-       
-    private:
-        CMdESession* iSession;  // does not own
-        
-        CRomFileList* iRomFileList; //does not own
-        
-        // list of search results
-        RPointerArray<CSearchListItem> iList;
-        
-        // for finding out drive type (eg memory card)
-        CDriveUtil* iDriveUtil;
-        
-        // search id - not used in this class
-        TInt iSearchId;
-    };
-
-
-
-
-
-/**
-* CArtistQuery
-* 
-* CArtistQuery is for storing all metadata for one artist.
-* Once CArtistQuery is initialized it can be used to get artist 
-* subqueries without making more metadata queries.
-*/
-NONSHARABLE_CLASS (CArtistQuery) : public CBase 
-    {
-    public:
-        static CArtistQuery* NewL();
-        virtual ~CArtistQuery();
-
-    private:
-        CArtistQuery();
-        void ConstructL();
-        
-    public:
-        void ResetL();
-        
-        void SetArtistL( const TDesC& aText );
-        void SetAlbumL( const TDesC& aText );
-        void SetQueryType( TInt aType );
-        void SetQuery( CMdEObjectQuery* aQuery );
-
-        const TDesC& Artist();
-        const TDesC& Album();
-        TInt QueryType();
-        CMdEObjectQuery* Query();
-        TInt UnknownCount();
-        
-    private:
-        CMdEObjectQuery* iQuery;
-        TInt iQueryType;
-        
-        HBufC* iArtist;
-        HBufC* iAlbum;
-    };
-
-
-
-#endif  // MEDIAFILEHANDLER_H
-
-// End of File