Ver código fonte

Add ctkActionsWidget::sortColumn

See http://na-mic.org/Bug/view.php?id=1819
Julien Finet 11 anos atrás
pai
commit
253768c899
2 arquivos alterados com 32 adições e 0 exclusões
  1. 21 0
      Libs/Widgets/ctkActionsWidget.cpp
  2. 11 0
      Libs/Widgets/ctkActionsWidget.h

+ 21 - 0
Libs/Widgets/ctkActionsWidget.cpp

@@ -21,6 +21,7 @@
 // Qt includes
 #include <QAction>
 #include <QDebug>
+#include <QHeaderView>
 #include <QPainter>
 #include <QSortFilterProxyModel>
 #include <QStandardItem>
@@ -170,10 +171,14 @@ void ctkActionsWidget::addAction(QAction* action, const QString& group)
 //-----------------------------------------------------------------------------
 void ctkActionsWidget::addActions(QList<QAction*> actions, const QString& group)
 {
+  Q_D(ctkActionsWidget);
+  bool wasSortinEnabled = d->ActionsTreeView->isSortingEnabled();
+  d->ActionsTreeView->setSortingEnabled(false);
   foreach(QAction* action, actions)
     {
     this->addAction(action, group);
     }
+  d->ActionsTreeView->setSortingEnabled(wasSortinEnabled);
 }
 
 //-----------------------------------------------------------------------------
@@ -241,6 +246,22 @@ bool ctkActionsWidget::areMenuActionsVisible()const
 }
 
 //-----------------------------------------------------------------------------
+void ctkActionsWidget::setSortColumn(int column)
+{
+  Q_D(ctkActionsWidget);
+  d->ActionsTreeView->sortByColumn(column, Qt::AscendingOrder);
+  d->ActionsTreeView->setSortingEnabled(column != -1);
+}
+
+//-----------------------------------------------------------------------------
+int ctkActionsWidget::sortColumn()const
+{
+  Q_D(const ctkActionsWidget);
+  return d->ActionsTreeView->isSortingEnabled() ?
+    d->ActionsTreeView->header()->sortIndicatorSection() : -1;
+}
+
+//-----------------------------------------------------------------------------
 void ctkActionsWidget::updateAction()
 {
   Q_D(ctkActionsWidget);

+ 11 - 0
Libs/Widgets/ctkActionsWidget.h

@@ -52,6 +52,10 @@ class CTK_WIDGETS_EXPORT ctkActionsWidget : public QWidget
   Q_OBJECT
   Q_PROPERTY(bool actionsWithNoShortcutVisible READ areActionsWithNoShortcutVisible WRITE setActionsWithNoShortcutVisible)
   Q_PROPERTY(bool menuActionsVisible READ areMenuActionsVisible WRITE setMenuActionsVisible)
+  /// This property controls whether the actions are sorted by column (>=0) or
+  /// not (-1). Not sorted by default.
+  /// \sa sortColumn(), setSortColumn()
+  Q_PROPERTY(int sortColumn READ sortColumn WRITE setSortColumn)
 public:
   explicit ctkActionsWidget(QWidget* parent = 0);
   virtual ~ctkActionsWidget();
@@ -81,6 +85,13 @@ public:
   void setMenuActionsVisible(bool show);
   bool areMenuActionsVisible()const;
 
+  /// Set the sortColumn property value.
+  /// \sa sortColumn
+  void setSortColumn(int column);
+  /// Return the sortColumn property value.
+  /// \sa sortColumn
+  int sortColumn()const;
+
   /// Return the unsorted/unfiltered model of all the actions
   QStandardItemModel* model()const;