Make it possible to save diff editor contents

Task-number: QTCREATORBUG-12548
Task-number: QTCREATORBUG-12549
Change-Id: Ia27080cc689da48fc5401010e2277edaf0a01f4d
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
jkobus
2014-06-30 15:04:36 +02:00
committed by Jarek Kobus
parent 337c1b3b69
commit 656c3343ee
6 changed files with 108 additions and 30 deletions

View File

@@ -346,9 +346,7 @@ QString DiffUtils::makePatchLine(const QChar &startLineCharacter,
}
QString DiffUtils::makePatch(const ChunkData &chunkData,
const QString &leftFileName,
const QString &rightFileName,
bool lastChunk)
bool lastChunk)
{
QString diffText;
int leftLineCount = 0;
@@ -425,6 +423,16 @@ QString DiffUtils::makePatch(const ChunkData &chunkData,
diffText.prepend(chunkLine);
return diffText;
}
QString DiffUtils::makePatch(const ChunkData &chunkData,
const QString &leftFileName,
const QString &rightFileName,
bool lastChunk)
{
QString diffText = makePatch(chunkData, lastChunk);
const QString rightFileInfo = QLatin1String("+++ ") + rightFileName + QLatin1Char('\n');
const QString leftFileInfo = QLatin1String("--- ") + leftFileName + QLatin1Char('\n');
@@ -434,6 +442,39 @@ QString DiffUtils::makePatch(const ChunkData &chunkData,
return diffText;
}
QString DiffUtils::makePatch(const QList<FileData> &fileDataList)
{
QString diffText;
for (int i = 0; i < fileDataList.count(); i++) {
const FileData &fileData = fileDataList.at(i);
if (fileData.binaryFiles) {
const QString binaryLine = QLatin1String("Binary files ")
+ fileData.leftFileInfo.fileName
+ QLatin1String(" and ")
+ fileData.rightFileInfo.fileName
+ QLatin1String(" differ\n");
diffText += binaryLine;
} else {
const QString leftFileInfo = QLatin1String("--- ")
+ fileData.leftFileInfo.fileName + QLatin1Char('\n');
const QString rightFileInfo = QLatin1String("+++ ")
+ fileData.rightFileInfo.fileName + QLatin1Char('\n');
diffText += leftFileInfo;
diffText += rightFileInfo;
for (int j = 0; j < fileData.chunks.count(); j++) {
diffText += makePatch(fileData.chunks.at(j),
(j == fileData.chunks.count() - 1)
&& fileData.lastChunkAtTheEndOfFile);
}
}
}
return diffText;
}
static QList<RowData> readLines(const QString &patch,
bool ignoreWhitespace,
bool lastChunk,