diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h index 3c689f167..40e38dbb4 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -67,6 +67,7 @@ public: virtual void setMaxVisibleItems( int items ); virtual PlayableItem* itemFromIndex( const QModelIndex& index ) const { return sourceModel()->itemFromIndex( index ); } + Q_INVOKABLE virtual PlayableItem* itemFromIndex( int itemIndex ) const { return sourceModel()->itemFromIndex( itemIndex ); } virtual Tomahawk::playlistinterface_ptr playlistInterface(); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp index a10ec16d5..a4a4b4b2b 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp @@ -28,12 +28,12 @@ DynamicQmlWidget::DynamicQmlWidget( const dynplaylist_ptr& playlist, QWidget* pa m_model = new DynamicModel( this ); m_proxyModel = new PlayableProxyModel( this ); m_proxyModel->setSourcePlayableModel( m_model ); - + m_proxyModel->setShowOfflineResults( false ); m_model->loadPlaylist( m_playlist ); m_model->startOnDemand(); - rootContext()->setContextProperty( "dynamicModel", m_model ); + rootContext()->setContextProperty( "dynamicModel", m_proxyModel ); currentItemChanged( m_model->currentItem() ); // TODO: In case QML is used in more places, this should probably be moved to some generic place @@ -93,10 +93,12 @@ QPixmap DynamicQmlWidget::requestPixmap(const QString &id, QSize *size, const QS if( size ) *size = QSize( width, height ); - QModelIndex index = m_model->index( id.toInt(), 0, QModelIndex() ); - qDebug() << "got index" << index; + QModelIndex index = m_proxyModel->index( id.toInt(), 0, QModelIndex() ); + qDebug() << "!*!*!*! got index" << index << id; if( index.isValid() ) { - PlayableItem *item = m_model->itemFromIndex( index ); + PlayableItem *item = m_model->itemFromIndex( m_proxyModel->mapToSource( index ) ); + qDebug() << "item:" << item; + qDebug() << "item2:" << item->artistName() << item->name(); if ( !item->album().isNull() ) { return item->album()->cover( *size ); } else if ( !item->artist().isNull() ) { @@ -113,9 +115,9 @@ QPixmap DynamicQmlWidget::requestPixmap(const QString &id, QSize *size, const QS return pixmap; } -void DynamicQmlWidget::currentItemChanged(const QPersistentModelIndex ¤tIndex) +void DynamicQmlWidget::currentItemChanged( const QPersistentModelIndex ¤tIndex ) { - rootContext()->setContextProperty( "currentlyPlayedIndex", m_model->currentItem().row() ); + rootContext()->setContextProperty( "currentlyPlayedIndex", m_proxyModel->mapFromSource( currentIndex ).row() ); } } diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.h index f0e8e76fc..17902a861 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.h @@ -51,7 +51,7 @@ public: virtual bool jumpToCurrentTrack(); - QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize); + QPixmap requestPixmap( const QString &id, QSize *size, const QSize &requestedSize ); private slots: void currentItemChanged( const QPersistentModelIndex ¤tIndex );