void addEntry(const eServiceReference &e) { // sorry.. at moment we dont show any directory.. or locked service in webif if (e.isLocked() && pinCheck::getInstance()->pLockActive()) return; #ifndef DISABLE_FILE if (eDVB::getInstance()->recorder && !e.path && !e.flags) { if (!onSameTP(eDVB::getInstance()->recorder->recRef,(eServiceReferenceDVB&)e)) return; } #endif result += "<tr bgcolor=\""; result += (num & 1) ? LIGHTGREY : DARKGREY; result += "\"><td width=30 align=center>"; eString serviceRef = ref2string(e); if (!(e.flags & eServiceReference::isDirectory)) { if (!e.path) result += button(50, "EPG", GREEN, "javascript:openEPG('" + serviceRef + "')"); else if (serviceRef.find("%2fmedia%2fhdd%2fmovie%2f") != eString::npos) { result += "<a href=\"javascript:deleteMovie('"; result += serviceRef; result += "')\"><img src=\"trash.gif\" height=12 border=0></a>"; } else result += " "; } else { int count = 0; countDVBServices bla(e, count); if (count) result += button(50, "EPG", GREEN, "javascript:openMultiEPG('" + serviceRef + "')"); else result += " "; } result += eString("</td><td><a href=\"/")+ "?mode=zap&path=" + serviceRef + "\">"; eService *service = iface.addRef(e); if (!service) result += "N/A"; else { result += filter_string(service->service_name); iface.removeRef(e); } result += "</a>"; result += "</td></tr>\n"; num++; }
void countFunction(const eServiceReference& ref) { if (ref.path || ref.flags & eServiceReference::isDirectory || ref.type != eServiceReference::idDVB) return; // sorry.. at moment we dont show any directory.. or locked service in webif if (ref.isLocked() && pinCheck::getInstance()->pLockActive()) return; ++count; }
void addToString(const eServiceReference& ref) { // sorry.. at moment we dont show any directory.. or locked service in webif if (ref.isLocked() && eConfig::getInstance()->pLockActive()) return; eService *service = iface ? iface->addRef(ref) : 0; if (!(ref.data[0] == -1 && ref.data[2] != (int)0xFFFFFFFF)) { if (ref.flags & eServiceReference::isDirectory) result += "\n<" + getTag(mode, subm) + ">"; else result += "\n<service>"; result += "<reference>" + ref.toString() + "</reference>"; if (ref.descr) result += "<name>" + XMLify(filter_string(ref.descr), "XML") + "</name>"; else if (service) { result += "<name>" + XMLify(filter_string(service->service_name), "XML") + "</name>"; if (ref.type == eServiceReference::idDVB && !(ref.flags & eServiceReference::isDirectory)) result += "<provider>" + XMLify(filter_string(((eServiceDVB*)service)->service_provider), "XML") + "</provider>"; } if (ref.type == eServiceReference::idDVB && !(ref.flags & eServiceReference::isDirectory)) { const eServiceReferenceDVB& dvb_ref = (const eServiceReferenceDVB&)ref; eTransponder *tp = eTransponderList::getInstance()->searchTS( dvb_ref.getDVBNamespace(), dvb_ref.getTransportStreamID(), dvb_ref.getOriginalNetworkID()); if (tp && tp->satellite.isValid()) result += "<orbital_position>" + eString().setNum(tp->satellite.orbital_position) + "</orbital_position>"; } if (service) iface->removeRef(ref); if (listCont && ref.flags & eServiceReference::isDirectory) { getContent(mode, subm, ref, result, false); result += "\n</" + getTag(mode, subm) + ">"; } else result += "</service>"; } }
void getcurepg(const eServiceReference &ref) { // sorry.. at moment we dont show any directory.. or locked service in webif if (ref.isLocked() && pinCheck::getInstance()->pLockActive()) return; time_t now = time(0) + eDVB::getInstance()->time_difference; std::stringstream result; result << std::setfill('0'); eService* current; // we read the default action on timer end int defaultendaction = 0; eConfig::getInstance()->getKey("/enigma/timerenddefaultaction", defaultendaction); eDVBServiceController *sapi = eDVB::getInstance()->getServiceAPI(); if (sapi) { current = eDVB::getInstance()->settings->getTransponders()->searchService(ref); if (current) { eServiceReferenceDVB &dref = (eServiceReferenceDVB&)ref; timeMapPtr evt = eEPGCache::getInstance()->getTimeMapPtr(dref); if (evt) { int tsidonid = (dref.getTransportStreamID().get() << 16) | dref.getOriginalNetworkID().get(); int tablePos = 0; time_t tableTime = start; result << "<tr>" << "<td id=\"channel\" width=\"" << eString().sprintf("%d", channelWidth) << "\">" << "<span class=\"channel\">" << filter_string(current->service_name) << "</span>" << "</td>"; tablePos += CHANNELWIDTH; timeMap::const_iterator It; for (It = evt->begin(); It != evt->end(); ++It) { eString description; eString details; eString genre; int genreCategory, genreSubCat; EITEvent event(*It->second, tsidonid, It->second->type,It->second->source); LocalEventData led; led.getLocalData(&event, &description, &details); details.strReplace("\n", "<br/>",UTF8_ENCODING); genre = ""; genreCategory = 0; //none genreSubCat = 0; //default for (ePtrList<Descriptor>::iterator d(event.descriptor); d != event.descriptor.end(); ++d) { Descriptor *descriptor = *d; if (descriptor->Tag() == DESCR_CONTENT) { ContentDescriptor *cod = (ContentDescriptor *)descriptor; for (ePtrList<descr_content_entry_struct>::iterator ce(cod->contentList.begin()); ce != cod->contentList.end(); ++ce) { if (genreCategory == 0) genreCategory = ce->content_nibble_level_1; genreSubCat = ce->content_nibble_level_2; if (!genre && eChannelInfo::getGenre(genreCategory << 4 | genreSubCat)) genre = gettext(eChannelInfo::getGenre(genreCategory << 4 | genreSubCat).c_str()); } } } if (!genre) genre = _("n/a"); // genre += eString().sprintf("(%d.%d)", genreCategory, genreSubCat); time_t eventStart = adjust2FifteenMinutes(event.start_time); time_t eventEnd = eventStart + adjust2FifteenMinutes(event.duration); int eventDuration = 0; int colUnits = 0; if ((eventStart > end) || (eventEnd < tableTime)) { eventDuration = 0; } else if ((eventStart < tableTime) && (eventEnd > tableTime)) { eventDuration = eventEnd - tableTime; } else if (eventStart == tableTime) { eventDuration = adjust2FifteenMinutes(event.duration); } else if ((eventStart > tableTime) && (eventStart < end)) { eventDuration = eventStart - tableTime; colUnits = eventDuration / 60 / 15; if (colUnits == 1) { eventStart = tableTime; eventDuration += adjust2FifteenMinutes(event.duration); } else { result << "<td colspan=\"" << colUnits << "\"> </td>"; tableTime = eventStart; tablePos += colUnits * 15 * d_min; eventDuration = adjust2FifteenMinutes(event.duration); } } if ((eventDuration > 0) && (eventDuration < 15 * 60)) eventDuration = 15 * 60; if (tableTime + eventDuration > end) eventDuration = end - tableTime; colUnits = eventDuration / 60 / 15; if (colUnits > 0) { result << "<td class=\"genre" << eString().sprintf("%02d", genreCategory) << "\" colspan=\"" << colUnits << "\">"; #ifndef DISABLE_FILE int timeroffsetstart = 0; eConfig::getInstance()->getKey("/enigma/timeroffsetstart", timeroffsetstart); int timeroffsetstop = 0; eConfig::getInstance()->getKey("/enigma/timeroffsetstop", timeroffsetstop); result << "<a href=\"javascript:record('" << ref2string(ref) << "','" << event.start_time - (timeroffsetstart * 60) << "','" << event.duration + (timeroffsetstart * 60) + (timeroffsetstop * 60) << "','"; eString tmp = filter_string(description); tmp.strReplace("\'", "\\\'",UTF8_ENCODING); tmp.strReplace("\"", "\\\"",UTF8_ENCODING); tmp.strReplace("&", "~",UTF8_ENCODING); result << tmp << "','" << filter_string(current->service_name) << "','" << defaultendaction << "')\"><img src=\"timer.gif\" border=\"0\" /></a>" << "  "; #endif tm* t = localtime(&event.start_time); result << std::setfill('0') << "<span class=\"time\">" << std::setw(2) << t->tm_mday << '.' << std::setw(2) << t->tm_mon+1 << ". - " << getTimeStr(t, 0) << ' ' << "</span>" << "<span class=\"duration\">" << " (" << event.duration / 60 << " min)" << "</span>" << "<br />"; if ((eventStart <= now) && (eventEnd >= now)) result << "<a href=\"javascript:switchChannel('" << ref2string(ref) << "', '0', '-1')\">"; result << "<span class=\"event\">" << "<b>" << description << "</b>" << "</span>"; if ((eventStart <= now) && (eventEnd >= now)) result << "</a>"; result << "<br />" << _("Genre") << ": " << genre << "<br />"; if ((eventDuration >= 15 * 60) && (pdaScreen == 0)) { result << "<span class=\"description\">" << filter_string(details) << "</span>"; } result << "</td>\n"; tablePos += colUnits * 15 * d_min; tableTime += eventDuration; } } if (tablePos < tableWidth) result << "<td colspan=\"" << (tableWidth - tablePos) / d_min / 15 << "\"> </td>"; result << "</tr>\n"; } multiEPG += result.str(); } } }