controlpanelui/src/tonefetcher/tonefetcherengine/private/CToneSelection.h
branchRCL_3
changeset 34 90fe62538f66
--- /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 <e32base.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 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<TItemId>& aObjectIdArray );
+    
+    private:
+        // from MMdEObjectPresentObserver
+        void HandleObjectPresentNotification( CMdESession& aSession,
+                TBool aPresent, const RArray<TItemId>& 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<TDesC> 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 */
+