Commit 86174f84 authored by Ilkka Ollakka's avatar Ilkka Ollakka

QT: move sortingIndicator to correct position when columns are added/removed

This should be more clearer to user what column is used to sort (eg if
it's hidden, then hide sortIndicator also).
(cherry picked from commit 9577d830)
parent 576d0e18
...@@ -90,6 +90,7 @@ private slots: ...@@ -90,6 +90,7 @@ private slots:
void setCurrentRootId( int ); void setCurrentRootId( int );
void popupAdd(); void popupAdd();
void popupSelectColumn( QPoint ); void popupSelectColumn( QPoint );
void checkSortingIndicator( int );
}; };
#endif #endif
...@@ -854,6 +854,7 @@ void PLModel::viewchanged( int meta ) ...@@ -854,6 +854,7 @@ void PLModel::viewchanged( int meta )
rootItem->updateColumnHeaders(); rootItem->updateColumnHeaders();
endInsertColumns(); endInsertColumns();
} }
emit columnsChanged( meta );
rebuild(); rebuild();
} }
} }
......
...@@ -168,6 +168,7 @@ private: ...@@ -168,6 +168,7 @@ private:
signals: signals:
void shouldRemove( int ); void shouldRemove( int );
void currentChanged( const QModelIndex& ); void currentChanged( const QModelIndex& );
void columnsChanged( int );
public slots: public slots:
......
...@@ -104,6 +104,8 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent, ...@@ -104,6 +104,8 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent,
this, popupSelectColumn( QPoint ) ); this, popupSelectColumn( QPoint ) );
CONNECT( model, currentChanged( const QModelIndex& ), CONNECT( model, currentChanged( const QModelIndex& ),
this, handleExpansion( const QModelIndex& ) ); this, handleExpansion( const QModelIndex& ) );
CONNECT( model, columnsChanged( int ),
this, checkSortingIndicator( int ) );
currentRootId = -1; currentRootId = -1;
CONNECT( parent, rootChanged( int ), this, setCurrentRootId( int ) ); CONNECT( parent, rootChanged( int ), this, setCurrentRootId( int ) );
...@@ -260,14 +262,58 @@ void StandardPLPanel::popupAdd() ...@@ -260,14 +262,58 @@ void StandardPLPanel::popupAdd()
+ QPoint( 0, addButton->height() ) ); + 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 ) void StandardPLPanel::popupSelectColumn( QPoint pos )
{ {
ContextUpdateMapper = new QSignalMapper(this); ContextUpdateMapper = new QSignalMapper(this);
QMenu selectColMenu; QMenu selectColMenu;
CONNECT( ContextUpdateMapper, mapped( int ), model, viewchanged( int ) );
int i_column = 1; int i_column = 1;
for( i_column = 1; i_column != COLUMN_END; i_column<<=1 ) for( i_column = 1; i_column != COLUMN_END; i_column<<=1 )
{ {
...@@ -279,6 +325,8 @@ void StandardPLPanel::popupSelectColumn( QPoint pos ) ...@@ -279,6 +325,8 @@ void StandardPLPanel::popupSelectColumn( QPoint pos )
CONNECT( option, triggered(), ContextUpdateMapper, map() ); CONNECT( option, triggered(), ContextUpdateMapper, map() );
} }
CONNECT( ContextUpdateMapper, mapped( int ), model, viewchanged( int ) );
selectColMenu.exec( QCursor::pos() ); selectColMenu.exec( QCursor::pos() );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment