int EventList::findEvents(void) { int res = 0; int event = 0; t_channel_id channel_id; //g_Zapit->getCurrentServiceID() CEventFinderMenu menu(&event, &m_search_epg_item, &m_search_keyword, &m_search_list, &m_search_channel_id, &m_search_bouquet_id); hide(); menu.exec(NULL, ""); if(event == 1) { res = 1; m_showChannel = true; // force the event list to paint the channel name evtlist.clear(); if(m_search_list == SEARCH_LIST_CHANNEL) { sectionsd_getEventsServiceKey(m_search_channel_id & 0xFFFFFFFFFFFFULL, evtlist, m_search_epg_item,m_search_keyword); } else if(m_search_list == SEARCH_LIST_BOUQUET) { int channel_nr = bouquetList->Bouquets[m_search_bouquet_id]->channelList->getSize(); for(int channel = 0; channel < channel_nr; channel++) { channel_id = bouquetList->Bouquets[m_search_bouquet_id]->channelList->getChannelFromIndex(channel)->channel_id; sectionsd_getEventsServiceKey(channel_id & 0xFFFFFFFFFFFFULL, evtlist, m_search_epg_item,m_search_keyword); } } else if(m_search_list == SEARCH_LIST_ALL) { CHintBox box(LOCALE_TIMING_EPG,g_Locale->getText(LOCALE_EVENTFINDER_SEARCHING)); box.paint(); int bouquet_nr = bouquetList->Bouquets.size(); for(int bouquet = 0; bouquet < bouquet_nr; bouquet++) { int channel_nr = bouquetList->Bouquets[bouquet]->channelList->getSize(); for(int channel = 0; channel < channel_nr; channel++) { channel_id = bouquetList->Bouquets[bouquet]->channelList->getChannelFromIndex(channel)->channel_id; sectionsd_getEventsServiceKey(channel_id & 0xFFFFFFFFFFFFULL,evtlist, m_search_epg_item,m_search_keyword); } } box.hide(); } sort(evtlist.begin(), evtlist.end(), sortByDateTime); current_event = (unsigned int)-1; time_t azeit=time(NULL); CChannelEventList::iterator e; for ( e = evtlist.begin(); e != evtlist.end(); ++e ) { if ( e->startTime > azeit ) { break; } current_event++; } if(evtlist.empty()) { if ( evtlist.size() == 0 ) { CChannelEvent evt; evt.description = g_Locale->getText(LOCALE_EPGVIEWER_NOTFOUND); evt.eventID = 0; evtlist.push_back(evt); } } if (current_event == (unsigned int)-1) current_event = 0; selected= current_event; name = g_Locale->getText(LOCALE_EVENTFINDER_SEARCH); name += ": '"; name += m_search_keyword; name += "'"; } paintHead(0); paint(); showFunctionBar(true); return(res); }
void CAdZapMenu::Settings() { CChannelList *channelList = CNeutrinoApp::getInstance()->channelList; channelId = channelList ? channelList->getActiveChannel_ChannelID() : -1; if (channelId < 0) return; channelName = channelList->getActiveChannelName(); CMenuWidget *menu = new CMenuWidget(LOCALE_ADZAP, "settings", width); menu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_ADZAP_SWITCHBACK)); neutrino_locale_t minute = LOCALE_ADZAP_MINUTE; for (int shortcut = 1; shortcut < 10; shortcut++) { char actionKey[2]; actionKey[0] = '0' + shortcut; actionKey[1] = 0; bool selected = g_settings.adzap_zapBackPeriod == 60 * shortcut; menu->addItem(new CMenuForwarder(minute, true, "", this, actionKey, CRCInput::convertDigitToKey (shortcut)), selected); minute = LOCALE_ADZAP_MINUTES; } menu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_ADZAP_COMMIT)); menu->addItem(new CMenuForwarder(LOCALE_ADZAP_ENABLE, true, "", this, "enable", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); menu->addItem(new CMenuForwarder(LOCALE_ADZAP_DISABLE, true, "", this, "disable", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); CChannelEventList evtlist; sectionsd_getEventsServiceKey(azm->channelId & 0xFFFFFFFFFFFFULL, evtlist); azm->monitorLifeTime.tv_sec = 0; if (!evtlist.empty()) { sort(evtlist.begin(), evtlist.end(), sortByDateTime); CChannelEventList::iterator eli; struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); for (eli = evtlist.begin(); eli != evtlist.end(); ++eli) { if ((uint) eli->startTime + eli->duration > ts.tv_sec) { azm->monitorLifeTime.tv_sec = (uint) eli->startTime + eli->duration; azm->Update(); break; } } } menu->addItem(new CMenuForwarder(LOCALE_ADZAP_MONITOR, azm->monitorLifeTime.tv_sec, "", this, "monitor", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); monitor = false; menu->exec(NULL, ""); menu->hide(); delete menu; Update(); }
void EventList::readEvents(const t_channel_id channel_id) { evtlist.clear(); sectionsd_getEventsServiceKey(channel_id &0xFFFFFFFFFFFFULL, evtlist); time_t azeit = time(NULL); CChannelEventList::iterator e; if ( evtlist.size() != 0 ) { CEPGData epgData; // todo: what if there are more than one events in the Portal if (sectionsd_getActualEPGServiceKey(channel_id&0xFFFFFFFFFFFFULL, &epgData)) { CSectionsdClient::LinkageDescriptorList linkedServices; if ( sectionsd_getLinkageDescriptorsUniqueKey( epgData.eventID, linkedServices ) ) { if ( linkedServices.size() > 1 ) { CChannelEventList evtlist2; // stores the temporary eventlist of the subchannel channelid t_channel_id channel_id2; for (unsigned int i = 0; i < linkedServices.size(); i++) { channel_id2 = CREATE_CHANNEL_ID_FROM_SERVICE_ORIGINALNETWORK_TRANSPORTSTREAM_ID( linkedServices[i].serviceId, linkedServices[i].originalNetworkId, linkedServices[i].transportStreamId); // do not add parent events if (channel_id != channel_id2) { evtlist2.clear(); sectionsd_getEventsServiceKey(channel_id2 &0xFFFFFFFFFFFFULL, evtlist2); for (unsigned int loop = 0 ; loop < evtlist2.size(); loop++ ) { //FIXME: bad ?evtlist2[loop].sub = true; evtlist.push_back(evtlist2[loop]); } evtlist2.clear(); } } } } } // Houdini added for Private Premiere EPG, start sorted by start date/time sort(evtlist.begin(), evtlist.end(), sortByDateTime); // Houdini: dirty workaround for RTL double events, remove them CChannelEventList::iterator e2; for ( e = evtlist.begin(); e != evtlist.end(); ++e ) { e2 = e + 1; if ( e2 != evtlist.end() && (e->startTime == e2->startTime)) { evtlist.erase(e2); } } timerlist.clear(); g_Timerd->getTimerList(timerlist); } current_event = (unsigned int) - 1; for ( e = evtlist.begin(); e != evtlist.end(); ++e ) { if ( e->startTime > azeit ) { break; } current_event++; } if ( evtlist.size() == 0 ) { CChannelEvent evt; evt.description = g_Locale->getText(LOCALE_EPGLIST_NOEVENTS); evt.eventID = 0; evtlist.push_back(evt); } if (current_event == (unsigned int) - 1) current_event = 0; selected = current_event; return; }