/* Create and configure the QTreeView */
view = new QVLCTreeView;
- view->header()->setSortIndicator( 0 , Qt::AscendingOrder );
- view->setSortingEnabled( true );
view->setModel( model );
view->setIconSize( QSize( 20, 20 ) );
view->setAlternatingRowColors( true );
view->setDragEnabled( true );
view->setAcceptDrops( true );
view->setDropIndicatorShown( true );
+ view->header()->setSortIndicator( -1 , Qt::AscendingOrder );
+ view->setUniformRowHeights( true );
+ view->setSortingEnabled( true );
getSettings()->beginGroup("Playlist");
this, popupSelectColumn( QPoint ) );
CONNECT( model, currentChanged( const QModelIndex& ),
this, handleExpansion( const QModelIndex& ) );
+ CONNECT( model, columnsChanged( int ),
+ this, checkSortingIndicator( int ) );
currentRootId = -1;
CONNECT( parent, rootChanged( int ), this, setCurrentRootId( int ) );
void StandardPLPanel::handleExpansion( const QModelIndex& index )
{
- view->scrollTo( index, QAbstractItemView::EnsureVisible );
+ view->scrollTo( index );
}
void StandardPLPanel::setCurrentRootId( int _new )
+ QPoint( 0, addButton->height() ) );
}
+/* Set sortingindicator to -1 if it's on column thats removed,
+ * else check that it's still showing on correct column
+ */
+void StandardPLPanel::checkSortingIndicator( int meta )
+{
+ int index=0;
+
+ if( view->header()->isSortIndicatorShown() == false )
+ return;
+
+ int sortIndex = view->header()->sortIndicatorSection();
+ if( sortIndex < 0 || sortIndex > view->header()->count() || meta == 0 )
+ return;
+
+ int _meta = meta;
+
+ while( _meta )
+ {
+ if( _meta & model->shownFlags() )
+ index++;
+ _meta >>= 1;
+ }
+
+ /* Adding column */
+ if( model->shownFlags() & meta )
+ {
+ /* If column is added before sortIndex, move it one to right*/
+ if( sortIndex >= index )
+ {
+ sortIndex += 1;
+ }
+ } else {
+ /* Column removed */
+ if( sortIndex == index )
+ {
+ sortIndex = -1;
+ } else if( sortIndex > index )
+ {
+ /* Move indicator left one step*/
+ sortIndex -= 1;
+ }
+ }
+ view->header()->setSortIndicator( sortIndex ,
+ view->header()->sortIndicatorOrder() );
+}
+
void StandardPLPanel::popupSelectColumn( QPoint pos )
{
ContextUpdateMapper = new QSignalMapper(this);
QMenu selectColMenu;
- CONNECT( ContextUpdateMapper, mapped( int ), model, viewchanged( int ) );
-
int i_column = 1;
for( i_column = 1; i_column != COLUMN_END; i_column<<=1 )
{
CONNECT( option, triggered(), ContextUpdateMapper, map() );
}
+ CONNECT( ContextUpdateMapper, mapped( int ), model, viewchanged( int ) );
+
selectColMenu.exec( QCursor::pos() );
}