#
#
# patch "res/forms/file_diff.ui"
# from [6608573b8c72a21523ea07b110636abda6a8c815]
# to [2bc8e89bcd40649e690c55899c588e156dd389d3]
#
# patch "res/forms/revision_diff.ui"
# from [ba6bea52826e407528f851b6d366c7f988228f56]
# to [f8f34ee08360a9c9d8e525324d1a61f54171d2bd]
#
# patch "src/model/ContentDiff.h"
# from [38035d0dec91320d0fa33e58ffc5238a11109852]
# to [90b48b45b61ac9e9d29d606df9203c8acbf5c3be]
#
# patch "src/view/dialogs/FileDiff.cpp"
# from [f9e9afd79cc644e82dc4987ca845ae2e37dcc473]
# to [1fa30bddffcd068da2466e07d76819cb0adf45f9]
#
# patch "src/view/dialogs/RevisionDiff.cpp"
# from [24e17c91450da9413c36beea817d744f313c2341]
# to [9fb6896e4bf29679a45b6be6c267ce6e377385a7]
#
# patch "src/view/dialogs/RevisionDiff.h"
# from [bce21301eb5596f48b36be6f32947ec6b5cfea71]
# to [b895f3c22dc1e2451ffc60cbff06a6e52c453c79]
#
============================================================
--- res/forms/file_diff.ui 6608573b8c72a21523ea07b110636abda6a8c815
+++ res/forms/file_diff.ui 2bc8e89bcd40649e690c55899c588e156dd389d3
@@ -10,7 +10,7 @@
- File differences of "%1"
+ Loading file differences
============================================================
--- res/forms/revision_diff.ui ba6bea52826e407528f851b6d366c7f988228f56
+++ res/forms/revision_diff.ui f8f34ee08360a9c9d8e525324d1a61f54171d2bd
@@ -9,6 +9,9 @@
500
+
+ Loading differences
+
:/icons/guitone.png:/icons/guitone.png
============================================================
--- src/model/ContentDiff.h 38035d0dec91320d0fa33e58ffc5238a11109852
+++ src/model/ContentDiff.h 90b48b45b61ac9e9d29d606df9203c8acbf5c3be
@@ -100,8 +100,10 @@ public:
int rowCount(const QModelIndex &) const;
int columnCount(const QModelIndex &) const;
- inline Diff * getDiff(QString fileName) { return diffParser->getDiff(fileName); }
- inline FileDiffs getAllDiffs() { return diffParser->getAllDiffs(); }
+ inline Diff * getDiff(QString fileName) const { return diffParser->getDiff(fileName); }
+ inline FileDiffs getAllDiffs() const { return diffParser->getAllDiffs(); }
+ inline QString getBase() const { return lastTask.getOptions().size() > 1 ? QString(lastTask.getOptions().at(1)) : ""; }
+ inline QString getTarget() const { return lastTask.getOptions().size() > 3 ? QString(lastTask.getOptions().at(3)) : ""; }
public slots:
void readDatabaseDiff(const DatabaseFile &, const QString &, const QString &, const QString &, const QString & encoding = QString());
============================================================
--- src/view/dialogs/FileDiff.cpp f9e9afd79cc644e82dc4987ca845ae2e37dcc473
+++ src/view/dialogs/FileDiff.cpp 1fa30bddffcd068da2466e07d76819cb0adf45f9
@@ -124,16 +124,8 @@ void FileDiff::forDatabase(const Databas
}
textEncoding->setCurrentIndex(textEncoding->findText(encoding));
- setWindowTitle(tr("File differences of \"%1\"").arg(fileName));
+ setWindowTitle(tr("Loading file differences"));
- firstRevision->setText(
- tr("only left (%1)").arg(base.left(12).append("..."))
- );
-
- secondRevision->setText(
- tr("only right (%1)").arg(target.left(12).append("..."))
- );
-
fileModel->readFileByName(db, fileName, base, encoding);
diffModel->readDatabaseDiff(db, fileName, base, target, encoding);
}
@@ -158,24 +150,8 @@ void FileDiff::forWorkspace(const Worksp
}
textEncoding->setCurrentIndex(textEncoding->findText(encoding));
- setWindowTitle(tr("File differences of \"%1\"").arg(fileName));
+ setWindowTitle(tr("Loading file differences"));
- QString left = tr("workspace parent");
- QString right = tr("workspace revision");
-
- if (!base.isEmpty())
- {
- left = base.left(12).append("...");
- }
-
- if (!target.isEmpty())
- {
- right = target.left(12).append("...");
- }
-
- firstRevision->setText(tr("only left (%1)").arg(left));
- secondRevision->setText(tr("only right (%1)").arg(right));
-
DatabaseFile db = MonotoneUtil::getDatabaseFile(ws);
if (base.isEmpty())
{
@@ -229,6 +205,24 @@ void FileDiff::applyDiff()
return;
}
+ setWindowTitle(tr("File differences of \"%1\"").arg(fileName));
+
+ QString left = tr("workspace parent"), right = tr("workspace revision");
+ QString base = diffModel->getBase(), target = diffModel->getTarget();
+
+ if (!base.isEmpty())
+ {
+ left = base.left(12).append("...");
+ }
+
+ if (!target.isEmpty())
+ {
+ right = target.left(12).append("...");
+ }
+
+ firstRevision->setText(tr("only left (%1)").arg(left));
+ secondRevision->setText(tr("only right (%1)").arg(right));
+
fileModel->applyDiff(diff);
diffStatusView->update();
}
============================================================
--- src/view/dialogs/RevisionDiff.cpp 24e17c91450da9413c36beea817d744f313c2341
+++ src/view/dialogs/RevisionDiff.cpp 9fb6896e4bf29679a45b6be6c267ce6e377385a7
@@ -36,6 +36,12 @@ RevisionDiff::RevisionDiff(QWidget * par
);
diffModel = new ContentDiff(this);
+
+ connect(
+ diffModel, SIGNAL(diffRead()),
+ this, SLOT(diffRead())
+ );
+
diffView->setModel(diffModel);
}
@@ -44,36 +50,44 @@ RevisionDiff::~RevisionDiff()
delete diffModel;
}
-void RevisionDiff::forDatabase(const DatabaseFile & db, const QString & filePath,
+void RevisionDiff::forDatabase(const DatabaseFile & db, const QString & path,
const QString & base, const QString & target)
{
baseRevision = base;
targetRevision = target;
+ filePath = path;
- QString left = base.left(12).append("...");
- QString right = target.left(12).append("...");
+ setWindowTitle(tr("Loading differences"));
- QString title;
- if (!filePath.isEmpty() && filePath != ".")
- title = tr("Differences between %1 and %2 in %3")
- .arg(left).arg(right).arg(filePath);
- else
- title = tr("Differences between %1 and %2")
- .arg(left).arg(right);
-
- setWindowTitle(title);
diffModel->readDatabaseDiff(db, filePath, base, target);
}
-void RevisionDiff::forWorkspace(const WorkspacePath & ws, const QString & filePath,
+void RevisionDiff::forWorkspace(const WorkspacePath & ws, const QString & path,
const QString & base, const QString & target)
{
baseRevision = base;
targetRevision = target;
+ filePath = path;
- QString left = tr("base revision");
- QString right = tr("workspace revision");
+ setWindowTitle(tr("Loading differences"));
+ diffModel->readWorkspaceDiff(ws, filePath, base, target);
+}
+
+void RevisionDiff::triggerFileDiff(const QModelIndex & index)
+{
+ ListLine * line = static_cast(index.internalPointer());
+ if (line->isFileLineAndDiffable())
+ {
+ emit fileDiff(line->fileName, baseRevision, targetRevision);
+ }
+}
+
+void RevisionDiff::diffRead()
+{
+ QString left = tr("base revision"), right = tr("workspace revision");
+ QString base = diffModel->getBase(), target = diffModel->getTarget();
+
if (!base.isEmpty())
{
left = base.left(12).append("...");
@@ -93,15 +107,5 @@ void RevisionDiff::forWorkspace(const Wo
.arg(left).arg(right);
setWindowTitle(title);
- diffModel->readWorkspaceDiff(ws, filePath, base, target);
}
-void RevisionDiff::triggerFileDiff(const QModelIndex & index)
-{
- ListLine * line = static_cast(index.internalPointer());
- if (line->isFileLineAndDiffable())
- {
- emit fileDiff(line->fileName, baseRevision, targetRevision);
- }
-}
-
============================================================
--- src/view/dialogs/RevisionDiff.h bce21301eb5596f48b36be6f32947ec6b5cfea71
+++ src/view/dialogs/RevisionDiff.h b895f3c22dc1e2451ffc60cbff06a6e52c453c79
@@ -40,9 +40,11 @@ private:
ContentDiff * diffModel;
QString baseRevision;
QString targetRevision;
+ QString filePath;
private slots:
void triggerFileDiff(const QModelIndex &);
+ void diffRead();
};
#endif