00001 #ifndef METADATADOWNLOAD_H 00002 #define METADATADOWNLOAD_H 00003 00004 #include <QStringList> 00005 #include <QMutex> 00006 #include <QEvent> 00007 00008 #include "metadatacommon.h" 00009 #include "mthread.h" 00010 00011 class META_PUBLIC MetadataLookupEvent : public QEvent 00012 { 00013 public: 00014 MetadataLookupEvent(MetadataLookupList lul) : QEvent(kEventType), 00015 lookupList(lul) {} 00016 ~MetadataLookupEvent() {} 00017 00018 MetadataLookupList lookupList; 00019 00020 static Type kEventType; 00021 }; 00022 00023 class META_PUBLIC MetadataLookupFailure : public QEvent 00024 { 00025 public: 00026 MetadataLookupFailure(MetadataLookupList lul) : QEvent(kEventType), 00027 lookupList(lul) {} 00028 ~MetadataLookupFailure() {} 00029 00030 MetadataLookupList lookupList; 00031 00032 static Type kEventType; 00033 }; 00034 00035 class META_PUBLIC MetadataDownload : public MThread 00036 { 00037 public: 00038 00039 MetadataDownload(QObject *parent); 00040 ~MetadataDownload(); 00041 00042 void addLookup(MetadataLookup *lookup); 00043 void prependLookup(MetadataLookup *lookup); 00044 void cancel(); 00045 00046 static QString GetMovieGrabber(); 00047 static QString GetTelevisionGrabber(); 00048 static QString GetGameGrabber(); 00049 00050 bool runGrabberTest(const QString &grabberpath); 00051 bool MovieGrabberWorks(); 00052 bool TelevisionGrabberWorks(); 00053 00054 protected: 00055 00056 void run(); 00057 00058 QString getMXMLPath(QString filename); 00059 QString getNFOPath(QString filename); 00060 00061 private: 00062 // Video handling 00063 MetadataLookupList handleMovie(MetadataLookup* lookup); 00064 MetadataLookupList handleTelevision(MetadataLookup* lookup); 00065 MetadataLookupList handleVideoUndetermined(MetadataLookup* lookup); 00066 MetadataLookupList handleRecordingGeneric(MetadataLookup* lookup); 00067 00068 MetadataLookupList handleGame(MetadataLookup* lookup); 00069 00070 bool findBestMatch(MetadataLookupList list, 00071 QString originaltitle); 00072 MetadataLookupList runGrabber(QString cmd, QStringList args, 00073 MetadataLookup* lookup, 00074 bool passseas = true); 00075 MetadataLookupList readMXML(QString MXMLpath, 00076 MetadataLookup* lookup, 00077 bool passseas = true); 00078 MetadataLookupList readNFO(QString NFOpath, MetadataLookup* lookup); 00079 MetadataLookup* moreWork(); 00080 00081 QObject *m_parent; 00082 MetadataLookupList m_lookupList; 00083 QMutex m_mutex; 00084 00085 }; 00086 00087 #endif /* METADATADOWNLOAD_H */
1.6.3