|
From: <ad...@us...> - 2003-02-25 17:20:22
|
Update of /cvsroot/bdadev/TuneReqStore
In directory sc8-pr-cvs1:/tmp/cvs-serv22837
Modified Files:
TuneInfo.cpp TuneInfo.h TuneReqStore.idl TuneRequestStore.cpp
TuneRequestStore.h
Log Message:
Fixed VB compability issues with schedule info
Storage of Tuning spaces by name only
Index: TuneInfo.cpp
===================================================================
RCS file: /cvsroot/bdadev/TuneReqStore/TuneInfo.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TuneInfo.cpp 21 Feb 2003 16:36:43 -0000 1.5
--- TuneInfo.cpp 25 Feb 2003 17:20:12 -0000 1.6
***************
*** 98,102 ****
}
! STDMETHODIMP CTuneInfo::get_ProgramInfomation(IEnumProgramInfo **pVal)
{
if (pVal == NULL)
--- 98,102 ----
}
! STDMETHODIMP CTuneInfo::get__NewEnum(IEnumProgramInfo **pVal)
{
if (pVal == NULL)
***************
*** 125,128 ****
--- 125,153 ----
}
+ STDMETHODIMP CTuneInfo::get_Item(long Index, IProgramInfo* *pVal)
+ {
+ if (pVal == NULL)
+ {
+ return E_POINTER;
+ }
+
+ if(Index >= 0 && Index < m_ProgramInfos.size())
+ {
+ *pVal = m_ProgramInfos[Index];
+ (*pVal)->AddRef();
+ return S_OK;
+ }
+ else
+ {
+ return E_FAIL;
+ }
+ }
+
+ STDMETHODIMP CTuneInfo::get_Count(long *pVal)
+ {
+ *pVal = m_ProgramInfos.size();
+ return S_OK;
+ }
+
void CTuneInfo::EmptyArray()
{
***************
*** 142,145 ****
--- 167,174 ----
//
// $Log$
+ // Revision 1.6 2003/02/25 17:20:12 adcockj
+ // Fixed VB compability issues with schedule info
+ // Storage of Tuning spaces by name only
+ //
// Revision 1.5 2003/02/21 16:36:43 adcockj
// Added schedule functionality (untested) and some code clean up
Index: TuneInfo.h
===================================================================
RCS file: /cvsroot/bdadev/TuneReqStore/TuneInfo.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** TuneInfo.h 21 Feb 2003 16:36:43 -0000 1.6
--- TuneInfo.h 25 Feb 2003 17:20:13 -0000 1.7
***************
*** 56,60 ****
// ITuneInfo
public:
! STDMETHOD(get_ProgramInfomation)(/*[out, retval]*/ IEnumProgramInfo* *pVal);
STDMETHOD(get_KeyedNumber)(/*[out, retval]*/ long *pVal);
STDMETHOD(put_KeyedNumber)(/*[in]*/ long newVal);
--- 56,62 ----
// ITuneInfo
public:
! STDMETHOD(get__NewEnum)(/*[out, retval]*/ IEnumProgramInfo* *pVal);
! STDMETHOD(get_Item)(/*[in]*/ long Index, /*[out, retval]*/ IProgramInfo* *pVal);
! STDMETHOD(get_Count)(/*[out, retval]*/ long* pVal);
STDMETHOD(get_KeyedNumber)(/*[out, retval]*/ long *pVal);
STDMETHOD(put_KeyedNumber)(/*[in]*/ long newVal);
Index: TuneReqStore.idl
===================================================================
RCS file: /cvsroot/bdadev/TuneReqStore/TuneReqStore.idl,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** TuneReqStore.idl 25 Feb 2003 08:01:13 -0000 1.7
--- TuneReqStore.idl 25 Feb 2003 17:20:13 -0000 1.8
***************
*** 70,82 ****
interface ITuneInfo : IDispatch
{
! [propget, id(1), helpstring("property TuneRequest")] HRESULT TuneRequest([out, retval] ITuneRequest* *pVal);
! [propput, id(1), helpstring("property TuneRequest")] HRESULT TuneRequest([in] ITuneRequest* newVal);
! [propget, id(2), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
! [propput, id(2), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
! [propget, id(3), helpstring("property UniqueID")] HRESULT UniqueID([out, retval] BSTR *pVal);
! [propput, id(3), helpstring("property UniqueID")] HRESULT UniqueID([in] BSTR newVal);
! [propget, id(4), helpstring("property KeyedNumber")] HRESULT KeyedNumber([out, retval] long *pVal);
! [propput, id(4), helpstring("property KeyedNumber")] HRESULT KeyedNumber([in] long newVal);
! [propget, id(5), helpstring("property ProgramInfomation")] HRESULT ProgramInfomation([out, retval] IEnumProgramInfo* *pVal);
};
--- 70,84 ----
interface ITuneInfo : IDispatch
{
! [id(DISPID_NEWENUM), propget] HRESULT _NewEnum([out, retval] IEnumProgramInfo** ppUnk);
! [id(DISPID_VALUE), propget] HRESULT Item([in] long Index, [out, retval] IProgramInfo** pVal);
! [id(1), propget] HRESULT Count([out, retval] long* pVal);
! [propget, id(2), helpstring("property TuneRequest")] HRESULT TuneRequest([out, retval] ITuneRequest* *pVal);
! [propput, id(2), helpstring("property TuneRequest")] HRESULT TuneRequest([in] ITuneRequest* newVal);
! [propget, id(3), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
! [propput, id(3), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
! [propget, id(4), helpstring("property UniqueID")] HRESULT UniqueID([out, retval] BSTR *pVal);
! [propput, id(4), helpstring("property UniqueID")] HRESULT UniqueID([in] BSTR newVal);
! [propget, id(5), helpstring("property KeyedNumber")] HRESULT KeyedNumber([out, retval] long *pVal);
! [propput, id(5), helpstring("property KeyedNumber")] HRESULT KeyedNumber([in] long newVal);
};
***************
*** 159,162 ****
--- 161,168 ----
//
// $Log$
+ // Revision 1.8 2003/02/25 17:20:13 adcockj
+ // Fixed VB compability issues with schedule info
+ // Storage of Tuning spaces by name only
+ //
// Revision 1.7 2003/02/25 08:01:13 adcockj
// Added support for video Control
Index: TuneRequestStore.cpp
===================================================================
RCS file: /cvsroot/bdadev/TuneReqStore/TuneRequestStore.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** TuneRequestStore.cpp 25 Feb 2003 08:01:14 -0000 1.12
--- TuneRequestStore.cpp 25 Feb 2003 17:20:13 -0000 1.13
***************
*** 354,468 ****
CHECK(node->QueryInterface(&pElem));
! CComVariant varVT;
! CHECK(pElem->getAttribute(CComBSTR(L"vt"), &varVT));
! CHECK(varVT.ChangeType(VT_I2));
! VARTYPE vt = varVT.iVal;
! if (vt == VT_RECORD)
! {
! CComVariant var;
! // Get the uuid
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"uuid"), var));
! GUID uuid;
! CHECK(CLSIDFromString(var.bstrVal, &uuid));
! var.Clear();
! // Get the libid
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"libid"), var));
! GUID libid;
! CHECK(CLSIDFromString(var.bstrVal, &libid));
! var.Clear();
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"major"), var));
! CHECK(var.ChangeType(VT_I2));
! WORD wMajor = var.iVal;
! var.Clear();
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"minor"), var));
! CHECK(var.ChangeType(VT_I2));
! WORD wMinor = var.iVal;
! var.Clear();
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"lcid"), var));
! CHECK(var.ChangeType(VT_UI4));
! LCID lcid = var.ulVal;
! var.Clear();
! CComPtr<IRecordInfo> pRecInfo;
! CHECK(GetRecordInfoFromGuids(libid, wMajor, wMinor, lcid, uuid, &pRecInfo));
! void *pvRecord = pRecInfo->RecordCreate();
! ULONG cFields;
! CHECK(pRecInfo->GetFieldNames(&cFields, 0));
! BSTR *prgNames = new BSTR[cFields];
! CHECK(hr = pRecInfo->GetFieldNames(&cFields, prgNames));
! if (FAILED(hr)) {
! delete [] prgNames;
! return hr;
! }
! for (ULONG i = 0; i < cFields; i++)
! {
! if (SUCCEEDED(hr))
{
- CComVariant value;
- m_stackElems.push(pElem);
- CHECK(hr = Read(prgNames[i], &value, pErrorLog));
- m_stackElems.pop();
if (SUCCEEDED(hr))
! CHECK(pRecInfo->PutField(INVOKE_PROPERTYPUT, pvRecord, prgNames[i], &value));
}
! SysFreeString(prgNames[i]);
! }
! if (FAILED(hr)) {
! delete [] prgNames;
! return hr;
! }
! pVar->vt = VT_RECORD;
! pVar->pRecInfo = pRecInfo.Detach();
! pVar->pvRecord = pvRecord;
! delete [] prgNames;
! }
! else if (vt == VT_UNKNOWN || vt == VT_DISPATCH)
! {
! CComPtr<IPersistPropertyBag> pppb;
! m_stackElems.push(pElem);
! CHECK(UnPersistObject(pErrorLog, &pppb));
! m_stackElems.pop();
! pVar->vt = vt;
! if (hr == S_OK)
! return pppb->QueryInterface((vt == VT_UNKNOWN ? IID_IUnknown : IID_IDispatch), (void**)&pVar->punkVal);
else
{
! pVar->punkVal = 0;
! return S_FALSE;
}
}
- else if (vt == VT_BSTR)
- {
- CHECK(pElem->get_text(&pVar->bstrVal));
- pVar->vt = vt;
- }
- else
- {
- CComVariant textValue;
- CHECK(pElem->get_text(&textValue.bstrVal));
- textValue.vt = VT_BSTR;
- return VariantChangeType(pVar, &textValue, 0, vt);
- }
return S_OK;
--- 354,478 ----
CHECK(node->QueryInterface(&pElem));
! if(wcscmp(pwszPropNameIn, L"Tuning Space") == 0)
! {
! CComBSTR Name;
! CHECK(pElem->get_text(&Name));
! pVar->vt = VT_DISPATCH;
! return GetTuningSpace(Name, (ITuningSpace**) &pVar->pdispVal);
! }
! else
! {
! CComVariant varVT;
! CHECK(pElem->getAttribute(CComBSTR(L"vt"), &varVT));
! CHECK(varVT.ChangeType(VT_I2));
! VARTYPE vt = varVT.iVal;
! if (vt == VT_RECORD)
! {
! CComVariant var;
! // Get the uuid
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"uuid"), var));
! GUID uuid;
! CHECK(CLSIDFromString(var.bstrVal, &uuid));
! var.Clear();
! // Get the libid
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"libid"), var));
! GUID libid;
! CHECK(CLSIDFromString(var.bstrVal, &libid));
! var.Clear();
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"major"), var));
! CHECK(var.ChangeType(VT_I2));
! WORD wMajor = var.iVal;
! var.Clear();
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"minor"), var));
! CHECK(var.ChangeType(VT_I2));
! WORD wMinor = var.iVal;
! var.Clear();
! CHECK(GetAttributeToBSTRVariant( pElem, CComBSTR(L"lcid"), var));
! CHECK(var.ChangeType(VT_UI4));
! LCID lcid = var.ulVal;
! var.Clear();
! CComPtr<IRecordInfo> pRecInfo;
! CHECK(GetRecordInfoFromGuids(libid, wMajor, wMinor, lcid, uuid, &pRecInfo));
! void *pvRecord = pRecInfo->RecordCreate();
! ULONG cFields;
! CHECK(pRecInfo->GetFieldNames(&cFields, 0));
! BSTR *prgNames = new BSTR[cFields];
! CHECK(hr = pRecInfo->GetFieldNames(&cFields, prgNames));
! if (FAILED(hr)) {
! delete [] prgNames;
! return hr;
! }
! for (ULONG i = 0; i < cFields; i++)
{
if (SUCCEEDED(hr))
! {
! CComVariant value;
! m_stackElems.push(pElem);
! CHECK(hr = Read(prgNames[i], &value, pErrorLog));
! m_stackElems.pop();
! if (SUCCEEDED(hr))
! CHECK(pRecInfo->PutField(INVOKE_PROPERTYPUT, pvRecord, prgNames[i], &value));
! }
! SysFreeString(prgNames[i]);
}
! if (FAILED(hr)) {
! delete [] prgNames;
! return hr;
! }
! pVar->vt = VT_RECORD;
! pVar->pRecInfo = pRecInfo.Detach();
! pVar->pvRecord = pvRecord;
! delete [] prgNames;
! }
! else if (vt == VT_UNKNOWN || vt == VT_DISPATCH)
! {
! CComPtr<IPersistPropertyBag> pppb;
! m_stackElems.push(pElem);
! CHECK(UnPersistObject(pErrorLog, &pppb));
! m_stackElems.pop();
! pVar->vt = vt;
! if (hr == S_OK)
! return pppb->QueryInterface((vt == VT_UNKNOWN ? IID_IUnknown : IID_IDispatch), (void**)&pVar->punkVal);
! else
! {
! pVar->punkVal = 0;
! return S_FALSE;
! }
! }
! else if (vt == VT_BSTR)
! {
! CHECK(pElem->get_text(&pVar->bstrVal));
! pVar->vt = vt;
! }
else
{
! CComVariant textValue;
! CHECK(pElem->get_text(&textValue.bstrVal));
! textValue.vt = VT_BSTR;
! return VariantChangeType(pVar, &textValue, 0, vt);
}
}
return S_OK;
***************
*** 485,575 ****
CHECK(m_doc->createElement(CComBSTR(pwszPropName.c_str()), &pElem));
! CComVariant Variant(vt);
! CHECK(Variant.ChangeType(VT_BSTR));
!
! CHECK(pElem->setAttribute(CComBSTR(L"vt"), Variant));
!
! if (vt & VT_ARRAY)
{
! return E_NOTIMPL;
}
! else if (vt == VT_RECORD)
{
! CComPtr<IRecordInfo> pRecInfo = pVar->pRecInfo;
! void *pvRecord = pVar->pvRecord;
! GUID guid;
! CHECK(pRecInfo->GetGuid(&guid));
! CComBSTR bstr(guid);
! CHECK(pElem->setAttribute(CComBSTR(L"uuid"), CComVariant(bstr)));
! CComPtr<ITypeInfo> pTypeInfo;
! CHECK(pRecInfo->GetTypeInfo(&pTypeInfo));
! CComPtr<ITypeLib> pTypeLib;
! UINT index;
! CHECK(pTypeInfo->GetContainingTypeLib(&pTypeLib, &index));
! TLIBATTR *pattr = 0;
! CHECK(pTypeLib->GetLibAttr(&pattr));
! CHECK(pElem->setAttribute(CComBSTR(L"libid"), CComVariant(CComBSTR(pattr->guid))));
! CHECK(pElem->setAttribute(CComBSTR(L"major"), CComVariant(pattr->wMajorVerNum)));
! CHECK(pElem->setAttribute(CComBSTR(L"minor"), CComVariant(pattr->wMinorVerNum)));
! CHECK(pElem->setAttribute(CComBSTR(L"lcid"), CComVariant(long(pattr->lcid))));
! pTypeLib->ReleaseTLibAttr(pattr);
! ULONG cFields;
! CHECK(pRecInfo->GetFieldNames(&cFields, 0));
! BSTR *prgNames = new BSTR[cFields];
! if(FAILED(hr = pRecInfo->GetFieldNames(&cFields, prgNames)))
! {
! delete [] prgNames;
! return hr;
! }
! m_stackElems.push(pElem);
! for (ULONG i = 0; i < cFields; i++)
! {
! if (SUCCEEDED(hr))
{
- CComVariant value;
- hr = pRecInfo->GetField(pvRecord, prgNames[i], &value);
if (SUCCEEDED(hr))
{
! CHECK(Write(prgNames[i], &value));
}
}
! SysFreeString(prgNames[i]);
}
! delete [] prgNames;
! if (FAILED(hr)) return hr;
! m_stackElems.pop();
! }
! else if (vt == VT_UNKNOWN || vt == VT_DISPATCH)
! {
! CComPtr<IPersistPropertyBag> pppb;
! if (pVar->punkVal)
{
! CHECK(pVar->punkVal->QueryInterface(&pppb));
! }
! m_stackElems.push(pElem);
! CHECK(PersistObject(pppb));
! m_stackElems.pop();
! }
! else if (vt == VT_BSTR)
! {
! CHECK(pElem->put_text(pVar->bstrVal));
! }
! else
! {
! CComVariant value;
! CHECK(VariantChangeType(&value, pVar, 0, VT_BSTR));
! CHECK(pElem->put_text(value.bstrVal));
}
--- 495,605 ----
CHECK(m_doc->createElement(CComBSTR(pwszPropName.c_str()), &pElem));
! if(wcscmp(pwszPropNameIn, L"Tuning Space") == 0)
{
! if (vt == VT_UNKNOWN || vt == VT_DISPATCH)
! {
! CComQIPtr<ITuningSpace> TuningSpace = pVar->punkVal;
! if(TuningSpace)
! {
! CComBSTR Name;
! CHECK(TuningSpace->get_UniqueName(&Name));
! CHECK(pElem->put_text(Name));
! }
! }
! else
! {
! ATLTRACE("Unexpected type passed as Tuning Space");
! }
}
! else
{
! CComVariant Variant(vt);
! CHECK(Variant.ChangeType(VT_BSTR));
! CHECK(pElem->setAttribute(CComBSTR(L"vt"), Variant));
! if (vt & VT_ARRAY)
! {
! return E_NOTIMPL;
! }
! else if (vt == VT_RECORD)
! {
! CComPtr<IRecordInfo> pRecInfo = pVar->pRecInfo;
! void *pvRecord = pVar->pvRecord;
! GUID guid;
! CHECK(pRecInfo->GetGuid(&guid));
! CComBSTR bstr(guid);
! CHECK(pElem->setAttribute(CComBSTR(L"uuid"), CComVariant(bstr)));
! CComPtr<ITypeInfo> pTypeInfo;
! CHECK(pRecInfo->GetTypeInfo(&pTypeInfo));
! CComPtr<ITypeLib> pTypeLib;
! UINT index;
! CHECK(pTypeInfo->GetContainingTypeLib(&pTypeLib, &index));
! TLIBATTR *pattr = 0;
! CHECK(pTypeLib->GetLibAttr(&pattr));
! CHECK(pElem->setAttribute(CComBSTR(L"libid"), CComVariant(CComBSTR(pattr->guid))));
! CHECK(pElem->setAttribute(CComBSTR(L"major"), CComVariant(pattr->wMajorVerNum)));
! CHECK(pElem->setAttribute(CComBSTR(L"minor"), CComVariant(pattr->wMinorVerNum)));
! CHECK(pElem->setAttribute(CComBSTR(L"lcid"), CComVariant(long(pattr->lcid))));
! pTypeLib->ReleaseTLibAttr(pattr);
! ULONG cFields;
! CHECK(pRecInfo->GetFieldNames(&cFields, 0));
!
! BSTR *prgNames = new BSTR[cFields];
! if(FAILED(hr = pRecInfo->GetFieldNames(&cFields, prgNames)))
! {
! delete [] prgNames;
! return hr;
! }
!
! m_stackElems.push(pElem);
! for (ULONG i = 0; i < cFields; i++)
{
if (SUCCEEDED(hr))
{
! CComVariant value;
! hr = pRecInfo->GetField(pvRecord, prgNames[i], &value);
! if (SUCCEEDED(hr))
! {
! CHECK(Write(prgNames[i], &value));
! }
}
+ SysFreeString(prgNames[i]);
}
! delete [] prgNames;
! if (FAILED(hr)) return hr;
! m_stackElems.pop();
}
! else if (vt == VT_UNKNOWN || vt == VT_DISPATCH)
{
! CComPtr<IPersistPropertyBag> pppb;
! if (pVar->punkVal)
! {
! CHECK(pVar->punkVal->QueryInterface(&pppb));
! }
! m_stackElems.push(pElem);
! CHECK(PersistObject(pppb));
! m_stackElems.pop();
! }
! else if (vt == VT_BSTR)
! {
! CHECK(pElem->put_text(pVar->bstrVal));
! }
! else
! {
! CComVariant value;
! CHECK(VariantChangeType(&value, pVar, 0, VT_BSTR));
! CHECK(pElem->put_text(value.bstrVal));
! }
}
***************
*** 1138,1141 ****
--- 1168,1195 ----
}
+ HRESULT CTuneRequestStore::GetTuningSpace(BSTR Name, ITuningSpace** pDisp)
+ {
+ if(m_SystemTuningSpaces == NULL)
+ {
+ CHECK(m_SystemTuningSpaces.CoCreateInstance(CLSID_SystemTuningSpaces, NULL, CLSCTX_INPROC_SERVER));
+ }
+
+ CComPtr<ITuningSpaces> TuningSpaces;
+
+ CHECK(m_SystemTuningSpaces->TuningSpacesForName(Name, &TuningSpaces));
+
+ // Find the size of the returned collection.
+ long cCount = 0;
+ CHECK(TuningSpaces->get_Count(&cCount));
+ if (cCount > 0)
+ {
+ CComVariant Item(0);
+ return TuningSpaces->get_Item(Item, pDisp);
+ }
+ else
+ {
+ return E_FAIL;
+ }
+ }
/////////////////////////////////////////////////////////////////////////////
***************
*** 1143,1146 ****
--- 1197,1204 ----
//
// $Log$
+ // Revision 1.13 2003/02/25 17:20:13 adcockj
+ // Fixed VB compability issues with schedule info
+ // Storage of Tuning spaces by name only
+ //
// Revision 1.12 2003/02/25 08:01:14 adcockj
// Added support for video Control
Index: TuneRequestStore.h
===================================================================
RCS file: /cvsroot/bdadev/TuneReqStore/TuneRequestStore.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** TuneRequestStore.h 25 Feb 2003 08:01:15 -0000 1.10
--- TuneRequestStore.h 25 Feb 2003 17:20:14 -0000 1.11
***************
*** 94,97 ****
--- 94,99 ----
HRESULT UpdateScheduleInfo(BSTR ServiceId, BSTR ScheduleID, BSTR Title, BSTR Description, ULONG StartTime, ULONG EndTime);
ITuneInfo* GetTuneInfo(BSTR ServiceId);
+ HRESULT GetTuningSpace(BSTR Name, ITuningSpace** pDisp);
+
private:
typedef std::stack<xml::IXMLDOMElement*> ElementStack;
***************
*** 107,110 ****
--- 109,113 ----
DWORD m_GuideDataCookie;
std::vector<ITuneInfo*> m_TuneInfos;
+ CComPtr<ITuningSpaceContainer> m_SystemTuningSpaces;
bool m_UpdatePending;
|