fixed: quirks with album information in file view
[xbmc:xbmc-antiquated.git] / xbmc / musicInfoTag.h
1 #pragma once
2
3 class CSong;
4 class CAlbum;
5
6 #include "utils/Archive.h"
7
8 namespace MUSIC_INFO
9 {
10
11 class CMusicInfoTag : public ISerializable
12 {
13 public:
14   CMusicInfoTag(void);
15   CMusicInfoTag(const CMusicInfoTag& tag);
16   virtual ~CMusicInfoTag();
17   const CMusicInfoTag& operator =(const CMusicInfoTag& tag);
18   bool operator !=(const CMusicInfoTag& tag) const;
19   bool Loaded() const;
20   const CStdString& GetTitle() const;
21   const CStdString& GetURL() const;
22   const CStdString& GetArtist() const;
23   const CStdString& GetAlbum() const;
24   const CStdString& GetAlbumArtist() const;
25   const CStdString& GetGenre() const;
26   int GetTrackNumber() const;
27   int GetDiscNumber() const;
28   int GetTrackAndDiskNumber() const;
29   int GetDuration() const;  // may be set even if Loaded() returns false
30   int GetYear() const;
31   long GetDatabaseId() const;
32
33   void GetReleaseDate(SYSTEMTIME& dateTime) const;
34   CStdString GetYearString() const;
35   const CStdString& GetMusicBrainzTrackID() const;
36   const CStdString& GetMusicBrainzArtistID() const;
37   const CStdString& GetMusicBrainzAlbumID() const;
38   const CStdString& GetMusicBrainzAlbumArtistID() const;
39   const CStdString& GetMusicBrainzTRMID() const;
40   const CStdString& GetComment() const;
41   const CStdString& GetLyrics() const;
42   char  GetRating() const;
43
44   void SetURL(const CStdString& strURL);
45   void SetTitle(const CStdString& strTitle);
46   void SetArtist(const CStdString& strArtist);
47   void SetAlbum(const CStdString& strAlbum);
48   void SetAlbumArtist(const CStdString& strAlbumArtist);
49   void SetGenre(const CStdString& strGenre);
50   void SetYear(int year);
51   void SetDatabaseId(long id);
52   void SetReleaseDate(SYSTEMTIME& dateTime);
53   void SetTrackNumber(int iTrack);
54   void SetPartOfSet(int m_iPartOfSet);
55   void SetTrackAndDiskNumber(int iTrackAndDisc);
56   void SetDuration(int iSec);
57   void SetLoaded(bool bOnOff = true);
58   void SetAlbum(const CAlbum& album);
59   void SetSong(const CSong& song);
60   void SetMusicBrainzTrackID(const CStdString& strTrackID);
61   void SetMusicBrainzArtistID(const CStdString& strArtistID);
62   void SetMusicBrainzAlbumID(const CStdString& strAlbumID);
63   void SetMusicBrainzAlbumArtistID(const CStdString& strAlbumArtistID);
64   void SetMusicBrainzTRMID(const CStdString& strTRMID);
65   void SetComment(const CStdString& comment);
66   void SetLyrics(const CStdString& lyrics);
67   void SetRating(char rating);
68
69   virtual void Serialize(CArchive& ar);
70
71   void Clear();
72 protected:
73   CStdString m_strURL;
74   CStdString m_strTitle;
75   CStdString m_strArtist;
76   CStdString m_strAlbum;
77   CStdString m_strAlbumArtist;
78   CStdString m_strGenre;
79   CStdString m_strMusicBrainzTrackID;
80   CStdString m_strMusicBrainzArtistID;
81   CStdString m_strMusicBrainzAlbumID;
82   CStdString m_strMusicBrainzAlbumArtistID;
83   CStdString m_strMusicBrainzTRMID;
84   CStdString m_strComment;
85   CStdString m_strLyrics;
86   int m_iDuration;
87   int m_iTrack;     // consists of the disk number in the high 16 bits, the track number in the low 16bits
88   long m_iDbId;
89   bool m_bLoaded;
90   char m_rating;
91   SYSTEMTIME m_dwReleaseDate;
92 };
93 }