1 
2 #ifndef CODECPLUGIN_H
3 #define CODECPLUGIN_H
4 
5 #include <kcoreaddons_export.h>
6 #include <QVariantList>
7 
8 #include "backendplugin.h"
9 #include "conversionoptions.h"
10 
11 class CodecPlugin;
12 class CodecWidget;
13 class TagData;
14 
15 class KCOREADDONS_EXPORT CodecPluginItem : public BackendPluginItem
16 {
17     Q_OBJECT
18 public:
19     explicit CodecPluginItem( QObject *parent );
20     virtual ~CodecPluginItem();
21 
22     struct Data {
23         int length;
24     } data;
25 };
26 
27 
28 /** @author Daniel Faust <hessijames@gmail.com> */
29 class KCOREADDONS_EXPORT CodecPlugin : public BackendPlugin
30 {
31     Q_OBJECT
32 public:
33     explicit CodecPlugin( QObject *parent );
34     virtual ~CodecPlugin();
35 
36     virtual QString type() const;
37 
38     virtual QList<ConversionPipeTrunk> codecTable() = 0;
39     virtual CodecWidget *newCodecWidget() = 0;
40     virtual CodecWidget *deleteCodecWidget( CodecWidget *codecWidget );
41 
42     /**
43      * starts the conversion and returns either a conversion id or an error code:
44      *
45      * -1   unknown error
46      * -100 plugin not configured
47      */
48     virtual int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, const ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ) = 0;
49     /** returns a command for converting a file through a pipe; "" if pipes aren't supported */
50     virtual QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, const ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ) = 0;
51 
52     virtual ConversionOptions *conversionOptionsFromXml( QDomElement conversionOptions, QList<QDomElement> *filterOptionsElements = 0 );
53 
54     const ConversionOptions* lastConversionOptions();
55 
56 protected:
57     ConversionOptions *lastUsedConversionOptions;
58 
59 };
60 
61 #endif // CODECPLUGIN_H
62