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