#pragma once #include "sources/metadatasource.h" #include "track/taglib/trackmetadata.h" namespace mixxx { // Universal default implementation of IMetadataSource using TagLib. class MetadataSourceTagLib : public MetadataSource { public: explicit MetadataSourceTagLib( const QString& fileName) : m_fileName(fileName), m_fileType(taglib::getFileTypeFromFileName(fileName)) { } MetadataSourceTagLib( const QString& fileName, taglib::FileType fileType) : m_fileName(fileName), m_fileType(fileType) { } std::pair importTrackMetadataAndCoverImage( TrackMetadata* pTrackMetadata, QImage* pCoverArt) const override; std::pair exportTrackMetadata( const TrackMetadata& trackMetadata) const override; private: std::pair afterImport(ImportResult importResult) const; std::pair afterExport(ExportResult exportResult) const; QString m_fileName; taglib::FileType m_fileType; }; } // namespace mixxx