metadatavalue.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef METADATAVALUE_H
  2. #define METADATAVALUE_H
  3. #include <QTime>
  4. #include <QString>
  5. #include <QImage>
  6. #include <QDateTime>
  7. #include <QTextStream>
  8. #include <QVariant>
  9. #include <QUrl>
  10. //start
  11. /** Simple Value type for audio metadata.
  12. Can be used in streams, QVariant, Collections and QFuture.
  13. Defines common interface for programs that need audio metadata.
  14. @author Alan Ezust
  15. */
  16. class MetaDataValue {
  17. public:
  18. friend QTextStream& operator<< (QTextStream& os, const MetaDataValue& mdv);
  19. friend QTextStream& operator>> (QTextStream& is, MetaDataValue& mdv);
  20. friend QDataStream& operator<< (QDataStream& os, const MetaDataValue& mdv);
  21. friend QDataStream& operator>> (QDataStream& is, MetaDataValue& mdv);
  22. friend bool operator==(const MetaDataValue&, const MetaDataValue&);
  23. //end
  24. MetaDataValue(): m_isNull(true) {}
  25. MetaDataValue(const MetaDataValue& other);
  26. virtual ~MetaDataValue() {}
  27. virtual MetaDataValue& operator=(const MetaDataValue& other) ;
  28. //start
  29. virtual QString genre() const;
  30. virtual QString artist() const;
  31. virtual QString albumTitle() const;
  32. virtual QString trackTitle() const;
  33. virtual QString trackNumber() const;
  34. virtual QDateTime lastModified() const;
  35. virtual const QImage &image() const;
  36. virtual QUrl url() const;
  37. /**
  38. @return duration of track
  39. */
  40. virtual QTime trackTime() const;
  41. virtual QString trackTimeString() const;
  42. virtual QString comment() const;
  43. //end
  44. virtual bool isNull() const;
  45. virtual void setNull(bool n);
  46. // Setters
  47. /** May cause a metadata fetch in some implementations */
  48. virtual void setUrl(QUrl url);
  49. virtual void setGenre(const QString & newGenre);
  50. virtual void setArtist(const QString & newArtist);
  51. virtual void setTrackNumber(const QString& newTrackNumber);
  52. virtual void setTrackTitle(const QString &newTitle);
  53. virtual void setLastModified(const QDateTime& newDateTime) {
  54. m_lastModified = newDateTime;
  55. }
  56. virtual void setImage(const QImage& img) {
  57. m_Image = img;
  58. }
  59. virtual void setTrackTime(const QTime &time) {
  60. m_TrackTime = time;
  61. }
  62. virtual void setAlbumTitle(const QString &newAlbumTitle);
  63. virtual void setComment(const QString &newComment);
  64. //start
  65. protected:
  66. bool m_isNull;
  67. QUrl m_url;
  68. QString m_TrackNumber;
  69. QString m_TrackTitle;
  70. QString m_Comment;
  71. QDateTime m_lastModified;
  72. QString m_Genre;
  73. QString m_Artist;
  74. QTime m_TrackTime;
  75. QString m_AlbumTitle;
  76. QImage m_Image;
  77. };
  78. Q_DECLARE_METATYPE(MetaDataValue); /* Add to QVariant type system */
  79. //end
  80. bool operator==(const MetaDataValue&, const MetaDataValue&);
  81. QTextStream& operator<< (QTextStream& os, const MetaDataValue& mdv);
  82. QTextStream& operator>> (QTextStream& is, MetaDataValue& mdv);
  83. QDataStream& operator<< (QDataStream& os, const MetaDataValue& mdv);
  84. QDataStream& operator>> (QDataStream& is, MetaDataValue& mdv);
  85. #endif // #ifndef METADATAVALUE_H