diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-03-06 14:13:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-03-06 14:13:41 +0000 |
| commit | 892d61b4dc43869940959a82197d865390c04509 (patch) | |
| tree | aea57b6a989e172de3bd5822b44dfe82e7e22376 /src/plugins/Input/wavpack/decoderwavpackfactory.cpp | |
| parent | db6aae42c16c42785d5e0a6c04d8159dade97cee (diff) | |
| download | qmmp-892d61b4dc43869940959a82197d865390c04509.tar.gz qmmp-892d61b4dc43869940959a82197d865390c04509.tar.bz2 qmmp-892d61b4dc43869940959a82197d865390c04509.zip | |
added wavpack plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@263 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/wavpack/decoderwavpackfactory.cpp')
| -rw-r--r-- | src/plugins/Input/wavpack/decoderwavpackfactory.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp new file mode 100644 index 000000000..51b07f28c --- /dev/null +++ b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp @@ -0,0 +1,104 @@ +#include <QtGui> + +extern "C"{ +#include <wavpack/wavpack.h> +} + +#include "detailsdialog.h" +#include "decoder_wavpack.h" +#include "decoderwavpackfactory.h" + + +// DecoderWavPackFactory + +bool DecoderWavPackFactory::supports(const QString &source) const +{ + + return (source.right(3).toLower() == ".wv"); +} + +bool DecoderWavPackFactory::canDecode(QIODevice *) const +{ + return FALSE; +} + +const DecoderProperties DecoderWavPackFactory::properties() const +{ + DecoderProperties properties; + properties.name = tr("WavPack Plugin"); + properties.filter = "*.wv"; + properties.description = tr("WavPackk Files"); + //properties.contentType = ; + properties.hasAbout = TRUE; + properties.hasSettings = FALSE; + return properties; +} + +Decoder *DecoderWavPackFactory::create(QObject *parent, QIODevice *input, + Output *output) +{ + return new DecoderWavPack(parent, this, input, output); +} + +FileTag *DecoderWavPackFactory::createTag(const QString &source) +{ + FileTag *ftag = new FileTag(); + + char err[80]; + WavpackContext *ctx = WavpackOpenFileInput (source.toLocal8Bit(), err, + OPEN_WVC | OPEN_TAGS, 0); + + if(!ctx) + { + qWarning("DecoderWavPackFactory: error: %s", err); + return ftag; + } + + char value[200]; + WavpackGetTagItem (ctx, "Album", value, sizeof(value)); + ftag->setValue(FileTag::ALBUM, QString::fromUtf8(value)); + WavpackGetTagItem (ctx, "Artist", value, sizeof(value)); + ftag->setValue(FileTag::ARTIST, QString::fromUtf8(value)); + WavpackGetTagItem (ctx, "Comment", value, sizeof(value)); + ftag->setValue(FileTag::COMMENT, QString::fromUtf8(value)); + WavpackGetTagItem (ctx, "Genre", value, sizeof(value)); + ftag->setValue(FileTag::GENRE, QString::fromUtf8(value)); + WavpackGetTagItem (ctx, "Title", value, sizeof(value)); + ftag->setValue(FileTag::TITLE, QString::fromUtf8(value)); + WavpackGetTagItem (ctx, "Year", value, sizeof(value)); + ftag->setValue(FileTag::YEAR, QString::fromUtf8(value).toInt()); + WavpackGetTagItem (ctx, "Track", value, sizeof(value)); + ftag->setValue(FileTag::TRACK, QString::fromUtf8(value).toInt()); + ftag->setValue(FileTag::LENGTH, (int) WavpackGetNumSamples(ctx)/WavpackGetSampleRate(ctx)); + WavpackCloseFile (ctx); + return ftag; +} + +QObject* DecoderWavPackFactory::showDetails(QWidget *parent, const QString &path) +{ + DetailsDialog *d = new DetailsDialog(parent, path); + d -> show(); + return d; +} + +void DecoderWavPackFactory::showSettings(QWidget *) +{} + +void DecoderWavPackFactory::showAbout(QWidget *parent) +{ + QMessageBox::about (parent, tr("About WavPack Audio Plugin"), + tr("Qmmp WavPack Audio Plugin")+"\n"+ + tr("WavPack library version:") + + QString(" %1").arg(WavpackGetLibraryVersionString ())+"\n"+ + tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>")); +} + +QTranslator *DecoderWavPackFactory::createTranslator(QObject *parent) +{ + QTranslator *translator = new QTranslator(parent); + QString locale = QLocale::system().name(); + translator->load(QString(":/wavpack_plugin_") + locale); + return translator; +} + +Q_EXPORT_PLUGIN(DecoderWavPackFactory) |
