[vlc-devel] commit: QT: move sortingIndicator to correct position when columns are added/removed ( Ilkka Ollakka )
git version control
git at videolan.org
Sun Aug 2 17:52:57 CEST 2009
vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Sun Aug 2 18:06:14 2009 +0300| [9577d830528cbfd80a8dd001a4cf02f6832246a0] | committer: 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).
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9577d830528cbfd80a8dd001a4cf02f6832246a0
---
modules/gui/qt4/components/playlist/panels.hpp | 1 +
.../gui/qt4/components/playlist/playlist_model.cpp | 1 +
.../gui/qt4/components/playlist/playlist_model.hpp | 1 +
.../gui/qt4/components/playlist/standardpanel.cpp | 52 +++++++++++++++++++-
4 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/modules/gui/qt4/components/playlist/panels.hpp b/modules/gui/qt4/components/playlist/panels.hpp
index 1891564..6876f0c 100644
--- a/modules/gui/qt4/components/playlist/panels.hpp
+++ b/modules/gui/qt4/components/playlist/panels.hpp
@@ -90,6 +90,7 @@ private slots:
void setCurrentRootId( int );
void popupAdd();
void popupSelectColumn( QPoint );
+ void checkSortingIndicator( int );
};
#endif
diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp
index 6a47ad7..87de8a0 100644
--- a/modules/gui/qt4/components/playlist/playlist_model.cpp
+++ b/modules/gui/qt4/components/playlist/playlist_model.cpp
@@ -873,6 +873,7 @@ void PLModel::viewchanged( int meta )
rootItem->updateColumnHeaders();
endInsertColumns();
}
+ emit columnsChanged( meta );
rebuild();
}
}
diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp
index a28c3a8..d4c2e4e 100644
--- a/modules/gui/qt4/components/playlist/playlist_model.hpp
+++ b/modules/gui/qt4/components/playlist/playlist_model.hpp
@@ -168,6 +168,7 @@ private:
signals:
void shouldRemove( int );
void currentChanged( const QModelIndex& );
+ void columnsChanged( int );
public slots:
diff --git a/modules/gui/qt4/components/playlist/standardpanel.cpp b/modules/gui/qt4/components/playlist/standardpanel.cpp
index 3178c7d..43b656d 100644
--- a/modules/gui/qt4/components/playlist/standardpanel.cpp
+++ b/modules/gui/qt4/components/playlist/standardpanel.cpp
@@ -100,6 +100,8 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent,
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 ) );
@@ -257,14 +259,58 @@ void StandardPLPanel::popupAdd()
+ 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 )
{
@@ -276,6 +322,8 @@ void StandardPLPanel::popupSelectColumn( QPoint pos )
CONNECT( option, triggered(), ContextUpdateMapper, map() );
}
+ CONNECT( ContextUpdateMapper, mapped( int ), model, viewchanged( int ) );
+
selectColMenu.exec( QCursor::pos() );
}
More information about the vlc-devel
mailing list