[Clientapps-cvs] symbianMmf hxmmfmetadata.cpp, 1.5.2.11, 1.5.2.12 hxmmfmetadata.h, 1.2.2.6, 1.2.2.7 hxmmfstatectrlobs.h, 1.1.2.2, 1.1.2.3 hxmmfstatectrl.cpp, 1.4.2.19, 1.4.2.20 hxmmfstatectrl.h, 1.3.2.10, 1.3.2.11

[Clientapps-cvs] symbianMmf hxmmfmetadata.cpp, 1.5.2.11, 1.5.2.12 hxmmfmetadata.h, 1.2.2.6, 1.2.2.7 hxmmfstatectrlobs.h, 1.1.2.2, 1.1.2.3 hxmmfstatectrl.cpp, 1.4.2.19, 1.4.2.20 hxmmfstatectrl.h, 1.3.2.10, 1.3.2.11

praveenkumar at helixcommunity.org praveenkumar at helixcommunity.org
Thu Feb 7 10:26:52 PST 2008


Update of /cvsroot/clientapps/symbianMmf
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29274

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	hxmmfmetadata.cpp hxmmfmetadata.h hxmmfstatectrlobs.h 
	hxmmfstatectrl.cpp hxmmfstatectrl.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with RealNetworks, and I am authorized to contribute this code under said agreement."

Modified by:  Praveen.Thimmashetty at nokia.com

Reviewed by: 

Date: 03-February-2008

Project: SymbianMmf

      ErrorId: SUB 409-795
            
Synopsis:  CR: New Custom interface API for handling metadata update events between Engine and UI. 
		Please find the attached design document for more information.
					
			
Root Cause of the problem: New Feature
 
Files Modified:

Clientapps\symbianMmf\hxmmfmetadata.cpp
Clientapps\symbianMmf\hxmmfmetadata.h
Clientapps\symbianMmf\hxmmfstatectrl.cpp
Clientapps\symbianMmf\hxmmfstatectrl.h
Clientapps\symbianMmf\hxmmfstatectrlobs.h
Clientapps\symbianMmf\audiocontroller\hxmmfaudioctrl.cpp
Clientapps\symbianMmf\hxmmfbasectrl.cpp
Clientapps\symbianMmf\hxmmfbasectrl.h
Clientapps\symbianMmf\videocontroller\hxmmfctrlimpl.cpp
Clientapps\symbianMmf\installMMF.pcf

New files added:
Common\system\pub\platform\symbian\MMFMetadataEventConfigConstants.h


Image Size and Heap Use impact: no major impact 

Module Release testing (STIF) :  Passed.

Test case(s) Added  :  No. 

Memory leak check performed : Yes.  No new leaks introduced. 

Platforms and Profiles Build Verified: helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5,winscw

      Branch: Head & 210CayS


Index: hxmmfmetadata.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfmetadata.cpp,v
retrieving revision 1.5.2.11
retrieving revision 1.5.2.12
diff -u -d -r1.5.2.11 -r1.5.2.12
--- hxmmfmetadata.cpp	4 Jan 2008 22:25:45 -0000	1.5.2.11
+++ hxmmfmetadata.cpp	7 Feb 2008 18:26:49 -0000	1.5.2.12
@@ -148,6 +148,37 @@
     }
     CleanupStack::PopAndDestroy(pDesKey);
 }
+TInt
+HXMMFMetaData::UpadateClipInfoL( CHXString key, CHXString value )
+{
+    TInt numElements = m_metaData.Nelements();
+    
+    AddToClipInfoL(key, value);
+    
+    for ( TInt idx=0; idx < numElements; ++idx)
+    {
+        
+     	CMMFMetaDataEntry* pEntry = m_metaData[idx];
+         
+        if(pEntry)
+        {
+        	CHXString strKey = CHXSymbianString::DescToString(pEntry->Name());
+        	if(strKey == key)
+        	{
+        		delete m_metaData[idx]; 
+        		m_metaData[idx] = (CMMFMetaDataEntry*)m_clipInfo.RemoveHead();
+        		HXLOGL1(HXLOG_SMMF, "HXMMFMetaData::UpadateClipInfoL found");
+        		return idx;   
+        	}
+        }
+    }            
+
+    m_metaData.Resize(numElements+1);
+
+    m_metaData[numElements] = (CMMFMetaDataEntry*)m_clipInfo.RemoveHead();
+    return numElements; 
+}
+
 
 void
 HXMMFMetaData::AddToClipInfoL( CHXString key, TInt value )

Index: hxmmfstatectrlobs.h
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfstatectrlobs.h,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -d -r1.1.2.2 -r1.1.2.3
--- hxmmfstatectrlobs.h	18 Jul 2007 22:59:45 -0000	1.1.2.2
+++ hxmmfstatectrlobs.h	7 Feb 2008 18:26:49 -0000	1.1.2.3
@@ -67,6 +67,7 @@
     virtual void OnPrepareComplete() = 0;
     virtual void OnPlaying() = 0;
     virtual void OnPaused() = 0;
+    virtual void OnMetadataUpdate(IHXBuffer* pKey, IHXBuffer* pValue) = 0;
     virtual void OnError( const UINT8 unSeverity,
               const ULONG32 ulHXCode,
               const ULONG32 ulUserCode,

Index: hxmmfmetadata.h
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfmetadata.h,v
retrieving revision 1.2.2.6
retrieving revision 1.2.2.7
diff -u -d -r1.2.2.6 -r1.2.2.7
--- hxmmfmetadata.h	4 Jan 2008 22:25:45 -0000	1.2.2.6
+++ hxmmfmetadata.h	7 Feb 2008 18:26:49 -0000	1.2.2.7
@@ -94,7 +94,7 @@
         void FindStreamValueByName(const char* pStream, const char* pKey, TInt& aInt );
         void FindStreamValueByName(const char* pStream, const char* pKey, CHXString& aValue );
         HXBOOL DoesStreamExist( const char* pStream ) const;
-
+        TInt UpadateClipInfoL( CHXString key, CHXString value );
 
     private:
 

Index: hxmmfstatectrl.h
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfstatectrl.h,v
retrieving revision 1.3.2.10
retrieving revision 1.3.2.11
diff -u -d -r1.3.2.10 -r1.3.2.11
--- hxmmfstatectrl.h	16 Aug 2007 19:12:45 -0000	1.3.2.10
+++ hxmmfstatectrl.h	7 Feb 2008 18:26:49 -0000	1.3.2.11
@@ -65,10 +65,25 @@
 
 class HXMMFStateCtrl : public HXMMFState
                      , public IHXAccessPointSelector
+                     , public IHXPropWatchResponse
                      , public CBase
 {
   public:
     DECLARE_UNKNOWN(HXMMFStateCtrl)
+    // IHXPropWatchResponse methods
+    STDMETHOD(AddedProp)	(THIS_
+				const UINT32		ulHash,
+				const HXPropType	type,
+				const UINT32		ulParentHash);
+    STDMETHOD(ModifiedProp)	(THIS_
+				const UINT32		ulHash,
+				const HXPropType	type,
+				const UINT32		ulParentHash);
+    STDMETHOD(DeletedProp)	(THIS_
+				const UINT32		ulHash,
+				const UINT32		ulParentHash);
+
+    HX_RESULT	SetWatchOnMetadata(IHXPropWatch*& pWatch, const char* pMetaDataKey);
 
     // IHXClientAdviseSink
     STDMETHOD(OnPosLength) (THIS_ UINT32 ulPosition, UINT32 ulLength);
@@ -145,6 +160,9 @@
     UINT16                   m_percentComplete;
     MHXStateCtrlObs*         m_pObserver;         
     MHXControllerProperties* m_pProperties;
+    IHXRegistry*             m_pRegistry;
+    IHXPropWatch*            m_pTitleChangeObs;
+    IHXPropWatch*            m_pAuthorChangeObs;
 
   public:
     void ChangeState(CurrentState);

Index: hxmmfstatectrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfstatectrl.cpp,v
retrieving revision 1.4.2.19
retrieving revision 1.4.2.20
diff -u -d -r1.4.2.19 -r1.4.2.20
--- hxmmfstatectrl.cpp	16 Aug 2007 19:12:45 -0000	1.4.2.19
+++ hxmmfstatectrl.cpp	7 Feb 2008 18:26:49 -0000	1.4.2.20
@@ -64,6 +64,7 @@
 // IUnknown implementation body...
 BEGIN_INTERFACE_LIST(HXMMFStateCtrl)
     INTERFACE_LIST_ENTRY(IID_IHXClientAdviseSink, IHXClientAdviseSink)
+    INTERFACE_LIST_ENTRY(IID_IHXPropWatchResponse, IHXPropWatchResponse)
     INTERFACE_LIST_ENTRY(IID_IHXErrorSink, IHXErrorSink)
     INTERFACE_LIST_ENTRY_DELEGATE_BLIND
     (
@@ -318,7 +319,10 @@
         
         ShutDownAP();
         HX_RELEASE(m_pCCF);
+        HX_RELEASE(m_pTitleChangeObs);
+        HX_RELEASE(m_pAuthorChangeObs);
         
+        HX_RELEASE(m_pRegistry);
         HX_RELEASE(m_pSiteSupplier);
         HX_RELEASE(m_pClientEngine);
 
@@ -350,6 +354,9 @@
     , m_bClosed(EFalse)
     , m_firstBuffer(TRUE)
     , m_bufferStatus(0)
+    , m_pRegistry(NULL)
+    , m_pTitleChangeObs(NULL)
+    , m_pAuthorChangeObs(NULL)
 {
     m_pSiteSupplier = NULL;
     m_pPrefs = NULL;
@@ -550,6 +557,96 @@
 {
     if ( m_pObserver )
         m_pObserver->OnPrepareComplete();
+    
+    QueryInterface(IID_IHXRegistry, (void **) &m_pRegistry);
+    if(m_pRegistry)
+    {
+        SetWatchOnMetadata(m_pTitleChangeObs, "Title");
+        SetWatchOnMetadata(m_pAuthorChangeObs, "Author");
+    }
+}
+
+STDMETHODIMP
+HXMMFStateCtrl::SetWatchOnMetadata(IHXPropWatch*& pWatch, const char* pMetaDataKey)
+{
+    HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::SetWatchOnShoutcastMetadata()");
+    HX_RESULT	    hr = HXR_FAILED;
+
+    HX_RELEASE(pWatch);
+    
+    if (HXR_OK == m_pRegistry->CreatePropWatch(pWatch))
+    {
+        if (HXR_OK == pWatch->Init((IHXPropWatchResponse*)this))
+        {
+            if(pWatch->SetWatchByName(pMetaDataKey))
+            {
+                //watch is created.
+                hr = HXR_OK;
+            }
+            else
+            {
+                //IHXPropWatchResponse* pWresponse = (IHXPropWatchResponse*)this;
+                //HX_RELEASE(pWresponse);
+            }
+        }
+    }
+        
+	if(hr == HXR_FAILED)
+	{
+	    HX_RELEASE(pWatch);
+	}
+	
+	return hr;
+}
+
+STDMETHODIMP
+HXMMFStateCtrl::AddedProp(const UINT32		ulHash,
+			const HXPropType	type,
+			const UINT32		ulParentHash)
+{
+    return HXR_OK;
+}
+
+STDMETHODIMP
+HXMMFStateCtrl::ModifiedProp(const UINT32		ulHash,
+			   const HXPropType	type,
+			   const UINT32		ulParentHash)
+{
+    HXPropType	theType = PT_UNKNOWN;
+    IHXBuffer*	pBuffer = NULL;
+    IHXBuffer*  pPropName = NULL;
+
+    // apparently the type returned from IHXPropWatchReponse is always
+	// PT_UNKNOWN !!
+	theType = m_pRegistry->GetTypeById(ulHash);
+    switch(theType)
+    {
+        case PT_STRING:
+        {
+            if (HXR_OK == m_pRegistry->GetPropName(ulHash, pPropName))
+            {
+                if(HXR_OK == m_pRegistry->GetStrById(ulHash,
+                                                   pBuffer))
+                {
+                    if ( m_pObserver )
+                        m_pObserver->OnMetadataUpdate(pPropName,pBuffer);
+                }
+            }
+            HX_RELEASE(pBuffer);
+            HX_RELEASE(pPropName);
+            break;
+        }
+        
+        default:
+            break;
+    }
+}
+
+STDMETHODIMP
+HXMMFStateCtrl::DeletedProp(const UINT32		ulHash,
+			  const UINT32		ulParentHash)
+{
+    return HXR_OK;
 }
 
 void




More information about the Clientapps-cvs mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.