diff --git a/src/libtomahawk/filemetadata/MetadataEditor.cpp b/src/libtomahawk/filemetadata/MetadataEditor.cpp index 13d5932c1..e73c88ec2 100644 --- a/src/libtomahawk/filemetadata/MetadataEditor.cpp +++ b/src/libtomahawk/filemetadata/MetadataEditor.cpp @@ -38,11 +38,12 @@ #include "utils/Closure.h" -MetadataEditor::MetadataEditor( const Tomahawk::result_ptr& result, QWidget* parent ) +MetadataEditor::MetadataEditor( const Tomahawk::result_ptr& result, const Tomahawk::playlistinterface_ptr& interface, QWidget* parent ) : QDialog( parent ) , ui( new Ui::MetadataEditor ) , m_result( result ) - , m_interface( 0 ) + , m_interface( interface ) + , m_index( 0 ) { ui->setupUi( this ); setWindowTitle( QString( result->track() + tr( " - Properties" ) ) ); @@ -55,18 +56,6 @@ MetadataEditor::MetadataEditor( const Tomahawk::result_ptr& result, QWidget* par connect( ui->forwardPushButton, SIGNAL( clicked() ), SLOT( loadNextResult() ) ); connect( ui->previousPushButton, SIGNAL( clicked() ), SLOT( loadPreviousResult() ) ); - m_interface = Tomahawk::playlistinterface_ptr( new Tomahawk::AlbumPlaylistInterface( - result->album().data(), - Tomahawk::DatabaseMode, - result->collection() ) ); - connect( m_interface.data(), - SIGNAL( tracksLoaded( Tomahawk::ModelMode, - const Tomahawk::collection_ptr& ) ), - SLOT( enablePushButtons() ) ); - - /* Initiate the interface */ - m_interface->tracks(); - loadResult( result ); } @@ -145,22 +134,21 @@ MetadataEditor::loadResult( const Tomahawk::result_ptr& result ) setFileName( fi.fileName() ); setFileSize( TomahawkUtils::filesizeToString( fi.size() ) ); - enablePushButtons(); + m_index = m_interface->indexOfResult( result ); + if ( m_index >= 0 ) + enablePushButtons(); } void MetadataEditor::enablePushButtons() { - if ( !m_interface->setCurrentTrack( m_result->albumpos() ) ) - tDebug() << "Error setting current track for MetadataEditor."; - - if ( m_interface->hasNextItem() ) + if ( m_interface->itemAt( m_index + 1 ) ) ui->forwardPushButton->setEnabled( true ); else ui->forwardPushButton->setEnabled( false ); - if ( m_interface->hasPreviousItem() ) + if ( m_interface->itemAt( m_index - 1 ) ) ui->previousPushButton->setEnabled( true ); else ui->previousPushButton->setEnabled( false ); @@ -171,7 +159,11 @@ void MetadataEditor::loadNextResult() { writeMetadata(); - loadResult( m_interface->nextItem() ); + + m_index++; + + if ( m_interface->itemAt( m_index )->numResults() ) + loadResult( m_interface->itemAt( m_index )->results().first() ); } @@ -179,7 +171,11 @@ void MetadataEditor::loadPreviousResult() { writeMetadata(); - loadResult( m_interface->previousItem() ); + + m_index--; + + if ( m_interface->itemAt( m_index )->numResults() ) + loadResult( m_interface->itemAt( m_index )->results().first() ); } diff --git a/src/libtomahawk/filemetadata/MetadataEditor.h b/src/libtomahawk/filemetadata/MetadataEditor.h index 720f484d9..c80a67773 100644 --- a/src/libtomahawk/filemetadata/MetadataEditor.h +++ b/src/libtomahawk/filemetadata/MetadataEditor.h @@ -35,7 +35,7 @@ class MetadataEditor : public QDialog Q_OBJECT public: - MetadataEditor( const Tomahawk::result_ptr& result, QWidget* parent = 0 ); + MetadataEditor( const Tomahawk::result_ptr& result, const Tomahawk::playlistinterface_ptr& interface, QWidget* parent = 0 ); ~MetadataEditor() {}; protected: @@ -72,6 +72,8 @@ private: Tomahawk::result_ptr m_result; Tomahawk::playlistinterface_ptr m_interface; QStringList m_editFiles; + + int m_index; }; #endif // METADATAEDITOR_H