void MetadataLookup::toMap(MetadataMap &metadataMap) { metadataMap["filename"] = m_filename; metadataMap["title"] = m_title; metadataMap["network"] = m_network; metadataMap["status"] = m_status; metadataMap["category"] = m_categories.join(", "); metadataMap["userrating"] = QString::number(m_userrating); metadataMap["ratingcount"] = QString::number(m_ratingcount); metadataMap["language"] = m_language; metadataMap["subtitle"] = m_subtitle; metadataMap["tagline"] = m_tagline; metadataMap["description"] = m_description; metadataMap["season"] = QString::number(m_season); metadataMap["episode"] = QString::number(m_episode); metadataMap["chanid"] = QString::number(m_chanid); metadataMap["channum"] = m_channum; metadataMap["callsign"] = m_chansign; metadataMap["channame"] = m_channame; metadataMap["playbackfilters"] = m_chanplaybackfilters; metadataMap["recgroup"] = m_recgroup; metadataMap["playgroup"] = m_playgroup; metadataMap["seriesid"] = m_seriesid; metadataMap["programid"] = m_programid; metadataMap["storagegroup"] = m_storagegroup; metadataMap["startts"] = MythDateTimeToString(m_startts, kDateFull); metadataMap["endts"] = MythDateTimeToString(m_endts, kDateFull); metadataMap["recstartts"] = MythDateTimeToString(m_recstartts, kDateFull); metadataMap["recendts"] = MythDateTimeToString(m_recendts, kDateFull); metadataMap["certification"] = m_certification; metadataMap["countries"] = m_countries.join(", "); metadataMap["popularity"] = QString::number(m_popularity); metadataMap["budget"] = QString::number(m_budget); metadataMap["revenue"] = QString::number(m_revenue); metadataMap["album"] = m_album; metadataMap["tracknum"] = QString::number(m_tracknum); metadataMap["system"] = m_system; metadataMap["year"] = QString::number(m_year); metadataMap["releasedate"] = MythDateToString(m_releasedate, kDateFull); metadataMap["lastupdated"] = MythDateTimeToString(m_lastupdated, kDateFull); metadataMap["runtime"] = QObject::tr("%n minute(s)", "", m_runtime); metadataMap["runtimesecs"] = QObject::tr("%n second(s)", "", m_runtimesecs); metadataMap["inetref"] = m_inetref; metadataMap["collectionref"] = m_collectionref; metadataMap["tmsref"] = m_tmsref; metadataMap["imdb"] = m_imdb; metadataMap["studios"] = m_studios.join(", "); metadataMap["homepage"] = m_homepage; metadataMap["trailer"] = m_trailerURL; }
void VideoMetadata::toMap(MetadataMap &metadataMap) { if (this == NULL) return; QString coverfile; if (IsHostSet() && !GetCoverFile().startsWith("/") && !GetCoverFile().isEmpty() && !IsDefaultCoverFile(GetCoverFile())) { coverfile = generate_file_url("Coverart", GetHost(), GetCoverFile()); } else { coverfile = GetCoverFile(); } metadataMap["coverfile"] = coverfile; QString screenshotfile; if (IsHostSet() && !GetScreenshot().startsWith("/") && !GetScreenshot().isEmpty()) { screenshotfile = generate_file_url("Screenshots", GetHost(), GetScreenshot()); } else { screenshotfile = GetScreenshot(); } metadataMap["screenshotfile"] = screenshotfile; QString bannerfile; if (IsHostSet() && !GetBanner().startsWith("/") && !GetBanner().isEmpty()) { bannerfile = generate_file_url("Banners", GetHost(), GetBanner()); } else { bannerfile = GetBanner(); } metadataMap["bannerfile"] = bannerfile; QString fanartfile; if (IsHostSet() && !GetFanart().startsWith("/") && !GetFanart().isEmpty()) { fanartfile = generate_file_url("Fanart", GetHost(), GetFanart()); } else { fanartfile = GetFanart(); } metadataMap["fanartfile"] = fanartfile; metadataMap["filename"] = GetFilename(); metadataMap["title"] = GetTitle(); metadataMap["subtitle"] = GetSubtitle(); metadataMap["tagline"] = GetTagline(); metadataMap["director"] = GetDirector(); metadataMap["studio"] = GetStudio(); metadataMap["description"] = GetPlot(); metadataMap["genres"] = GetDisplayGenres(*this); metadataMap["countries"] = GetDisplayCountries(*this); metadataMap["cast"] = GetDisplayCast(*this).join(", "); metadataMap["rating"] = GetDisplayRating(GetRating()); metadataMap["length"] = GetDisplayLength(GetLength()); metadataMap["year"] = GetDisplayYear(GetYear()); metadataMap["releasedate"] = MythDateToString(GetReleaseDate(), kDateFull); metadataMap["userrating"] = GetDisplayUserRating(GetUserRating()); metadataMap["season"] = GetDisplaySeasonEpisode(GetSeason(), 1); metadataMap["episode"] = GetDisplaySeasonEpisode(GetEpisode(), 1); if (GetSeason() > 0 || GetEpisode() > 0) { metadataMap["s##e##"] = QString("s%1e%2").arg(GetDisplaySeasonEpisode (GetSeason(), 2)) .arg(GetDisplaySeasonEpisode(GetEpisode(), 2)); metadataMap["##x##"] = QString("%1x%2").arg(GetDisplaySeasonEpisode (GetSeason(), 1)) .arg(GetDisplaySeasonEpisode(GetEpisode(), 2)); } else metadataMap["s##e##"] = metadataMap["##x##"] = QString(); metadataMap["trailerstate"] = TrailerToState(GetTrailer()); metadataMap["userratingstate"] = QString::number((int)(GetUserRating())); metadataMap["watchedstate"] = WatchedToState(GetWatched()); metadataMap["videolevel"] = ParentalLevelToState(GetShowLevel()); metadataMap["insertdate"] = MythDateToString(GetInsertdate(), kDateFull); metadataMap["inetref"] = GetInetRef(); metadataMap["homepage"] = GetHomepage(); metadataMap["child_id"] = QString::number(GetChildID()); metadataMap["browseable"] = GetDisplayBrowse(GetBrowse()); metadataMap["watched"] = GetDisplayWatched(GetWatched()); metadataMap["processed"] = GetDisplayProcessed(GetProcessed()); metadataMap["category"] = GetCategory(); }
void ViewScheduled::FillList() { m_schedulesList->Reset(); MythUIText *norecordingText = dynamic_cast<MythUIText*> (GetChild("norecordings_info")); if (norecordingText) norecordingText->SetVisible(m_recList.empty()); if (m_recList.empty()) return; ProgramList plist; if (!m_recgroupList.contains(m_currentGroup)) m_currentGroup = m_defaultGroup; plist = m_recgroupList[m_currentGroup]; ProgramList::iterator pit = plist.begin(); while (pit != plist.end()) { ProgramInfo *pginfo = *pit; if (!pginfo) { ++pit; continue; } QString state; const RecStatusType recstatus = pginfo->GetRecordingStatus(); if (recstatus == rsRecording || recstatus == rsTuning || recstatus == rsOtherRecording || recstatus == rsOtherTuning) state = "running"; else if (recstatus == rsConflict || recstatus == rsOffLine || recstatus == rsTunerBusy || recstatus == rsFailed || recstatus == rsAborted || recstatus == rsMissed) state = "error"; else if (recstatus == rsWillRecord || recstatus == rsOtherShowing) { if ((m_curcard == 0 && m_curinput == 0) || pginfo->GetCardID() == m_curcard || pginfo->GetInputID() == m_curinput) { if (pginfo->GetRecordingPriority2() < 0) state = "warning"; else state = "normal"; } } else if (recstatus == rsRepeat || recstatus == rsNeverRecord || recstatus == rsDontRecord || (recstatus != rsDontRecord && recstatus <= rsEarlierShowing)) state = "disabled"; else state = "warning"; MythUIButtonListItem *item = new MythUIButtonListItem(m_schedulesList,"", qVariantFromValue(pginfo)); InfoMap infoMap; pginfo->ToMap(infoMap); item->SetTextFromMap(infoMap, state); QString rating = QString::number(pginfo->GetStars(10)); item->DisplayState(rating, "ratingstate"); item->DisplayState(state, "status"); ++pit; } MythUIText *statusText = dynamic_cast<MythUIText*>(GetChild("status")); if (statusText) { if (m_conflictBool) { // Find first conflict and store in m_conflictDate field ProgramList::const_iterator it = plist.begin(); for (; it != plist.end(); ++it) { ProgramInfo &p = **it; if (p.GetRecordingStatus() == rsConflict) { m_conflictDate = p.GetRecordingStartTime().date(); break; } } // TODO: This can be templated instead of hardcoding // Conflict/No Conflict QString cstring = QString(tr("Conflict %1")) .arg(MythDateToString(m_conflictDate, kDateFull | kSimplify)); statusText->SetText(cstring); } else statusText->SetText(tr("No Conflicts")); } MythUIText *filterText = dynamic_cast<MythUIText*>(GetChild("filter")); if (filterText) { if (m_showAll) filterText->SetText(tr("All")); else filterText->SetText(tr("Important")); } }
void RecordingRule::ToMap(InfoMap &infoMap) const { infoMap["title"] = m_title; infoMap["subtitle"] = m_subtitle; infoMap["description"] = m_description; infoMap["season"] = QString::number(m_season); infoMap["episode"] = QString::number(m_episode); infoMap["category"] = m_category; infoMap["callsign"] = m_station; infoMap["starttime"] = MythTimeToString(m_starttime, kTime); infoMap["startdate"] = MythDateToString(m_startdate, kDateFull | kSimplify); infoMap["endtime"] = MythTimeToString(m_endtime, kTime); infoMap["enddate"] = MythDateToString(m_enddate, kDateFull | kSimplify); infoMap["inetref"] = m_inetref; infoMap["chanid"] = m_channelid; infoMap["channel"] = m_station; QDateTime startts(m_startdate, m_starttime); QDateTime endts(m_enddate, m_endtime); QString length; int hours, minutes, seconds; seconds = startts.secsTo(endts); minutes = seconds / 60; infoMap["lenmins"] = QObject::tr("%n minute(s)","",minutes); hours = minutes / 60; minutes = minutes % 60; QString minstring = QObject::tr("%n minute(s)","",minutes); if (hours > 0) { infoMap["lentime"] = QString("%1 %2") .arg(QObject::tr("%n hour(s)","", hours)) .arg(minstring); } else infoMap["lentime"] = minstring; infoMap["timedate"] = MythDateTimeToString(startts, kDateTimeFull | kSimplify) + " - " + MythDateTimeToString(endts, kTime); infoMap["shorttimedate"] = MythDateTimeToString(startts, kDateTimeShort | kSimplify) + " - " + MythDateTimeToString(endts, kTime); if (m_type == kFindDailyRecord || m_type == kFindWeeklyRecord) { QString findfrom = MythTimeToString(m_findtime, kTime); if (m_type == kFindWeeklyRecord) { int daynum = (m_findday + 5) % 7 + 1; findfrom = QString("%1, %2").arg(QDate::shortDayName(daynum)) .arg(findfrom); } infoMap["subtitle"] = QObject::tr("(%1 or later) %3", "e.g. (Sunday or later) program " "subtitle").arg(findfrom) .arg(m_subtitle); } infoMap["searchtype"] = SearchTypeToString(m_searchType); if (m_searchType != kNoSearch) infoMap["searchforwhat"] = m_description; if (m_nextRecording.isValid()) infoMap["nextrecording"] = MythDateTimeToString(m_nextRecording, kDateFull | kAddYear); if (m_lastRecorded.isValid()) infoMap["lastrecorded"] = MythDateTimeToString(m_lastRecorded, kDateFull | kAddYear); if (m_lastDeleted.isValid()) infoMap["lastdeleted"] = MythDateTimeToString(m_lastDeleted, kDateFull | kAddYear); infoMap["ruletype"] = toString(m_type); infoMap["rectype"] = toString(m_type); }
void ViewScheduled::LoadList(bool useExistingData) { if (m_inFill) return; m_inFill = true; MythUIButtonListItem *currentItem = m_schedulesList->GetItemCurrent(); QString callsign; QDateTime startts, recstartts; if (currentItem) { ProgramInfo *currentpginfo = qVariantValue<ProgramInfo*> (currentItem->GetData()); if (currentpginfo) { callsign = currentpginfo->GetChannelSchedulingID(); startts = currentpginfo->GetScheduledStartTime(); recstartts = currentpginfo->GetRecordingStartTime(); } } QDateTime now = QDateTime::currentDateTime(); QMap<int, int> toomanycounts; m_schedulesList->Reset(); if (m_groupList) m_groupList->Reset(); m_recgroupList.clear(); if (!useExistingData) LoadFromScheduler(m_recList, m_conflictBool); ProgramList::iterator pit = m_recList.begin(); QString currentDate; m_recgroupList[m_defaultGroup] = ProgramList(false); m_recgroupList[m_defaultGroup].setAutoDelete(false); while (pit != m_recList.end()) { ProgramInfo *pginfo = *pit; const RecStatusType recstatus = pginfo->GetRecordingStatus(); if ((pginfo->GetRecordingEndTime() >= now || pginfo->GetScheduledEndTime() >= now) && (m_showAll || recstatus <= rsWillRecord || recstatus == rsDontRecord || (recstatus == rsTooManyRecordings && ++toomanycounts[pginfo->GetRecordingRuleID()] <= 1) || (recstatus > rsTooManyRecordings && recstatus != rsRepeat && recstatus != rsNeverRecord))) { m_cardref[pginfo->GetCardID()]++; if (pginfo->GetCardID() > m_maxcard) m_maxcard = pginfo->GetCardID(); m_inputref[pginfo->GetInputID()]++; if (pginfo->GetInputID() > m_maxinput) m_maxinput = pginfo->GetInputID(); QDate date = (pginfo->GetRecordingStartTime()).date(); m_recgroupList[date].push_back(pginfo); m_recgroupList[date].setAutoDelete(false); m_recgroupList[m_defaultGroup].push_back(pginfo); ++pit; } else { pit = m_recList.erase(pit); continue; } } if (m_groupList) { QString label; QMap<QDate,ProgramList>::iterator dateit = m_recgroupList.begin(); while (dateit != m_recgroupList.end()) { if (dateit.key().isNull()) label = tr("All"); else label = MythDateToString(dateit.key(), kDateFull | kSimplify); new MythUIButtonListItem(m_groupList, label, qVariantFromValue(dateit.key())); ++dateit; } if (!m_recgroupList.contains(m_currentGroup)) m_groupList->SetValueByData(qVariantFromValue(m_currentGroup)); } FillList(); // Restore position after a list update if (!callsign.isEmpty()) { ProgramList plist; if (!m_recgroupList.contains(m_currentGroup)) m_currentGroup = m_defaultGroup; plist = m_recgroupList[m_currentGroup]; int listPos = ((int) plist.size()) - 1; int i; for (i = listPos; i >= 0; --i) { ProgramInfo *pginfo = plist[i]; if (callsign == pginfo->GetChannelSchedulingID() && startts == pginfo->GetScheduledStartTime()) { listPos = i; break; } else if (recstartts <= pginfo->GetRecordingStartTime()) listPos = i; } m_schedulesList->SetItemCurrent(listPos); } m_inFill = false; m_needFill = false; }