MythTV  master
editvideometadata.cpp
Go to the documentation of this file.
1 // C++
2 #include <algorithm>
3 
4 // Qt
5 #include <QImageReader>
6 #include <QUrl>
7 
8 // MythTV
9 #include "libmyth/mythcontext.h"
10 #include "libmythbase/mythdirs.h"
11 #include "libmythbase/remoteutil.h"
12 #include "libmythbase/stringutil.h"
22 #include "libmythui/mythuibutton.h"
26 #include "libmythui/mythuihelper.h"
27 #include "libmythui/mythuiimage.h"
29 #include "libmythui/mythuitext.h"
31 
32 // MythFrontend
33 #include "editvideometadata.h"
34 
35 //static const QString _Location = QObject::tr("Metadata Editor");
36 
38  const QString& lname, VideoMetadata *source_metadata,
39  const VideoMetadataListManager &cache) : MythScreenType(lparent, lname),
40  m_origMetadata(source_metadata),
41  m_metaCache(cache)
42 {
43  m_query = new MetadataDownload(this);
46 
47  m_popupStack = GetMythMainWindow()->GetStack("popup stack");
48 }
49 
51 {
52  delete m_workingMetadata;
53 }
54 
56 {
57  if (!LoadWindowFromXML("video-ui.xml", "edit_metadata", this))
58  return false;
59 
60  bool err = false;
61  UIUtilE::Assign(this, m_titleEdit, "title_edit", &err);
62  UIUtilE::Assign(this, m_subtitleEdit, "subtitle_edit", &err);
63  UIUtilE::Assign(this, m_playerEdit, "player_edit", &err);
64 
65  UIUtilE::Assign(this, m_seasonSpin, "season", &err);
66  UIUtilE::Assign(this, m_episodeSpin, "episode", &err);
67 
68 
69  UIUtilE::Assign(this, m_categoryList, "category_select", &err);
70  UIUtilE::Assign(this, m_levelList, "level_select", &err);
71  UIUtilE::Assign(this, m_childList, "child_select", &err);
72 
73  UIUtilE::Assign(this, m_browseCheck, "browse_check", &err);
74  UIUtilE::Assign(this, m_watchedCheck, "watched_check", &err);
75 
76  UIUtilE::Assign(this, m_doneButton, "done_button", &err);
77 
78  if (err)
79  {
80  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'edit_metadata'");
81  return false;
82  }
83 
84  UIUtilW::Assign(this, m_coverartText, "coverart_text");
85  UIUtilW::Assign(this, m_screenshotText, "screenshot_text");
86  UIUtilW::Assign(this, m_bannerText, "banner_text");
87  UIUtilW::Assign(this, m_fanartText, "fanart_text");
88  UIUtilW::Assign(this, m_trailerText, "trailer_text");
89 
90  UIUtilW::Assign(this, m_coverartButton, "coverart_button");
91  UIUtilW::Assign(this, m_bannerButton, "banner_button");
92  UIUtilW::Assign(this, m_fanartButton, "fanart_button");
93  UIUtilW::Assign(this, m_screenshotButton, "screenshot_button");
94  UIUtilW::Assign(this, m_trailerButton, "trailer_button");
95 
96  UIUtilW::Assign(this, m_netBannerButton, "net_banner_button");
97  UIUtilW::Assign(this, m_netFanartButton, "net_fanart_button");
98  UIUtilW::Assign(this, m_netScreenshotButton, "net_screenshot_button");
99  UIUtilW::Assign(this, m_netCoverartButton, "net_coverart_button");
100 
101  UIUtilW::Assign(this, m_taglineEdit, "tagline_edit");
102  UIUtilW::Assign(this, m_ratingEdit, "rating_edit");
103  UIUtilW::Assign(this, m_directorEdit, "director_edit");
104  UIUtilW::Assign(this, m_inetrefEdit, "inetref_edit");
105  UIUtilW::Assign(this, m_homepageEdit, "homepage_edit");
106  UIUtilW::Assign(this, m_plotEdit, "description_edit");
107  UIUtilW::Assign(this, m_yearSpin, "year_spin");
108  UIUtilW::Assign(this, m_userRatingSpin, "userrating_spin");
109  UIUtilW::Assign(this, m_lengthSpin, "length_spin");
110 
111  UIUtilW::Assign(this, m_coverart, "coverart");
112  UIUtilW::Assign(this, m_screenshot, "screenshot");
113  UIUtilW::Assign(this, m_banner, "banner");
114  UIUtilW::Assign(this, m_fanart, "fanart");
115 
116  fillWidgets();
117 
118  BuildFocusList();
119 
125  if (m_taglineEdit)
126  {
129  }
130  if (m_ratingEdit)
131  {
134  }
135  if (m_directorEdit)
136  {
139  }
140  if (m_inetrefEdit)
142  if (m_homepageEdit)
143  {
146  }
147  if (m_plotEdit)
148  {
151  }
152 
155  if (m_yearSpin)
157  if (m_userRatingSpin)
159  if (m_lengthSpin)
161 
163 
164  // Find Artwork locally
165  if (m_coverartButton)
167  if (m_bannerButton)
169  if (m_fanartButton)
171  if (m_screenshotButton)
173 
174  // Find Artwork on the Internet
177  if (m_netBannerButton)
179  if (m_netFanartButton)
183 
184  if (m_trailerButton)
186 
189 
198 
199  return true;
200 }
201 
202 namespace
203 {
204  template <typename T>
205  struct title_sort
206  {
207  bool operator()(const T &lhs, const T &rhs)
208  {
209  return StringUtil::naturalSortCompare(lhs.second, rhs.second);
210  }
211  };
212 
213  QStringList GetSupportedImageExtensionFilter()
214  {
215  QStringList ret;
216 
217  QList<QByteArray> exts = QImageReader::supportedImageFormats();
218  for (const auto & ext : qAsConst(exts))
219  ret.append(QString("*.").append(ext));
220  return ret;
221  }
222 
223  void FindImagePopup(const QString &prefix, const QString &prefixAlt,
224  QObject &inst, const QString &returnEvent)
225  {
226  QString fp;
227 
228  if (prefix.startsWith("myth://"))
229  fp = prefix;
230  else
231  fp = prefix.isEmpty() ? prefixAlt : prefix;
232 
233  MythScreenStack *popupStack =
234  GetMythMainWindow()->GetStack("popup stack");
235 
236  auto *fb = new MythUIFileBrowser(popupStack, fp);
237  fb->SetNameFilter(GetSupportedImageExtensionFilter());
238  if (fb->Create())
239  {
240  fb->SetReturnEvent(&inst, returnEvent);
241  popupStack->AddScreen(fb);
242  }
243  else
244  delete fb;
245  }
246 
247  void FindVideoFilePopup(const QString &prefix, const QString &prefixAlt,
248  QObject &inst, const QString &returnEvent)
249  {
250  QString fp;
251 
252  if (prefix.startsWith("myth://"))
253  fp = prefix;
254  else
255  fp = prefix.isEmpty() ? prefixAlt : prefix;
256 
257  MythScreenStack *popupStack =
258  GetMythMainWindow()->GetStack("popup stack");
259  QStringList exts;
260 
261  const FileAssociations::association_list fa_list =
263  for (const auto & fa : fa_list)
264  exts << QString("*.%1").arg(fa.extension.toUpper());
265 
266  auto *fb = new MythUIFileBrowser(popupStack, fp);
267  fb->SetNameFilter(exts);
268  if (fb->Create())
269  {
270  fb->SetReturnEvent(&inst, returnEvent);
271  popupStack->AddScreen(fb);
272  }
273  else
274  delete fb;
275  }
276 
277  const QString CEID_COVERARTFILE = "coverartfile";
278  const QString CEID_BANNERFILE = "bannerfile";
279  const QString CEID_FANARTFILE = "fanartfile";
280  const QString CEID_SCREENSHOTFILE = "screenshotfile";
281  const QString CEID_TRAILERFILE = "trailerfile";
282  const QString CEID_NEWCATEGORY = "newcategory";
283 }
284 
285 void EditMetadataDialog::createBusyDialog(const QString& title)
286 {
287  if (m_busyPopup)
288  return;
289 
290  const QString& message = title;
291 
293  "mythvideobusydialog");
294 
295  if (m_busyPopup->Create())
297 }
298 
300 {
303 
304  m_seasonSpin->SetRange(0,9999,1,5);
306  m_episodeSpin->SetRange(0,999,1,10);
308  if (m_yearSpin)
309  {
310  m_yearSpin->SetRange(0,9999,1,100);
312  }
313  if (m_userRatingSpin)
314  {
315  m_userRatingSpin->SetRange(0,10,1,2);
317  }
318  if (m_lengthSpin)
319  {
320  m_lengthSpin->SetRange(0,999,1,15);
322  }
323 
324  // No memory leak. MythUIButtonListItem adds the new item into
325  // m_categoryList.
327  const VideoCategory::entry_list &vcl =
329  for (const auto & vc : vcl)
330  {
331  // No memory leak. MythUIButtonListItem adds the new item into
332  // m_categoryList.
333  auto *button = new MythUIButtonListItem(m_categoryList, vc.second);
334  button->SetData(vc.first);
335  }
337 
339  i <= ParentalLevel::plHigh && i.good(); ++i)
340  {
341  // No memory leak. MythUIButtonListItem adds the new item into
342  // m_levelList.
343  auto *button = new MythUIButtonListItem(m_levelList,
344  tr("Level %1").arg(i.GetLevel()));
345  button->SetData(i.GetLevel());
346  }
348 
349  //
350  // Fill the "always play this video next" option
351  // with all available videos.
352  //
353 
354  // No memory leak. MythUIButtonListItem adds the new item into
355  // m_childList.
356  new MythUIButtonListItem(m_childList,tr("None"));
357 
358  // TODO: maybe make the title list have the same sort order
359  // as elsewhere.
360  using title_list = std::vector<std::pair<unsigned int, QString> >;
362  title_list tc;
363  tc.reserve(mdl.size());
364  for (const auto & md : mdl)
365  {
366  QString title;
367  if (md->GetSeason() > 0 || md->GetEpisode() > 0)
368  {
369  title = QString("%1 %2x%3").arg(md->GetTitle(),
370  QString::number(md->GetSeason()),
371  QString::number(md->GetEpisode()));
372  }
373  else
374  {
375  title = md->GetTitle();
376  }
377  tc.emplace_back(md->GetID(), title);
378  }
379  std::sort(tc.begin(), tc.end(), title_sort<title_list::value_type>());
380 
381  for (const auto & t : tc)
382  {
383  if (t.first != m_workingMetadata->GetID())
384  {
385  auto *button = new MythUIButtonListItem(m_childList,t.second);
386  button->SetData(t.first);
387  }
388  }
389 
390  if (m_workingMetadata->GetChildID() > 0)
391  {
394  }
395 
400  if (m_coverartText)
402  if (m_screenshotText)
404  if (m_bannerText)
406  if (m_fanartText)
408  if (m_trailerText)
410 
412  if (m_taglineEdit)
414  if (m_ratingEdit)
416  if (m_directorEdit)
418  if (m_inetrefEdit)
420  if (m_homepageEdit)
422  if (m_plotEdit)
424 
425  if (m_coverart)
426  {
427  if (!m_workingMetadata->GetHost().isEmpty() &&
428  !m_workingMetadata->GetCoverFile().isEmpty() &&
429  !m_workingMetadata->GetCoverFile().startsWith("/"))
430  {
434  }
435  else
437 
438  if (!m_workingMetadata->GetCoverFile().isEmpty())
439  m_coverart->Load();
440  }
441  if (m_screenshot)
442  {
443  if (!m_workingMetadata->GetHost().isEmpty() &&
444  !m_workingMetadata->GetScreenshot().isEmpty() &&
445  !m_workingMetadata->GetScreenshot().startsWith("/"))
446  {
450  }
451  else
453 
454  if (!m_workingMetadata->GetScreenshot().isEmpty())
455  m_screenshot->Load();
456  }
457  if (m_banner)
458  {
459  if (!m_workingMetadata->GetHost().isEmpty() &&
460  !m_workingMetadata->GetBanner().isEmpty() &&
461  !m_workingMetadata->GetBanner().startsWith("/"))
462  {
466  }
467  else
469 
470  if (!m_workingMetadata->GetBanner().isEmpty())
471  m_banner->Load();
472  }
473  if (m_fanart)
474  {
475  if (!m_workingMetadata->GetHost().isEmpty() &&
476  !m_workingMetadata->GetFanart().isEmpty() &&
477  !m_workingMetadata->GetFanart().startsWith("/"))
478  {
482  }
483  else
485 
486  if (!m_workingMetadata->GetFanart().isEmpty())
487  m_fanart->Load();
488  }
489 }
490 
492 {
493  QString message = tr("Enter new category");
494 
495  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
496 
497  auto *categorydialog = new MythTextInputDialog(popupStack,message);
498 
499  if (categorydialog->Create())
500  {
501  categorydialog->SetReturnEvent(this, CEID_NEWCATEGORY);
502  popupStack->AddScreen(categorydialog);
503  }
504 
505 }
506 
507 void EditMetadataDialog::AddCategory(const QString& category)
508 {
509  int id = VideoCategory::GetCategory().add(category);
511  new MythUIButtonListItem(m_categoryList, category, id);
513 }
514 
516 {
519 
520  emit Finished();
521  Close();
522 }
523 
525 {
527 }
528 
530 {
532 }
533 
535 {
536  m_workingMetadata->SetCategoryID(item->GetData().toInt());
537 }
538 
540 {
542 }
543 
545 {
547 }
548 
550 {
552 }
553 
555 {
557 }
558 
560 {
562 }
563 
565 {
567 }
568 
570 {
572 }
573 
575 {
577 }
578 
580 {
582 }
583 
585 {
587 }
588 
590 {
591  m_workingMetadata->SetLength(m_lengthSpin->GetDuration<std::chrono::minutes>());
592 }
593 
595 {
597 }
598 
600 {
602  SetShowLevel(ParentalLevel(item->GetData().toInt()).GetLevel());
603 }
604 
606 {
607  m_cachedChildSelection = item->GetData().toInt();
609 }
610 
612 {
614  SetBrowse(m_browseCheck->GetBooleanCheckState());
615 }
616 
618 {
620  SetWatched(m_watchedCheck->GetBooleanCheckState());
621 }
622 
624 {
625  if (!m_workingMetadata->GetHost().isEmpty())
626  {
627  QString url = generate_file_url("Coverart",
629  "");
630  FindImagePopup(url, "", *this, CEID_COVERARTFILE);
631  }
632  else
633  {
634  FindImagePopup(gCoreContext->GetSetting("VideoArtworkDir"),
635  GetConfDir() + "/MythVideo", *this, CEID_COVERARTFILE);
636  }
637 }
638 
640 {
641  if (!lookup)
642  return;
643 
644  if (m_busyPopup)
645  {
646  m_busyPopup->Close();
647  m_busyPopup = nullptr;
648  }
649 
650  auto type = lookup->GetData().value<VideoArtworkType>();
651  ArtworkList list = lookup->GetArtwork(type);
652 
653  if (list.isEmpty())
654  {
655  MythWarningNotification n(tr("No image found"), tr("Metadata Editor"));
657  return;
658  }
659  auto *resultsdialog = new ImageSearchResultsDialog(m_popupStack, list, type);
660 
661  connect(resultsdialog, &ImageSearchResultsDialog::haveResult,
663 
664  if (resultsdialog->Create())
665  m_popupStack->AddScreen(resultsdialog);
666 }
667 
669 {
670  QString msg = tr("Downloading selected artwork...");
671  createBusyDialog(msg);
672 
673  auto *lookup = new MetadataLookup();
674  lookup->SetType(kMetadataVideo);
675 
676  lookup->SetSubtype(GuessLookupType(m_workingMetadata));
677  lookup->SetHost(m_workingMetadata->GetHost());
678  lookup->SetAutomatic(true);
679  lookup->SetData(QVariant::fromValue<VideoArtworkType>(type));
680 
681  DownloadMap downloads;
682  downloads.insert(type, info);
683  lookup->SetDownloads(downloads);
684  lookup->SetAllowOverwrites(true);
685  lookup->SetTitle(m_workingMetadata->GetTitle());
686  lookup->SetSubtitle(m_workingMetadata->GetSubtitle());
687  lookup->SetSeason(m_workingMetadata->GetSeason());
688  lookup->SetEpisode(m_workingMetadata->GetEpisode());
689  lookup->SetInetref(m_workingMetadata->GetInetRef());
690 
691  m_imageDownload->addDownloads(lookup);
692 }
693 
695 {
696  if (!lookup)
697  return;
698 
699  if (m_busyPopup)
700  {
701  m_busyPopup->Close();
702  m_busyPopup = nullptr;
703  }
704 
705  auto type = lookup->GetData().value<VideoArtworkType>();
706  DownloadMap map = lookup->GetDownloads();
707 
708  if (map.count() >= 1)
709  {
710  ArtworkInfo info = map.value(type);
711  QString filename = info.url;
712 
713  if (type == kArtworkCoverart)
715  else if (type == kArtworkFanart)
717  else if (type == kArtworkBanner)
719  else if (type == kArtworkScreenshot)
721  }
722 }
723 
725 {
726  QString msg = tr("Searching for available artwork...");
727  createBusyDialog(msg);
728 
729  auto *lookup = new MetadataLookup();
730  lookup->SetStep(kLookupSearch);
731  lookup->SetType(kMetadataVideo);
732  lookup->SetAutomatic(true);
733  if (m_workingMetadata->GetSeason() > 0 ||
735  lookup->SetSubtype(kProbableTelevision);
736  else if (m_workingMetadata->GetSubtitle().isEmpty())
737  lookup->SetSubtype(kProbableMovie);
738  else
739  lookup->SetSubtype(kUnknownVideo);
740  lookup->SetData(QVariant::fromValue<VideoArtworkType>(type));
741 
742  lookup->SetTitle(m_workingMetadata->GetTitle());
743  lookup->SetSubtitle(m_workingMetadata->GetSubtitle());
744  lookup->SetSeason(m_workingMetadata->GetSeason());
745  lookup->SetEpisode(m_workingMetadata->GetEpisode());
746  lookup->SetInetref(m_workingMetadata->GetInetRef());
747 
748  m_query->addLookup(lookup);
749 }
750 
752 {
754 }
755 
757 {
759 }
760 
762 {
764 }
765 
767 {
769 }
770 
772 {
773  if (file.isEmpty())
774  return;
775 
776  QString origfile = file;
777 
778  if (file.startsWith("myth://"))
779  {
780  QUrl url(file);
781  file = url.path();
782  file = file.right(file.length() - 1);
783  if (!file.endsWith("/"))
785  else
786  m_workingMetadata->SetCoverFile(QString());
787  }
788  else
790 
792 
793  if (m_coverart)
794  {
795  m_coverart->SetFilename(origfile);
796  m_coverart->Load();
797  }
798 }
799 
801 {
802  if (!m_workingMetadata->GetHost().isEmpty())
803  {
804  QString url = generate_file_url("Banners",
806  "");
807  FindImagePopup(url, "", *this, CEID_BANNERFILE);
808  }
809  else
810  {
811  FindImagePopup(gCoreContext->GetSetting("mythvideo.bannerDir"),
812  GetConfDir() + "/MythVideo/Banners", *this, CEID_BANNERFILE);
813  }
814 }
815 
817 {
818  if (file.isEmpty())
819  return;
820 
821  QString origfile = file;
822 
823  if (file.startsWith("myth://"))
824  {
825  QUrl url(file);
826  file = url.path();
827  file = file.right(file.length() - 1);
828  if (!file.endsWith("/"))
830  else
831  m_workingMetadata->SetBanner(QString());
832  }
833  else
835 
837 
838  if (m_banner)
839  {
840  m_banner->SetFilename(origfile);
841  m_banner->Load();
842  }
843 }
844 
846 {
847  if (!m_workingMetadata->GetHost().isEmpty())
848  {
849  QString url = generate_file_url("Fanart",
851  "");
852  FindImagePopup(url, "", *this, CEID_FANARTFILE);
853  }
854  else
855  {
856  FindImagePopup(gCoreContext->GetSetting("mythvideo.fanartDir"),
857  GetConfDir() + "/MythVideo/Fanart", *this, CEID_FANARTFILE);
858  }
859 }
860 
862 {
863  if (file.isEmpty())
864  return;
865 
866  QString origfile = file;
867 
868  if (file.startsWith("myth://"))
869  {
870  QUrl url(file);
871  file = url.path();
872  file = file.right(file.length() - 1);
873  if (!file.endsWith("/"))
875  else
876  m_workingMetadata->SetFanart(QString());
877  }
878  else
880 
882 
883  if (m_fanart)
884  {
885  m_fanart->SetFilename(origfile);
886  m_fanart->Load();
887  }
888 }
889 
891 {
892  if (!m_workingMetadata->GetHost().isEmpty())
893  {
894  QString url = generate_file_url("Screenshots",
896  "");
897  FindImagePopup(url, "", *this, CEID_SCREENSHOTFILE);
898  }
899  else
900  {
901  FindImagePopup(gCoreContext->GetSetting("mythvideo.screenshotDir"),
902  GetConfDir() + "/MythVideo/Screenshots",
903  *this, CEID_SCREENSHOTFILE);
904  }
905 }
906 
908 {
909  if (file.isEmpty())
910  return;
911 
912  QString origfile = file;
913 
914  if (file.startsWith("myth://"))
915  {
916  QUrl url(file);
917  file = url.path();
918  file = file.right(file.length() - 1);
919  if (!file.endsWith("/"))
921  else
922  m_workingMetadata->SetScreenshot(QString());
923  }
924  else
926 
928 
929  if (m_screenshot)
930  {
931  m_screenshot->SetFilename(origfile);
932  m_screenshot->Load();
933  }
934 }
935 
937 {
938  if (!m_workingMetadata->GetHost().isEmpty())
939  {
940  QString url = generate_file_url("Trailers",
942  "");
943  FindVideoFilePopup(url, "", *this, CEID_TRAILERFILE);
944  }
945  else
946  {
947  FindVideoFilePopup(gCoreContext->GetSetting("mythvideo.TrailersDir"),
948  GetConfDir() + "/MythVideo/Trailers", *this, CEID_TRAILERFILE);
949  }
950 }
951 
953 {
954  if (file.isEmpty())
955  return;
956 
957  if (file.startsWith("myth://"))
958  {
959  QUrl url(file);
960  file = url.path();
961  file = file.right(file.length() - 1);
962  if (!file.endsWith("/"))
964  else
965  m_workingMetadata->SetTrailer(QString());
966  }
967  else
970 }
971 
973 {
974  if (levent->type() == DialogCompletionEvent::kEventType)
975  {
976  auto *dce = (DialogCompletionEvent*)(levent);
977 
978  const QString resultid = dce->GetId();
979 
980  if (resultid == CEID_COVERARTFILE)
981  SetCoverArt(dce->GetResultText());
982  else if (resultid == CEID_BANNERFILE)
983  SetBanner(dce->GetResultText());
984  else if (resultid == CEID_FANARTFILE)
985  SetFanart(dce->GetResultText());
986  else if (resultid == CEID_SCREENSHOTFILE)
987  SetScreenshot(dce->GetResultText());
988  else if (resultid == CEID_TRAILERFILE)
989  SetTrailer(dce->GetResultText());
990  else if (resultid == CEID_NEWCATEGORY)
991  AddCategory(dce->GetResultText());
992  }
993  else if (levent->type() == MetadataLookupEvent::kEventType)
994  {
995  auto *lue = (MetadataLookupEvent *)levent;
996 
997  MetadataLookupList lul = lue->m_lookupList;
998 
999  if (lul.isEmpty())
1000  return;
1001 
1002  // There should really only be one result here.
1003  // If not, USER ERROR!
1004  if (lul.count() == 1)
1005  {
1006  OnArtworkSearchDone(lul[0]);
1007  }
1008  else
1009  {
1010  if (m_busyPopup)
1011  {
1012  m_busyPopup->Close();
1013  m_busyPopup = nullptr;
1014  }
1015  }
1016  }
1017  else if (levent->type() == MetadataLookupFailure::kEventType)
1018  {
1019  auto *luf = (MetadataLookupFailure *)levent;
1020 
1021  MetadataLookupList lul = luf->m_lookupList;
1022 
1023  if (m_busyPopup)
1024  {
1025  m_busyPopup->Close();
1026  m_busyPopup = nullptr;
1027  }
1028 
1029  if (!lul.empty())
1030  {
1031  MetadataLookup *lookup = lul[0];
1032  LOG(VB_GENERAL, LOG_INFO,
1033  QString("No results found for %1 %2 %3").arg(lookup->GetTitle())
1034  .arg(lookup->GetSeason()).arg(lookup->GetEpisode()));
1035  }
1036  }
1037  else if (levent->type() == ImageDLEvent::kEventType)
1038  {
1039  auto *ide = (ImageDLEvent *)levent;
1040 
1041  MetadataLookup *lookup = ide->m_item;
1042 
1043  if (!lookup)
1044  return;
1045 
1046  handleDownloadedImages(lookup);
1047  }
1048  else if (levent->type() == ImageDLFailureEvent::kEventType)
1049  {
1050  MythErrorNotification n(tr("Failed to retrieve image"),
1051  tr("Metadata Editor"),
1052  tr("Check logs"));
1054  }
1055 }
MythUIButton::Clicked
void Clicked()
EditMetadataDialog::FindFanart
void FindFanart()
Definition: editvideometadata.cpp:845
EditMetadataDialog::SetRating
void SetRating()
Definition: editvideometadata.cpp:539
generate_file_url
QString generate_file_url(const QString &storage_group, const QString &host, const QString &path)
Definition: videoutils.h:65
VideoMetadata
Definition: videometadata.h:24
MythUITextEdit::SetMaxLength
void SetMaxLength(int length)
Definition: mythuitextedit.cpp:192
VideoArtworkType
VideoArtworkType
Definition: metadataimagehelper.h:10
EditMetadataDialog::m_bannerText
MythUIText * m_bannerText
Definition: editvideometadata.h:118
EditMetadataDialog::m_busyPopup
MythUIBusyDialog * m_busyPopup
Definition: editvideometadata.h:144
VideoMetadata::SetTrailer
void SetTrailer(const QString &trailer)
Definition: videometadata.cpp:1856
EditMetadataDialog::m_imageDownload
MetadataImageDownload * m_imageDownload
Definition: editvideometadata.h:142
VideoMetadata::SetPlot
void SetPlot(const QString &plot)
Definition: videometadata.cpp:1661
EditMetadataDialog::SetCoverArt
void SetCoverArt(QString file)
Definition: editvideometadata.cpp:771
MythUIButtonList::SetValueByData
void SetValueByData(const QVariant &data)
Definition: mythuibuttonlist.cpp:1539
EditMetadataDialog::SetChild
void SetChild(MythUIButtonListItem *item)
Definition: editvideometadata.cpp:605
mythuitext.h
EditMetadataDialog::createBusyDialog
void createBusyDialog(const QString &title)
Definition: editvideometadata.cpp:285
VideoMetadata::GetShowLevel
ParentalLevel::Level GetShowLevel() const
Definition: videometadata.cpp:1806
VideoMetadata::SetHomepage
void SetHomepage(const QString &homepage)
Definition: videometadata.cpp:1631
MetadataImageDownload
Definition: metadataimagedownload.h:87
SingleValue::add
int add(const QString &name)
Definition: dbaccess.cpp:214
VideoMetadata::SetFanart
void SetFanart(const QString &fanart)
Definition: videometadata.cpp:1896
ParentalLevel::plLowest
@ plLowest
Definition: parentalcontrols.h:12
StringUtil::naturalSortCompare
bool naturalSortCompare(const QString &a, const QString &b, Qt::CaseSensitivity caseSensitivity=Qt::CaseSensitive)
naturalCompare as a std::sort compatible function (ignoring the third parameter, which is never used)...
Definition: stringutil.h:54
EditMetadataDialog::m_categoryList
MythUIButtonList * m_categoryList
Definition: editvideometadata.h:108
VideoMetadata::GetHost
const QString & GetHost() const
Definition: videometadata.cpp:1836
EditMetadataDialog::Create
bool Create() override
Definition: editvideometadata.cpp:55
MetadataLookup::GetTitle
QString GetTitle() const
Definition: metadatacommon.h:299
VideoMetadataListManager
Definition: videometadatalistmanager.h:10
MythScreenType::Close
virtual void Close()
Definition: mythscreentype.cpp:386
EditMetadataDialog::m_trailerText
MythUIText * m_trailerText
Definition: editvideometadata.h:122
kMetadataVideo
@ kMetadataVideo
Definition: metadatacommon.h:43
ArtworkList
QList< ArtworkInfo > ArtworkList
Definition: metadataimagehelper.h:30
EditMetadataDialog::m_screenshot
MythUIImage * m_screenshot
Definition: editvideometadata.h:128
EditMetadataDialog::OnSearchListSelection
void OnSearchListSelection(const ArtworkInfo &info, VideoArtworkType type)
Definition: editvideometadata.cpp:668
MythUIImage::Load
bool Load(bool allowLoadInBackground=true, bool forceStat=false)
Load the image(s), wraps ImageLoader::LoadImage()
Definition: mythuiimage.cpp:966
VideoMetadata::GetChildID
int GetChildID() const
Definition: videometadata.cpp:1746
MythUIBusyDialog::Create
bool Create(void) override
Definition: mythprogressdialog.cpp:32
ParentalLevel::plHigh
@ plHigh
Definition: parentalcontrols.h:13
kProbableTelevision
@ kProbableTelevision
Definition: metadatacommon.h:51
MythUIButtonList::itemSelected
void itemSelected(MythUIButtonListItem *item)
VideoMetadata::GetFanart
const QString & GetFanart() const
Definition: videometadata.cpp:1891
EditMetadataDialog::ToggleWatched
void ToggleWatched()
Definition: editvideometadata.cpp:617
MythUICheckBox::GetBooleanCheckState
bool GetBooleanCheckState(void) const
Definition: mythuicheckbox.cpp:103
VideoMetadata::SetEpisode
void SetEpisode(int episode)
Definition: videometadata.cpp:1721
EditMetadataDialog::SaveAndExit
void SaveAndExit()
Definition: editvideometadata.cpp:515
VideoMetadata::SetBanner
void SetBanner(const QString &banner)
Definition: videometadata.cpp:1886
VideoMetadata::SetUserRating
void SetUserRating(float userRating)
Definition: videometadata.cpp:1671
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
MythWarningNotification
Definition: mythnotification.h:205
GuessLookupType
LookupType GuessLookupType(ProgramInfo *pginfo)
Definition: metadatafactory.cpp:646
ImageDLEvent
Definition: metadataimagedownload.h:18
MetadataDownload
Definition: metadatadownload.h:35
VideoMetadata::GetPlayCommand
const QString & GetPlayCommand() const
Definition: videometadata.cpp:1796
MetadataLookup::GetArtwork
ArtworkList GetArtwork(VideoArtworkType type) const
Definition: metadatacommon.cpp:330
EditMetadataDialog::m_bannerButton
MythUIButton * m_bannerButton
Definition: editvideometadata.h:117
VideoMetadata::GetHomepage
const QString & GetHomepage() const
Definition: videometadata.cpp:1626
VideoMetadata::GetSeason
int GetSeason() const
Definition: videometadata.cpp:1706
CheckedSet
void CheckedSet(MythUIStateType *uiItem, const QString &value)
Definition: videoutils.cpp:40
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
FileAssociations::getList
const association_list & getList() const
Definition: dbaccess.cpp:805
EditMetadataDialog::SetScreenshot
void SetScreenshot(QString file)
Definition: editvideometadata.cpp:907
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
EditMetadataDialog::m_homepageEdit
MythUITextEdit * m_homepageEdit
Definition: editvideometadata.h:100
EditMetadataDialog::NewCategoryPopup
void NewCategoryPopup()
Definition: editvideometadata.cpp:491
EditMetadataDialog::m_lengthSpin
MythUISpinBox * m_lengthSpin
Definition: editvideometadata.h:107
VideoMetadataListManager::getList
const metadata_list & getList() const
Definition: videometadatalistmanager.cpp:168
EditMetadataDialog::SetLength
void SetLength()
Definition: editvideometadata.cpp:589
MythUITextEdit::GetText
QString GetText(void) const
Definition: mythuitextedit.h:50
build_compdb.file
file
Definition: build_compdb.py:55
mythdirs.h
EditMetadataDialog::SetSubtitle
void SetSubtitle()
Definition: editvideometadata.cpp:529
EditMetadataDialog::m_directorEdit
MythUITextEdit * m_directorEdit
Definition: editvideometadata.h:98
EditMetadataDialog::m_subtitleEdit
MythUITextEdit * m_subtitleEdit
Definition: editvideometadata.h:94
VideoMetadata::SetInetRef
void SetInetRef(const QString &inetRef)
Definition: videometadata.cpp:1611
VideoMetadata::GetCategoryID
int GetCategoryID() const
Definition: videometadata.cpp:1941
VideoMetadata::GetScreenshot
const QString & GetScreenshot() const
Definition: videometadata.cpp:1871
MythUISpinBox::SetRange
void SetRange(int low, int high, int step, uint pageMultiple=5)
Set the lower and upper bounds of the spinbox, the interval and page amount.
Definition: mythuispinbox.cpp:26
remoteutil.h
mythuibuttonlist.h
VideoMetadata::GetDirector
const QString & GetDirector() const
Definition: videometadata.cpp:1636
EditMetadataDialog::SetHomepage
void SetHomepage()
Definition: editvideometadata.cpp:559
hardwareprofile.distros.mythtv_data.data_mythtv.prefix
string prefix
Definition: data_mythtv.py:40
mythuiimage.h
VIDEO_CATEGORY_UNKNOWN
const QString VIDEO_CATEGORY_UNKNOWN
Definition: globals.cpp:7
mythprogressdialog.h
VideoMetadata::GetPlot
const QString & GetPlot() const
Definition: videometadata.cpp:1656
VideoMetadata::GetSubtitle
const QString & GetSubtitle() const
Definition: videometadata.cpp:1561
kLookupSearch
@ kLookupSearch
Definition: metadatacommon.h:28
dbaccess.h
MetadataLookup
Definition: metadatacommon.h:87
EditMetadataDialog::m_origMetadata
VideoMetadata * m_origMetadata
Definition: editvideometadata.h:87
EditMetadataDialog::m_coverartText
MythUIText * m_coverartText
Definition: editvideometadata.h:114
EditMetadataDialog::m_levelList
MythUIButtonList * m_levelList
Definition: editvideometadata.h:109
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
EditMetadataDialog::SetPlot
void SetPlot()
Definition: editvideometadata.cpp:564
MythUISpinBox::SetValue
void SetValue(int val) override
Definition: mythuispinbox.h:26
MythUITextEdit::SetText
void SetText(const QString &text, bool moveCursor=true)
Definition: mythuitextedit.cpp:197
EditMetadataDialog::SetSeason
void SetSeason()
Definition: editvideometadata.cpp:569
MetadataLookup::GetDownloads
DownloadMap GetDownloads() const
Definition: metadatacommon.h:372
VideoMetadata::GetInetRef
const QString & GetInetRef() const
Definition: videometadata.cpp:1606
MythUICheckBox::valueChanged
void valueChanged()
EditMetadataDialog::m_browseCheck
MythUICheckBox * m_browseCheck
Definition: editvideometadata.h:111
EditMetadataDialog::m_metaCache
const VideoMetadataListManager & m_metaCache
Definition: editvideometadata.h:140
MetadataLookup::GetEpisode
uint GetEpisode() const
Definition: metadatacommon.h:315
GetConfDir
QString GetConfDir(void)
Definition: mythdirs.cpp:256
EditMetadataDialog::SetTagline
void SetTagline()
Definition: editvideometadata.cpp:544
EditMetadataDialog::SetInetRef
void SetInetRef()
Definition: editvideometadata.cpp:554
MythUIButtonList::itemClicked
void itemClicked(MythUIButtonListItem *item)
MetadataLookupFailure
Definition: metadatadownload.h:23
ArtworkInfo
Definition: metadataimagehelper.h:21
VideoMetadata::SetLength
void SetLength(std::chrono::minutes length)
Definition: videometadata.cpp:1691
ImageSearchResultsDialog
Definition: mythuiimageresults.h:11
globals.h
hardwareprofile.i18n.t
t
Definition: i18n.py:36
EditMetadataDialog::m_screenshotButton
MythUIButton * m_screenshotButton
Definition: editvideometadata.h:115
RefCountedList< MetadataLookup >
EditMetadataDialog::m_coverartButton
MythUIButton * m_coverartButton
Definition: editvideometadata.h:113
EditMetadataDialog::FindNetScreenshot
void FindNetScreenshot()
Definition: editvideometadata.cpp:766
MetadataLookup::GetData
QVariant GetData() const
Definition: metadatacommon.h:288
ImageDLFailureEvent::kEventType
static const Type kEventType
Definition: metadataimagedownload.h:67
EditMetadataDialog::m_coverart
MythUIImage * m_coverart
Definition: editvideometadata.h:127
FileAssociations::association_list
std::vector< file_association > association_list
Definition: dbaccess.h:154
MythUISpinBox::GetIntValue
int GetIntValue(void) const override
Definition: mythuispinbox.h:33
EditMetadataDialog::m_watchedCheck
MythUICheckBox * m_watchedCheck
Definition: editvideometadata.h:112
EditMetadataDialog::m_userRatingSpin
MythUISpinBox * m_userRatingSpin
Definition: editvideometadata.h:106
EditMetadataDialog::m_doneButton
MythUIButton * m_doneButton
Definition: editvideometadata.h:131
MythScreenType::BuildFocusList
void BuildFocusList(void)
Definition: mythscreentype.cpp:206
EditMetadataDialog::FindScreenshot
void FindScreenshot()
Definition: editvideometadata.cpp:890
EditMetadataDialog::m_netScreenshotButton
MythUIButton * m_netScreenshotButton
Definition: editvideometadata.h:126
MythErrorNotification
Definition: mythnotification.h:198
stringutil.h
kArtworkFanart
@ kArtworkFanart
Definition: metadataimagehelper.h:12
ImageDLEvent::kEventType
static const Type kEventType
Definition: metadataimagedownload.h:41
VideoMetadata::GetYear
int GetYear() const
Definition: videometadata.cpp:1586
EditMetadataDialog::m_cachedChildSelection
int m_cachedChildSelection
Definition: editvideometadata.h:138
EditMetadataDialog::FindNetArt
void FindNetArt(VideoArtworkType type)
Definition: editvideometadata.cpp:724
editvideometadata.h
MythUIBusyDialog
Definition: mythprogressdialog.h:36
MetadataDownload::addLookup
void addLookup(MetadataLookup *lookup)
addLookup: Add lookup to bottom of the queue MetadataDownload::m_lookupList takes ownership of the gi...
Definition: metadatadownload.cpp:39
mythuifilebrowser.h
EditMetadataDialog::SetDirector
void SetDirector()
Definition: editvideometadata.cpp:549
EditMetadataDialog::m_inetrefEdit
MythUITextEdit * m_inetrefEdit
Definition: editvideometadata.h:99
EditMetadataDialog::SetFanart
void SetFanart(QString file)
Definition: editvideometadata.cpp:861
MythUIStateType::Full
@ Full
Definition: mythuistatetype.h:25
EditMetadataDialog::SetPlayer
void SetPlayer()
Definition: editvideometadata.cpp:594
EditMetadataDialog::m_screenshotText
MythUIText * m_screenshotText
Definition: editvideometadata.h:116
VideoCategory::GetCategory
static VideoCategory & GetCategory()
Definition: dbaccess.cpp:487
VideoMetadata::SetSubtitle
void SetSubtitle(const QString &subtitle, const QString &sortSubtitle="")
Definition: videometadata.cpp:1571
MythUIButtonListItem::GetData
QVariant GetData()
Definition: mythuibuttonlist.cpp:3665
EditMetadataDialog::SetTitle
void SetTitle()
Definition: editvideometadata.cpp:524
EditMetadataDialog::FindCoverArt
void FindCoverArt()
Definition: editvideometadata.cpp:623
EditMetadataDialog::SetUserRating
void SetUserRating()
Definition: editvideometadata.cpp:584
EditMetadataDialog::m_ratingEdit
MythUITextEdit * m_ratingEdit
Definition: editvideometadata.h:97
VideoMetadata::GetEpisode
int GetEpisode() const
Definition: videometadata.cpp:1716
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
MythUIFileBrowser
Definition: mythuifilebrowser.h:76
EditMetadataDialog::Finished
void Finished()
videometadatalistmanager.h
EditMetadataDialog::SetTrailer
void SetTrailer(QString file)
Definition: editvideometadata.cpp:952
UIUtilDisp::Assign
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)
Definition: mythuiutils.h:27
MetadataLookupFailure::kEventType
static const Type kEventType
Definition: metadatadownload.h:32
MetadataLookup::GetSeason
uint GetSeason() const
Definition: metadatacommon.h:314
VideoMetadata::SetPlayCommand
void SetPlayCommand(const QString &playCommand)
Definition: videometadata.cpp:1801
VideoMetadata::SetTagline
void SetTagline(const QString &tagline)
Definition: videometadata.cpp:1581
EditMetadataDialog::SetEpisode
void SetEpisode()
Definition: editvideometadata.cpp:574
EditMetadataDialog::m_popupStack
MythScreenStack * m_popupStack
Definition: editvideometadata.h:145
kUnknownVideo
@ kUnknownVideo
Definition: metadatacommon.h:54
VideoMetadata::SetCategoryID
void SetCategoryID(int id)
Definition: videometadata.cpp:1946
mythuispinbox.h
FileAssociations::getFileAssociation
static FileAssociations & getFileAssociation()
Definition: dbaccess.cpp:830
mythuihelper.h
VideoMetadata::SetSeason
void SetSeason(int season)
Definition: videometadata.cpp:1711
VideoMetadata::SetRating
void SetRating(const QString &rating)
Definition: videometadata.cpp:1681
EditMetadataDialog::~EditMetadataDialog
~EditMetadataDialog() override
Definition: editvideometadata.cpp:50
EditMetadataDialog::m_taglineEdit
MythUITextEdit * m_taglineEdit
Definition: editvideometadata.h:95
SingleValue::getList
const entry_list & getList()
Definition: dbaccess.cpp:239
EditMetadataDialog::handleDownloadedImages
void handleDownloadedImages(MetadataLookup *lookup)
Definition: editvideometadata.cpp:694
VideoMetadata::SetCoverFile
void SetCoverFile(const QString &coverFile)
Definition: videometadata.cpp:1866
EditMetadataDialog::customEvent
void customEvent(QEvent *levent) override
Definition: editvideometadata.cpp:972
EditMetadataDialog::m_netBannerButton
MythUIButton * m_netBannerButton
Definition: editvideometadata.h:125
EditMetadataDialog::m_seasonSpin
MythUISpinBox * m_seasonSpin
Definition: editvideometadata.h:103
mythuitextedit.h
MythUICheckBox::SetCheckState
void SetCheckState(MythUIStateType::StateType state)
Definition: mythuicheckbox.cpp:66
XMLParseBase::LoadWindowFromXML
static bool LoadWindowFromXML(const QString &xmlfile, const QString &windowname, MythUIType *parent)
Definition: xmlparsebase.cpp:695
EditMetadataDialog::ToggleBrowse
void ToggleBrowse()
Definition: editvideometadata.cpp:611
VideoMetadata::SetDirector
void SetDirector(const QString &director)
Definition: videometadata.cpp:1641
ImageSearchResultsDialog::haveResult
void haveResult(ArtworkInfo, VideoArtworkType)
EditMetadataDialog::m_netFanartButton
MythUIButton * m_netFanartButton
Definition: editvideometadata.h:124
VideoMetadata::GetUserRating
float GetUserRating() const
Definition: videometadata.cpp:1666
EditMetadataDialog::SetCategory
void SetCategory(MythUIButtonListItem *item)
Definition: editvideometadata.cpp:534
ParentalLevel
Definition: parentalcontrols.h:9
VideoMetadata::UpdateDatabase
void UpdateDatabase()
Definition: videometadata.cpp:1956
EditMetadataDialog::AddCategory
void AddCategory(const QString &category)
Definition: editvideometadata.cpp:507
MythUISpinBox::GetDuration
std::enable_if_t< std::chrono::__is_duration< T >::value, T > GetDuration()
Definition: mythuispinbox.h:39
EditMetadataDialog::FindNetBanner
void FindNetBanner()
Definition: editvideometadata.cpp:761
VideoMetadata::GetWatched
bool GetWatched() const
Definition: videometadata.cpp:1766
DialogCompletionEvent
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
Definition: mythdialogbox.h:41
EditMetadataDialog::m_banner
MythUIImage * m_banner
Definition: editvideometadata.h:129
VideoMetadata::GetCoverFile
const QString & GetCoverFile() const
Definition: videometadata.cpp:1861
VideoMetadata::SetTitle
void SetTitle(const QString &title, const QString &sortTitle="")
Definition: videometadata.cpp:1556
MythUIText::SetText
virtual void SetText(const QString &text)
Definition: mythuitext.cpp:132
GetNotificationCenter
MythNotificationCenter * GetNotificationCenter(void)
Definition: mythmainwindow.cpp:124
mythcontext.h
metadatafactory.h
DialogCompletionEvent::kEventType
static const Type kEventType
Definition: mythdialogbox.h:57
EditMetadataDialog::m_episodeSpin
MythUISpinBox * m_episodeSpin
Definition: editvideometadata.h:104
VideoMetadata::GetLength
std::chrono::minutes GetLength() const
Definition: videometadata.cpp:1686
mythuiimageresults.h
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
kArtworkBanner
@ kArtworkBanner
Definition: metadataimagehelper.h:13
VideoMetadata::GetID
unsigned int GetID() const
Definition: videometadata.cpp:1736
VideoMetadata::SetYear
void SetYear(int year)
Definition: videometadata.cpp:1591
EditMetadataDialog::m_workingMetadata
VideoMetadata * m_workingMetadata
Definition: editvideometadata.h:86
EditMetadataDialog::m_fanart
MythUIImage * m_fanart
Definition: editvideometadata.h:130
VideoMetadata::GetTitle
const QString & GetTitle() const
Definition: videometadata.cpp:1546
mythuibutton.h
EditMetadataDialog::m_childList
MythUIButtonList * m_childList
Definition: editvideometadata.h:110
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:323
VideoMetadata::SetScreenshot
void SetScreenshot(const QString &screenshot)
Definition: videometadata.cpp:1876
VideoMetadataListManager::metadata_list
std::list< VideoMetadataPtr > metadata_list
Definition: videometadatalistmanager.h:14
DownloadMap
QMap< VideoArtworkType, ArtworkInfo > DownloadMap
Definition: metadatacommon.h:84
MythUITextEdit::valueChanged
void valueChanged()
EditMetadataDialog::m_trailerButton
MythUIButton * m_trailerButton
Definition: editvideometadata.h:121
VideoMetadata::GetTrailer
const QString & GetTrailer() const
Definition: videometadata.cpp:1851
EditMetadataDialog::FindNetFanart
void FindNetFanart()
Definition: editvideometadata.cpp:756
MetadataLookupEvent::kEventType
static const Type kEventType
Definition: metadatadownload.h:20
EditMetadataDialog::m_fanartText
MythUIText * m_fanartText
Definition: editvideometadata.h:120
SingleValue::entry_list
std::vector< entry > entry_list
Definition: dbaccess.h:16
EditMetadataDialog::FindBanner
void FindBanner()
Definition: editvideometadata.cpp:800
EditMetadataDialog::m_query
MetadataDownload * m_query
Definition: editvideometadata.h:141
VideoMetadata::GetRating
const QString & GetRating() const
Definition: videometadata.cpp:1676
EditMetadataDialog::FindNetCoverArt
void FindNetCoverArt()
Definition: editvideometadata.cpp:751
MythTextInputDialog
Dialog prompting the user to enter a text string.
Definition: mythdialogbox.h:314
kArtworkScreenshot
@ kArtworkScreenshot
Definition: metadataimagehelper.h:14
mythuicheckbox.h
MythUIImage::SetFilename
void SetFilename(const QString &filename)
Must be followed by a call to Load() to load the image.
Definition: mythuiimage.cpp:674
MythUIType::LosingFocus
void LosingFocus()
VideoMetadata::GetTagline
const QString & GetTagline() const
Definition: videometadata.cpp:1576
VideoMetadata::GetBrowse
bool GetBrowse() const
Definition: videometadata.cpp:1756
build_compdb.filename
filename
Definition: build_compdb.py:21
VideoMetadata::GetBanner
const QString & GetBanner() const
Definition: videometadata.cpp:1881
kProbableMovie
@ kProbableMovie
Definition: metadatacommon.h:53
mythmainwindow.h
EditMetadataDialog::m_yearSpin
MythUISpinBox * m_yearSpin
Definition: editvideometadata.h:105
MythScreenStack::AddScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Definition: mythscreenstack.cpp:52
ParentalLevel::GetLevel
Level GetLevel() const
Definition: parentalcontrols.cpp:128
EditMetadataDialog::m_titleEdit
MythUITextEdit * m_titleEdit
Definition: editvideometadata.h:93
MetadataLookupEvent
Definition: metadatadownload.h:11
kArtworkCoverart
@ kArtworkCoverart
Definition: metadataimagehelper.h:11
EditMetadataDialog::SetYear
void SetYear()
Definition: editvideometadata.cpp:579
VideoMetadata::SetChildID
void SetChildID(int childID)
Definition: videometadata.cpp:1751
EditMetadataDialog::m_playerEdit
MythUITextEdit * m_playerEdit
Definition: editvideometadata.h:96
EditMetadataDialog::m_fanartButton
MythUIButton * m_fanartButton
Definition: editvideometadata.h:119
videoutils.h
EditMetadataDialog::m_netCoverartButton
MythUIButton * m_netCoverartButton
Definition: editvideometadata.h:123
EditMetadataDialog::OnArtworkSearchDone
void OnArtworkSearchDone(MetadataLookup *lookup)
Definition: editvideometadata.cpp:639
EditMetadataDialog::FindTrailer
void FindTrailer()
Definition: editvideometadata.cpp:936
EditMetadataDialog::EditMetadataDialog
EditMetadataDialog(MythScreenStack *lparent, const QString &lname, VideoMetadata *source_metadata, const VideoMetadataListManager &cache)
Definition: editvideometadata.cpp:37
EditMetadataDialog::SetBanner
void SetBanner(QString file)
Definition: editvideometadata.cpp:816
EditMetadataDialog::SetLevel
void SetLevel(MythUIButtonListItem *item)
Definition: editvideometadata.cpp:599
EditMetadataDialog::m_plotEdit
MythUITextEdit * m_plotEdit
Definition: editvideometadata.h:101
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:897
ArtworkInfo::url
QString url
Definition: metadataimagehelper.h:25
MetadataImageDownload::addDownloads
void addDownloads(MetadataLookup *lookup)
addLookup: Add lookup to bottom of the queue MetadataDownload::m_downloadList takes ownership of the ...
Definition: metadataimagedownload.cpp:54
MythNotificationCenter::Queue
bool Queue(const MythNotification &notification)
Queue a notification Queue() is thread-safe and can be called from anywhere.
Definition: mythnotificationcenter.cpp:1349
EditMetadataDialog::fillWidgets
void fillWidgets()
Definition: editvideometadata.cpp:299