File indexing completed on 2024-05-05 04:48:13

0001 /****************************************************************************************
0002  * Copyright (c) 2007 Maximilian Kossick <maximilian.kossick@googlemail.com>            *
0003  *                                                                                      *
0004  * This program is free software; you can redistribute it and/or modify it under        *
0005  * the terms of the GNU General Public License as published by the Free Software        *
0006  * Foundation; either version 2 of the License, or (at your option) any later           *
0007  * version.                                                                             *
0008  *                                                                                      *
0009  * This program is distributed in the hope that it will be useful, but WITHOUT ANY      *
0010  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A      *
0011  * PARTICULAR PURPOSE. See the GNU General Public License for more details.             *
0012  *                                                                                      *
0013  * You should have received a copy of the GNU General Public License along with         *
0014  * this program.  If not, see <http://www.gnu.org/licenses/>.                           *
0015  ****************************************************************************************/
0016 
0017 #ifndef AMAROK_CAPABILITY_H
0018 #define AMAROK_CAPABILITY_H
0019 
0020 #include "amarokcore_export.h"
0021 
0022 #include <QObject>
0023 
0024 namespace Capabilities
0025 {
0026     /** The capabilities are used by several amarok objects to express add on functionality.
0027         Capabilities are used inside Amarok to implement a Java-like interface pattern.
0028         Several object (Collection, Track, Album) can return capability object.
0029         Since the implementation of these objects is in a library usually it would
0030         be otherwise difficult to implement something like this.
0031 
0032         Please note that the capability object will be created on demand and
0033         also destroyed.
0034     */
0035     class AMAROKCORE_EXPORT Capability : public QObject
0036     {
0037         Q_OBJECT
0038 
0039         public:
0040             //add additional capabilities here
0041             enum Type { Unknown = 0
0042                         // not longer used
0043                         // not longer used
0044                         , Buyable = 3
0045                         , Actions = 4
0046                         , EditablePlaylist = 5
0047                         , MultiPlayable = 6
0048                         , Organisable = 7
0049                         , SourceInfo = 8
0050                         // not longer used
0051                         , StreamInfo = 10
0052                         // not longer used
0053                         // not longe used
0054                         // not longer used
0055                         , BookmarkThis = 14
0056                         , WriteTimecode = 15
0057                         , LoadTimecode = 16
0058                         , MultiSource = 17
0059                         , BoundedPlayback = 18
0060                         // not longer used
0061                         , ReadLabel = 20
0062                         , WriteLabel = 21
0063                         , FindInSource = 22
0064                         , CollectionImport = 23
0065                         , CollectionScan = 24
0066                         , Transcode = 25
0067                       };
0068             Q_ENUM( Type )
0069 
0070             ~Capability() override;
0071 
0072     };
0073 }
0074 
0075 
0076 #endif