Mercurial > hg > classical
changeset 48:5f23d5b29aaf
* Add original tags to AudioFile
author | Chris Cannam |
---|---|
date | Wed, 02 Jun 2010 17:29:47 +0100 |
parents | 273bd328b215 |
children | a6a71d1c7eb7 |
files | common/ComposerFileIndex.cpp common/FeatureFileIndex.cpp common/Objects.cpp common/Objects.h common/TypeRegistrar.cpp testapp/testapp.pro utilities/composer/composer.pro utilities/the-application/the-application.pro utilities/track/track.cpp utilities/track/track.pro utilities/widgettest/widgettest.pro |
diffstat | 11 files changed, 88 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/common/ComposerFileIndex.cpp Fri May 28 16:22:37 2010 +0100 +++ b/common/ComposerFileIndex.cpp Wed Jun 02 17:29:47 2010 +0100 @@ -173,7 +173,8 @@ std::cerr << "Caught exception: \"" << e.what() << "\" while indexing " << Uri(fileUrl) << ", skipping" << std::endl; } - + + tx->commit(); delete tx; }
--- a/common/FeatureFileIndex.cpp Fri May 28 16:22:37 2010 +0100 +++ b/common/FeatureFileIndex.cpp Wed Jun 02 17:29:47 2010 +0100 @@ -261,6 +261,7 @@ << Uri(fileUrl) << ", skipping" << std::endl; } + tx->commit(); delete tx; }
--- a/common/Objects.cpp Fri May 28 16:22:37 2010 +0100 +++ b/common/Objects.cpp Wed Jun 02 17:29:47 2010 +0100 @@ -858,6 +858,25 @@ << ", uri = " << m_uri.toString().toStdString() << std::endl; } +AudioFile::~AudioFile() +{ + foreach (AudioFileTag *t, m_tags) delete t; +} + +void +AudioFile::setTags(QSet<AudioFileTag *> tt) +{ + foreach (AudioFileTag *t, m_tags) { + if (!tt.contains(t)) delete t; + } + m_tags = tt; +} + +void +AudioFile::addTag(AudioFileTag *t) +{ + m_tags.insert(t); +} }
--- a/common/Objects.h Fri May 28 16:22:37 2010 +0100 +++ b/common/Objects.h Wed Jun 02 17:29:47 2010 +0100 @@ -580,7 +580,34 @@ static QMutex m_mutex; }; -// Separate AudioFile and Signal, to correspond with +class AudioFileTag : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged STORED true) + Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged STORED true) + +public: + AudioFileTag(QObject *parent = 0) : QObject(parent) { } + AudioFileTag(QString name, QString value, QObject *parent = 0) : + QObject(parent), m_name(name), m_value(value) { } + + QString name() const { return m_name; } + void setName(QString n) { m_name = n; emit nameChanged(m_name); } + + QString value() const { return m_value; } + void setValue(QString v) { m_value = v; emit valueChanged(m_value); } + +signals: + void nameChanged(QString); + void valueChanged(QString); + +private: + QString m_name; + QString m_value; +}; + +// Separate AudioFile and Signal, to correspond with MO class AudioFile : public QObject { @@ -588,10 +615,12 @@ Q_PROPERTY(QString hash READ hash WRITE setHash NOTIFY hashChanged STORED true) Q_PROPERTY(Dataquay::Uri uri READ uri WRITE setUri NOTIFY uriChanged STORED true) + Q_PROPERTY(QSet<ClassicalData::AudioFileTag *> tags READ tags WRITE setTags NOTIFY tagsChanged STORED true) public: AudioFile(QObject *parent = 0); AudioFile(FileSource file, QObject *parent = 0); + ~AudioFile(); /// The URI is set automatically from the FileSource at construction Dataquay::Uri uri() const { return m_uri; } @@ -601,13 +630,20 @@ QString hash() const { return m_hash; } void setHash(QString hash) { m_hash = hash; emit hashChanged(hash); } + /// I take ownership of all tags + QSet<AudioFileTag *> tags() { return m_tags; } + void setTags(QSet<AudioFileTag *> t); + void addTag(AudioFileTag *t); + signals: void uriChanged(Dataquay::Uri); void hashChanged(QString); + void tagsChanged(QSet<AudioFileTag *>); private: Dataquay::Uri m_uri; QString m_hash; + QSet<AudioFileTag *> m_tags; }; class Signal : public QObject @@ -670,6 +706,7 @@ Q_DECLARE_METATYPE(ClassicalData::Work*); Q_DECLARE_METATYPE(ClassicalData::Movement*); Q_DECLARE_METATYPE(ClassicalData::Document*); +Q_DECLARE_METATYPE(ClassicalData::AudioFileTag*); Q_DECLARE_METATYPE(ClassicalData::AudioFile*); Q_DECLARE_METATYPE(ClassicalData::Signal*); Q_DECLARE_METATYPE(QSet<QString>); @@ -677,6 +714,7 @@ Q_DECLARE_METATYPE(QSet<ClassicalData::Work*>); Q_DECLARE_METATYPE(QSet<ClassicalData::Movement*>); Q_DECLARE_METATYPE(QSet<ClassicalData::Document*>); +Q_DECLARE_METATYPE(QSet<ClassicalData::AudioFileTag*>); Q_DECLARE_METATYPE(QSet<ClassicalData::AudioFile*>); Q_DECLARE_METATYPE(QSet<ClassicalData::Signal*>); Q_DECLARE_METATYPE(ClassicalData::Composer*);
--- a/common/TypeRegistrar.cpp Fri May 28 16:22:37 2010 +0100 +++ b/common/TypeRegistrar.cpp Wed Jun 02 17:29:47 2010 +0100 @@ -47,6 +47,10 @@ ("QSet<QString>"); qRegisterMetaType<QSet<Dataquay::Uri> > ("QSet<Dataquay::Uri>"); + qRegisterMetaType<AudioFileTag *> + ("ClassicalData::AudioFileTag*"); + qRegisterMetaType<QSet<AudioFileTag *> > + ("QSet<ClassicalData::AudioFileTag*>"); qRegisterMetaType<AudioFile *> ("ClassicalData::AudioFile*"); qRegisterMetaType<QSet<AudioFile *> > @@ -76,6 +80,8 @@ ObjectBuilder::getInstance()->registerClass <Form, QObject>("ClassicalData::Form*"); ObjectBuilder::getInstance()->registerClass + <AudioFileTag>("ClassicalData::AudioFileTag*"); + ObjectBuilder::getInstance()->registerClass <AudioFile>("ClassicalData::AudioFile*"); ContainerBuilder::getInstance()->registerContainer @@ -107,6 +113,11 @@ ContainerBuilder::SetKind); ContainerBuilder::getInstance()->registerContainer + <AudioFileTag*, QSet<AudioFileTag*> > + ("ClassicalData::AudioFileTag*", "QSet<ClassicalData::AudioFileTag*>", + ContainerBuilder::SetKind); + + ContainerBuilder::getInstance()->registerContainer <AudioFile*, QSet<AudioFile*> > ("ClassicalData::AudioFile*", "QSet<ClassicalData::AudioFile*>", ContainerBuilder::SetKind); @@ -193,6 +204,8 @@ mapping->addPropertyMapping("ClassicalData::Composition", "composer", store->expand("mo:composer")); mapping->addPropertyMapping("ClassicalData::Composition", "works", store->expand("mo:produced_work")); + mapping->addTypeMapping("ClassicalData::AudioFileTag", store->expand("classical:AudioFileTag")); + mapping->addTypeMapping("ClassicalData::AudioFile", store->expand("mo:AudioFile")); mapping->addPropertyMapping("ClassicalData::AudioFile", "hash", store->expand("foaf:sha1"));
--- a/testapp/testapp.pro Fri May 28 16:22:37 2010 +0100 +++ b/testapp/testapp.pro Wed Jun 02 17:29:47 2010 +0100 @@ -14,5 +14,5 @@ PRE_TARGETDEPS += ../common/libcommon.a -LIBS += ../common/libcommon.a -L../../svcore -lsvcore ../../../turbot/dataquay/libdataquay.a ../../../turbot/ext/libext.a +LIBS += ../common/libcommon.a -L../../svcore -lsvcore ../../../dataquay/libdataquay.a
--- a/utilities/composer/composer.pro Fri May 28 16:22:37 2010 +0100 +++ b/utilities/composer/composer.pro Wed Jun 02 17:29:47 2010 +0100 @@ -13,5 +13,5 @@ DEPENDPATH += ../../../svcore INCLUDEPATH += ../../../svcore -LIBS += ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../turbot/dataquay/libdataquay.a ../../../../turbot/ext/libext.a +LIBS += ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../dataquay/libdataquay.a
--- a/utilities/the-application/the-application.pro Fri May 28 16:22:37 2010 +0100 +++ b/utilities/the-application/the-application.pro Wed Jun 02 17:29:47 2010 +0100 @@ -10,5 +10,5 @@ INCLUDEPATH += ../../common ../../../svcore -LIBS += ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../turbot/dataquay/libdataquay.a ../../../../turbot/ext/libext.a +LIBS += ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../dataquay/libdataquay.a
--- a/utilities/track/track.cpp Fri May 28 16:22:37 2010 +0100 +++ b/utilities/track/track.cpp Wed Jun 02 17:29:47 2010 +0100 @@ -463,7 +463,8 @@ // cerr << "Creating Signal..."; FileSource fs(track); Signal *tf = new Signal; - tf->addAvailableAs(new AudioFile(fs)); + AudioFile *af = new AudioFile(fs); + tf->addAvailableAs(af); // cerr << "done" << endl; // cerr << "hash = " << tf->hash() << endl; @@ -472,6 +473,13 @@ //!!! bad api!: getTrackData(fs, fingerprint, puid, title, maker, tags); + for (AudioFileReader::TagMap::const_iterator i = tags.begin(); + i != tags.end(); ++i) { + if (i->second != "") { + af->addTag(new AudioFileTag(i->first, i->second)); + } + } + cout << "fingerprint: " << fingerprint.toStdString() << ", puid: " << puid.toStdString() << endl;
--- a/utilities/track/track.pro Fri May 28 16:22:37 2010 +0100 +++ b/utilities/track/track.pro Wed Jun 02 17:29:47 2010 +0100 @@ -10,5 +10,5 @@ INCLUDEPATH += ../../common ../../../svcore -LIBS += ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../turbot/dataquay/libdataquay.a ../../../../turbot/ext/libext.a +LIBS += ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../dataquay/libdataquay.a
--- a/utilities/widgettest/widgettest.pro Fri May 28 16:22:37 2010 +0100 +++ b/utilities/widgettest/widgettest.pro Wed Jun 02 17:29:47 2010 +0100 @@ -10,7 +10,7 @@ DEPENDPATH += ../../../svcore INCLUDEPATH += ../../../svcore -LIBS += ../../widgets/libwidgets.a ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../turbot/dataquay/libdataquay.a ../../../../turbot/ext/libext.a +LIBS += ../../widgets/libwidgets.a ../../common/libcommon.a -L../../../svcore -lsvcore ../../../../dataquay/libdataquay.a HEADERS += widgettest.h SOURCES += widgettest.cpp