diff options
author | Arno <am@disconnect.de> | 2010-06-18 16:49:43 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-06-18 16:49:43 +0200 |
commit | 514b5f95cb5399fb36dcd0561ebb3775609c7bb7 (patch) | |
tree | 9b31ab1c036e5cd233f90831828fa23821eaad12 | |
parent | b153f90a4c7f76a5ce5f4985bdbd687ba1602fdb (diff) | |
download | SheMov-514b5f95cb5399fb36dcd0561ebb3775609c7bb7.tar.gz SheMov-514b5f95cb5399fb36dcd0561ebb3775609c7bb7.tar.bz2 SheMov-514b5f95cb5399fb36dcd0561ebb3775609c7bb7.zip |
Sort for SeriesTreeModel/View
Sort Parts regarding to their part number.
-rw-r--r-- | seriestreewidget.cpp | 11 | ||||
-rw-r--r-- | seriestreewidget.h | 14 |
2 files changed, 23 insertions, 2 deletions
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index 553a534..9850138 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -38,7 +38,7 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ //the view mView = new SeriesTreeView; - mProxy = new QSortFilterProxyModel; + mProxy = new SeriesTreeSortModel(this); mModel = SmUberModelSingleton::instance()->seriesModel(); mProxy->setSourceModel(mModel); mView->setModel(mProxy); @@ -150,3 +150,12 @@ void SeriesTreeView::contextMenuEvent(QContextMenuEvent *e){ } contextMenu.exec(e->globalPos()); } + +SeriesTreeSortModel::SeriesTreeSortModel(QObject *parent) : QSortFilterProxyModel(parent) {} + +bool SeriesTreeSortModel::lessThan(const QModelIndex &left, const QModelIndex &right) const{ + if(left.data(SeriesTreeModel::TypeRole).toInt() == SeriesTreeModel::Part && right.data(SeriesTreeModel::TypeRole).toInt() == SeriesTreeModel::Part){ + return left.data(SeriesTreeModel::SeriesPartRole).toInt() < right.data(SeriesTreeModel::SeriesPartRole).toInt(); + } + return QSortFilterProxyModel::lessThan(left, right); +} diff --git a/seriestreewidget.h b/seriestreewidget.h index 4f23afb..38c111f 100644 --- a/seriestreewidget.h +++ b/seriestreewidget.h @@ -10,12 +10,14 @@ #include <QWidget> #include <QTreeView> +#include <QSortFilterProxyModel> class QLineEdit; class QPushButton; class QSortFilterProxyModel; class SeriesTreeModel; class SeriesTreeView; +class SeriesTreeSortModel; class SeriesTreeWidget : public QWidget { Q_OBJECT @@ -35,7 +37,7 @@ class SeriesTreeWidget : public QWidget { QLineEdit *mFilterEdit; QPushButton *mFilter; SeriesTreeView *mView; - QSortFilterProxyModel *mProxy; + SeriesTreeSortModel *mProxy; SeriesTreeModel *mModel; }; @@ -48,4 +50,14 @@ class SeriesTreeView : public QTreeView { virtual void contextMenuEvent(QContextMenuEvent *e); }; +class SeriesTreeSortModel : public QSortFilterProxyModel { + Q_OBJECT + public: + SeriesTreeSortModel(QObject *parent = 0); + ~SeriesTreeSortModel() {} + + protected: + virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; +}; + #endif |