[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.orgUpdate 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