# # # patch "guitone/src/model/Changeset.cpp" # from [0693bfc11b59510a00961beb236da055219dd3eb] # to [4c5c242b954885b24d1c6d566a4850408076d36f] # # patch "guitone/src/model/Changeset.h" # from [fbc3054a4c65d837f6a125a68769443211785bd6] # to [74dcd9bfe67b89a639def7bea232b997ec810f30] # # patch "guitone/src/model/ChangesetModel.cpp" # from [f66f6d69e00e8e0a8abee189696fe1dde3ef0c8b] # to [134a45f84ecb59423000713342f0be7abbd3b4d8] # # patch "guitone/src/model/ChangesetModel.h" # from [a3d409b3a0c98567d4df0df21acfff1e55913223] # to [6b17d0d77c2f00d99bddeb36fe969d2b819956ab] # # patch "guitone/src/model/GetBranchLog.cpp" # from [163320c1ccf32c2fb964bb49ff5d93bfc1ab78b5] # to [30e7376a241fda04656713dfe6d688cf67ea2558] # ============================================================ --- guitone/src/model/Changeset.cpp 0693bfc11b59510a00961beb236da055219dd3eb +++ guitone/src/model/Changeset.cpp 4c5c242b954885b24d1c6d566a4850408076d36f @@ -20,10 +20,12 @@ #include "Changeset.h" -Changeset::Changeset(QString revision, QDate) +Changeset::Changeset(QString revsion, QDateTime date, QString author, QString changelog) { this->revision = revision; this->date = date; + this->author = author; + this->changelog = changelog; } QString Changeset::getRevision() @@ -31,9 +33,23 @@ QString Changeset::getRevision() return revision; } -QDate Changeset::getDate() +QDateTime Changeset::getDate() { return date; } +QString Changeset::getAuthor() +{ + return author; +} + +QString Changeset::getChangelogFlat() +{ + QString cl = changelog; + cl.replace("\n", ""); + cl.replace("\r", ""); + cl.replace("\t", ""); + return cl; +} + Changeset::~Changeset() {} ============================================================ --- guitone/src/model/Changeset.h fbc3054a4c65d837f6a125a68769443211785bd6 +++ guitone/src/model/Changeset.h 74dcd9bfe67b89a639def7bea232b997ec810f30 @@ -26,15 +26,19 @@ public: class Changeset { public: - Changeset(QString revsion, QDate date); + Changeset(QString revsion, QDateTime date, QString author, QString changelog); ~Changeset(); QString getRevision(); - QDate getDate(); + QDateTime getDate(); + QString getAuthor(); + QString getChangelogFlat(); private: QString revision; - QDate date; + QDateTime date; + QString changelog; + QString author; }; #endif //CHANGESET_H ============================================================ --- guitone/src/model/ChangesetModel.cpp f66f6d69e00e8e0a8abee189696fe1dde3ef0c8b +++ guitone/src/model/ChangesetModel.cpp 134a45f84ecb59423000713342f0be7abbd3b4d8 @@ -29,16 +29,27 @@ void ChangesetModel::receiveRevisions() void ChangesetModel::receiveRevisions() { - + //FIXME: Make it read only 50 items. But not yet until it works properly. + int i = branchMap[currentBranch].certsRead; + //int to = i + revPerReceive; + int to = rowCount(QModelIndex()); + while(i < to) + { + QModelIndex index = this->index(i, 0, QModelIndex()); + QString revision = branchMap[currentBranch].revisions[i]; + ChangesetCerts *certs = new ChangesetCerts(currentBranch, revision, index, this); + certs->readCerts(revision); + i++; + } } void ChangesetModel::setBranch(QString branch) { currentBranch = branch; - if(branchMap[currentBranch].count() == 0) + if(branchMap[currentBranch].revisions.count() == 0) { - GetBranchLog *glog = new GetBranchLog(branch, this); - + branchMap[currentBranch].certsRead = 0; + GetBranchLog *glog = new GetBranchLog(branch, this); } else reset(); @@ -47,11 +58,50 @@ void ChangesetModel::branchLogRead(GetBr void ChangesetModel::branchLogRead(GetBranchLog *glog) { QString branch = glog->getBranch(); - branchMap[branch] << glog->getRevisions(); - if(branch == currentBranch) reset(); + branchMap[branch].revisions << glog->getRevisions(); + if(branch == currentBranch) + { + receiveRevisions(); + reset(); + } delete glog; } +void ChangesetModel::changesetCertReady(ChangesetCerts *cert) +{ + QDateTime date; + QString author; + QString changelog; + QString key; + QString value; + int rows = cert->rowCount(QModelIndex()); + for(int i = 0; i < rows; i++) + { + key = cert->data(cert->index(i, 1, QModelIndex()), Qt::DisplayRole).toString(); + value = cert->data(cert->index(i, 2, QModelIndex()), Qt::DisplayRole).toString(); + if(key == "author") + { + author = value; + continue; + } + if(key == "changelog") + { + changelog = value; + continue; + } + if(key == "date") + { + date = QDateTime::fromString(value, "yyyy-MM-ddThh:mm:ss"); + continue; + } + } + Changeset *set = new Changeset(cert->getRevision(), date, author, changelog); + changesetMap[cert->getRevision()] = set; + QModelIndex idx = cert->getIndex(); + dataChanged(index(idx.row(), 0, QModelIndex()), index(idx.row(), 3, QModelIndex())); + delete cert; +} + int ChangesetModel::columnCount(const QModelIndex &parent) const { return 4; @@ -75,13 +125,23 @@ QVariant ChangesetModel::data(const QMod if (role == Qt::DisplayRole) { int row = index.row(); - if (branchMap[currentBranch].count() > row) + if (branchMap[currentBranch].revisions.count() > row) { int col = index.column(); + QString rev = branchMap[currentBranch].revisions[row]; switch(col) { + case(0): + if(changesetMap[rev] == NULL) break; + return QVariant(changesetMap[rev]->getDate()); + case(1): + if(changesetMap[rev] == NULL) break; + return QVariant(changesetMap[rev]->getAuthor()); + case(2): + if(changesetMap[rev] == NULL) break; + return QVariant(changesetMap[rev]->getChangelogFlat()); case(3): - return QVariant(branchMap[currentBranch][row]); + return QVariant(rev); } } } @@ -120,7 +180,7 @@ int ChangesetModel::rowCount(const QMode int ChangesetModel::rowCount(const QModelIndex& parent) const { if (!parent.isValid()) - return branchMap[currentBranch].count(); + return branchMap[currentBranch].revisions.count(); return 0; } @@ -131,7 +191,7 @@ QModelIndex ChangesetModel::index(int ro return QModelIndex(); } - QString *rev = new QString(branchMap[currentBranch][row]); + QString *rev = new QString(branchMap[currentBranch].revisions[row]); return createIndex(row, column, rev); } ============================================================ --- guitone/src/model/ChangesetModel.h a3d409b3a0c98567d4df0df21acfff1e55913223 +++ guitone/src/model/ChangesetModel.h 6b17d0d77c2f00d99bddeb36fe969d2b819956ab @@ -23,11 +23,66 @@ #include "Changeset.h" #include "GetBranchLog.h" +#include "Certs.h" #include +#include +struct BranchInfo +{ + QStringList revisions; + int certsRead; +}; + +class ChangesetCerts : public Certs +{ + Q_OBJECT +public: + ChangesetCerts(QString branch, QString revision, QModelIndex index, QObject *parent) : Certs(parent) + { + this->revision = revision; + this->idx = index; + this->branch = branch; + connect(this, SIGNAL(certsRead()), + this, SLOT(changesetCertsRead())); + connect(this, SIGNAL(changesetCertReady(ChangesetCerts *)), + parent, SLOT(changesetCertReady(ChangesetCerts *))); + } + + ~ChangesetCerts() {} + + QString getRevision() + { + return revision; + } + + QModelIndex getIndex() + { + return idx; + } + + QString getBranch() + { + return branch; + } + +signals: + void changesetCertReady(ChangesetCerts *); + +private: + QString revision; + QModelIndex idx; + QString branch; + +private slots: + void changesetCertsRead() + { + emit changesetCertReady(this); + } +}; + typedef QMap ChangesetMap; -typedef QMap BranchMap; +typedef QMap BranchMap; class ChangesetModel : public QAbstractItemModel { @@ -58,6 +113,7 @@ private slots: private slots: void branchLogRead(GetBranchLog *); + void changesetCertReady(ChangesetCerts *); }; #endif //CHANGESETMODE_H ============================================================ --- guitone/src/model/GetBranchLog.cpp 163320c1ccf32c2fb964bb49ff5d93bfc1ab78b5 +++ guitone/src/model/GetBranchLog.cpp 30e7376a241fda04656713dfe6d688cf67ea2558 @@ -70,7 +70,7 @@ void GetBranchLog::revisionsReady() int count = revSortModel->rowCount(QModelIndex()); for(int i = 0; i < count; i++) { - revSortModel->sort(0, Qt::AscendingOrder); + revSortModel->sort(0, Qt::DescendingOrder); revisions << revSortModel->QSortFilterProxyModel::data(revSortModel->index(i, 0, QModelIndex()), Qt::DisplayRole).toString(); } emit commandDone(this);