# # # patch "guitone/src/model/Toposort.cpp" # from [f059e8338ac1c5174137d0a8ba26fbb2e1db4133] # to [2433a2796f929d4fe2d46cc72a4d83d92b9d0eca] # # patch "guitone/src/model/Toposort.h" # from [c71cfd90102481cc0ecc126dafa1b20bf5785e3e] # to [1bdc2ef1e7a21d4c24b6048b920b92b9ece52391] # ============================================================ --- guitone/src/model/Toposort.cpp f059e8338ac1c5174137d0a8ba26fbb2e1db4133 +++ guitone/src/model/Toposort.cpp 2433a2796f929d4fe2d46cc72a4d83d92b9d0eca @@ -24,7 +24,8 @@ #include #include -Toposort::Toposort(QObject *parent) : QSortFilterProxyModel(parent) +Toposort::Toposort(QObject *parent) : QSortFilterProxyModel(parent), + sortColumn(0), sortOrder(Qt::AscendingOrder) { ordRevisions = new RevisionMap(); mtnDelegate = new MonotoneDelegate(this); @@ -56,7 +57,7 @@ void Toposort::setSourceModel(QAbstractI ); } -bool Toposort::lessThan(const QModelIndex &left, const QModelIndex &right) +bool Toposort::lessThan(const QModelIndex &left, const QModelIndex &right) const { QString leftRev = sourceModel()->data(left).toString(); QString rightRev = sourceModel()->data(right).toString(); @@ -66,7 +67,6 @@ bool Toposort::lessThan(const QModelInde qDebug("Toposort::lessThan: one or both revisions not found,"); return false; } - qDebug("sorting %s and %s", qPrintable(leftRev), qPrintable(rightRev)); return ordRevisions->value(leftRev) < ordRevisions->value(rightRev); } @@ -76,6 +76,13 @@ bool Toposort::filterAcceptsRow(int sour return showRows; } +void Toposort::sort(int column, Qt::SortOrder order) +{ + sortOrder = order; + sortColumn = column; + QSortFilterProxyModel::sort(column, order); +} + void Toposort::sortModel() { showRows = false; @@ -88,7 +95,6 @@ void Toposort::sortModel() qDebug("Toposort::sortModel: no items found in source model"); return; } - qDebug("building rev list"); QStringList revs; do @@ -104,7 +110,6 @@ void Toposort::sortModel() } while (true); - qDebug("calling toposort"); QStringList cmd; cmd.append("toposort"); cmd << revs; @@ -125,8 +130,9 @@ void Toposort::parseOutput() showRows = true; filterChanged(); + clear(); - qDebug("Toposort:parseOutput: revisions sorted"); + qDebug("Toposort:parseOutput: sorting finished"); // signal that we've finished (whoever listens to that) emit sortingFinished(); ============================================================ --- guitone/src/model/Toposort.h c71cfd90102481cc0ecc126dafa1b20bf5785e3e +++ guitone/src/model/Toposort.h 1bdc2ef1e7a21d4c24b6048b920b92b9ece52391 @@ -36,18 +36,21 @@ public: Toposort(QObject*); virtual ~Toposort(); void setSourceModel(QAbstractItemModel *); + void sort(int, Qt::SortOrder); signals: void sortingFinished(); private: void parseOutput(); - bool lessThan(const QModelIndex &, const QModelIndex &); + bool lessThan(const QModelIndex &, const QModelIndex &) const; bool filterAcceptsRow(int, const QModelIndex &) const; RevisionMap * ordRevisions; MonotoneDelegate * mtnDelegate; bool showRows; + int sortColumn; + Qt::SortOrder sortOrder; private slots: void sortModel();