1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-09-09 05:30:52 +02:00

Compare commits

...

11 Commits

Author SHA1 Message Date
Uwe L. Korn
4045fb9228 Check for COMPLEX_TAGLIB_FILENAME
Fixes crashes on Windows with files that can be indexed but not edited.
2014-11-07 17:38:44 +01:00
Uwe L. Korn
5c5427e493 Don't keep reference to internal tag, never used 2014-11-07 17:11:09 +01:00
Uwe L. Korn
45a5fe09e7 Don't keep reference to internal tag, never used 2014-11-07 15:48:56 +01:00
Uwe L. Korn
9f62ca3548 Use C++11 range-for and references for better performance 2014-11-06 14:18:56 +01:00
Uwe L. Korn
1b11ebb9f5 Don't keep reference to asfTag, never used 2014-11-06 14:15:27 +01:00
Uwe L. Korn
80efa9a230 Use C++11 range-for and references for better performance 2014-11-06 14:14:06 +01:00
Uwe L. Korn
755bc7f456 Do not keep a reference to the internal tag, never used 2014-11-06 13:59:47 +01:00
Uwe L. Korn
7324de71b9 Remove redundant semilcolons 2014-11-06 13:59:32 +01:00
Uwe L. Korn
6fba317ea9 Implement albumArtist/composer/discNumber in a generic way.
This removes the need for specific, virtual implementations in each Tag
class. Increases performance, decreases code complexity.
2014-11-06 13:45:28 +01:00
Uwe L. Korn
d38a6572fc Use virtual only if needed 2014-11-06 13:34:12 +01:00
Uwe L. Korn
2b2a770be0 Replace virtual with better fitting override 2014-11-06 13:32:29 +01:00
12 changed files with 32 additions and 67 deletions

View File

@@ -36,6 +36,7 @@
#include "Source.h"
#include "Typedefs.h"
#include "config.h"
#include <QDialog>
#include <QDialogButtonBox>
@@ -89,8 +90,12 @@ MetadataEditor::writeMetadata( bool closeDlg )
QFileInfo fi( QUrl( m_result->url() ).toLocalFile() );
bool changed = false;
#ifdef COMPLEX_TAGLIB_FILENAME
const wchar_t *encodedName = fi.canonicalFilePath().toStdWString().c_str();
#else
QByteArray fileName = QFile::encodeName( fi.canonicalFilePath() );
const char *encodedName = fileName.constData();
#endif
TagLib::FileRef f( encodedName );
QSharedPointer<Tomahawk::Tag> tag( Tomahawk::Tag::fromFile( f ) );

View File

@@ -59,8 +59,8 @@ public:
qDebug() << Q_FUNC_INFO;
}
bool isDeleting() { QMutexLocker locker( &m_deletingMutex ); return m_deleting; };
void setIsDeleting() { QMutexLocker locker( &m_deletingMutex ); m_deleting = true; };
bool isDeleting() { QMutexLocker locker( &m_deletingMutex ); return m_deleting; }
void setIsDeleting() { QMutexLocker locker( &m_deletingMutex ); m_deleting = true; }
signals:
void fileToScan( QFileInfo );

View File

@@ -23,14 +23,11 @@ namespace Tomahawk
APETag::APETag( TagLib::Tag *tag, TagLib::APE::Tag *apeTag )
: Tag( tag )
, m_apeTag( apeTag )
{
TagLib::APE::ItemListMap map = m_apeTag->itemListMap();
for( TagLib::APE::ItemListMap::ConstIterator it = map.begin();
it != map.end(); ++it )
for( const auto& item : apeTag->itemListMap() )
{
TagLib::String key = it->first;
QString val = TStringToQString( it->second.toString() );
const TagLib::String& key = item.first;
QString val = TStringToQString( item.second.toString() );
//some of these are not defined in the item key according to the hydrogenaudio wiki
//can I use them anyway? --Teo 11/2011
if( key == TagLib::String( "Album Artist" ) )

View File

@@ -29,13 +29,6 @@ class DLLEXPORT APETag : public Tag
{
public:
APETag( TagLib::Tag *, TagLib::APE::Tag * );
virtual QString albumArtist() const { return m_albumArtist; }
virtual QString composer() const { return m_composer; }
virtual unsigned int discNumber() const { return m_discNumber; }
private:
TagLib::APE::Tag *m_apeTag;
};
}

View File

@@ -23,14 +23,11 @@ namespace Tomahawk
ASFTag::ASFTag( TagLib::Tag *tag, TagLib::ASF::Tag *asfTag )
: Tag( tag )
, m_asfTag( asfTag )
{
TagLib::ASF::AttributeListMap map = m_asfTag->attributeListMap();
for( TagLib::ASF::AttributeListMap::ConstIterator it = map.begin();
it != map.end(); ++it )
for ( const auto& item : asfTag->attributeListMap() )
{
TagLib::String key = it->first;
QString val = TStringToQString( it->second[ 0 ].toString() );
const TagLib::String& key = item.first;
QString val = TStringToQString( item.second[ 0 ].toString() );
if( key == TagLib::String( "WM/AlbumTitle" ) ) //album artist
{
m_albumArtist = val;

View File

@@ -29,13 +29,6 @@ class DLLEXPORT ASFTag : public Tag
{
public:
ASFTag( TagLib::Tag *, TagLib::ASF::Tag * );
virtual QString albumArtist() const { return m_albumArtist; }
virtual QString composer() const { return m_composer; }
virtual unsigned int discNumber() const { return m_discNumber; }
private:
TagLib::ASF::Tag *m_asfTag;
};
}

View File

@@ -29,10 +29,6 @@ class DLLEXPORT ID3v1Tag : public Tag
{
public:
ID3v1Tag( TagLib::Tag * );
virtual QString albumArtist() const { return QString(); }
virtual QString composer() const { return QString(); }
virtual unsigned int discNumber() const { return 0; }
};
}

View File

@@ -24,9 +24,8 @@ namespace Tomahawk
ID3v2Tag::ID3v2Tag( TagLib::Tag *tag, TagLib::ID3v2::Tag *id3v2Tag )
: Tag( tag )
, m_id3v2Tag( id3v2Tag )
{
TagLib::ID3v2::FrameList fList = m_id3v2Tag->frameList();
TagLib::ID3v2::FrameList fList = id3v2Tag->frameList();
for( TagLib::ID3v2::FrameList::ConstIterator it = fList.begin();
it != fList.end(); ++it )
{

View File

@@ -29,13 +29,6 @@ class DLLEXPORT ID3v2Tag : public Tag
{
public:
ID3v2Tag( TagLib::Tag *, TagLib::ID3v2::Tag * );
virtual QString albumArtist() const { return m_albumArtist; }
virtual QString composer() const { return m_composer; }
virtual unsigned int discNumber() const { return m_discNumber; }
private:
TagLib::ID3v2::Tag *m_id3v2Tag;
};
}

View File

@@ -30,10 +30,6 @@ class DLLEXPORT MP4Tag : public Tag
public:
MP4Tag( TagLib::Tag *, TagLib::MP4::Tag * );
virtual QString albumArtist() const { return m_albumArtist; }
virtual QString composer() const { return m_composer; }
virtual unsigned int discNumber() const { return m_discNumber; }
private:
TagLib::MP4::Tag *m_mp4Tag;
};

View File

@@ -30,10 +30,6 @@ class DLLEXPORT OggTag : public Tag
public:
OggTag( TagLib::Tag *, TagLib::Ogg::XiphComment * );
virtual QString albumArtist() const { return m_albumArtist; }
virtual QString composer() const { return m_composer; }
virtual unsigned int discNumber() const { return m_discNumber; }
private:
TagLib::Ogg::XiphComment *m_xiphComment;
};

View File

@@ -36,25 +36,25 @@ public:
static QSharedPointer<Tag> fromFile( const TagLib::FileRef &f );
//getter-setters for common TagLib items
virtual QString title() const { return TStringToQString( m_tag->title() ).trimmed(); }
virtual QString artist() const { return TStringToQString( m_tag->artist() ).trimmed(); }
virtual QString album() const { return TStringToQString( m_tag->album() ).trimmed(); }
virtual QString comment() const { return TStringToQString( m_tag->comment() ).trimmed(); }
virtual QString genre() const { return TStringToQString( m_tag->genre() ).trimmed(); }
virtual unsigned int year() const { return m_tag->year(); }
virtual unsigned int track() const { return m_tag->track(); }
virtual void setTitle( const QString &s ) { m_tag->setTitle( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
virtual void setArtist( const QString &s ) { m_tag->setArtist( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
virtual void setAlbum( const QString &s ) { m_tag->setAlbum( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
virtual void setComment( const QString &s ) { m_tag->setComment( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
virtual void setGenre( const QString &s ) { m_tag->setGenre( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
virtual void setYear( unsigned int i ) { m_tag->setYear( i ); }
virtual void setTrack( unsigned int i ) { m_tag->setTrack( i ); }
virtual bool isEmpty() const { return m_tag->isEmpty(); }
QString title() const { return TStringToQString( m_tag->title() ).trimmed(); }
QString artist() const { return TStringToQString( m_tag->artist() ).trimmed(); }
QString album() const { return TStringToQString( m_tag->album() ).trimmed(); }
QString comment() const { return TStringToQString( m_tag->comment() ).trimmed(); }
QString genre() const { return TStringToQString( m_tag->genre() ).trimmed(); }
unsigned int year() const { return m_tag->year(); }
unsigned int track() const { return m_tag->track(); }
void setTitle( const QString &s ) { m_tag->setTitle( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
void setArtist( const QString &s ) { m_tag->setArtist( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
void setAlbum( const QString &s ) { m_tag->setAlbum( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
void setComment( const QString &s ) { m_tag->setComment( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
void setGenre( const QString &s ) { m_tag->setGenre( TagLib::String( s.toUtf8().data(), TagLib::String::UTF8 ) ); }
void setYear( unsigned int i ) { m_tag->setYear( i ); }
void setTrack( unsigned int i ) { m_tag->setTrack( i ); }
bool isEmpty() const { return m_tag->isEmpty(); }
virtual QString albumArtist() const = 0;
virtual QString composer() const = 0;
virtual unsigned int discNumber() const = 0;
QString albumArtist() const { return m_albumArtist; }
QString composer() const { return m_composer; }
unsigned int discNumber() const { return m_discNumber; }
//TODO: add support for writing those 3 items with TagLib's addField/setField
protected: