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  m_query(new MetadataDownload(this)),
43  m_imageDownload(new MetadataImageDownload(this))
44 {
46  m_popupStack = GetMythMainWindow()->GetStack("popup stack");
47 }
48 
50 {
51  delete m_workingMetadata;
52 }
53 
55 {
56  if (!LoadWindowFromXML("video-ui.xml", "edit_metadata", this))
57  return false;
58 
59  bool err = false;
60  UIUtilE::Assign(this, m_titleEdit, "title_edit", &err);
61  UIUtilE::Assign(this, m_subtitleEdit, "subtitle_edit", &err);
62  UIUtilE::Assign(this, m_playerEdit, "player_edit", &err);
63 
64  UIUtilE::Assign(this, m_seasonSpin, "season", &err);
65  UIUtilE::Assign(this, m_episodeSpin, "episode", &err);
66 
67 
68  UIUtilE::Assign(this, m_categoryList, "category_select", &err);
69  UIUtilE::Assign(this, m_levelList, "level_select", &err);
70  UIUtilE::Assign(this, m_childList, "child_select", &err);
71 
72  UIUtilE::Assign(this, m_browseCheck, "browse_check", &err);
73  UIUtilE::Assign(this, m_watchedCheck, "watched_check", &err);
74 
75  UIUtilE::Assign(this, m_doneButton, "done_button", &err);
76 
77  if (err)
78  {
79  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'edit_metadata'");
80  return false;
81  }
82 
83  UIUtilW::Assign(this, m_coverartText, "coverart_text");
84  UIUtilW::Assign(this, m_screenshotText, "screenshot_text");
85  UIUtilW::Assign(this, m_bannerText, "banner_text");
86  UIUtilW::Assign(this, m_fanartText, "fanart_text");
87  UIUtilW::Assign(this, m_trailerText, "trailer_text");
88 
89  UIUtilW::Assign(this, m_coverartButton, "coverart_button");
90  UIUtilW::Assign(this, m_bannerButton, "banner_button");
91  UIUtilW::Assign(this, m_fanartButton, "fanart_button");
92  UIUtilW::Assign(this, m_screenshotButton, "screenshot_button");
93  UIUtilW::Assign(this, m_trailerButton, "trailer_button");
94 
95  UIUtilW::Assign(this, m_netBannerButton, "net_banner_button");
96  UIUtilW::Assign(this, m_netFanartButton, "net_fanart_button");
97  UIUtilW::Assign(this, m_netScreenshotButton, "net_screenshot_button");
98  UIUtilW::Assign(this, m_netCoverartButton, "net_coverart_button");
99 
100  UIUtilW::Assign(this, m_taglineEdit, "tagline_edit");
101  UIUtilW::Assign(this, m_ratingEdit, "rating_edit");
102  UIUtilW::Assign(this, m_directorEdit, "director_edit");
103  UIUtilW::Assign(this, m_inetrefEdit, "inetref_edit");
104  UIUtilW::Assign(this, m_homepageEdit, "homepage_edit");
105  UIUtilW::Assign(this, m_plotEdit, "description_edit");
106  UIUtilW::Assign(this, m_yearSpin, "year_spin");
107  UIUtilW::Assign(this, m_userRatingSpin, "userrating_spin");
108  UIUtilW::Assign(this, m_lengthSpin, "length_spin");
109 
110  UIUtilW::Assign(this, m_coverart, "coverart");
111  UIUtilW::Assign(this, m_screenshot, "screenshot");
112  UIUtilW::Assign(this, m_banner, "banner");
113  UIUtilW::Assign(this, m_fanart, "fanart");
114 
115  fillWidgets();
116 
117  BuildFocusList();
118 
124  if (m_taglineEdit)
125  {
128  }
129  if (m_ratingEdit)
130  {
133  }
134  if (m_directorEdit)
135  {
138  }
139  if (m_inetrefEdit)
141  if (m_homepageEdit)
142  {
145  }
146  if (m_plotEdit)
147  {
150  }
151 
154  if (m_yearSpin)
156  if (m_userRatingSpin)
158  if (m_lengthSpin)
160 
162 
163  // Find Artwork locally
164  if (m_coverartButton)
166  if (m_bannerButton)
168  if (m_fanartButton)
170  if (m_screenshotButton)
172 
173  // Find Artwork on the Internet
176  if (m_netBannerButton)
178  if (m_netFanartButton)
182 
183  if (m_trailerButton)
185 
188 
197 
198  return true;
199 }
200 
201 namespace
202 {
203  template <typename T>
204  struct title_sort
205  {
206  bool operator()(const T &lhs, const T &rhs)
207  {
208  return StringUtil::naturalSortCompare(lhs.second, rhs.second);
209  }
210  };
211 
213  {
214  QStringList ret;
215 
216  QList<QByteArray> exts = QImageReader::supportedImageFormats();
217  for (const auto & ext : std::as_const(exts))
218  ret.append(QString("*.").append(ext));
219  return ret;
220  }
221 
222  void FindImagePopup(const QString &prefix, const QString &prefixAlt,
223  QObject &inst, const QString &returnEvent)
224  {
225  QString fp;
226 
227  if (prefix.startsWith("myth://"))
228  fp = prefix;
229  else
230  fp = prefix.isEmpty() ? prefixAlt : prefix;
231 
232  MythScreenStack *popupStack =
233  GetMythMainWindow()->GetStack("popup stack");
234 
235  auto *fb = new MythUIFileBrowser(popupStack, fp);
236  fb->SetNameFilter(GetSupportedImageExtensionFilter());
237  if (fb->Create())
238  {
239  fb->SetReturnEvent(&inst, returnEvent);
240  popupStack->AddScreen(fb);
241  }
242  else
243  {
244  delete fb;
245  }
246  }
247 
248  void FindVideoFilePopup(const QString &prefix, const QString &prefixAlt,
249  QObject &inst, const QString &returnEvent)
250  {
251  QString fp;
252 
253  if (prefix.startsWith("myth://"))
254  fp = prefix;
255  else
256  fp = prefix.isEmpty() ? prefixAlt : prefix;
257 
258  MythScreenStack *popupStack =
259  GetMythMainWindow()->GetStack("popup stack");
260  QStringList exts;
261 
262  const FileAssociations::association_list fa_list =
264  for (const auto & fa : fa_list)
265  exts << QString("*.%1").arg(fa.extension.toUpper());
266 
267  auto *fb = new MythUIFileBrowser(popupStack, fp);
268  fb->SetNameFilter(exts);
269  if (fb->Create())
270  {
271  fb->SetReturnEvent(&inst, returnEvent);
272  popupStack->AddScreen(fb);
273  }
274  else
275  {
276  delete fb;
277  }
278  }
279 
280  const QString CEID_COVERARTFILE = "coverartfile";
281  const QString CEID_BANNERFILE = "bannerfile";
282  const QString CEID_FANARTFILE = "fanartfile";
283  const QString CEID_SCREENSHOTFILE = "screenshotfile";
284  const QString CEID_TRAILERFILE = "trailerfile";
285  const QString CEID_NEWCATEGORY = "newcategory";
286 }
287 
288 void EditMetadataDialog::createBusyDialog(const QString& title)
289 {
290  if (m_busyPopup)
291  return;
292 
293  const QString& message = title;
294 
296  "mythvideobusydialog");
297 
298  if (m_busyPopup->Create())
300 }
301 
303 {
306 
307  m_seasonSpin->SetRange(0,9999,1,5);
309  m_episodeSpin->SetRange(0,999,1,10);
311  if (m_yearSpin)
312  {
313  m_yearSpin->SetRange(0,9999,1,100);
315  }
316  if (m_userRatingSpin)
317  {
318  m_userRatingSpin->SetRange(0,10,1,2);
320  }
321  if (m_lengthSpin)
322  {
323  m_lengthSpin->SetRange(0,999,1,15);
325  }
326 
327  // No memory leak. MythUIButtonListItem adds the new item into
328  // m_categoryList.
330  const VideoCategory::entry_list &vcl =
332  for (const auto & vc : vcl)
333  {
334  // No memory leak. MythUIButtonListItem adds the new item into
335  // m_categoryList.
336  auto *button = new MythUIButtonListItem(m_categoryList, vc.second);
337  button->SetData(vc.first);
338  }
340 
342  i <= ParentalLevel::plHigh && i.good(); ++i)
343  {
344  // No memory leak. MythUIButtonListItem adds the new item into
345  // m_levelList.
346  auto *button = new MythUIButtonListItem(m_levelList,
347  tr("Level %1").arg(i.GetLevel()));
348  button->SetData(i.GetLevel());
349  }
351 
352  //
353  // Fill the "always play this video next" option
354  // with all available videos.
355  //
356 
357  // No memory leak. MythUIButtonListItem adds the new item into
358  // m_childList.
359  new MythUIButtonListItem(m_childList,tr("None"));
360 
361  // TODO: maybe make the title list have the same sort order
362  // as elsewhere.
363  using title_list = std::vector<std::pair<unsigned int, QString> >;
365  title_list tc;
366  tc.reserve(mdl.size());
367  for (const auto & md : mdl)
368  {
369  QString title;
370  if (md->GetSeason() > 0 || md->GetEpisode() > 0)
371  {
372  title = QString("%1 %2x%3").arg(md->GetTitle(),
373  QString::number(md->GetSeason()),
374  QString::number(md->GetEpisode()));
375  }
376  else
377  {
378  title = md->GetTitle();
379  }
380  tc.emplace_back(md->GetID(), title);
381  }
382  std::sort(tc.begin(), tc.end(), title_sort<title_list::value_type>());
383 
384  for (const auto & t : tc)
385  {
386  if (t.first != m_workingMetadata->GetID())
387  {
388  auto *button = new MythUIButtonListItem(m_childList,t.second);
389  button->SetData(t.first);
390  }
391  }
392 
393  if (m_workingMetadata->GetChildID() > 0)
394  {
397  }
398 
403  if (m_coverartText)
405  if (m_screenshotText)
407  if (m_bannerText)
409  if (m_fanartText)
411  if (m_trailerText)
413 
415  if (m_taglineEdit)
417  if (m_ratingEdit)
419  if (m_directorEdit)
421  if (m_inetrefEdit)
423  if (m_homepageEdit)
425  if (m_plotEdit)
427 
428  if (m_coverart)
429  {
430  if (!m_workingMetadata->GetHost().isEmpty() &&
431  !m_workingMetadata->GetCoverFile().isEmpty() &&
432  !m_workingMetadata->GetCoverFile().startsWith("/"))
433  {
437  }
438  else
439  {
441  }
442 
443  if (!m_workingMetadata->GetCoverFile().isEmpty())
444  m_coverart->Load();
445  }
446  if (m_screenshot)
447  {
448  if (!m_workingMetadata->GetHost().isEmpty() &&
449  !m_workingMetadata->GetScreenshot().isEmpty() &&
450  !m_workingMetadata->GetScreenshot().startsWith("/"))
451  {
455  }
456  else
457  {
459  }
460 
461  if (!m_workingMetadata->GetScreenshot().isEmpty())
462  m_screenshot->Load();
463  }
464  if (m_banner)
465  {
466  if (!m_workingMetadata->GetHost().isEmpty() &&
467  !m_workingMetadata->GetBanner().isEmpty() &&
468  !m_workingMetadata->GetBanner().startsWith("/"))
469  {
473  }
474  else
475  {
477  }
478 
479  if (!m_workingMetadata->GetBanner().isEmpty())
480  m_banner->Load();
481  }
482  if (m_fanart)
483  {
484  if (!m_workingMetadata->GetHost().isEmpty() &&
485  !m_workingMetadata->GetFanart().isEmpty() &&
486  !m_workingMetadata->GetFanart().startsWith("/"))
487  {
491  }
492  else
493  {
495  }
496 
497  if (!m_workingMetadata->GetFanart().isEmpty())
498  m_fanart->Load();
499  }
500 }
501 
503 {
504  QString message = tr("Enter new category");
505 
506  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
507 
508  auto *categorydialog = new MythTextInputDialog(popupStack,message);
509 
510  if (categorydialog->Create())
511  {
512  categorydialog->SetReturnEvent(this, CEID_NEWCATEGORY);
513  popupStack->AddScreen(categorydialog);
514  }
515 
516 }
517 
518 void EditMetadataDialog::AddCategory(const QString& category)
519 {
520  int id = VideoCategory::GetCategory().add(category);
522  new MythUIButtonListItem(m_categoryList, category, id);
524 }
525 
527 {
530 
531  emit Finished();
532  Close();
533 }
534 
536 {
538 }
539 
541 {
543 }
544 
546 {
547  m_workingMetadata->SetCategoryID(item->GetData().toInt());
548 }
549 
551 {
553 }
554 
556 {
558 }
559 
561 {
563 }
564 
566 {
568 }
569 
571 {
573 }
574 
576 {
578 }
579 
581 {
583 }
584 
586 {
588 }
589 
591 {
593 }
594 
596 {
598 }
599 
601 {
602  m_workingMetadata->SetLength(m_lengthSpin->GetDuration<std::chrono::minutes>());
603 }
604 
606 {
608 }
609 
611 {
613  SetShowLevel(ParentalLevel(item->GetData().toInt()).GetLevel());
614 }
615 
617 {
618  m_cachedChildSelection = item->GetData().toInt();
620 }
621 
623 {
625  SetBrowse(m_browseCheck->GetBooleanCheckState());
626 }
627 
629 {
631  SetWatched(m_watchedCheck->GetBooleanCheckState());
632 }
633 
635 {
636  if (!m_workingMetadata->GetHost().isEmpty())
637  {
638  QString url = generate_file_url("Coverart",
640  "");
641  FindImagePopup(url, "", *this, CEID_COVERARTFILE);
642  }
643  else
644  {
645  FindImagePopup(gCoreContext->GetSetting("VideoArtworkDir"),
646  GetConfDir() + "/MythVideo", *this, CEID_COVERARTFILE);
647  }
648 }
649 
651 {
652  if (!lookup)
653  return;
654 
655  if (m_busyPopup)
656  {
657  m_busyPopup->Close();
658  m_busyPopup = nullptr;
659  }
660 
661  auto type = lookup->GetData().value<VideoArtworkType>();
662  ArtworkList list = lookup->GetArtwork(type);
663 
664  if (list.isEmpty())
665  {
666  MythWarningNotification n(tr("No image found"), tr("Metadata Editor"));
668  return;
669  }
670  auto *resultsdialog = new ImageSearchResultsDialog(m_popupStack, list, type);
671 
672  connect(resultsdialog, &ImageSearchResultsDialog::haveResult,
674 
675  if (resultsdialog->Create())
676  m_popupStack->AddScreen(resultsdialog);
677 }
678 
680 {
681  QString msg = tr("Downloading selected artwork...");
682  createBusyDialog(msg);
683 
684  auto *lookup = new MetadataLookup();
685  lookup->SetType(kMetadataVideo);
686 
687  lookup->SetSubtype(GuessLookupType(m_workingMetadata));
688  lookup->SetHost(m_workingMetadata->GetHost());
689  lookup->SetAutomatic(true);
690  lookup->SetData(QVariant::fromValue<VideoArtworkType>(type));
691 
692  DownloadMap downloads;
693  downloads.insert(type, info);
694  lookup->SetDownloads(downloads);
695  lookup->SetAllowOverwrites(true);
696  lookup->SetTitle(m_workingMetadata->GetTitle());
697  lookup->SetSubtitle(m_workingMetadata->GetSubtitle());
698  lookup->SetSeason(m_workingMetadata->GetSeason());
699  lookup->SetEpisode(m_workingMetadata->GetEpisode());
700  lookup->SetInetref(m_workingMetadata->GetInetRef());
701 
702  m_imageDownload->addDownloads(lookup);
703 }
704 
706 {
707  if (!lookup)
708  return;
709 
710  if (m_busyPopup)
711  {
712  m_busyPopup->Close();
713  m_busyPopup = nullptr;
714  }
715 
716  auto type = lookup->GetData().value<VideoArtworkType>();
717  DownloadMap map = lookup->GetDownloads();
718 
719  if (map.count() >= 1)
720  {
721  ArtworkInfo info = map.value(type);
722  QString filename = info.url;
723 
724  if (type == kArtworkCoverart)
726  else if (type == kArtworkFanart)
728  else if (type == kArtworkBanner)
730  else if (type == kArtworkScreenshot)
732  }
733 }
734 
736 {
737  QString msg = tr("Searching for available artwork...");
738  createBusyDialog(msg);
739 
740  auto *lookup = new MetadataLookup();
741  lookup->SetStep(kLookupSearch);
742  lookup->SetType(kMetadataVideo);
743  lookup->SetAutomatic(true);
744  if (m_workingMetadata->GetSeason() > 0 ||
746  lookup->SetSubtype(kProbableTelevision);
747  else if (m_workingMetadata->GetSubtitle().isEmpty())
748  lookup->SetSubtype(kProbableMovie);
749  else
750  lookup->SetSubtype(kUnknownVideo);
751  lookup->SetData(QVariant::fromValue<VideoArtworkType>(type));
752 
753  lookup->SetTitle(m_workingMetadata->GetTitle());
754  lookup->SetSubtitle(m_workingMetadata->GetSubtitle());
755  lookup->SetSeason(m_workingMetadata->GetSeason());
756  lookup->SetEpisode(m_workingMetadata->GetEpisode());
757  lookup->SetInetref(m_workingMetadata->GetInetRef());
758 
759  m_query->addLookup(lookup);
760 }
761 
763 {
765 }
766 
768 {
770 }
771 
773 {
775 }
776 
778 {
780 }
781 
783 {
784  if (file.isEmpty())
785  return;
786 
787  QString origfile = file;
788 
789  if (file.startsWith("myth://"))
790  {
791  QUrl url(file);
792  file = url.path();
793  file = file.right(file.length() - 1);
794  if (!file.endsWith("/"))
796  else
797  m_workingMetadata->SetCoverFile(QString());
798  }
799  else
800  {
802  }
803 
805 
806  if (m_coverart)
807  {
808  m_coverart->SetFilename(origfile);
809  m_coverart->Load();
810  }
811 }
812 
814 {
815  if (!m_workingMetadata->GetHost().isEmpty())
816  {
817  QString url = generate_file_url("Banners",
819  "");
820  FindImagePopup(url, "", *this, CEID_BANNERFILE);
821  }
822  else
823  {
824  FindImagePopup(gCoreContext->GetSetting("mythvideo.bannerDir"),
825  GetConfDir() + "/MythVideo/Banners", *this, CEID_BANNERFILE);
826  }
827 }
828 
830 {
831  if (file.isEmpty())
832  return;
833 
834  QString origfile = file;
835 
836  if (file.startsWith("myth://"))
837  {
838  QUrl url(file);
839  file = url.path();
840  file = file.right(file.length() - 1);
841  if (!file.endsWith("/"))
843  else
844  m_workingMetadata->SetBanner(QString());
845  }
846  else
847  {
849  }
850 
852 
853  if (m_banner)
854  {
855  m_banner->SetFilename(origfile);
856  m_banner->Load();
857  }
858 }
859 
861 {
862  if (!m_workingMetadata->GetHost().isEmpty())
863  {
864  QString url = generate_file_url("Fanart",
866  "");
867  FindImagePopup(url, "", *this, CEID_FANARTFILE);
868  }
869  else
870  {
871  FindImagePopup(gCoreContext->GetSetting("mythvideo.fanartDir"),
872  GetConfDir() + "/MythVideo/Fanart", *this, CEID_FANARTFILE);
873  }
874 }
875 
877 {
878  if (file.isEmpty())
879  return;
880 
881  QString origfile = file;
882 
883  if (file.startsWith("myth://"))
884  {
885  QUrl url(file);
886  file = url.path();
887  file = file.right(file.length() - 1);
888  if (!file.endsWith("/"))
890  else
891  m_workingMetadata->SetFanart(QString());
892  }
893  else
894  {
896  }
897 
899 
900  if (m_fanart)
901  {
902  m_fanart->SetFilename(origfile);
903  m_fanart->Load();
904  }
905 }
906 
908 {
909  if (!m_workingMetadata->GetHost().isEmpty())
910  {
911  QString url = generate_file_url("Screenshots",
913  "");
914  FindImagePopup(url, "", *this, CEID_SCREENSHOTFILE);
915  }
916  else
917  {
918  FindImagePopup(gCoreContext->GetSetting("mythvideo.screenshotDir"),
919  GetConfDir() + "/MythVideo/Screenshots",
920  *this, CEID_SCREENSHOTFILE);
921  }
922 }
923 
925 {
926  if (file.isEmpty())
927  return;
928 
929  QString origfile = file;
930 
931  if (file.startsWith("myth://"))
932  {
933  QUrl url(file);
934  file = url.path();
935  file = file.right(file.length() - 1);
936  if (!file.endsWith("/"))
938  else
939  m_workingMetadata->SetScreenshot(QString());
940  }
941  else
942  {
944  }
945 
947 
948  if (m_screenshot)
949  {
950  m_screenshot->SetFilename(origfile);
951  m_screenshot->Load();
952  }
953 }
954 
956 {
957  if (!m_workingMetadata->GetHost().isEmpty())
958  {
959  QString url = generate_file_url("Trailers",
961  "");
962  FindVideoFilePopup(url, "", *this, CEID_TRAILERFILE);
963  }
964  else
965  {
966  FindVideoFilePopup(gCoreContext->GetSetting("mythvideo.TrailersDir"),
967  GetConfDir() + "/MythVideo/Trailers", *this, CEID_TRAILERFILE);
968  }
969 }
970 
972 {
973  if (file.isEmpty())
974  return;
975 
976  if (file.startsWith("myth://"))
977  {
978  QUrl url(file);
979  file = url.path();
980  file = file.right(file.length() - 1);
981  if (!file.endsWith("/"))
983  else
984  m_workingMetadata->SetTrailer(QString());
985  }
986  else
987  {
989  }
991 }
992 
994 {
995  if (levent->type() == DialogCompletionEvent::kEventType)
996  {
997  auto *dce = (DialogCompletionEvent*)(levent);
998 
999  const QString resultid = dce->GetId();
1000 
1001  if (resultid == CEID_COVERARTFILE)
1002  SetCoverArt(dce->GetResultText());
1003  else if (resultid == CEID_BANNERFILE)
1004  SetBanner(dce->GetResultText());
1005  else if (resultid == CEID_FANARTFILE)
1006  SetFanart(dce->GetResultText());
1007  else if (resultid == CEID_SCREENSHOTFILE)
1008  SetScreenshot(dce->GetResultText());
1009  else if (resultid == CEID_TRAILERFILE)
1010  SetTrailer(dce->GetResultText());
1011  else if (resultid == CEID_NEWCATEGORY)
1012  AddCategory(dce->GetResultText());
1013  }
1014  else if (levent->type() == MetadataLookupEvent::kEventType)
1015  {
1016  auto *lue = (MetadataLookupEvent *)levent;
1017 
1018  MetadataLookupList lul = lue->m_lookupList;
1019 
1020  if (lul.isEmpty())
1021  return;
1022 
1023  // There should really only be one result here.
1024  // If not, USER ERROR!
1025  if (lul.count() == 1)
1026  {
1027  OnArtworkSearchDone(lul[0]);
1028  }
1029  else
1030  {
1031  if (m_busyPopup)
1032  {
1033  m_busyPopup->Close();
1034  m_busyPopup = nullptr;
1035  }
1036  }
1037  }
1038  else if (levent->type() == MetadataLookupFailure::kEventType)
1039  {
1040  auto *luf = (MetadataLookupFailure *)levent;
1041 
1042  MetadataLookupList lul = luf->m_lookupList;
1043 
1044  if (m_busyPopup)
1045  {
1046  m_busyPopup->Close();
1047  m_busyPopup = nullptr;
1048  }
1049 
1050  if (!lul.empty())
1051  {
1052  MetadataLookup *lookup = lul[0];
1053  LOG(VB_GENERAL, LOG_INFO,
1054  QString("No results found for %1 %2 %3").arg(lookup->GetTitle())
1055  .arg(lookup->GetSeason()).arg(lookup->GetEpisode()));
1056  }
1057  }
1058  else if (levent->type() == ImageDLEvent::kEventType)
1059  {
1060  auto *ide = (ImageDLEvent *)levent;
1061 
1062  MetadataLookup *lookup = ide->m_item;
1063 
1064  if (!lookup)
1065  return;
1066 
1067  handleDownloadedImages(lookup);
1068  }
1069  else if (levent->type() == ImageDLFailureEvent::kEventType)
1070  {
1071  MythErrorNotification n(tr("Failed to retrieve image"),
1072  tr("Metadata Editor"),
1073  tr("Check logs"));
1075  }
1076 }
MythUIButton::Clicked
void Clicked()
EditMetadataDialog::FindFanart
void FindFanart()
Definition: editvideometadata.cpp:860
EditMetadataDialog::SetRating
void SetRating()
Definition: editvideometadata.cpp:550
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:193
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:1854
EditMetadataDialog::m_imageDownload
MetadataImageDownload * m_imageDownload
Definition: editvideometadata.h:142
VideoMetadata::SetPlot
void SetPlot(const QString &plot)
Definition: videometadata.cpp:1659
EditMetadataDialog::SetCoverArt
void SetCoverArt(QString file)
Definition: editvideometadata.cpp:782
MythUIButtonList::SetValueByData
void SetValueByData(const QVariant &data)
Definition: mythuibuttonlist.cpp:1566
EditMetadataDialog::SetChild
void SetChild(MythUIButtonListItem *item)
Definition: editvideometadata.cpp:616
mythuitext.h
EditMetadataDialog::createBusyDialog
void createBusyDialog(const QString &title)
Definition: editvideometadata.cpp:288
VideoMetadata::GetShowLevel
ParentalLevel::Level GetShowLevel() const
Definition: videometadata.cpp:1804
VideoMetadata::SetHomepage
void SetHomepage(const QString &homepage)
Definition: videometadata.cpp:1629
MetadataImageDownload
Definition: metadataimagedownload.h:87
SingleValue::add
int add(const QString &name)
Definition: dbaccess.cpp:216
anonymous_namespace{editvideometadata.cpp}::FindVideoFilePopup
void FindVideoFilePopup(const QString &prefix, const QString &prefixAlt, QObject &inst, const QString &returnEvent)
Definition: editvideometadata.cpp:248
VideoMetadata::SetFanart
void SetFanart(const QString &fanart)
Definition: videometadata.cpp:1894
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:57
EditMetadataDialog::m_categoryList
MythUIButtonList * m_categoryList
Definition: editvideometadata.h:108
VideoMetadata::GetHost
const QString & GetHost() const
Definition: videometadata.cpp:1834
EditMetadataDialog::Create
bool Create() override
Definition: editvideometadata.cpp:54
MetadataLookup::GetTitle
QString GetTitle() const
Definition: metadatacommon.h:299
VideoMetadataListManager
Definition: videometadatalistmanager.h:10
MythScreenType::Close
virtual void Close()
Definition: mythscreentype.cpp:383
EditMetadataDialog::m_trailerText
MythUIText * m_trailerText
Definition: editvideometadata.h:122
ArtworkList
QList< ArtworkInfo > ArtworkList
Definition: metadataimagehelper.h:30
kProbableMovie
@ kProbableMovie
Definition: metadatacommon.h:53
EditMetadataDialog::m_screenshot
MythUIImage * m_screenshot
Definition: editvideometadata.h:128
EditMetadataDialog::OnSearchListSelection
void OnSearchListSelection(const ArtworkInfo &info, VideoArtworkType type)
Definition: editvideometadata.cpp:679
MythUIImage::Load
bool Load(bool allowLoadInBackground=true, bool forceStat=false)
Load the image(s), wraps ImageLoader::LoadImage()
Definition: mythuiimage.cpp:971
VideoMetadata::GetChildID
int GetChildID() const
Definition: videometadata.cpp:1744
MythUIBusyDialog::Create
bool Create(void) override
Definition: mythprogressdialog.cpp:32
MythUIButtonList::itemSelected
void itemSelected(MythUIButtonListItem *item)
VideoMetadata::GetFanart
const QString & GetFanart() const
Definition: videometadata.cpp:1889
EditMetadataDialog::ToggleWatched
void ToggleWatched()
Definition: editvideometadata.cpp:628
MythUICheckBox::GetBooleanCheckState
bool GetBooleanCheckState(void) const
Definition: mythuicheckbox.cpp:103
VideoMetadata::SetEpisode
void SetEpisode(int episode)
Definition: videometadata.cpp:1719
EditMetadataDialog::SaveAndExit
void SaveAndExit()
Definition: editvideometadata.cpp:526
VideoMetadata::SetBanner
void SetBanner(const QString &banner)
Definition: videometadata.cpp:1884
VideoMetadata::SetUserRating
void SetUserRating(float userRating)
Definition: videometadata.cpp:1669
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
anonymous_namespace{editvideometadata.cpp}::CEID_COVERARTFILE
const QString CEID_COVERARTFILE
Definition: editvideometadata.cpp:280
MythWarningNotification
Definition: mythnotification.h:205
GuessLookupType
LookupType GuessLookupType(ProgramInfo *pginfo)
Definition: metadatafactory.cpp:645
ImageDLEvent
Definition: metadataimagedownload.h:18
MetadataDownload
Definition: metadatadownload.h:35
VideoMetadata::GetPlayCommand
const QString & GetPlayCommand() const
Definition: videometadata.cpp:1794
MetadataLookup::GetArtwork
ArtworkList GetArtwork(VideoArtworkType type) const
Definition: metadatacommon.cpp:331
EditMetadataDialog::m_bannerButton
MythUIButton * m_bannerButton
Definition: editvideometadata.h:117
VideoMetadata::GetHomepage
const QString & GetHomepage() const
Definition: videometadata.cpp:1624
VideoMetadata::GetSeason
int GetSeason() const
Definition: videometadata.cpp:1704
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:811
EditMetadataDialog::SetScreenshot
void SetScreenshot(QString file)
Definition: editvideometadata.cpp:924
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:502
EditMetadataDialog::m_lengthSpin
MythUISpinBox * m_lengthSpin
Definition: editvideometadata.h:107
VideoMetadataListManager::getList
const metadata_list & getList() const
Definition: videometadatalistmanager.cpp:168
anonymous_namespace{editvideometadata.cpp}::FindImagePopup
void FindImagePopup(const QString &prefix, const QString &prefixAlt, QObject &inst, const QString &returnEvent)
Definition: editvideometadata.cpp:222
kMetadataVideo
@ kMetadataVideo
Definition: metadatacommon.h:43
EditMetadataDialog::SetLength
void SetLength()
Definition: editvideometadata.cpp:600
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:540
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:1609
anonymous_namespace{editvideometadata.cpp}::CEID_FANARTFILE
const QString CEID_FANARTFILE
Definition: editvideometadata.cpp:282
VideoMetadata::GetCategoryID
int GetCategoryID() const
Definition: videometadata.cpp:1939
VideoMetadata::GetScreenshot
const QString & GetScreenshot() const
Definition: videometadata.cpp:1869
anonymous_namespace{editvideometadata.cpp}::CEID_NEWCATEGORY
const QString CEID_NEWCATEGORY
Definition: editvideometadata.cpp:285
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:1634
EditMetadataDialog::SetHomepage
void SetHomepage()
Definition: editvideometadata.cpp:570
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:1654
VideoArtworkType
VideoArtworkType
Definition: metadataimagehelper.h:10
VideoMetadata::GetSubtitle
const QString & GetSubtitle() const
Definition: videometadata.cpp:1559
dbaccess.h
MetadataLookup
Definition: metadatacommon.h:87
EditMetadataDialog::m_origMetadata
VideoMetadata * m_origMetadata
Definition: editvideometadata.h:87
kArtworkScreenshot
@ kArtworkScreenshot
Definition: metadataimagehelper.h:14
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:575
MythUISpinBox::SetValue
void SetValue(int val) override
Definition: mythuispinbox.h:26
MythUITextEdit::SetText
void SetText(const QString &text, bool moveCursor=true)
Definition: mythuitextedit.cpp:198
EditMetadataDialog::SetSeason
void SetSeason()
Definition: editvideometadata.cpp:580
MetadataLookup::GetDownloads
DownloadMap GetDownloads() const
Definition: metadatacommon.h:372
ParentalLevel::plLowest
@ plLowest
Definition: parentalcontrols.h:13
kArtworkCoverart
@ kArtworkCoverart
Definition: metadataimagehelper.h:11
kLookupSearch
@ kLookupSearch
Definition: metadatacommon.h:28
VideoMetadata::GetInetRef
const QString & GetInetRef() const
Definition: videometadata.cpp:1604
MythUICheckBox::valueChanged
void valueChanged()
EditMetadataDialog::m_browseCheck
MythUICheckBox * m_browseCheck
Definition: editvideometadata.h:111
kArtworkFanart
@ kArtworkFanart
Definition: metadataimagehelper.h:12
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:263
EditMetadataDialog::SetTagline
void SetTagline()
Definition: editvideometadata.cpp:555
EditMetadataDialog::SetInetRef
void SetInetRef()
Definition: editvideometadata.cpp:565
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:1689
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:777
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
kArtworkBanner
@ kArtworkBanner
Definition: metadataimagehelper.h:13
MythUISpinBox::GetIntValue
int GetIntValue(void) const override
Definition: mythuispinbox.h:33
EditMetadataDialog::m_watchedCheck
MythUICheckBox * m_watchedCheck
Definition: editvideometadata.h:112
anonymous_namespace{editvideometadata.cpp}::CEID_SCREENSHOTFILE
const QString CEID_SCREENSHOTFILE
Definition: editvideometadata.cpp:283
anonymous_namespace{editvideometadata.cpp}::CEID_TRAILERFILE
const QString CEID_TRAILERFILE
Definition: editvideometadata.cpp:284
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:203
EditMetadataDialog::FindScreenshot
void FindScreenshot()
Definition: editvideometadata.cpp:907
EditMetadataDialog::m_netScreenshotButton
MythUIButton * m_netScreenshotButton
Definition: editvideometadata.h:126
MythErrorNotification
Definition: mythnotification.h:198
stringutil.h
ImageDLEvent::kEventType
static const Type kEventType
Definition: metadataimagedownload.h:41
VideoMetadata::GetYear
int GetYear() const
Definition: videometadata.cpp:1584
EditMetadataDialog::m_cachedChildSelection
int m_cachedChildSelection
Definition: editvideometadata.h:138
EditMetadataDialog::FindNetArt
void FindNetArt(VideoArtworkType type)
Definition: editvideometadata.cpp:735
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:40
mythuifilebrowser.h
EditMetadataDialog::SetDirector
void SetDirector()
Definition: editvideometadata.cpp:560
EditMetadataDialog::m_inetrefEdit
MythUITextEdit * m_inetrefEdit
Definition: editvideometadata.h:99
EditMetadataDialog::SetFanart
void SetFanart(QString file)
Definition: editvideometadata.cpp:876
EditMetadataDialog::SetPlayer
void SetPlayer()
Definition: editvideometadata.cpp:605
EditMetadataDialog::m_screenshotText
MythUIText * m_screenshotText
Definition: editvideometadata.h:116
VideoCategory::GetCategory
static VideoCategory & GetCategory()
Definition: dbaccess.cpp:489
VideoMetadata::SetSubtitle
void SetSubtitle(const QString &subtitle, const QString &sortSubtitle="")
Definition: videometadata.cpp:1569
MythUIButtonListItem::GetData
QVariant GetData()
Definition: mythuibuttonlist.cpp:3715
EditMetadataDialog::SetTitle
void SetTitle()
Definition: editvideometadata.cpp:535
EditMetadataDialog::FindCoverArt
void FindCoverArt()
Definition: editvideometadata.cpp:634
EditMetadataDialog::SetUserRating
void SetUserRating()
Definition: editvideometadata.cpp:595
EditMetadataDialog::m_ratingEdit
MythUITextEdit * m_ratingEdit
Definition: editvideometadata.h:97
VideoMetadata::GetEpisode
int GetEpisode() const
Definition: videometadata.cpp:1714
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:971
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:1799
VideoMetadata::SetTagline
void SetTagline(const QString &tagline)
Definition: videometadata.cpp:1579
EditMetadataDialog::SetEpisode
void SetEpisode()
Definition: editvideometadata.cpp:585
EditMetadataDialog::m_popupStack
MythScreenStack * m_popupStack
Definition: editvideometadata.h:145
VideoMetadata::SetCategoryID
void SetCategoryID(int id)
Definition: videometadata.cpp:1944
mythuispinbox.h
FileAssociations::getFileAssociation
static FileAssociations & getFileAssociation()
Definition: dbaccess.cpp:836
ParentalLevel::plHigh
@ plHigh
Definition: parentalcontrols.h:14
mythuihelper.h
VideoMetadata::SetSeason
void SetSeason(int season)
Definition: videometadata.cpp:1709
VideoMetadata::SetRating
void SetRating(const QString &rating)
Definition: videometadata.cpp:1679
EditMetadataDialog::~EditMetadataDialog
~EditMetadataDialog() override
Definition: editvideometadata.cpp:49
EditMetadataDialog::m_taglineEdit
MythUITextEdit * m_taglineEdit
Definition: editvideometadata.h:95
SingleValue::getList
const entry_list & getList()
Definition: dbaccess.cpp:241
kUnknownVideo
@ kUnknownVideo
Definition: metadatacommon.h:54
EditMetadataDialog::handleDownloadedImages
void handleDownloadedImages(MetadataLookup *lookup)
Definition: editvideometadata.cpp:705
VideoMetadata::SetCoverFile
void SetCoverFile(const QString &coverFile)
Definition: videometadata.cpp:1864
EditMetadataDialog::customEvent
void customEvent(QEvent *levent) override
Definition: editvideometadata.cpp:993
anonymous_namespace{editvideometadata.cpp}::GetSupportedImageExtensionFilter
QStringList GetSupportedImageExtensionFilter()
Definition: editvideometadata.cpp:212
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:701
EditMetadataDialog::ToggleBrowse
void ToggleBrowse()
Definition: editvideometadata.cpp:622
VideoMetadata::SetDirector
void SetDirector(const QString &director)
Definition: videometadata.cpp:1639
ImageSearchResultsDialog::haveResult
void haveResult(ArtworkInfo, VideoArtworkType)
EditMetadataDialog::m_netFanartButton
MythUIButton * m_netFanartButton
Definition: editvideometadata.h:124
VideoMetadata::GetUserRating
float GetUserRating() const
Definition: videometadata.cpp:1664
EditMetadataDialog::SetCategory
void SetCategory(MythUIButtonListItem *item)
Definition: editvideometadata.cpp:545
ParentalLevel
Definition: parentalcontrols.h:9
VideoMetadata::UpdateDatabase
void UpdateDatabase()
Definition: videometadata.cpp:1954
EditMetadataDialog::AddCategory
void AddCategory(const QString &category)
Definition: editvideometadata.cpp:518
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:772
VideoMetadata::GetWatched
bool GetWatched() const
Definition: videometadata.cpp:1764
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:1859
VideoMetadata::SetTitle
void SetTitle(const QString &title, const QString &sortTitle="")
Definition: videometadata.cpp:1554
MythUIText::SetText
virtual void SetText(const QString &text)
Definition: mythuitext.cpp:115
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:1684
mythuiimageresults.h
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
VideoMetadata::GetID
unsigned int GetID() const
Definition: videometadata.cpp:1734
VideoMetadata::SetYear
void SetYear(int year)
Definition: videometadata.cpp:1589
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:1544
mythuibutton.h
kProbableTelevision
@ kProbableTelevision
Definition: metadatacommon.h:51
EditMetadataDialog::m_childList
MythUIButtonList * m_childList
Definition: editvideometadata.h:110
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:322
VideoMetadata::SetScreenshot
void SetScreenshot(const QString &screenshot)
Definition: videometadata.cpp:1874
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:1849
EditMetadataDialog::FindNetFanart
void FindNetFanart()
Definition: editvideometadata.cpp:767
MetadataLookupEvent::kEventType
static const Type kEventType
Definition: metadatadownload.h:20
EditMetadataDialog::m_fanartText
MythUIText * m_fanartText
Definition: editvideometadata.h:120
azlyrics.info
dictionary info
Definition: azlyrics.py:7
MythUIStateType::Full
@ Full
Definition: mythuistatetype.h:27
SingleValue::entry_list
std::vector< entry > entry_list
Definition: dbaccess.h:16
EditMetadataDialog::FindBanner
void FindBanner()
Definition: editvideometadata.cpp:813
EditMetadataDialog::m_query
MetadataDownload * m_query
Definition: editvideometadata.h:141
VideoMetadata::GetRating
const QString & GetRating() const
Definition: videometadata.cpp:1674
EditMetadataDialog::FindNetCoverArt
void FindNetCoverArt()
Definition: editvideometadata.cpp:762
anonymous_namespace{editvideometadata.cpp}::title_sort
Definition: editvideometadata.cpp:204
MythTextInputDialog
Dialog prompting the user to enter a text string.
Definition: mythdialogbox.h:314
mythuicheckbox.h
MythUIImage::SetFilename
void SetFilename(const QString &filename)
Must be followed by a call to Load() to load the image.
Definition: mythuiimage.cpp:677
MythUIType::LosingFocus
void LosingFocus()
anonymous_namespace{editvideometadata.cpp}::title_sort::operator()
bool operator()(const T &lhs, const T &rhs)
Definition: editvideometadata.cpp:206
VideoMetadata::GetTagline
const QString & GetTagline() const
Definition: videometadata.cpp:1574
VideoMetadata::GetBrowse
bool GetBrowse() const
Definition: videometadata.cpp:1754
build_compdb.filename
filename
Definition: build_compdb.py:21
VideoMetadata::GetBanner
const QString & GetBanner() const
Definition: videometadata.cpp:1879
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
EditMetadataDialog::SetYear
void SetYear()
Definition: editvideometadata.cpp:590
VideoMetadata::SetChildID
void SetChildID(int childID)
Definition: videometadata.cpp:1749
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:650
EditMetadataDialog::FindTrailer
void FindTrailer()
Definition: editvideometadata.cpp:955
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:829
EditMetadataDialog::SetLevel
void SetLevel(MythUIButtonListItem *item)
Definition: editvideometadata.cpp:610
anonymous_namespace{editvideometadata.cpp}::CEID_BANNERFILE
const QString CEID_BANNERFILE
Definition: editvideometadata.cpp:281
EditMetadataDialog::m_plotEdit
MythUITextEdit * m_plotEdit
Definition: editvideometadata.h:101
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:902
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:302