# # # patch "src/model/Toposort.cpp" # from [f2df41ab4bc3950601b11a5614806d707e5df180] # to [14e33beed3bd500077de471f195db59d9c0d2f72] # # patch "src/model/Toposort.h" # from [1bdc2ef1e7a21d4c24b6048b920b92b9ece52391] # to [b28121c09bb13270e08912d254a8915871fac293] # ============================================================ --- src/model/Toposort.cpp f2df41ab4bc3950601b11a5614806d707e5df180 +++ src/model/Toposort.cpp 14e33beed3bd500077de471f195db59d9c0d2f72 @@ -19,27 +19,25 @@ ***************************************************************************/ #include "Toposort.h" -#include "Monotone.h" #include #include -Toposort::Toposort(QObject *parent) : QSortFilterProxyModel(parent), - sortColumn(0), sortOrder(Qt::AscendingOrder) +Toposort::Toposort(QObject * parent, const QString & db) + : QSortFilterProxyModel(parent), AutomateCommand(db), + sortColumn(0), sortOrder(Qt::AscendingOrder) { ordRevisions = new RevisionMap(); - mtnDelegate = new MonotoneDelegate(this); showRows = false; } Toposort::~Toposort() { - if (ordRevisions) - { - ordRevisions->clear(); - delete ordRevisions; - } - delete mtnDelegate; + if (ordRevisions) + { + ordRevisions->clear(); + delete ordRevisions; + } } void Toposort::setSourceModel(QAbstractItemModel * source) @@ -57,7 +55,7 @@ void Toposort::setSourceModel(QAbstractI ); } -bool Toposort::lessThan(const QModelIndex &left, const QModelIndex &right) const +bool Toposort::lessThan(const QModelIndex & left, const QModelIndex & right) const { QString leftRev = sourceModel()->data(left).toString(); QString rightRev = sourceModel()->data(right).toString(); @@ -71,15 +69,17 @@ bool Toposort::lessThan(const QModelInde return ordRevisions->value(leftRev) < ordRevisions->value(rightRev); } -bool Toposort::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const +bool Toposort::filterAcceptsRow(int sourceRow, const QModelIndex & sourceParent) const { + Q_UNUSED(sourceRow); + Q_UNUSED(sourceParent); return showRows; } void Toposort::sort(int column, Qt::SortOrder order) { sortOrder = order; - sortColumn = column; + sortColumn = column; QSortFilterProxyModel::sort(column, order); } @@ -100,7 +100,7 @@ void Toposort::sortModel() do { QString rev = current.data().toString(); - // skip everything what does not look like a revision id + // skip everything that does not look like a revision id if (rev.size() == 40) { revs.append(rev); @@ -110,19 +110,20 @@ void Toposort::sortModel() } while (true); - QStringList cmd; - cmd.append("toposort"); - cmd << revs; - - if (!mtnDelegate->triggerCommand(cmd)) + MonotoneTask task(QStringList() << "toposort" << revs); + AutomateCommand::enqueueTask(task); +} + +void Toposort::processTaskResult(const MonotoneTask & task) +{ + if (task.getReturnCode() != 0) { - D("Cannot trigger toposort command"); + C(QString("Command returned with a non-zero return code (%1)") + .arg(task.getOutputUtf8())); + return; } -} - -void Toposort::parseOutput() -{ - QStringList sortedRevs(AutomateCommand::data.split("\n")); + + QStringList sortedRevs(task.getOutputUtf8().split("\n")); for (int i=0, j=sortedRevs.size(); iinsert(sortedRevs.at(i), i); ============================================================ --- src/model/Toposort.h 1bdc2ef1e7a21d4c24b6048b920b92b9ece52391 +++ src/model/Toposort.h b28121c09bb13270e08912d254a8915871fac293 @@ -18,11 +18,10 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef TOPOSOT_H -#define TOPOSOT_H +#ifndef TOPOSORT_H +#define TOPOSORT_H #include "AutomateCommand.h" -#include "MonotoneDelegate.h" #include #include @@ -31,9 +30,9 @@ class Toposort : public QSortFilterProxy class Toposort : public QSortFilterProxyModel, public AutomateCommand { - Q_OBJECT + Q_OBJECT public: - Toposort(QObject*); + Toposort(QObject *, const QString &); virtual ~Toposort(); void setSourceModel(QAbstractItemModel *); void sort(int, Qt::SortOrder); @@ -42,12 +41,11 @@ private: void sortingFinished(); private: - void parseOutput(); + void processTaskResult(const MonotoneTask &); bool lessThan(const QModelIndex &, const QModelIndex &) const; bool filterAcceptsRow(int, const QModelIndex &) const; RevisionMap * ordRevisions; - MonotoneDelegate * mtnDelegate; bool showRows; int sortColumn; Qt::SortOrder sortOrder; @@ -56,5 +54,5 @@ private slots: void sortModel(); }; -#endif //TOPOSOT_H +#endif