File indexing completed on 2024-07-21 10:16:19

0001 /*
0002     This file is part of Choqok, the KDE micro-blogging client
0003 
0004     SPDX-FileCopyrightText: 2010-2012 Mehrdad Momeny <mehrdad.momeny@gmail.com>
0005     SPDX-FileCopyrightText: 2010-2011 Ramin Gomari <ramin.gomari@gmail.com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0008 */
0009 
0010 #ifndef MPRIS_H
0011 #define MPRIS_H
0012 
0013 #include <QString>
0014 #include <QStringList>
0015 #include <QVariantMap>
0016 
0017 /**
0018 implament of MPRIS
0019 see more details @ http://xmms2.org/wiki/MPRIS
0020 @author Ramin Gomari \<ramin.gomari@gmail.com\>
0021 */
0022 class MPRIS
0023 {
0024 public:
0025     struct MprisStatusStruct {
0026         MprisStatusStruct()
0027         {
0028             Status = hasShuffle = hasRepeat = hasPlaylistRepeat = -1;
0029         };
0030 
0031         int Status;            // 0 = Playing, 1 = Paused, 2 = Stopped.
0032         int hasShuffle;        // 0 = Playing linearly , 1 = Playing randomly.
0033         int hasRepeat;         // 0 = Go to the next element once the current has finished playing , 1 = Repeat the current element
0034         int hasPlaylistRepeat; // 0 = Stop playing once the last element has been played, 1 = Never give up playing
0035     };
0036     MPRIS(const QString  PlayerName);
0037     ~MPRIS();
0038 
0039     static QStringList getRunningPlayers();
0040 
0041     /**
0042 
0043     @return true if this query was a valid query
0044     */
0045     bool isValid()
0046     {
0047         return valid;
0048     }
0049 
0050     bool isPlaying()
0051     {
0052         return status.Status == 0;
0053     }
0054     bool isPaused()
0055     {
0056         return status.Status == 1;
0057     }
0058     bool isStopped()
0059     {
0060         return status.Status == 2;
0061     }
0062     bool hasRepeat()
0063     {
0064         return status.hasRepeat == 1;
0065     }
0066     bool hasPlaylistRepeat()
0067     {
0068         return status.hasPlaylistRepeat == 1;
0069     }
0070 
0071     const QString getLocation()       // Url to the media (local files are represented as a file:// url)
0072     {
0073         return trackInfo[QLatin1String("location")].toString();
0074     }
0075     const QString getTitle()          // Name
0076     {
0077         return trackInfo[QLatin1String("title")].toString();
0078     }
0079     const QString getArtist()          // Name of artist or band performing the work
0080     {
0081         return trackInfo[QLatin1String("artist")].toString();
0082     }
0083     const QString getAlbum()          // Name of compilation the work is part of
0084     {
0085         return trackInfo[QLatin1String("album")].toString();
0086     }
0087     const QString getTracknumber()      // The position if it's part of a larger set, it may have to be converted to an integer. This MAY be extended with a '/' character and a numeric string containing the total number of elements in the set. E.g. '69/1337'.
0088     {
0089         return trackInfo[QLatin1String("tracknumber")].toString();
0090     }
0091     uint getTime()          // The duration in seconds
0092     {
0093         return trackInfo[QLatin1String("time")].toUInt();
0094     }
0095     uint getMtime()          // The duration in milliseconds
0096     {
0097         return trackInfo[QLatin1String("mtime")].toUInt();
0098     }
0099     const QString getGenre()          // The genre. This MAY begin with a numerical value reflecting the genre in a previously known array of genres, such as ID3 genres. See http://www.linuxselfhelp.com/HOWTO/MP3-HOWTO-13.html#ss13.3
0100     {
0101         return trackInfo[QLatin1String("genre")].toString();
0102     }
0103     const QString getComment()      // A comment about the work
0104     {
0105         return trackInfo[QLatin1String("comment")].toString();
0106     }
0107     uint getRating()          // A 'taste' rate value, out of 5. 0-5 or 1-5?
0108     {
0109         return trackInfo[QLatin1String("rating")].toUInt();
0110     }
0111     uint getYear()          // The year when the performing was realized, i.e. 2007.
0112     {
0113         return trackInfo[QLatin1String("year")].toUInt();
0114     }
0115     uint getDate()          // When the performing was realized, for precise needs. It is represented as epoch, i.e. the number of seconds since « 00:00:00 1970-01-01 UTC »
0116     {
0117         return trackInfo[QLatin1String("date")].toUInt();
0118     }
0119     const QString getArturl()          // An URI to an image associated with the work
0120     {
0121         return trackInfo[QLatin1String("arturl")].toString();
0122     }
0123     const QVariantMap getTrackMetadata()
0124     {
0125         return trackInfo;
0126     }
0127     const QString getPlayerIdentification()
0128     {
0129         return Identity;
0130     }
0131 private:
0132     bool valid;
0133     MprisStatusStruct status;
0134     QVariantMap trackInfo;
0135     QString Identity;
0136 };
0137 
0138 #endif // MPRIS_H