1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-14 10:05:32 +02:00

Show rated resolver star in yellow, so it's clear what you have rated and can no longer change

This commit is contained in:
Leo Franchi
2011-11-03 21:43:16 -04:00
parent 844eb3868a
commit db5313129e
4 changed files with 19 additions and 11 deletions

View File

@@ -191,8 +191,10 @@ GetNewStuffDelegate::paint( QPainter* painter, const QStyleOptionViewItem& optio
if ( i == 1 )
m_cachedStarRects[ QPair<int, int>(index.row(), index.column()) ] = r;
QPixmap pm;
if ( m_hoveringOver > -1 && ( m_hoveringItem.first == index.row() && m_hoveringItem.second == index.column() ) )
const bool userHasRated = index.data( GetNewStuffModel::UserHasRatedRole ).toBool();
if ( !userHasRated && // Show on-hover animation if the user hasn't rated it yet, and is hovering over it
m_hoveringOver > -1 &&
m_hoveringItem == index )
{
if ( i <= m_hoveringOver ) // positive star
painter->drawPixmap( r, m_onHoverStar );
@@ -201,8 +203,13 @@ GetNewStuffDelegate::paint( QPainter* painter, const QStyleOptionViewItem& optio
}
else
{
if ( i <= rating ) // positive star
painter->drawPixmap( r, m_ratingStarPositive );
if ( i <= rating ) // positive or rated star
{
if ( userHasRated )
painter->drawPixmap( r, m_onHoverStar );
else
painter->drawPixmap( r, m_ratingStarPositive );
}
else
painter->drawPixmap( r, m_ratingStarNegative );
}
@@ -299,8 +306,7 @@ GetNewStuffDelegate::editorEvent( QEvent* event, QAbstractItemModel* model, cons
{
// 0-indexed
m_hoveringOver = whichStar;
m_hoveringItem.first = index.row();
m_hoveringItem.second = index.column();
m_hoveringItem = index;
}
return true;
@@ -309,10 +315,9 @@ GetNewStuffDelegate::editorEvent( QEvent* event, QAbstractItemModel* model, cons
if ( m_hoveringOver > -1 )
{
QModelIndex idx = model->index( m_hoveringItem.first, m_hoveringItem.second );
emit update( idx );
emit update( m_hoveringItem );
m_hoveringOver = -1;
m_hoveringItem = QPair<int, int>();
m_hoveringItem = QPersistentModelIndex();
}
return false;
}

View File

@@ -42,7 +42,7 @@ private:
int m_widestTextWidth;
int m_hoveringOver;
QPair<int, int> m_hoveringItem;
QPersistentModelIndex m_hoveringItem;
mutable QHash< QPair<int, int>, QRect > m_cachedButtonRects;
mutable QHash< QPair<int, int>, QRect > m_cachedStarRects;
};

View File

@@ -94,6 +94,8 @@ GetNewStuffModel::data( const QModelIndex& index, int role ) const
return resolver.author();
case StateRole:
return (int)AtticaManager::instance()->resolverState( resolver );
case UserHasRatedRole:
return AtticaManager::instance()->userHasRated( resolver );
}
return QVariant();
}

View File

@@ -38,7 +38,8 @@ public:
DescriptionRole = Qt::UserRole + 5,
TypeRole = Qt::UserRole + 6, // Category in attica-speak. What sort of item this is (resolver, etc).
AuthorRole = Qt::UserRole + 7,
StateRole = Qt::UserRole + 8
StateRole = Qt::UserRole + 8,
UserHasRatedRole = Qt::UserRole + 9
};
enum Types {