aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wavpack/decoderwavpackfactory.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-03-06 14:13:41 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-03-06 14:13:41 +0000
commit892d61b4dc43869940959a82197d865390c04509 (patch)
treeaea57b6a989e172de3bd5822b44dfe82e7e22376 /src/plugins/Input/wavpack/decoderwavpackfactory.cpp
parentdb6aae42c16c42785d5e0a6c04d8159dade97cee (diff)
downloadqmmp-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.cpp104
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)