#
#
# patch "res/forms/changeset_browser.ui"
# from [bd83e32049a34fbc92ace307a7db4b77b1ce16a4]
# to [5a7e001d962135a3f120b356f96476eeb6d87eb8]
#
# patch "src/model/GetRevision.cpp"
# from [10a2cb967b01e82641b3dd7c7be9316db1adcbbe]
# to [5fb8d261fa465925f9ab9b61e9f9f6b06ffe9fe6]
#
# patch "src/model/GetRevision.h"
# from [b5bb677355b8c88fb1bf3096e92433576087ea77]
# to [77d9a435709a6ec72e7b5d2fd25286135a3cc3d6]
#
# patch "src/view/dialogs/ChangesetBrowser.cpp"
# from [7281ea4d20f313f0383c2fcf41c9e748427f9ad2]
# to [8bef25dfabd1c8bf365d48154d17f655910b0dd1]
#
# patch "src/view/dialogs/ChangesetBrowser.h"
# from [5fee47bec4ac82fe7a5ea7a091160fe02c423f3e]
# to [702cb80e34ccd1dd8d17521a4ade28b50743ca14]
#
# patch "src/view/dialogs/DatabaseDialogManager.cpp"
# from [bd233a55cd97ce0a3d96f4fd8a89408b63d600dd]
# to [7ae75ab5b5aebd9c7a33511c67b82f1e20828579]
#
============================================================
--- res/forms/changeset_browser.ui bd83e32049a34fbc92ace307a7db4b77b1ce16a4
+++ res/forms/changeset_browser.ui 5a7e001d962135a3f120b356f96476eeb6d87eb8
@@ -5,8 +5,8 @@
0
0
- 655
- 506
+ 760
+ 617
@@ -42,19 +42,39 @@
true
-
-
- true
-
-
- QAbstractItemView::NoSelection
-
-
- false
-
-
- false
-
+
+
+ -
+
+
-
+
+
+ Show changes against parent
+
+
+
+ -
+
+
+
+
+ -
+
+
+ true
+
+
+ QAbstractItemView::SingleSelection
+
+
+ false
+
+
+ false
+
+
+
+
============================================================
--- src/model/GetRevision.cpp 10a2cb967b01e82641b3dd7c7be9316db1adcbbe
+++ src/model/GetRevision.cpp 5fb8d261fa465925f9ab9b61e9f9f6b06ffe9fe6
@@ -175,7 +175,7 @@ void GetRevision::processTaskResult(cons
}
// set the first as the default parent against which changes are displayed
- changesAgainstParent = revision.changesAgainstParent.keys().at(0);
+ currentParentRevision = revision.changesAgainstParent.keys().at(0);
// reset the view
reset();
@@ -195,11 +195,11 @@ QVariant GetRevision::data(const QModelI
if (!index.isValid())
return QVariant();
- if (!revision.changesAgainstParent.contains(changesAgainstParent))
+ if (!revision.changesAgainstParent.contains(currentParentRevision))
return QVariant();
Change change =
- revision.changesAgainstParent[changesAgainstParent].at(index.row());
+ revision.changesAgainstParent[currentParentRevision].at(index.row());
if (role == Qt::DisplayRole)
{
@@ -258,19 +258,19 @@ int GetRevision::rowCount(const QModelIn
int GetRevision::rowCount(const QModelIndex & parent) const
{
Q_UNUSED(parent);
- if (!revision.changesAgainstParent.contains(changesAgainstParent))
+ if (!revision.changesAgainstParent.contains(currentParentRevision))
return 0;
- return revision.changesAgainstParent[changesAgainstParent].size();
+ return revision.changesAgainstParent[currentParentRevision].size();
}
QModelIndex GetRevision::index(int row, int column, const QModelIndex & parent) const
{
Q_UNUSED(parent);
- if (!revision.changesAgainstParent.contains(changesAgainstParent))
+ if (!revision.changesAgainstParent.contains(currentParentRevision))
return QModelIndex();
- if (row >= revision.changesAgainstParent[changesAgainstParent].size())
+ if (row >= revision.changesAgainstParent[currentParentRevision].size())
return QModelIndex();
return createIndex(row, column);
@@ -293,7 +293,7 @@ void GetRevision::showChangesAgainstPare
if (!parents.contains(parent)) return;
- changesAgainstParent = parent;
+ currentParentRevision = parent;
reset();
}
@@ -301,10 +301,10 @@ QMap >
{
QMap > fileMap;
- if (revision.changesAgainstParent.contains(changesAgainstParent))
+ if (revision.changesAgainstParent.contains(currentParentRevision))
{
QList changes =
- revision.changesAgainstParent.value(changesAgainstParent);
+ revision.changesAgainstParent.value(currentParentRevision);
foreach (Change ch, changes)
{
Stanza st = ch.stanza;
@@ -360,3 +360,8 @@ QString GetRevision::getRevisionText() c
return revision.print();
}
+QString GetRevision::getCurrentParentRevision() const
+{
+ return currentParentRevision;
+}
+
============================================================
--- src/model/GetRevision.h b5bb677355b8c88fb1bf3096e92433576087ea77
+++ src/model/GetRevision.h 77d9a435709a6ec72e7b5d2fd25286135a3cc3d6
@@ -152,6 +152,7 @@ public:
int columnCount(const QModelIndex &) const;
QMap > getChangedFiles() const;
QString getRevisionText() const;
+ QString getCurrentParentRevision() const;
public slots:
void readDatabaseRevision(const DatabaseFile &, const QString &);
@@ -166,7 +167,7 @@ private:
void processTaskResult(const MonotoneTask &);
Revision revision;
- QString changesAgainstParent;
+ QString currentParentRevision;
DatabaseFile databaseFile;
};
============================================================
--- src/view/dialogs/ChangesetBrowser.cpp 7281ea4d20f313f0383c2fcf41c9e748427f9ad2
+++ src/view/dialogs/ChangesetBrowser.cpp 8bef25dfabd1c8bf365d48154d17f655910b0dd1
@@ -57,6 +57,16 @@ ChangesetBrowser::ChangesetBrowser(QWidg
revisionView->setModel(revisionModel);
connect(
+ revisionModel, SIGNAL(revisionRead()),
+ this, SLOT(updateParentsList())
+ );
+
+ connect(
+ revisionParents, SIGNAL(currentIndexChanged(const QString &)),
+ revisionModel, SLOT(showChangesAgainstParent(const QString &))
+ );
+
+ connect(
changesets, SIGNAL(clicked(const QModelIndex &)),
this, SLOT(changesetsClicked(const QModelIndex &))
);
@@ -80,6 +90,11 @@ ChangesetBrowser::ChangesetBrowser(QWidg
changesets, SIGNAL(contextMenuRequested(const QModelIndexList &, const QPoint &)),
this, SLOT(contextMenuRequested(const QModelIndexList &, const QPoint &))
);
+
+ connect(
+ revisionView, SIGNAL(doubleClicked(const QModelIndex &)),
+ this, SLOT(changeViewDoubleClicked(const QModelIndex &))
+ );
}
void ChangesetBrowser::receiveAll()
@@ -122,9 +137,10 @@ void ChangesetBrowser::changesetsClicked
void ChangesetBrowser::changesetsClicked(const QModelIndex & idx)
{
QModelIndex revIdx = changesetModel->index(idx.row(), 3, QModelIndex());
- QString revision = changesetModel->data(revIdx, Qt::DisplayRole).toString();
+ currentRevision = changesetModel->data(revIdx, Qt::DisplayRole).toString();
changeLog->setHtml(changesetModel->data(revIdx, Qt::UserRole).toString());
- revisionModel->readDatabaseRevision(databaseFile, revision);
+ revisionModel->readDatabaseRevision(databaseFile, currentRevision);
+ revisionParents->clear();
}
void ChangesetBrowser::initTreeWidget()
@@ -192,3 +208,36 @@ void ChangesetBrowser::contextMenuReques
}
}
+void ChangesetBrowser::updateParentsList()
+{
+ revisionParents->addItems(revisionModel->getParentRevisions());
+}
+
+void ChangesetBrowser::changeViewDoubleClicked(const QModelIndex & index)
+{
+ if (!index.isValid()) return;
+
+ QModelIndex label, path;
+ if (index.column() == 0)
+ {
+ label = index;
+ path = index.sibling(index.row(), 1);
+ }
+ else
+ if (index.column() == 1)
+ {
+ label = index.sibling(index.row(), 0);
+ path = index;
+ }
+ else
+ I(false);
+
+ // not a patched file
+ if (label.data().toString() != QObject::tr("Patched"))
+ return;
+
+ emit diffFile(path.data().toString(),
+ revisionModel->getCurrentParentRevision(),
+ currentRevision);
+}
+
============================================================
--- src/view/dialogs/ChangesetBrowser.h 5fee47bec4ac82fe7a5ea7a091160fe02c423f3e
+++ src/view/dialogs/ChangesetBrowser.h 702cb80e34ccd1dd8d17521a4ade28b50743ca14
@@ -34,6 +34,7 @@ signals:
signals:
void revisionManifest(const QString &);
+ void diffFile(const QString &, const QString &, const QString &);
private slots:
void branchesClicked(const QModelIndex &);
@@ -44,6 +45,8 @@ private slots:
void receiveMore();
void changesetsDoubleClicked(const QModelIndex &);
void contextMenuRequested(const QModelIndexList &, const QPoint &);
+ void changeViewDoubleClicked(const QModelIndex &);
+ void updateParentsList();
private:
void initTreeWidget();
@@ -53,6 +56,7 @@ private:
Branches * branchModel;
ChangesetModel * changesetModel;
GetRevision * revisionModel;
+ QString currentRevision;
};
#endif
============================================================
--- src/view/dialogs/DatabaseDialogManager.cpp bd233a55cd97ce0a3d96f4fd8a89408b63d600dd
+++ src/view/dialogs/DatabaseDialogManager.cpp 7ae75ab5b5aebd9c7a33511c67b82f1e20828579
@@ -68,10 +68,16 @@ void DatabaseDialogManager::showChangese
if (!changesetBrowser)
{
changesetBrowser = new ChangesetBrowser(parentWidget(), databaseFile);
+
connect(
changesetBrowser, SIGNAL(revisionManifest(const QString &)),
this, SLOT(showRevisionManifest(const QString &))
);
+
+ connect(
+ changesetBrowser, SIGNAL(diffFile(const QString &, const QString &, const QString &)),
+ this, SLOT(showFileDiff(const QString &, const QString &, const QString &))
+ );
}
showDialog(changesetBrowser);