Example #1
0
eServiceTS::eServiceTS(const eServiceReference &url): m_pump(eApp, 1)
{
	eDebug("ServiceTS construct!");
	m_filename = url.path.c_str();
	m_vpid = url.getData(0) == 0 ? 0x44 : url.getData(0);
	m_apid = url.getData(1) == 0 ? 0x45 : url.getData(1);
	m_audioInfo = 0;
	m_destfd = -1;
}
Example #2
0
	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>";
		}
	}
Example #3
0
	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 += "&#160;";
		}
		else
		{
			int count = 0;
			countDVBServices bla(e, count);
			if (count)
				result += button(50, "EPG", GREEN, "javascript:openMultiEPG('" + serviceRef + "')");
			else
				result += "&#160;";
		}
		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++;
	}
Example #4
0
	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;
	}
Example #5
0
RESULT eServiceFactoryFS::list(const eServiceReference &ref, ePtr<iListableService> &ptr)
{
	ptr = new eServiceFS(ref.path.c_str(), ref.getName().empty() ? (const char*)0 : ref.getName().c_str());
	return 0;
}
Example #6
0
eString ref2string(const eServiceReference &r)
{
	return httpEscape(r.toString());
}
Example #7
0
	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 << "\">&#160;</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>"
								<< "&#160;&#160;";
#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 << "\">&#160;</td>";

					result << "</tr>\n";
				}
				multiEPG += result.str();
			}
		}
	}