plugins/multimedia/symbian/mmf/mediaplayer/s60mediametadataprovider.cpp
changeset 0 876b1a06bc25
equal deleted inserted replaced
-1:000000000000 0:876b1a06bc25
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the Qt Mobility Components.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 #include "s60mediametadataprovider.h"
       
    43 #include "s60mediaplayersession.h"
       
    44 #include <QtCore/qdebug.h>
       
    45 
       
    46 S60MediaMetaDataProvider::S60MediaMetaDataProvider(MS60MediaPlayerResolver& mediaPlayerResolver, QObject *parent)
       
    47     : QMetaDataReaderControl(parent)
       
    48     , m_mediaPlayerResolver(mediaPlayerResolver)
       
    49     , m_session(NULL)
       
    50 {
       
    51 }
       
    52 
       
    53 S60MediaMetaDataProvider::~S60MediaMetaDataProvider()
       
    54 {
       
    55 }
       
    56 
       
    57 bool S60MediaMetaDataProvider::isMetaDataAvailable() const
       
    58 {
       
    59     m_session = m_mediaPlayerResolver.PlayerSession();
       
    60     if (m_session)
       
    61        return m_session->isMetadataAvailable();
       
    62     return false;
       
    63 }
       
    64 
       
    65 bool S60MediaMetaDataProvider::isWritable() const
       
    66 {
       
    67     return false;
       
    68 }
       
    69 
       
    70 QVariant S60MediaMetaDataProvider::metaData(QtMultimediaKit::MetaData key) const
       
    71 {
       
    72     m_session = m_mediaPlayerResolver.PlayerSession();
       
    73     if (m_session && m_session->isMetadataAvailable())
       
    74         return m_session->metaData(metaDataKeyAsString(key));
       
    75     return QVariant();
       
    76 }
       
    77 
       
    78 QList<QtMultimediaKit::MetaData> S60MediaMetaDataProvider::availableMetaData() const
       
    79 {
       
    80     m_session = m_mediaPlayerResolver.PlayerSession();
       
    81     QList<QtMultimediaKit::MetaData> metaDataTags;
       
    82     if (m_session && m_session->isMetadataAvailable()) {
       
    83         for (int i = QtMultimediaKit::Title; i <= QtMultimediaKit::DeviceSettingDescription; i++) {
       
    84             QString metaData = metaDataKeyAsString((QtMultimediaKit::MetaData)i);
       
    85             if (!metaData.isEmpty()) {
       
    86                 if (!m_session->metaData(metaData).toString().isEmpty()) {
       
    87                     metaDataTags.append((QtMultimediaKit::MetaData)i);
       
    88                 }
       
    89             }
       
    90         }
       
    91     }
       
    92     return metaDataTags;
       
    93 }
       
    94 
       
    95 QVariant S60MediaMetaDataProvider::extendedMetaData(const QString &key) const
       
    96 {
       
    97     m_session = m_mediaPlayerResolver.PlayerSession();
       
    98     if (m_session && m_session->isMetadataAvailable())
       
    99         return m_session->metaData(key);
       
   100     return QVariant();
       
   101 }
       
   102 
       
   103 QStringList S60MediaMetaDataProvider::availableExtendedMetaData() const
       
   104 {
       
   105     m_session = m_mediaPlayerResolver.PlayerSession();
       
   106     if (m_session && m_session->isMetadataAvailable())
       
   107         return m_session->availableMetaData().keys();
       
   108     return QStringList();
       
   109 }
       
   110 
       
   111 QString S60MediaMetaDataProvider::metaDataKeyAsString(QtMultimediaKit::MetaData key) const
       
   112 {
       
   113     switch(key) {
       
   114         case QtMultimediaKit::Title: return "title";
       
   115         case QtMultimediaKit::AlbumArtist: return "artist";
       
   116         case QtMultimediaKit::Comment: return "comment";
       
   117         case QtMultimediaKit::Genre: return "genre";
       
   118         case QtMultimediaKit::Year: return "year";
       
   119         case QtMultimediaKit::Copyright: return "copyright";
       
   120         case QtMultimediaKit::AlbumTitle: return "album";
       
   121         case QtMultimediaKit::Composer: return "composer";
       
   122         case QtMultimediaKit::TrackNumber: return "albumtrack";
       
   123         case QtMultimediaKit::AudioBitRate: return "audiobitrate";
       
   124         case QtMultimediaKit::VideoBitRate: return "videobitrate";
       
   125         case QtMultimediaKit::Duration: return "duration";
       
   126         case QtMultimediaKit::MediaType: return "contenttype";
       
   127         case QtMultimediaKit::CoverArtImage: return "attachedpicture";
       
   128         case QtMultimediaKit::SubTitle: // TODO: Find the matching metadata keys
       
   129         case QtMultimediaKit::Description:
       
   130         case QtMultimediaKit::Category:
       
   131         case QtMultimediaKit::Date:
       
   132         case QtMultimediaKit::UserRating:
       
   133         case QtMultimediaKit::Keywords:
       
   134         case QtMultimediaKit::Language:
       
   135         case QtMultimediaKit::Publisher:
       
   136         case QtMultimediaKit::ParentalRating:
       
   137         case QtMultimediaKit::RatingOrganisation:
       
   138         case QtMultimediaKit::Size:
       
   139         case QtMultimediaKit::AudioCodec:
       
   140         case QtMultimediaKit::AverageLevel:
       
   141         case QtMultimediaKit::ChannelCount:
       
   142         case QtMultimediaKit::PeakValue:
       
   143         case QtMultimediaKit::SampleRate:
       
   144         case QtMultimediaKit::Author:
       
   145         case QtMultimediaKit::ContributingArtist:
       
   146         case QtMultimediaKit::Conductor:
       
   147         case QtMultimediaKit::Lyrics:
       
   148         case QtMultimediaKit::Mood:
       
   149         case QtMultimediaKit::TrackCount:
       
   150         case QtMultimediaKit::CoverArtUrlSmall:
       
   151         case QtMultimediaKit::CoverArtUrlLarge:
       
   152         case QtMultimediaKit::Resolution:
       
   153         case QtMultimediaKit::PixelAspectRatio:
       
   154         case QtMultimediaKit::VideoFrameRate:
       
   155         case QtMultimediaKit::VideoCodec:
       
   156         case QtMultimediaKit::PosterUrl:
       
   157         case QtMultimediaKit::ChapterNumber:
       
   158         case QtMultimediaKit::Director:
       
   159         case QtMultimediaKit::LeadPerformer:
       
   160         case QtMultimediaKit::Writer:
       
   161         case QtMultimediaKit::CameraManufacturer:
       
   162         case QtMultimediaKit::CameraModel:
       
   163         case QtMultimediaKit::Event:
       
   164         case QtMultimediaKit::Subject:
       
   165         default:
       
   166             break;
       
   167     }
       
   168 
       
   169     return QString();
       
   170 }