1 
2 #ifndef REPLAYGAINPLUGIN_H
3 #define REPLAYGAINPLUGIN_H
4 
5 #include <kcoreaddons_export.h>
6 #include <QVariantList>
7 
8 #include "backendplugin.h"
9 
10 #include <QMap>
11 #include <KUrl>
12 
13 class ReplayGainPlugin;
14 
15 
16 struct ReplayGainPipe
17 {
18     QString codecName;
19 
20     ReplayGainPlugin *plugin;
21     bool enabled; // can we use this conversion pipe? (all needed backends installed?)
22     int rating;
23     QString problemInfo; // howto message, if a backend is missing
24 };
25 
26 
27 class KCOREADDONS_EXPORT ReplayGainPluginItem : public BackendPluginItem
28 {
29     Q_OBJECT
30 public:
31     explicit ReplayGainPluginItem( QObject *parent );
32     virtual ~ReplayGainPluginItem();
33 
34     struct Data // additional data
35     {
36         int fileCount;
37         int processedFiles;
38         float lastFileProgress;
39     } data;
40 };
41 
42 
43 /** @author Daniel Faust <hessijames@gmail.com> */
44 class KCOREADDONS_EXPORT ReplayGainPlugin : public BackendPlugin
45 {
46     Q_OBJECT
47 public:
48     enum ApplyMode {
49         Add = 0,
50         Remove = 1,
51         Force = 2
52     };
53 
54     explicit ReplayGainPlugin( QObject *parent );
55     virtual ~ReplayGainPlugin();
56 
57     virtual QString type() const;
58 
59     virtual QList<ReplayGainPipe> codecTable() = 0;
60 
61     /** adds replaygain to one or more files */
62     virtual int apply( const KUrl::List& fileList, ApplyMode mode = Add ) = 0;
63 };
64 
65 #define K_EXPORT_SOUNDKONVERTER_REPLAYGAIN(libname, classname) \
66         K_EXPORT_COMPONENT_FACTORY( soundkonverter_replaygain_##libname, KGenericFactory<classname>("soundkonverter_replaygain_" #libname) )
67 
68 #endif // REPLAYGAINPLUGIN_H
69