1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-12 00:54:20 +02:00

* Fixed TrackView's delegate to deal with user-moved columns.

This commit is contained in:
Christian Muehlhaeuser
2011-01-24 05:13:33 +01:00
parent b5b06a03fd
commit b9eb9ca6d4
5 changed files with 22 additions and 13 deletions

View File

@@ -9,11 +9,15 @@
#include "playlist/plitem.h" #include "playlist/plitem.h"
#include "playlist/trackproxymodel.h" #include "playlist/trackproxymodel.h"
#include "playlist/trackview.h"
#include "playlist/trackheader.h"
#include "audio/audioengine.h" #include "utils/tomahawkutils.h"
#define PLAYING_ICON QString( RESPATH "images/now-playing-speaker.png" )
PlaylistItemDelegate::PlaylistItemDelegate( QAbstractItemView* parent, TrackProxyModel* proxy ) PlaylistItemDelegate::PlaylistItemDelegate( TrackView* parent, TrackProxyModel* proxy )
: QStyledItemDelegate( (QObject*)parent ) : QStyledItemDelegate( (QObject*)parent )
, m_view( parent ) , m_view( parent )
, m_model( proxy ) , m_model( proxy )
@@ -37,7 +41,7 @@ PlaylistItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModel
QWidget* QWidget*
PlaylistItemDelegate::createEditor ( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const PlaylistItemDelegate::createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{ {
return 0; return 0;
} }
@@ -48,9 +52,7 @@ PlaylistItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& opti
{ {
PlItem* item = m_model->itemFromIndex( m_model->mapToSource( index ) ); PlItem* item = m_model->itemFromIndex( m_model->mapToSource( index ) );
if ( !item || item->query().isNull() ) if ( !item || item->query().isNull() )
{
return; return;
}
if ( item->query()->results().count() ) if ( item->query()->results().count() )
painter->setOpacity( item->query()->results().at( 0 )->score() ); painter->setOpacity( item->query()->results().at( 0 )->score() );
@@ -64,9 +66,9 @@ PlaylistItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& opti
{ {
QRect r = option.rect.adjusted( 3, 0, 0, -3 ); QRect r = option.rect.adjusted( 3, 0, 0, -3 );
if ( index.column() == 0 ) if ( m_view->header()->visualIndex( index.column() ) == 0 )
{ {
painter->drawPixmap( r.adjusted( 3, 3, 18 - r.width(), 0 ), QPixmap( index.data( Qt::DecorationRole ).toString() ) ); painter->drawPixmap( r.adjusted( 3, 3, 18 - r.width(), 0 ), QPixmap( PLAYING_ICON ) );
r = r.adjusted( 22, 0, 0, 0 ); r = r.adjusted( 22, 0, 0, 0 );
} }
@@ -74,7 +76,7 @@ PlaylistItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& opti
painter->drawText( r.adjusted( 0, 2, 0, 0 ), index.data().toString() ); painter->drawText( r.adjusted( 0, 2, 0, 0 ), index.data().toString() );
} }
if ( index.column() == index.model()->columnCount() - 1 ) if ( m_view->header()->visualIndex( index.column() ) == m_view->header()->visibleSectionCount() - 1 )
{ {
QRect r = QRect( 3, option.rect.y() + 1, m_view->viewport()->width() - 6, option.rect.height() - 2 ); QRect r = QRect( 3, option.rect.y() + 1, m_view->viewport()->width() - 6, option.rect.height() - 2 );
painter->setPen( option.palette.highlight().color() ); painter->setPen( option.palette.highlight().color() );

View File

@@ -6,13 +6,14 @@
#include "dllmacro.h" #include "dllmacro.h"
class TrackProxyModel; class TrackProxyModel;
class TrackView;
class DLLEXPORT PlaylistItemDelegate : public QStyledItemDelegate class DLLEXPORT PlaylistItemDelegate : public QStyledItemDelegate
{ {
Q_OBJECT Q_OBJECT
public: public:
PlaylistItemDelegate( QAbstractItemView* parent = 0, TrackProxyModel* proxy = 0 ); PlaylistItemDelegate( TrackView* parent = 0, TrackProxyModel* proxy = 0 );
void updateRowSize( const QModelIndex& index ); void updateRowSize( const QModelIndex& index );
@@ -27,7 +28,7 @@ protected:
private: private:
unsigned int m_removalProgress; unsigned int m_removalProgress;
QAbstractItemView* m_view; TrackView* m_view;
TrackProxyModel* m_model; TrackProxyModel* m_model;
}; };

View File

@@ -39,6 +39,13 @@ TrackHeader::~TrackHeader()
} }
int
TrackHeader::visibleSectionCount() const
{
return count() - hiddenSectionCount();
}
void void
TrackHeader::onSectionResized( int logicalidx, int oldSize, int newSize ) TrackHeader::onSectionResized( int logicalidx, int oldSize, int newSize )
{ {

View File

@@ -16,6 +16,8 @@ public:
explicit TrackHeader( TrackView* parent = 0 ); explicit TrackHeader( TrackView* parent = 0 );
~TrackHeader(); ~TrackHeader();
int visibleSectionCount() const;
public slots: public slots:
void onResized(); void onResized();
void toggleVisibility( int index ); void toggleVisibility( int index );

View File

@@ -95,9 +95,6 @@ TrackModel::data( const QModelIndex& index, int role ) const
if ( role == Qt::DecorationRole ) if ( role == Qt::DecorationRole )
{ {
if ( index.column() == 0 && entry->isPlaying() )
return QString( RESPATH "images/now-playing-speaker.png" );
return QVariant(); return QVariant();
} }