#include "viewdisplaychannel.h" #include "../config.h" /************************************************************************************ * cViewChannel ************************************************************************************/ cViewChannel::cViewChannel(void) { veCustomTokens = NULL; ClearVariables(); viewId = eViewType::DisplayChannel; viewName = strdup("displaychannel"); numViewElements = (int)eVeDisplayChannel::count; viewElements = new cViewElement*[numViewElements]; for (int i=0; i < numViewElements; i++) { viewElements[i] = NULL; } SetViewElements(); veMessage = NULL; veChannelInfo = NULL; veChannelGroup = NULL; veEpgInfo = NULL; veProgressBar = NULL; veStatusInfo = NULL; veScraperContent = NULL; veEcmInfo = NULL; } cViewChannel::~cViewChannel() { } void cViewChannel::SetViewElements(void) { viewElementNames.insert(pair("background", (int)eVeDisplayChannel::background)); viewElementNames.insert(pair("channelgroup", (int)eVeDisplayChannel::channelgroup)); viewElementNames.insert(pair("channelinfo", (int)eVeDisplayChannel::channelinfo)); viewElementNames.insert(pair("epginfo", (int)eVeDisplayChannel::epginfo)); viewElementNames.insert(pair("progressbar", (int)eVeDisplayChannel::progressbar)); viewElementNames.insert(pair("statusinfo", (int)eVeDisplayChannel::statusinfo)); viewElementNames.insert(pair("audioinfo", (int)eVeDisplayChannel::audioinfo)); viewElementNames.insert(pair("ecminfo", (int)eVeDisplayChannel::ecminfo)); viewElementNames.insert(pair("screenresolution", (int)eVeDisplayChannel::screenresolution)); viewElementNames.insert(pair("signalquality", (int)eVeDisplayChannel::signalquality)); viewElementNames.insert(pair("devices", (int)eVeDisplayChannel::devices)); viewElementNames.insert(pair("currentweather", (int)eVeDisplayChannel::currentweather)); viewElementNames.insert(pair("scrapercontent", (int)eVeDisplayChannel::scrapercontent)); viewElementNames.insert(pair("datetime", (int)eVeDisplayChannel::datetime)); viewElementNames.insert(pair("time", (int)eVeDisplayChannel::time)); viewElementNames.insert(pair("message", (int)eVeDisplayChannel::message)); viewElementNames.insert(pair("customtokens", (int)eVeDisplayChannel::customtokens)); } void cViewChannel::SetViewElementObjects(void) { for (int i = 0; i < numViewElements; i++) { if (!viewElements[i]) continue; if (dynamic_cast(viewElements[i])) { veMessage = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veChannelInfo = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veChannelGroup = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veEpgInfo = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veProgressBar = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veStatusInfo = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veScraperContent = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veEcmInfo = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { veCustomTokens = dynamic_cast(viewElements[i]); } else if (dynamic_cast(viewElements[i])) { viewElements[i]->SetDetached(); } } } void cViewChannel::ClearVariables(void) { cView::ClearVariables(); channelChange = false; displayChannelGroups = false; if (veCustomTokens) veCustomTokens->Reset(); } void cViewChannel::SetChannel(const cChannel *channel, int number) { channelChange = true; bool wasChannelGroups = displayChannelGroups; displayChannelGroups = false; if (veChannelInfo) { veChannelInfo->Set(channel, number); } if (channel) { if (!channel->GroupSep()) { if (wasChannelGroups) Clear((int)eVeDisplayChannel::channelgroup); if (veStatusInfo) veStatusInfo->Set(channel); if (veEcmInfo) veEcmInfo->Set(channel); } else { displayChannelGroups = true; Clear((int)eVeDisplayChannel::channelinfo); Clear((int)eVeDisplayChannel::epginfo); Clear((int)eVeDisplayChannel::statusinfo); Clear((int)eVeDisplayChannel::progressbar); Clear((int)eVeDisplayChannel::screenresolution); Clear((int)eVeDisplayChannel::signalquality); Clear((int)eVeDisplayChannel::audioinfo); Clear((int)eVeDisplayChannel::ecminfo); Clear((int)eVeDisplayChannel::devices); Clear((int)eVeDisplayChannel::customtokens); if (veChannelGroup) veChannelGroup->Set(channel); } } } void cViewChannel::SetEvents(const cEvent *present, const cEvent *following) { Clear((int)eVeDisplayChannel::epginfo); Clear((int)eVeDisplayChannel::progressbar); Clear((int)eVeDisplayChannel::scrapercontent); if (veProgressBar) veProgressBar->Set(present); if (!present && !following) return; if (veEpgInfo) veEpgInfo->Set(present, following); if (veScraperContent) veScraperContent->Set(present); } void cViewChannel::SetMessage(eMessageType type, const char *text) { if (veMessage) { if (text) veMessage->Set(type, text); else veMessage->Clear(); } } void cViewChannel::Flush(void) { if (init) { sdOsd.LockFlush(); Render((int)eVeDisplayChannel::background); Render((int)eVeDisplayChannel::progressbar); Render((int)eVeDisplayChannel::currentweather); } if (!displayChannelGroups) { //normal display Render((int)eVeDisplayChannel::channelinfo); Render((int)eVeDisplayChannel::epginfo); Render((int)eVeDisplayChannel::statusinfo); Render((int)eVeDisplayChannel::scrapercontent); Render((int)eVeDisplayChannel::progressbar, channelChange); Render((int)eVeDisplayChannel::screenresolution); Render((int)eVeDisplayChannel::signalquality); Render((int)eVeDisplayChannel::audioinfo); Render((int)eVeDisplayChannel::ecminfo); Render((int)eVeDisplayChannel::devices); Render((int)eVeDisplayChannel::customtokens); Render((int)eVeDisplayChannel::message); } else { //channelgroup display Render((int)eVeDisplayChannel::channelgroup); } Render((int)eVeDisplayChannel::datetime); Render((int)eVeDisplayChannel::time); channelChange = false; cView::Flush(); }