55 #include <QtCore/qvariant.h> |
55 #include <QtCore/qvariant.h> |
56 |
56 |
57 |
57 |
58 struct QWmpMetaDataKeyLookup |
58 struct QWmpMetaDataKeyLookup |
59 { |
59 { |
60 QtMediaServices::MetaData key; |
60 QtMultimedia::MetaData key; |
61 const wchar_t *token; |
61 const wchar_t *token; |
62 }; |
62 }; |
63 |
63 |
64 static const QWmpMetaDataKeyLookup qt_wmpMetaDataKeys[] = |
64 static const QWmpMetaDataKeyLookup qt_wmpMetaDataKeys[] = |
65 { |
65 { |
66 { QtMediaServices::Title, L"Title" }, |
66 { QtMultimedia::Title, L"Title" }, |
67 { QtMediaServices::SubTitle, L"WM/SubTitle" }, |
67 { QtMultimedia::SubTitle, L"WM/SubTitle" }, |
68 { QtMediaServices::Author, L"Author" }, |
68 { QtMultimedia::Author, L"Author" }, |
69 { QtMediaServices::Comment, L"Comment" }, |
69 { QtMultimedia::Comment, L"Comment" }, |
70 { QtMediaServices::Description, L"Description" }, |
70 { QtMultimedia::Description, L"Description" }, |
71 { QtMediaServices::Category, L"WM/Category" }, |
71 { QtMultimedia::Category, L"WM/Category" }, |
72 { QtMediaServices::Genre, L"WM/Genre" }, |
72 { QtMultimedia::Genre, L"WM/Genre" }, |
73 //{ QtMediaServices::Date, 0 }, |
73 //{ QtMultimedia::Date, 0 }, |
74 { QtMediaServices::Year, L"WM/Year" }, |
74 { QtMultimedia::Year, L"WM/Year" }, |
75 { QtMediaServices::UserRating, L"UserRating" }, |
75 { QtMultimedia::UserRating, L"UserRating" }, |
76 //{ QtMediaServices::MetaDatawords, 0 }, |
76 //{ QtMultimedia::MetaDatawords, 0 }, |
77 { QtMediaServices::Language, L"Language" }, |
77 { QtMultimedia::Language, L"Language" }, |
78 { QtMediaServices::Publisher, L"WM/Publisher" }, |
78 { QtMultimedia::Publisher, L"WM/Publisher" }, |
79 { QtMediaServices::Copyright, L"Copyright" }, |
79 { QtMultimedia::Copyright, L"Copyright" }, |
80 { QtMediaServices::ParentalRating, L"ParentalRating" }, |
80 { QtMultimedia::ParentalRating, L"ParentalRating" }, |
81 { QtMediaServices::RatingOrganisation, L"RatingOrganisation" }, |
81 { QtMultimedia::RatingOrganisation, L"RatingOrganisation" }, |
82 |
82 |
83 // Media |
83 // Media |
84 { QtMediaServices::Size, L"FileSize" }, |
84 { QtMultimedia::Size, L"FileSize" }, |
85 { QtMediaServices::MediaType, L"MediaType" }, |
85 { QtMultimedia::MediaType, L"MediaType" }, |
86 { QtMediaServices::Duration, L"Duration" }, |
86 { QtMultimedia::Duration, L"Duration" }, |
87 |
87 |
88 // Audio |
88 // Audio |
89 { QtMediaServices::AudioBitRate, L"AudioBitrate" }, |
89 { QtMultimedia::AudioBitRate, L"AudioBitrate" }, |
90 { QtMediaServices::AudioCodec, L"AudioCodec" }, |
90 { QtMultimedia::AudioCodec, L"AudioCodec" }, |
91 { QtMediaServices::ChannelCount, L"Channels" }, |
91 { QtMultimedia::ChannelCount, L"Channels" }, |
92 { QtMediaServices::SampleRate, L"Frequency" }, |
92 { QtMultimedia::SampleRate, L"Frequency" }, |
93 |
93 |
94 // Music |
94 // Music |
95 { QtMediaServices::AlbumTitle, L"WM/AlbumTitle" }, |
95 { QtMultimedia::AlbumTitle, L"WM/AlbumTitle" }, |
96 { QtMediaServices::AlbumArtist, L"WM/AlbumArtist" }, |
96 { QtMultimedia::AlbumArtist, L"WM/AlbumArtist" }, |
97 { QtMediaServices::ContributingArtist, L"Author" }, |
97 { QtMultimedia::ContributingArtist, L"Author" }, |
98 { QtMediaServices::Composer, L"WM/Composer" }, |
98 { QtMultimedia::Composer, L"WM/Composer" }, |
99 { QtMediaServices::Conductor, L"WM/Conductor" }, |
99 { QtMultimedia::Conductor, L"WM/Conductor" }, |
100 { QtMediaServices::Lyrics, L"WM/Lyrics" }, |
100 { QtMultimedia::Lyrics, L"WM/Lyrics" }, |
101 { QtMediaServices::Mood, L"WM/Mood" }, |
101 { QtMultimedia::Mood, L"WM/Mood" }, |
102 { QtMediaServices::TrackNumber, L"WM/TrackNumber" }, |
102 { QtMultimedia::TrackNumber, L"WM/TrackNumber" }, |
103 //{ QtMediaServices::TrackCount, 0 }, |
103 //{ QtMultimedia::TrackCount, 0 }, |
104 //{ QtMediaServices::CoverArtUrlSmall, 0 }, |
104 //{ QtMultimedia::CoverArtUrlSmall, 0 }, |
105 //{ QtMediaServices::CoverArtUrlLarge, 0 }, |
105 //{ QtMultimedia::CoverArtUrlLarge, 0 }, |
106 |
106 |
107 // Image/Video |
107 // Image/Video |
108 //{ QtMediaServices::Resolution, 0 }, |
108 //{ QtMultimedia::Resolution, 0 }, |
109 //{ QtMediaServices::PixelAspectRatio, 0 }, |
109 //{ QtMultimedia::PixelAspectRatio, 0 }, |
110 |
110 |
111 // Video |
111 // Video |
112 //{ QtMediaServices::FrameRate, 0 }, |
112 //{ QtMultimedia::FrameRate, 0 }, |
113 { QtMediaServices::VideoBitRate, L"VideoBitRate" }, |
113 { QtMultimedia::VideoBitRate, L"VideoBitRate" }, |
114 { QtMediaServices::VideoCodec, L"VideoCodec" }, |
114 { QtMultimedia::VideoCodec, L"VideoCodec" }, |
115 |
115 |
116 //{ QtMediaServices::PosterUrl, 0 }, |
116 //{ QtMultimedia::PosterUrl, 0 }, |
117 |
117 |
118 // Movie |
118 // Movie |
119 { QtMediaServices::ChapterNumber, L"ChapterNumber" }, |
119 { QtMultimedia::ChapterNumber, L"ChapterNumber" }, |
120 { QtMediaServices::Director, L"WM/Director" }, |
120 { QtMultimedia::Director, L"WM/Director" }, |
121 { QtMediaServices::LeadPerformer, L"LeadPerformer" }, |
121 { QtMultimedia::LeadPerformer, L"LeadPerformer" }, |
122 { QtMediaServices::Writer, L"WM/Writer" }, |
122 { QtMultimedia::Writer, L"WM/Writer" }, |
123 |
123 |
124 // Photos |
124 // Photos |
125 { QtMediaServices::CameraManufacturer, L"CameraManufacturer" }, |
125 { QtMultimedia::CameraManufacturer, L"CameraManufacturer" }, |
126 { QtMediaServices::CameraModel, L"CameraModel" }, |
126 { QtMultimedia::CameraModel, L"CameraModel" }, |
127 { QtMediaServices::Event, L"Event" }, |
127 { QtMultimedia::Event, L"Event" }, |
128 { QtMediaServices::Subject, L"Subject" } |
128 { QtMultimedia::Subject, L"Subject" } |
129 }; |
129 }; |
130 |
130 |
131 QWmpMetaData::QWmpMetaData(IWMPCore3 *player, QWmpEvents *events, QObject *parent) |
131 QWmpMetaData::QWmpMetaData(IWMPCore3 *player, QWmpEvents *events, QObject *parent) |
132 : QMetaDataControl(parent) |
132 : QMetaDataReaderControl(parent) |
133 , m_media(0) |
133 , m_media(0) |
134 { |
134 { |
135 player->get_currentMedia(&m_media); |
135 player->get_currentMedia(&m_media); |
136 |
136 |
137 connect(events, SIGNAL(CurrentItemChange(IDispatch*)), |
137 connect(events, SIGNAL(CurrentItemChange(IDispatch*)), |
153 bool QWmpMetaData::isWritable() const |
153 bool QWmpMetaData::isWritable() const |
154 { |
154 { |
155 return m_media != 0; |
155 return m_media != 0; |
156 } |
156 } |
157 |
157 |
158 QVariant QWmpMetaData::metaData(QtMediaServices::MetaData key) const |
158 QVariant QWmpMetaData::metaData(QtMultimedia::MetaData key) const |
159 { |
159 { |
160 static const int count = sizeof(qt_wmpMetaDataKeys) / sizeof(QWmpMetaDataKeyLookup); |
160 static const int count = sizeof(qt_wmpMetaDataKeys) / sizeof(QWmpMetaDataKeyLookup); |
161 |
161 |
162 switch (key) { |
162 switch (key) { |
163 case QtMediaServices::Date: |
163 case QtMultimedia::Date: |
164 { |
164 { |
165 QVariant day = value(m_media, QAutoBStr(L"ReleaseDateDay")); |
165 QVariant day = value(m_media, QAutoBStr(L"ReleaseDateDay")); |
166 QVariant month = value(m_media, QAutoBStr(L"ReleaseDateMonth")); |
166 QVariant month = value(m_media, QAutoBStr(L"ReleaseDateMonth")); |
167 QVariant year = value(m_media, QAutoBStr(L"ReleaseDateYear")); |
167 QVariant year = value(m_media, QAutoBStr(L"ReleaseDateYear")); |
168 |
168 |
169 if (!day.isNull() && !month.isNull() && !year.isNull()) |
169 if (!day.isNull() && !month.isNull() && !year.isNull()) |
170 return QDate(year.toInt(), month.toInt(), day.toInt()); |
170 return QDate(year.toInt(), month.toInt(), day.toInt()); |
171 } |
171 } |
172 break; |
172 break; |
173 case QtMediaServices::CoverArtUrlSmall: |
173 case QtMultimedia::CoverArtUrlSmall: |
174 return albumArtUrl(m_media, "_Small.jpg"); |
174 return albumArtUrl(m_media, "_Small.jpg"); |
175 case QtMediaServices::CoverArtUrlLarge: |
175 case QtMultimedia::CoverArtUrlLarge: |
176 return albumArtUrl(m_media, "_Large.jpg"); |
176 return albumArtUrl(m_media, "_Large.jpg"); |
177 case QtMediaServices::Resolution: |
177 case QtMultimedia::Resolution: |
178 { |
178 { |
179 QVariant width = value(m_media, QAutoBStr(L"WM/VideoWidth")); |
179 QVariant width = value(m_media, QAutoBStr(L"WM/VideoWidth")); |
180 QVariant height = value(m_media, QAutoBStr(L"WM/VideoHeight")); |
180 QVariant height = value(m_media, QAutoBStr(L"WM/VideoHeight")); |
181 |
181 |
182 if (!width.isNull() && !height.isNull()) |
182 if (!width.isNull() && !height.isNull()) |
183 return QSize(width.toInt(), height.toInt()); |
183 return QSize(width.toInt(), height.toInt()); |
184 } |
184 } |
185 break; |
185 break; |
186 case QtMediaServices::PixelAspectRatio: |
186 case QtMultimedia::PixelAspectRatio: |
187 { |
187 { |
188 QVariant x = value(m_media, QAutoBStr(L"PixelAspectRatioX")); |
188 QVariant x = value(m_media, QAutoBStr(L"PixelAspectRatioX")); |
189 QVariant y = value(m_media, QAutoBStr(L"PixelAspectRatioY")); |
189 QVariant y = value(m_media, QAutoBStr(L"PixelAspectRatioY")); |
190 |
190 |
191 if (!x.isNull() && !y.isNull()) |
191 if (!x.isNull() && !y.isNull()) |
192 return QSize(x.toInt(), y.toInt()); |
192 return QSize(x.toInt(), y.toInt()); |
193 } |
193 } |
194 break; |
194 break; |
195 case QtMediaServices::VideoFrameRate: |
195 case QtMultimedia::VideoFrameRate: |
196 break; |
196 break; |
197 default: |
197 default: |
198 for (int i = 0; i < count; ++i) { |
198 for (int i = 0; i < count; ++i) { |
199 if (qt_wmpMetaDataKeys[i].key == key) |
199 if (qt_wmpMetaDataKeys[i].key == key) |
200 return value(m_media, QAutoBStr(qt_wmpMetaDataKeys[i].token)); |
200 return value(m_media, QAutoBStr(qt_wmpMetaDataKeys[i].token)); |