add ability to filter by tag. they must be created by hand right now.
[enigma2.git] / lib / service / servicedvb.cpp
index 098952bddca95eee3f3356ec5ceb1c0de6e43934..6c980c76f6b4ceba675265cd40c238903ac68be8 100644 (file)
@@ -3,6 +3,7 @@
 #include <string>
 #include <lib/service/servicedvb.h>
 #include <lib/service/service.h>
+#include <lib/base/estring.h>
 #include <lib/base/init_num.h>
 #include <lib/base/init.h>
 #include <lib/base/nconfig.h> // access to python config
@@ -211,6 +212,8 @@ std::string eStaticServiceDVBPVRInformation::getInfoString(const eServiceReferen
                return m_parser.m_description;
        case iServiceInformation::sServiceref:
                return m_parser.m_ref.toString();
+       case iServiceInformation::sTags:
+               return m_parser.m_tags;
        default:
                return "";
        }
@@ -1337,6 +1340,8 @@ int eDVBServicePlay::selectAudioStream(int i)
                }
        }
 
+       h.resetCachedProgram();
+
        return 0;
 }
 
@@ -1362,7 +1367,7 @@ std::string eDVBServicePlay::getRadioText(int x)
                switch(x)
                {
                        case 0:
-                               return m_radiotext_parser->getCurrentText();
+                               return convertLatin1UTF8(m_radiotext_parser->getCurrentText());
                }
        return "";
 }
@@ -1823,6 +1828,8 @@ void eDVBServicePlay::updateDecoder()
 
                m_decoder->setTextPID(tpid);
 
+               m_teletext_parser->start(program.textPid);
+
                if (!m_is_primary)
                        m_decoder->setTrickmode(1);
 
@@ -2006,21 +2013,20 @@ RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, PyObject *entry)
 
        if (page > 0)
        {
-               eDVBServicePMTHandler &h = m_timeshift_active ? m_service_handler_timeshift : m_service_handler;
+/*             eDVBServicePMTHandler &h = m_timeshift_active ? m_service_handler_timeshift : m_service_handler;
                eDVBServicePMTHandler::program program;
                if (h.getProgramInfo(program))
                        eDebug("getting program info failed.");
                else
                {
                        eDebug("start teletext on pid %04x, page %d", program.textPid, page);
-                       m_teletext_parser->start(program.textPid);
+                       m_teletext_parser->start(program.textPid);*/
                        m_teletext_parser->setPage(page);
-               }
+//             }
        }
        else
        {
                int pid = -page;
-               eDebug("start dvb subtitles on pid %04x", pid);
                m_subtitle_parser->start(pid);
        }
 
@@ -2031,6 +2037,16 @@ RESULT eDVBServicePlay::disableSubtitles(eWidget *parent)
 {
        delete m_subtitle_widget;
        m_subtitle_widget = 0;
+       if (m_subtitle_parser)
+       {
+               m_subtitle_parser->stop();
+               m_dvb_subtitle_pages.clear();
+       }
+       if (m_teletext_parser)
+       {
+               m_teletext_parser->setPage(-1);
+               m_subtitle_pages.clear();
+       }
        return 0;
 }
 
@@ -2048,7 +2064,7 @@ PyObject *eDVBServicePlay::getSubtitleList()
        {
                PyObject *tuple = PyTuple_New(2);
                char desc[20];
-               sprintf(desc, "Page %x", *i);
+               sprintf(desc, "Page %d", *i);
                PyTuple_SetItem(tuple, 0, PyString_FromString(desc));
                PyTuple_SetItem(tuple, 1, PyInt_FromLong(*i));
                PyList_Append(l, tuple);
@@ -2089,6 +2105,8 @@ void eDVBServicePlay::newSubtitlePage(const eDVBTeletextSubtitlePage &page)
 void eDVBServicePlay::checkSubtitleTiming()
 {
 //     eDebug("checkSubtitleTiming");
+       if (!m_subtitle_widget)
+               return;
        while (1)
        {
                enum { TELETEXT, DVB } type;