Ticket #5736: patch-libmythupnp-filter.diff

File patch-libmythupnp-filter.diff, 5.6 KB (added by xavier, 12 years ago)
  • upnpcds.h

     
    9999        }
    100100
    101101        void    Add         ( CDSObject *pObject );
    102         QString GetResultXML();
     102        QString GetResultXML(FilterMap &filter);
    103103};
    104104
    105105//////////////////////////////////////////////////////////////////////////////
  • upnpcdsobjects.cpp

     
    150150//
    151151/////////////////////////////////////////////////////////////////////////////
    152152
    153 QString CDSObject::toXml()// FilterMap &filter )
     153QString CDSObject::toXml( FilterMap &filter )
    154154{
    155155    QString     sXML;
    156156    Q3TextStream os( sXML, QIODevice::WriteOnly );
    157157   
    158158    os.setEncoding( Q3TextStream::UnicodeUTF8 );
    159159
    160     toXml( os ); //, filter );
     160    toXml( os , filter );
    161161
    162162    return( sXML );
    163163}
     
    166166//
    167167/////////////////////////////////////////////////////////////////////////////
    168168
    169 void CDSObject::toXml( Q3TextStream &os ) //, FilterMap &filter )
     169void CDSObject::toXml( Q3TextStream &os , FilterMap &filter )
    170170{
    171171    QString sEndTag = "";
    172     bool    bFilter = false;
     172    bool    bFilter = true;
    173173
    174     //  -=>TODO: Need to add Filter Support
     174    if (filter.find( "*" ) != filter.end())
     175        bFilter = false;
    175176
    176 //    if (filter.find( "*" ) != filter.end())
    177 //        bFilter = false;
    178 
    179177    switch( m_eType )
    180178    {   
    181179        case OT_Container:
     
    220218            else
    221219                sName = pProp->m_sName;
    222220
    223             if (pProp->m_bRequired || !bFilter ) //|| ( filter.find( sName ) != filter.end())
     221            if (pProp->m_bRequired || !bFilter || ( filter.find( sName ) != filter.end()))
    224222            {
    225223                os << "<"  << sName << ">";
    226224                os << pProp->m_sValue;
     
    258256                  pObject != NULL;
    259257                  pObject = m_children.next() )
    260258    {
    261         pObject->toXml( os ); //, filter );
     259        pObject->toXml( os , filter );
    262260    }
    263261
    264262    // ----------------------------------------------------------------------
  • upnpcds.cpp

     
    3333//
    3434/////////////////////////////////////////////////////////////////////////////
    3535
    36 QString UPnpCDSExtensionResults::GetResultXML()
     36QString UPnpCDSExtensionResults::GetResultXML(FilterMap &filter)
    3737{
    3838    QString sXML;
    3939
     
    4141                     pObject != NULL;
    4242                     pObject  = m_List.next() )
    4343    {
    44         sXML += pObject->toXml();   
     44        sXML += pObject->toXml(filter);   
    4545    }
    4646
    4747    return( sXML );
     
    222222    VERBOSE(VB_UPNP, QString("UPnpCDS::HandleBrowse ObjectID=%1, ContainerId=%2")
    223223                             .arg(request.m_sObjectId)
    224224                             .arg(request.m_sContainerID));
     225                             
     226    FilterMap filter = (FilterMap)request.m_sFilter.split(",");
    225227
    226228    if (request.m_sObjectId == "0")
    227229    {
     
    244246
    245247                m_root.SetChildCount( m_extensions.count() );
    246248
    247                 sResultXML      = m_root.toXml();
     249                sResultXML      = m_root.toXml(filter);
    248250
    249251                break;
    250252            }
     
    285287                    {
    286288                        if (pResult->m_eErrorCode == UPnPResult_Success)
    287289                        {
    288                             sResultXML  += pResult->GetResultXML();
     290                            sResultXML  += pResult->GetResultXML(filter);
    289291                            nNumberReturned ++;
    290292                        }
    291293
     
    326328                nNumberReturned = pResult->m_List.count();
    327329                nTotalMatches   = pResult->m_nTotalMatches;
    328330                nUpdateID       = pResult->m_nUpdateID;
    329                 sResultXML      = pResult->GetResultXML();
     331                sResultXML      = pResult->GetResultXML(filter);
    330332            }
    331333
    332334            delete pResult;
     
    340342    if (eErrorCode == UPnPResult_Success)
    341343    {
    342344        NameValueList list;
    343 
     345        VERBOSE(VB_UPNP, sResultXML);
    344346        QString sResults = DIDL_LITE_BEGIN;
    345347        sResults += sResultXML;
    346348        sResults += DIDL_LITE_END;
     
    444446
    445447
    446448    UPnpCDSExtension    *pExtension = m_extensions.first();
     449   
     450    FilterMap filter =  (FilterMap) request.m_sFilter.split(",");
    447451
    448452    //bool bSearchDone = false;
    449453
     
    465469            nNumberReturned = pResult->m_List.count();
    466470            nTotalMatches   = pResult->m_nTotalMatches;
    467471            nUpdateID       = pResult->m_nUpdateID;
    468             sResultXML      = pResult->GetResultXML();
     472            sResultXML      = pResult->GetResultXML(filter);
    469473            //bSearchDone = true;
    470474        }
    471475
  • upnpcdsobjects.h

     
    120120
    121121typedef Q3PtrList < ContainerClass > Classes;
    122122
     123typedef QStringList FilterMap;
     124
    123125//////////////////////////////////////////////////////////////////////////////
    124126
    125127class CDSObject
     
    173175        void          SetPropValue( QString sName, QString sValue );
    174176        QString       GetPropValue( QString sName );
    175177
    176         QString       toXml      ();
    177         void          toXml      ( Q3TextStream &os );
     178        QString       toXml      ( FilterMap &filter);
     179        void          toXml      ( Q3TextStream &os, FilterMap &filter );
    178180
    179181        long          GetChildCount();
    180182        void          SetChildCount( long nCount );