void ChannelEditor::SetText(const InfoMap &map) { if (map.contains("callsign")) m_callsignEdit->SetText(map.value("callsign")); if (map.contains("channum")) m_channumEdit->SetText(map.value("channum")); if (map.contains("channame")) m_channameEdit->SetText(map.value("channame")); if (map.contains("XMLTV")) m_xmltvidEdit->SetText(map.value("XMLTV")); }
void MythUIText::SetTextFromMap(const InfoMap &map) { QString newText = GetTemplateText(); if (newText.isEmpty()) newText = GetDefaultText(); QRegExp regexp("%(([^\\|%]+)?\\||\\|(.))?([\\w#]+)(\\|(.+))?%"); regexp.setMinimal(true); if (!newText.isEmpty() && newText.contains(regexp)) { int pos = 0; QString translatedTemplate = qApp->translate("ThemeUI", newText.toUtf8()); QString tempString = translatedTemplate; bool replaced = map.contains(objectName()); while ((pos = regexp.indexIn(translatedTemplate, pos)) != -1) { QString key = regexp.cap(4).toLower().trimmed(); QString replacement; if (map.contains(key)) { replaced = true; } if (!map.value(key).isEmpty()) { replacement = QString("%1%2%3%4") .arg(regexp.cap(2)) .arg(regexp.cap(3)) .arg(map.value(key)) .arg(regexp.cap(6)); } tempString.replace(regexp.cap(0), replacement); pos += regexp.matchedLength(); } if (replaced) { SetText(tempString); } } else if (map.contains(objectName())) { SetText(map.value(objectName())); } }
void MythUIText::ResetMap(const InfoMap &map) { QString newText = GetTemplateText(); if (newText.isEmpty()) newText = GetDefaultText(); QRegExp regexp("%(([^\\|%]+)?\\||\\|(.))?([\\w#]+)(\\|(.+))?%"); regexp.setMinimal(true); bool replaced = map.contains(objectName()); if (!replaced && !newText.isEmpty() && newText.contains(regexp)) { int pos = 0; QString translatedTemplate = qApp->translate("ThemeUI", newText.toUtf8()); while ((pos = regexp.indexIn(translatedTemplate, pos)) != -1) { QString key = regexp.cap(4).toLower().trimmed(); if (map.contains(key)) { replaced = true; break; } pos += regexp.matchedLength(); } } if (replaced) { Reset(); } }
void OSD::SetText(const QString &window, const InfoMap &map, OSDTimeout timeout) { MythScreenType *win = GetWindow(window); if (!win) return; if (map.contains("numstars")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("ratingstate")); if (state) state->DisplayState(map["numstars"]); } if (map.contains("tvstate")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("tvstate")); if (state) state->DisplayState(map["tvstate"]); } if (map.contains("videocodec")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("videocodec")); if (state) state->DisplayState(map["videocodec"]); } if (map.contains("videodescrip")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("videodescrip")); if (state) state->DisplayState(map["videodescrip"]); } if (map.contains("audiocodec")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("audiocodec")); if (state) state->DisplayState(map["audiocodec"]); } if (map.contains("audiochannels")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("audiochannels")); if (state) state->DisplayState(map["audiochannels"]); } if (map.contains("chanid")) { MythUIImage *icon = dynamic_cast<MythUIImage *> (win->GetChild("iconpath")); if (icon) { icon->Reset(); uint chanid = map["chanid"].toUInt(); QString iconpath; if (map.contains("iconpath")) iconpath = map["iconpath"]; else iconpath = ChannelUtil::GetIcon(chanid); if (!iconpath.isEmpty()) { QString iconurl = gCoreContext->GetMasterHostPrefix("ChannelIcons", iconpath); icon->SetFilename(iconurl); icon->Load(false); } } } if (map.contains("inetref")) { MythUIImage *cover = dynamic_cast<MythUIImage *> (win->GetChild("coverart")); if (cover && map.contains("coverartpath")) { QString coverpath = map["coverartpath"]; cover->SetFilename(coverpath); cover->Load(false); } MythUIImage *fanart = dynamic_cast<MythUIImage *> (win->GetChild("fanart")); if (fanart && map.contains("fanartpath")) { QString fanartpath = map["fanartpath"]; fanart->SetFilename(fanartpath); fanart->Load(false); } MythUIImage *banner = dynamic_cast<MythUIImage *> (win->GetChild("banner")); if (banner && map.contains("bannerpath")) { QString bannerpath = map["bannerpath"]; banner->SetFilename(bannerpath); banner->Load(false); } MythUIImage *screenshot = dynamic_cast<MythUIImage *> (win->GetChild("screenshot")); if (screenshot && map.contains("screenshotpath")) { QString screenshotpath = map["screenshotpath"]; screenshot->SetFilename(screenshotpath); screenshot->Load(false); } } if (map.contains("nightmode")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("nightmode")); if (state) state->DisplayState(map["nightmode"]); } if (map.contains("mediatype")) { MythUIStateType *state = dynamic_cast<MythUIStateType *> (win->GetChild("mediatype")); if (state) state->DisplayState(map["mediatype"]); } MythUIProgressBar *bar = dynamic_cast<MythUIProgressBar *>(win->GetChild("elapsedpercent")); if (bar) { int startts = map["startts"].toInt(); int endts = map["endts"].toInt(); int nowts = MythDate::current().toTime_t(); if (startts > nowts) { bar->SetUsed(0); } else if (endts < nowts) { bar->SetUsed(1000); } else { int duration = endts - startts; if (duration > 0) bar->SetUsed(1000 * (nowts - startts) / duration); else bar->SetUsed(0); } bar->SetVisible(startts > 0); bar->SetStart(0); bar->SetTotal(1000); } win->SetVisible(true); if (win == m_Dialog) { ChannelEditor *edit = dynamic_cast<ChannelEditor*>(m_Dialog); if (edit) edit->SetText(map); } else win->SetTextFromMap(map); SetExpiry(window, timeout); }