Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef MDBMODELSORTER_H
- #define MDBMODELSORTER_H
- #include <QDomNodeList>
- #include <QHash>
- #include <QVariant>
- class MDBModelSorter
- {
- public:
- MDBModelSorter( const QDomNodeList& _nodes, QHash<int, int>& _mapping, int _column = 0, int role = Qt::DisplayRole );
- bool operator()( const QVariant& left, const QVariant& right ) const;
- template<class T> void sort( Qt::SortOrder order );
- protected:
- const QDomNodeList* nodes;
- QHash<int, int>* mapping;
- int column;
- int role;
- void sortAscending( const QMap<QVariant, int>& entries );
- void sortDescending( const QMap<QVariant, int>& entries );
- };
- template<class T> void MDBModelSorter::sort( Qt::SortOrder order )
- {
- QMap<QVariant, int> entries;
- // implicit sorting keeping native row
- for ( int i = 0; i < nodes->count(); i++ ) {
- const QDomNode release = nodes->at( i );
- const QVariant value = T::nodeData( release, column, role );
- entries.insertMulti( value, i );
- }
- // sorting
- switch ( order ) {
- case Qt::AscendingOrder:
- sortAscending( entries );
- break;
- case Qt::DescendingOrder:
- sortDescending( entries );
- break;
- }
- }
- #endif // MDBMODELSORTER_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement