abstractmetadataloader.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef AMETADATALOADER_H
  2. #define AMETADATALOADER_H
  3. #include "metadatavalue.h"
  4. namespace Abstract {
  5. /** Abstract Interface for loading metadata from files.
  6. Create a concrete instance and add it as a child to qApp,
  7. and you can retrieve it via the abstract instance() method
  8. here.
  9. @author Alan Ezust
  10. */
  11. class MetaDataLoader : public QObject {
  12. Q_OBJECT
  13. public:
  14. explicit MetaDataLoader(QObject *parent = 0)
  15. : QObject(parent) {}
  16. /** @return the first instance found of MetaDataLoader that is
  17. a child of qApp */
  18. static MetaDataLoader* instance();
  19. /** Returns another instance of the same type */
  20. virtual MetaDataLoader* clone(QObject* parent=0) = 0;
  21. virtual ~MetaDataLoader();
  22. virtual const QStringList &supportedExtensions() = 0;
  23. /** non-blocking method that fetches metadata.
  24. A fetched() signal is emitted when metadata is ready.
  25. */
  26. virtual void get(QUrl url) = 0;
  27. virtual void get(QList<QUrl> urls) = 0;
  28. virtual bool isRunning() const = 0;
  29. public slots:
  30. virtual void cancel() = 0;
  31. signals:
  32. /** Emitted when metadata has been fetched by this object */
  33. void fetched(const MetaDataValue & mdv);
  34. void progressValueChanged(int);
  35. void progressRangeChanged(int, int);
  36. void finished();
  37. };
  38. }
  39. #endif // AMETADATALOADER_H