/**************************************************************************** ** ** Copyright (C) 2016 Research In Motion ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "mmrenderermetadatareadercontrol.h" #include QT_BEGIN_NAMESPACE MmRendererMetaDataReaderControl::MmRendererMetaDataReaderControl(QObject *parent) : QMetaDataReaderControl(parent) { } bool MmRendererMetaDataReaderControl::isMetaDataAvailable() const { return !availableMetaData().isEmpty(); } QVariant MmRendererMetaDataReaderControl::metaData(const QString &key) const { if (key == QMediaMetaData::Title) return m_metaData.title(); else if (key == QMediaMetaData::AlbumArtist) return m_metaData.artist(); else if (key == QMediaMetaData::Comment) return m_metaData.comment(); else if (key == QMediaMetaData::Genre) return m_metaData.genre(); else if (key == QMediaMetaData::Year) return m_metaData.year(); else if (key == QMediaMetaData::MediaType) return m_metaData.mediaType(); else if (key == QMediaMetaData::Duration) return m_metaData.duration(); else if (key == QMediaMetaData::AudioBitRate) return m_metaData.audioBitRate(); else if (key == QMediaMetaData::SampleRate) return m_metaData.sampleRate(); else if (key == QMediaMetaData::AlbumTitle) return m_metaData.album(); else if (key == QMediaMetaData::TrackNumber) return m_metaData.track(); else if (key == QMediaMetaData::Resolution) return m_metaData.resolution(); return QVariant(); } QStringList MmRendererMetaDataReaderControl::availableMetaData() const { QStringList metaData; if (!m_metaData.title().isEmpty()) metaData << QMediaMetaData::Title; if (!m_metaData.artist().isEmpty()) metaData << QMediaMetaData::Author; if (!m_metaData.comment().isEmpty()) metaData << QMediaMetaData::Comment; if (!m_metaData.genre().isEmpty()) metaData << QMediaMetaData::Genre; if (m_metaData.year() != 0) metaData << QMediaMetaData::Year; if (!m_metaData.mediaType().isEmpty()) metaData << QMediaMetaData::MediaType; if (m_metaData.duration() != 0) metaData << QMediaMetaData::Duration; if (m_metaData.audioBitRate() != 0) metaData << QMediaMetaData::AudioBitRate; if (m_metaData.sampleRate() != 0) metaData << QMediaMetaData::SampleRate; if (!m_metaData.album().isEmpty()) metaData << QMediaMetaData::AlbumTitle; if (m_metaData.track() != 0) metaData << QMediaMetaData::TrackNumber; if (m_metaData.resolution().isValid()) metaData << QMediaMetaData::Resolution; return metaData; } void MmRendererMetaDataReaderControl::setMetaData(const MmRendererMetaData &data) { const MmRendererMetaData oldMetaData = m_metaData; const bool oldMetaDataAvailable = isMetaDataAvailable(); m_metaData = data; bool changed = false; if (m_metaData.title() != oldMetaData.title()) { changed = true; emit metaDataChanged(QMediaMetaData::Title, m_metaData.title()); } else if (m_metaData.artist() != oldMetaData.artist()) { changed = true; emit metaDataChanged(QMediaMetaData::Author, m_metaData.artist()); } else if (m_metaData.comment() != oldMetaData.comment()) { changed = true; emit metaDataChanged(QMediaMetaData::Comment, m_metaData.comment()); } else if (m_metaData.genre() != oldMetaData.genre()) { changed = true; emit metaDataChanged(QMediaMetaData::Genre, m_metaData.genre()); } else if (m_metaData.year() != oldMetaData.year()) { changed = true; emit metaDataChanged(QMediaMetaData::Year, m_metaData.year()); } else if (m_metaData.mediaType() != oldMetaData.mediaType()) { changed = true; emit metaDataChanged(QMediaMetaData::MediaType, m_metaData.mediaType()); } else if (m_metaData.duration() != oldMetaData.duration()) { changed = true; emit metaDataChanged(QMediaMetaData::Duration, m_metaData.duration()); } else if (m_metaData.audioBitRate() != oldMetaData.audioBitRate()) { changed = true; emit metaDataChanged(QMediaMetaData::AudioBitRate, m_metaData.audioBitRate()); } else if (m_metaData.sampleRate() != oldMetaData.sampleRate()) { changed = true; emit metaDataChanged(QMediaMetaData::SampleRate, m_metaData.sampleRate()); } else if (m_metaData.album() != oldMetaData.album()) { changed = true; emit metaDataChanged(QMediaMetaData::AlbumTitle, m_metaData.album()); } else if (m_metaData.track() != oldMetaData.track()) { changed = true; emit metaDataChanged(QMediaMetaData::TrackNumber, m_metaData.track()); } else if (m_metaData.resolution() != oldMetaData.resolution()) { changed = true; emit metaDataChanged(QMediaMetaData::Resolution, m_metaData.resolution()); } if (changed) emit metaDataChanged(); const bool metaDataAvailable = isMetaDataAvailable(); if (metaDataAvailable != oldMetaDataAvailable) emit metaDataAvailableChanged(metaDataAvailable); } QT_END_NAMESPACE