1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-14 04:49:43 +01:00

Fix DropDownButton in Playlist view

This commit is contained in:
Dominik Schmidt 2016-01-15 18:10:15 +01:00
parent 5bd69fe09c
commit 4eee01d8bf
4 changed files with 34 additions and 2 deletions

View File

@ -444,14 +444,21 @@ PlayableModel::flags( const QModelIndex& index ) const
if ( index.isValid() )
{
Qt::ItemFlags returnFlags = defaultFlags;
if ( index.column() == 0 )
{
return Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | defaultFlags;
returnFlags |= Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled;
}
else if ( index.column() == PlayableModel::Download )
{
return Qt::ItemIsEditable | defaultFlags;
returnFlags |= Qt::ItemIsEditable | defaultFlags;
}
if ( areAllColumnsEditable() ) {
returnFlags |= Qt::ItemIsEditable;
}
return returnFlags;
}
return Qt::ItemIsDropEnabled | defaultFlags;
@ -1171,6 +1178,22 @@ PlayableModel::setIcon( const QPixmap& pixmap )
}
void
PlayableModel::setAllColumnsEditable( bool editable )
{
Q_D( PlayableModel );
d->areAllColumnsEditable = editable;
}
bool
PlayableModel::areAllColumnsEditable() const
{
Q_D( const PlayableModel );
return d->areAllColumnsEditable;
}
int
PlayableModel::trackCount() const
{

View File

@ -96,6 +96,11 @@ public:
virtual QPixmap icon() const;
virtual void setIcon( const QPixmap& pixmap );
// HACK: we need to set column 0 editable for DropDownButton in TrackView
void setAllColumnsEditable( bool editable );
bool areAllColumnsEditable() const;
virtual int trackCount() const;
virtual int itemCount() const;

View File

@ -38,6 +38,7 @@ public:
, rootItem( new PlayableItem( 0 ) )
, readOnly( true )
, loading( _loading )
, areAllColumnsEditable( false )
{
}
@ -58,6 +59,7 @@ private:
QStringList header;
bool loading;
bool areAllColumnsEditable;
};
#endif // PLAYABLEMODEL_P_H

View File

@ -885,7 +885,9 @@ PlaylistItemDelegate::editorEvent( QEvent* event, QAbstractItemModel* model, con
}
else if ( m_view->proxyModel()->style() == PlayableProxyModel::Locker && index.column() == PlayableModel::Download )
{
m_model->sourceModel()->setAllColumnsEditable( true );
m_view->edit( index );
m_model->sourceModel()->setAllColumnsEditable( false );
return true;
}