New TrackStatistics object
[amarok:rengelss-amarok.git] / src / core / statistics / TrackStatistics.h
1 /****************************************************************************************
2  * Copyright (c) 2009 Maximilian Kossick <maximilian.kossick@googlemail.com>            *
3  * Copyright (c) 2011 Ralf Engels <ralf-engels@gmx.de>                                  *
4  *                                                                                      *
5  * This program is free software; you can redistribute it and/or modify it under        *
6  * the terms of the GNU General Public License as published by the Free Software        *
7  * Foundation; either version 2 of the License, or (at your option) any later           *
8  * version.                                                                             *
9  *                                                                                      *
10  * This program is distributed in the hope that it will be useful, but WITHOUT ANY      *
11  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A      *
12  * PARTICULAR PURPOSE. See the GNU General Public License for more details.             *
13  *                                                                                      *
14  * You should have received a copy of the GNU General Public License along with         *
15  * this program.  If not, see <http://www.gnu.org/licenses/>.                           *
16  ****************************************************************************************/
17
18 #ifndef STATISTICS_TRACKSTATISTICS_H
19 #define STATISTICS_TRACKSTATISTICS_H
20
21 #include "shared/amarok_export.h"
22
23 #include <QDateTime>
24
25 namespace Statistics
26 {
27     /** Abstract class representing statistics of a track.
28         An object of this class is created by the track by the getStatistics function. */
29     class AMAROK_CORE_EXPORT TrackStatistics
30     {
31         public:
32              /** Returns the score of this track */
33             virtual double score() const = 0;
34             virtual void setScore( double newScore ) = 0;
35
36             /** Returns the rating of this track.
37                 The rating is between 0 and 10 (for 0 to 5 stars) */
38             virtual int rating() const = 0;
39             virtual void setRating( int newRating ) = 0;
40
41             /** Returns the time the song was last played, or an invalid QDateTime if it has not been played yet */
42             virtual QDateTime lastPlayed() const = 0;
43             virtual void setLastPlayed( const QDateTime &dt ) = 0;
44
45             /** Returns the time the song was first played, or an invalid QDateTime if it has not been played yet */
46             virtual QDateTime firstPlayed() const = 0;
47             virtual void setFirstPlayed( const QDateTime &dt ) = 0;
48
49             /** Returns the number of times the track was played */
50             virtual int playCount() const = 0;
51             virtual void setPlayCount( int playCount ) = 0;
52
53             /** Indicate to the statistics provider that the song this statistics belong to was played
54                 The argument is the percentage of the track which was played, in the range 0 to 1*/
55             virtual void finishedPlaying( double playedFraction );
56
57             /** Set all the values in one go */
58             virtual void setAll( double newScore, int newRating,
59                          QDateTime newLastPlayed = QDateTime(),
60                          QDateTime newFirstPlayed = QDateTime(), int newPlayCount = -1 );
61     };
62 }
63
64 #endif