Ticket #5736: patch-libmythupnp-filter-v2.diff

File patch-libmythupnp-filter-v2.diff, 5.4 KB (added by Xavier Hervy <xavier.hervy@…>, 12 years ago)

update patch for revision 18431

  • upnpcds.h

     
    105105        }
    106106
    107107        void    Add         ( CDSObject *pObject );
    108         QString GetResultXML();
     108        QString GetResultXML(FilterMap &filter);
    109109};
    110110
    111111//////////////////////////////////////////////////////////////////////////////
  • upnpcdsobjects.cpp

     
    161161//
    162162/////////////////////////////////////////////////////////////////////////////
    163163
    164 QString CDSObject::toXml(void) const
     164QString CDSObject::toXml( FilterMap &filter ) const
    165165{
    166166    QString     sXML;
    167167    QTextStream os( &sXML, QIODevice::WriteOnly );
    168168    os.setCodec(QTextCodec::codecForName("UTF-8"));
    169     toXml(os);
     169    toXml(os, filter);
    170170    os << flush;
    171171    return( sXML );
    172172}
     
    175175//
    176176/////////////////////////////////////////////////////////////////////////////
    177177
    178 void CDSObject::toXml(QTextStream &os) const
     178void CDSObject::toXml(QTextStream &os, FilterMap &filter) const
    179179{
    180180    QString sEndTag = "";
    181     bool    bFilter = false;
     181    bool    bFilter = true;
    182182
    183     //  -=>TODO: Need to add Filter Support
     183    if (filter.indexOf( "*" ) != -1)
     184        bFilter = false;
    184185
    185 //    if (filter.find( "*" ) != filter.end())
    186 //        bFilter = false;
    187 
    188186    switch( m_eType )
    189187    {   
    190188        case OT_Container:
     
    230228            else
    231229                sName = pProp->m_sName;
    232230
    233             if (pProp->m_bRequired || !bFilter ) //|| ( filter.find( sName ) != filter.end())
     231            if (pProp->m_bRequired || !bFilter
     232                || ( filter.indexOf( sName ) != -1))
    234233            {
    235234                os << "<"  << sName << ">";
    236235                os << pProp->m_sValue;
     
    262261
    263262    CDSObjects::const_iterator cit = m_children.begin();
    264263    for (; cit != m_children.end(); ++cit)
    265         (*cit)->toXml(os);
     264        (*cit)->toXml(os, filter);
    266265
    267266    // ----------------------------------------------------------------------
    268267    // Close Element Tag
  • upnpcds.cpp

     
    3131//
    3232/////////////////////////////////////////////////////////////////////////////
    3333
    34 QString UPnpCDSExtensionResults::GetResultXML()
     34QString UPnpCDSExtensionResults::GetResultXML(FilterMap &filter)
    3535{
    3636    QString sXML;
    3737
    3838    CDSObjects::const_iterator it = m_List.begin();
    3939    for (; it != m_List.end(); ++it)
    40         sXML += (*it)->toXml();   
     40        sXML += (*it)->toXml(filter);   
    4141
    4242    return sXML;
    4343}
     
    219219    short          nTotalMatches   = 0;
    220220    short          nUpdateID       = 0;
    221221    QString        sResultXML;
     222    FilterMap filter =  (FilterMap) request.m_sFilter.split(",");
    222223
    223224    VERBOSE(VB_UPNP, QString("UPnpCDS::HandleBrowse ObjectID=%1, ContainerId=%2")
    224225                             .arg(request.m_sObjectId)
     
    245246
    246247                m_root.SetChildCount( m_extensions.count() );
    247248
    248                 sResultXML      = m_root.toXml();
     249                sResultXML      = m_root.toXml(filter);
    249250
    250251                break;
    251252            }
     
    289290                    {
    290291                        if (pResult->m_eErrorCode == UPnPResult_Success)
    291292                        {
    292                             sResultXML  += pResult->GetResultXML();
     293                            sResultXML  += pResult->GetResultXML(filter);
    293294                            nNumberReturned ++;
    294295                        }
    295296
     
    328329                nNumberReturned = pResult->m_List.count();
    329330                nTotalMatches   = pResult->m_nTotalMatches;
    330331                nUpdateID       = pResult->m_nUpdateID;
    331                 sResultXML      = pResult->GetResultXML();
     332                sResultXML      = pResult->GetResultXML(filter);
    332333            }
    333334
    334335            delete pResult;
     
    459460
    460461        if (eErrorCode == UPnPResult_Success)
    461462        {
     463            FilterMap filter =  (FilterMap) request.m_sFilter.split(",");
    462464            nNumberReturned = pResult->m_List.count();
    463465            nTotalMatches   = pResult->m_nTotalMatches;
    464466            nUpdateID       = pResult->m_nUpdateID;
    465             sResultXML      = pResult->GetResultXML();
     467            sResultXML      = pResult->GetResultXML(filter);
    466468            //bSearchDone = true;
    467469        }
    468470
  • upnpcdsobjects.h

     
    119119
    120120typedef QList<ContainerClass*> Classes;
    121121
     122typedef QStringList FilterMap;
     123
    122124//////////////////////////////////////////////////////////////////////////////
    123125
    124126class CDSObject
     
    171173
    172174        void          SetPropValue( QString sName, QString sValue );
    173175        QString       GetPropValue( const QString &sName ) const;
     176        QString       toXml      ( FilterMap &filter ) const;
     177        void          toXml      ( QTextStream &os, FilterMap &filter ) const;
    174178
    175         QString       toXml      (  void ) const;
    176         void          toXml      ( QTextStream &os ) const;
    177 
    178179        long          GetChildCount( void ) const;
    179180        void          SetChildCount( long nCount );
    180181