void QWmpPlayerControl::mediaChangeEvent(IDispatch *dispatch) { IWMPMedia *media = 0; if (dispatch && dispatch->QueryInterface( __uuidof(IWMPMedia), reinterpret_cast<void **>(&media)) == S_OK) { IWMPMedia *currentMedia = 0; if (m_controls && m_controls->get_currentItem(¤tMedia) == S_OK) { VARIANT_BOOL isEqual = VARIANT_FALSE; if (media->get_isIdentical(currentMedia, &isEqual) == S_OK && isEqual) scheduleUpdate(DurationChanged); currentMedia->Release(); } media->Release(); } }
void CWmp2mirc::OnPlay() { // if we are locked (property page could be doing stuff, or the timer proc), then just ignore the request. if(!m_cs.TryEnter()) { LibCC::g_pLog->Message(_T("WMircP is busy; ignoring the play event.")); return; } IWMPMedia* pMedia = 0; m_spCore->get_currentMedia(&pMedia); if(!pMedia) { LibCC::g_pLog->Message(_T("WMircP could not get a pointer to the current media.")); } else { CComBSTR url; pMedia->get_sourceURL(&url); LibCC::LogScopeMessage lsm(LibCC::Format("OnPlay %").qs((BSTR)url).Str()); m.OnPlay(pMedia, (PCWSTR)url); pMedia->Release(); } m_cs.Leave(); }
qint64 QWmpPlayerControl::duration() const { double duration = 0.; IWMPMedia *media = 0; if (m_controls && m_controls->get_currentItem(&media) == S_OK) { media->get_duration(&duration); media->Release(); } return duration * 1000; }
QVariant QWmpPlaylist::value(int index, const QString &key) const { QVariant v; IWMPMedia *media = 0; if (m_playlist && m_playlist->get_item(index, &media) == S_OK) { v = QWmpMetaData::value(media, QAutoBStr(key)); media->Release(); } return v; }
QStringList QWmpPlaylist::keys(int index) const { QStringList keys; IWMPMedia *media = 0; if (m_playlist && m_playlist->get_item(index, &media) == S_OK) { keys = QWmpMetaData::keys(media); media->Release(); } return keys; }
bool QWmpPlaylist::removeMedia(int pos) { IWMPMedia *media = 0; if (m_playlist->get_item(pos, &media) == S_OK) { bool removed = m_playlist->removeItem(media) == S_OK; media->Release(); return removed; } else { return false; } }
QMediaContent QWmpPlaylist::media(int pos) const { QMediaContent content; IWMPMedia *media = 0; if (m_playlist && m_playlist->get_item(pos, &media) == S_OK) { content = QWmpMetaData::resources(media); media->Release(); } return content; }
int QWmpPlaylistControl::currentIndex() const { int position = 0; IWMPMedia *media = 0; if (m_controls && m_player->get_currentMedia(&media) == S_OK) { position = QWmpMetaData::value(media, QAutoBStr(L"PlaylistIndex")).toInt(); media->Release(); } return position; }
bool QWmpPlaylist::insertMedia(int pos, const QMediaContent &content) { bool inserted = false; IWMPMedia *media = 0; if (m_playlist && m_player && m_player->newMedia( QAutoBStr(content.canonicalUrl()), &media) == S_OK) { inserted = m_playlist->insertItem(pos, media) == S_OK; media->Release(); } return inserted; }
bool QWmpPlaylist::addMedia(const QMediaContent &content) { bool appended = false; IWMPMedia *media = 0; if (!content.isNull() && m_playlist && m_player && m_player->newMedia( QAutoBStr(content.canonicalUrl()), &media) == S_OK) { appended = m_playlist->appendItem(media) == S_OK; media->Release(); } return appended; }
void QWmpPlaylistControl::setCurrentIndex(int position) { IWMPPlaylist *playlist = 0; if (m_player->get_currentPlaylist(&playlist) == S_OK) { IWMPMedia *media = 0; if (playlist->get_item(position, &media) == S_OK) { m_player->put_currentMedia(media); media->Release(); } playlist->Release(); } }
QMediaTimeRange QWmpPlayerControl::availablePlaybackRanges() const { QMediaTimeRange ranges; IWMPMedia *media = 0; if (m_controls && m_controls->get_currentItem(&media) == S_OK) { double duration = 0; media->get_duration(&duration); media->Release(); if(duration > 0) ranges.addInterval(0, duration * 1000); } return ranges; }
void QWmpPlaylist::mediaChangeEvent(IDispatch *dispatch) { IWMPMedia *media = 0; if (dispatch && dispatch->QueryInterface( __uuidof(IWMPMedia), reinterpret_cast<void **>(&media)) == S_OK) { VARIANT_BOOL isMember = VARIANT_FALSE; if (media->isMemberOf(m_playlist, &isMember) == S_OK && isMember) { int index = QWmpMetaData::value(media, QAutoBStr(L"PlaylistIndex")).toInt(); if (index >= 0) emit mediaChanged(index, index); } media->Release(); } }
bool QWmpPlaylist::removeMedia(int start, int end) { if (!m_playlist) return false; for (int i = start; i <= end; ++i) { IWMPMedia *media = 0; if (m_playlist->get_item(start, &media) == S_OK) { bool removed = m_playlist->removeItem(media) == S_OK; media->Release(); if (!removed) return false; } } return true; }