DiffEditor: Use DiffSide enum inside FileData

Change-Id: I4c18c52a9737cc46c3faeadf0abd5c4771463e0e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Jarek Kobus
2022-09-26 15:28:00 +02:00
parent 6dc412e255
commit f3a7299761
8 changed files with 88 additions and 99 deletions

View File

@@ -311,8 +311,8 @@ void DiffEditor::documentHasChanged()
m_entriesComboBox->clear(); m_entriesComboBox->clear();
for (const FileData &diffFile : diffFileList) { for (const FileData &diffFile : diffFileList) {
const DiffFileInfo &leftEntry = diffFile.leftFileInfo; const DiffFileInfo &leftEntry = diffFile.fileInfo[LeftSide];
const DiffFileInfo &rightEntry = diffFile.rightFileInfo; const DiffFileInfo &rightEntry = diffFile.fileInfo[RightSide];
const QString leftShortFileName = Utils::FilePath::fromString(leftEntry.fileName).fileName(); const QString leftShortFileName = Utils::FilePath::fromString(leftEntry.fileName).fileName();
const QString rightShortFileName = Utils::FilePath::fromString(rightEntry.fileName).fileName(); const QString rightShortFileName = Utils::FilePath::fromString(rightEntry.fileName).fileName();
QString itemText; QString itemText;
@@ -445,8 +445,8 @@ void DiffEditor::reloadHasFinished(bool success)
const int count = diffFileList.count(); const int count = diffFileList.count();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
const FileData &diffFile = diffFileList.at(i); const FileData &diffFile = diffFileList.at(i);
const DiffFileInfo &leftEntry = diffFile.leftFileInfo; const DiffFileInfo &leftEntry = diffFile.fileInfo[LeftSide];
const DiffFileInfo &rightEntry = diffFile.rightFileInfo; const DiffFileInfo &rightEntry = diffFile.fileInfo[RightSide];
if ((m_currentFileChunk.first.isEmpty() if ((m_currentFileChunk.first.isEmpty()
&& m_currentFileChunk.second.isEmpty() && m_currentFileChunk.second.isEmpty()
&& startupFile.endsWith(rightEntry.fileName)) && startupFile.endsWith(rightEntry.fileName))

View File

@@ -135,8 +135,8 @@ QString DiffEditorDocument::makePatch(int fileIndex, int chunkIndex,
const QString fileName = !overriddenFileName.isEmpty() const QString fileName = !overriddenFileName.isEmpty()
? overriddenFileName : revert ? overriddenFileName : revert
? fileData.rightFileInfo.fileName ? fileData.fileInfo[RightSide].fileName
: fileData.leftFileInfo.fileName; : fileData.fileInfo[LeftSide].fileName;
QString leftPrefix, rightPrefix; QString leftPrefix, rightPrefix;
if (addPrefix) { if (addPrefix) {

View File

@@ -90,8 +90,7 @@ public:
outputLeftDiffList, outputRightDiffList); outputLeftDiffList, outputRightDiffList);
fileData = DiffUtils::calculateContextData(chunkData, m_contextLineCount, 0); fileData = DiffUtils::calculateContextData(chunkData, m_contextLineCount, 0);
} }
fileData.leftFileInfo = reloadInfo.leftFileInfo; fileData.fileInfo = {reloadInfo.leftFileInfo, reloadInfo.rightFileInfo};
fileData.rightFileInfo = reloadInfo.rightFileInfo;
fileData.fileOperation = reloadInfo.fileOperation; fileData.fileOperation = reloadInfo.fileOperation;
fileData.binaryFiles = reloadInfo.binaryFiles; fileData.binaryFiles = reloadInfo.binaryFiles;
futureInterface.reportResult(fileData); futureInterface.reportResult(fileData);
@@ -838,8 +837,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testMakePatch()
QCOMPARE(resultList.count(), 1); QCOMPARE(resultList.count(), 1);
for (int i = 0; i < resultList.count(); i++) { for (int i = 0; i < resultList.count(); i++) {
const FileData &resultFileData = resultList.at(i); const FileData &resultFileData = resultList.at(i);
QCOMPARE(resultFileData.leftFileInfo.fileName, fileName); QCOMPARE(resultFileData.fileInfo[LeftSide].fileName, fileName);
QCOMPARE(resultFileData.rightFileInfo.fileName, fileName); QCOMPARE(resultFileData.fileInfo[RightSide].fileName, fileName);
QCOMPARE(resultFileData.chunks.count(), 1); QCOMPARE(resultFileData.chunks.count(), 1);
for (int j = 0; j < resultFileData.chunks.count(); j++) { for (int j = 0; j < resultFileData.chunks.count(); j++) {
const ChunkData &resultChunkData = resultFileData.chunks.at(j); const ChunkData &resultChunkData = resultFileData.chunks.at(j);
@@ -946,8 +945,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
; ;
FileData fileData1; FileData fileData1;
fileData1.leftFileInfo = DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "eab9e9b"); fileData1.fileInfo = {DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "eab9e9b"),
fileData1.rightFileInfo = DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "082c135"); DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "082c135")};
ChunkData chunkData1; ChunkData chunkData1;
chunkData1.startingLineNumber = {186, 186}; chunkData1.startingLineNumber = {186, 186};
QList<RowData> rows1; QList<RowData> rows1;
@@ -964,8 +963,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData1.chunks << chunkData1; fileData1.chunks << chunkData1;
FileData fileData2; FileData fileData2;
fileData2.leftFileInfo = DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("2f641c9")); fileData2.fileInfo = {DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("2f641c9")),
fileData2.rightFileInfo = DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("f8ff795")); DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("f8ff795"))};
ChunkData chunkData2; ChunkData chunkData2;
chunkData2.startingLineNumber = {463, 463}; chunkData2.startingLineNumber = {463, 463};
QList<RowData> rows2; QList<RowData> rows2;
@@ -985,8 +984,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData2.chunks << chunkData2; fileData2.chunks << chunkData2;
FileData fileData3; FileData fileData3;
fileData3.leftFileInfo = DiffFileInfo("new", "0000000"); fileData3.fileInfo = {DiffFileInfo("new", "0000000"), DiffFileInfo("new", "257cc56")};
fileData3.rightFileInfo = DiffFileInfo("new", "257cc56");
fileData3.fileOperation = FileData::NewFile; fileData3.fileOperation = FileData::NewFile;
ChunkData chunkData3; ChunkData chunkData3;
chunkData3.startingLineNumber = {-1, 0}; chunkData3.startingLineNumber = {-1, 0};
@@ -998,8 +996,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData3.chunks << chunkData3; fileData3.chunks << chunkData3;
FileData fileData4; FileData fileData4;
fileData4.leftFileInfo = DiffFileInfo("deleted", "257cc56"); fileData4.fileInfo = {DiffFileInfo("deleted", "257cc56"), DiffFileInfo("deleted", "0000000")};
fileData4.rightFileInfo = DiffFileInfo("deleted", "0000000");
fileData4.fileOperation = FileData::DeleteFile; fileData4.fileOperation = FileData::DeleteFile;
ChunkData chunkData4; ChunkData chunkData4;
chunkData4.startingLineNumber = {0, -1}; chunkData4.startingLineNumber = {0, -1};
@@ -1011,18 +1008,16 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData4.chunks << chunkData4; fileData4.chunks << chunkData4;
FileData fileData5; FileData fileData5;
fileData5.leftFileInfo = DiffFileInfo("empty", "0000000"); fileData5.fileInfo = {DiffFileInfo("empty", "0000000"), DiffFileInfo("empty", "e69de29")};
fileData5.rightFileInfo = DiffFileInfo("empty", "e69de29");
fileData5.fileOperation = FileData::NewFile; fileData5.fileOperation = FileData::NewFile;
FileData fileData6; FileData fileData6;
fileData6.leftFileInfo = DiffFileInfo("empty", "e69de29"); fileData6.fileInfo = {DiffFileInfo("empty", "e69de29"), DiffFileInfo("empty", "0000000")};
fileData6.rightFileInfo = DiffFileInfo("empty", "0000000");
fileData6.fileOperation = FileData::DeleteFile; fileData6.fileOperation = FileData::DeleteFile;
FileData fileData7; FileData fileData7;
fileData7.leftFileInfo = DiffFileInfo("file a.txt", "1234567"); fileData7.fileInfo = {DiffFileInfo("file a.txt", "1234567"),
fileData7.rightFileInfo = DiffFileInfo("file b.txt", "9876543"); DiffFileInfo("file b.txt", "9876543")};
fileData7.fileOperation = FileData::CopyFile; fileData7.fileOperation = FileData::CopyFile;
ChunkData chunkData7; ChunkData chunkData7;
chunkData7.startingLineNumber = {19, 19}; chunkData7.startingLineNumber = {19, 19};
@@ -1034,13 +1029,11 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData7.chunks << chunkData7; fileData7.chunks << chunkData7;
FileData fileData8; FileData fileData8;
fileData8.leftFileInfo = DiffFileInfo("file a.txt"); fileData8.fileInfo = {DiffFileInfo("file a.txt"), DiffFileInfo("file b.txt")};
fileData8.rightFileInfo = DiffFileInfo("file b.txt");
fileData8.fileOperation = FileData::RenameFile; fileData8.fileOperation = FileData::RenameFile;
FileData fileData9; FileData fileData9;
fileData9.leftFileInfo = DiffFileInfo("file.txt", "1234567"); fileData9.fileInfo = {DiffFileInfo("file.txt", "1234567"), DiffFileInfo("file.txt", "9876543")};
fileData9.rightFileInfo = DiffFileInfo("file.txt", "9876543");
fileData9.chunks << chunkData7; fileData9.chunks << chunkData7;
QList<FileData> fileDataList1; QList<FileData> fileDataList1;
fileDataList1 << fileData1 << fileData2 << fileData3 << fileData4 << fileData5 fileDataList1 << fileData1 << fileData2 << fileData3 << fileData4 << fileData5
@@ -1061,8 +1054,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
" C\n" " C\n"
"+\n"; "+\n";
fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567"); fileData1.fileInfo = {DiffFileInfo("file foo.txt", "1234567"),
fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543"); DiffFileInfo("file foo.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile; fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {49, 49}; chunkData1.startingLineNumber = {49, 49};
rows1.clear(); rows1.clear();
@@ -1091,8 +1084,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"\\ No newline at end of file\n" "\\ No newline at end of file\n"
"+ABCD\n"; "+ABCD\n";
fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567"); fileData1.fileInfo = {DiffFileInfo("file foo.txt", "1234567"),
fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543"); DiffFileInfo("file foo.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile; fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {0, 0}; chunkData1.startingLineNumber = {0, 0};
rows1.clear(); rows1.clear();
@@ -1126,8 +1119,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"+F\n" "+F\n"
; ;
fileData1.leftFileInfo = DiffFileInfo("difftest.txt", "1234567"); fileData1.fileInfo = {DiffFileInfo("difftest.txt", "1234567"),
fileData1.rightFileInfo = DiffFileInfo("difftest.txt", "9876543"); DiffFileInfo("difftest.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile; fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {1, 1}; chunkData1.startingLineNumber = {1, 1};
rows1.clear(); rows1.clear();
@@ -1167,8 +1160,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"+EFGH\n" "+EFGH\n"
"\\ No newline at end of file\n"; "\\ No newline at end of file\n";
fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567"); fileData1.fileInfo = {DiffFileInfo("file foo.txt", "1234567"),
fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543"); DiffFileInfo("file foo.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile; fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {0, 0}; chunkData1.startingLineNumber = {0, 0};
rows1.clear(); rows1.clear();
@@ -1209,12 +1202,12 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
; ;
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/texteditor/basetextdocument.h"); fileData1.fileInfo = {DiffFileInfo("src/plugins/texteditor/basetextdocument.h"),
fileData1.rightFileInfo = DiffFileInfo("src/plugins/texteditor/textdocument.h"); DiffFileInfo("src/plugins/texteditor/textdocument.h")};
fileData1.fileOperation = FileData::RenameFile; fileData1.fileOperation = FileData::RenameFile;
fileData2 = FileData(); fileData2 = FileData();
fileData2.leftFileInfo = DiffFileInfo("src/plugins/texteditor/basetextdocumentlayout.cpp", "0121933"); fileData2.fileInfo = {DiffFileInfo("src/plugins/texteditor/basetextdocumentlayout.cpp", "0121933"),
fileData2.rightFileInfo = DiffFileInfo("src/plugins/texteditor/textdocumentlayout.cpp", "01cc3a0"); DiffFileInfo("src/plugins/texteditor/textdocumentlayout.cpp", "01cc3a0")};
fileData2.fileOperation = FileData::RenameFile; fileData2.fileOperation = FileData::RenameFile;
chunkData2.startingLineNumber = {1, 1}; chunkData2.startingLineNumber = {1, 1};
rows2.clear(); rows2.clear();
@@ -1244,8 +1237,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"+Subproject commit eda76354077a427d692fee05479910de31040d3f-dirty\n" "+Subproject commit eda76354077a427d692fee05479910de31040d3f-dirty\n"
; ;
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/shared/qbs"); fileData1.fileInfo = {DiffFileInfo("src/shared/qbs"), DiffFileInfo("src/shared/qbs")};
fileData1.rightFileInfo = DiffFileInfo("src/shared/qbs");
chunkData1.startingLineNumber = {0, 0}; chunkData1.startingLineNumber = {0, 0};
rows1.clear(); rows1.clear();
rows1 << RowData(_("Subproject commit eda76354077a427d692fee05479910de31040d3f"), rows1 << RowData(_("Subproject commit eda76354077a427d692fee05479910de31040d3f"),
@@ -1278,8 +1270,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
; ;
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "0000000"); fileData1.fileInfo = {DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "0000000"),
fileData1.rightFileInfo = DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "c5132b4"); DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "c5132b4")};
fileData1.fileOperation = FileData::NewFile; fileData1.fileOperation = FileData::NewFile;
chunkData1 = ChunkData(); chunkData1 = ChunkData();
chunkData1.startingLineNumber = {-1, 0}; chunkData1.startingLineNumber = {-1, 0};
@@ -1289,13 +1281,13 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
chunkData1.rows = rows1; chunkData1.rows = rows1;
fileData1.chunks << chunkData1; fileData1.chunks << chunkData1;
fileData2 = FileData(); fileData2 = FileData();
fileData2.leftFileInfo = DiffFileInfo("demos/arthurplugin/bg1.jpg", "0000000"); fileData2.fileInfo = {DiffFileInfo("demos/arthurplugin/bg1.jpg", "0000000"),
fileData2.rightFileInfo = DiffFileInfo("demos/arthurplugin/bg1.jpg", "dfc7cee"); DiffFileInfo("demos/arthurplugin/bg1.jpg", "dfc7cee")};
fileData2.fileOperation = FileData::NewFile; fileData2.fileOperation = FileData::NewFile;
fileData2.binaryFiles = true; fileData2.binaryFiles = true;
fileData3 = FileData(); fileData3 = FileData();
fileData3.leftFileInfo = DiffFileInfo("demos/arthurplugin/flower.jpg", "0000000"); fileData3.fileInfo = {DiffFileInfo("demos/arthurplugin/flower.jpg", "0000000"),
fileData3.rightFileInfo = DiffFileInfo("demos/arthurplugin/flower.jpg", "f8e022c"); DiffFileInfo("demos/arthurplugin/flower.jpg", "f8e022c")};
fileData3.fileOperation = FileData::NewFile; fileData3.fileOperation = FileData::NewFile;
fileData3.binaryFiles = true; fileData3.binaryFiles = true;
@@ -1312,8 +1304,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
; ;
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("script.sh"); fileData1.fileInfo = {DiffFileInfo("script.sh"), DiffFileInfo("script.sh")};
fileData1.rightFileInfo = DiffFileInfo("script.sh");
fileData1.fileOperation = FileData::ChangeMode; fileData1.fileOperation = FileData::ChangeMode;
QList<FileData> fileDataList9; QList<FileData> fileDataList9;
@@ -1332,8 +1323,7 @@ rename to new.sh
; ;
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("old.sh"); fileData1.fileInfo = {DiffFileInfo("old.sh"), DiffFileInfo("new.sh")};
fileData1.rightFileInfo = DiffFileInfo("new.sh");
fileData1.fileOperation = FileData::RenameFile; fileData1.fileOperation = FileData::RenameFile;
QList<FileData> fileDataList10; QList<FileData> fileDataList10;
@@ -1350,8 +1340,8 @@ rename to new.sh
"+++ src/plugins/subversion/subversioneditor.cpp\t(revision 0)\n" "+++ src/plugins/subversion/subversioneditor.cpp\t(revision 0)\n"
"@@ -0,0 +125 @@\n\n"; "@@ -0,0 +125 @@\n\n";
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); fileData1.fileInfo = {DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"),
fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); DiffFileInfo("src/plugins/subversion/subversioneditor.cpp")};
chunkData1 = ChunkData(); chunkData1 = ChunkData();
chunkData1.startingLineNumber = {-1, 124}; chunkData1.startingLineNumber = {-1, 124};
fileData1.chunks << chunkData1; fileData1.chunks << chunkData1;
@@ -1369,8 +1359,8 @@ rename to new.sh
"+++ src/plugins/subversion/subversioneditor.cpp\t(working copy)\n" "+++ src/plugins/subversion/subversioneditor.cpp\t(working copy)\n"
"@@ -1,125 +0,0 @@\n\n"; "@@ -1,125 +0,0 @@\n\n";
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); fileData1.fileInfo = {DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"),
fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); DiffFileInfo("src/plugins/subversion/subversioneditor.cpp")};
chunkData1 = ChunkData(); chunkData1 = ChunkData();
chunkData1.startingLineNumber = {0, -1}; chunkData1.startingLineNumber = {0, -1};
fileData1.chunks << chunkData1; fileData1.chunks << chunkData1;
@@ -1388,8 +1378,8 @@ rename to new.sh
"+++ src/plugins/subversion/subversioneditor.cpp\t(working copy)\n" "+++ src/plugins/subversion/subversioneditor.cpp\t(working copy)\n"
"@@ -120,7 +120,7 @@\n\n"; "@@ -120,7 +120,7 @@\n\n";
fileData1 = FileData(); fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); fileData1.fileInfo = {DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"),
fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"); DiffFileInfo("src/plugins/subversion/subversioneditor.cpp")};
chunkData1 = ChunkData(); chunkData1 = ChunkData();
chunkData1.startingLineNumber = {119, 119}; chunkData1.startingLineNumber = {119, 119};
fileData1.chunks << chunkData1; fileData1.chunks << chunkData1;
@@ -1412,10 +1402,10 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch()
for (int i = 0; i < fileDataList.count(); i++) { for (int i = 0; i < fileDataList.count(); i++) {
const FileData &origFileData = fileDataList.at(i); const FileData &origFileData = fileDataList.at(i);
const FileData &resultFileData = result.at(i); const FileData &resultFileData = result.at(i);
QCOMPARE(resultFileData.leftFileInfo.fileName, origFileData.leftFileInfo.fileName); QCOMPARE(resultFileData.fileInfo[LeftSide].fileName, origFileData.fileInfo[LeftSide].fileName);
QCOMPARE(resultFileData.leftFileInfo.typeInfo, origFileData.leftFileInfo.typeInfo); QCOMPARE(resultFileData.fileInfo[LeftSide].typeInfo, origFileData.fileInfo[LeftSide].typeInfo);
QCOMPARE(resultFileData.rightFileInfo.fileName, origFileData.rightFileInfo.fileName); QCOMPARE(resultFileData.fileInfo[RightSide].fileName, origFileData.fileInfo[RightSide].fileName);
QCOMPARE(resultFileData.rightFileInfo.typeInfo, origFileData.rightFileInfo.typeInfo); QCOMPARE(resultFileData.fileInfo[RightSide].typeInfo, origFileData.fileInfo[RightSide].typeInfo);
QCOMPARE(resultFileData.chunks.count(), origFileData.chunks.count()); QCOMPARE(resultFileData.chunks.count(), origFileData.chunks.count());
QCOMPARE(resultFileData.fileOperation, origFileData.fileOperation); QCOMPARE(resultFileData.fileOperation, origFileData.fileOperation);
for (int j = 0; j < origFileData.chunks.count(); j++) { for (int j = 0; j < origFileData.chunks.count(); j++) {

View File

@@ -150,11 +150,11 @@ void DiffEditorWidgetController::patch(bool revert, int fileIndex, int chunkInde
const FileData fileData = m_contextFileData.at(fileIndex); const FileData fileData = m_contextFileData.at(fileIndex);
const QString fileName = revert const QString fileName = revert
? fileData.rightFileInfo.fileName ? fileData.fileInfo[RightSide].fileName
: fileData.leftFileInfo.fileName; : fileData.fileInfo[LeftSide].fileName;
const DiffFileInfo::PatchBehaviour patchBehaviour = revert const DiffFileInfo::PatchBehaviour patchBehaviour = revert
? fileData.rightFileInfo.patchBehaviour ? fileData.fileInfo[RightSide].patchBehaviour
: fileData.leftFileInfo.patchBehaviour; : fileData.fileInfo[LeftSide].patchBehaviour;
const FilePath workingDirectory = m_document->baseDirectory().isEmpty() const FilePath workingDirectory = m_document->baseDirectory().isEmpty()
? FilePath::fromString(fileName).absolutePath() ? FilePath::fromString(fileName).absolutePath()
@@ -270,7 +270,7 @@ ChunkData DiffEditorWidgetController::chunkData(int fileIndex, int chunkIndex) c
bool DiffEditorWidgetController::fileNamesAreDifferent(int fileIndex) const bool DiffEditorWidgetController::fileNamesAreDifferent(int fileIndex) const
{ {
const FileData fileData = m_contextFileData.at(fileIndex); const FileData fileData = m_contextFileData.at(fileIndex);
return fileData.leftFileInfo.fileName != fileData.rightFileInfo.fileName; return fileData.fileInfo[LeftSide].fileName != fileData.fileInfo[RightSide].fileName;
} }
void DiffEditorWidgetController::addApplyAction(QMenu *menu, int fileIndex, int chunkIndex) void DiffEditorWidgetController::addApplyAction(QMenu *menu, int fileIndex, int chunkIndex)

View File

@@ -470,7 +470,7 @@ static QString leftFileName(const FileData &fileData, unsigned formatFlags)
} else { } else {
if (formatFlags & DiffUtils::AddLevel) if (formatFlags & DiffUtils::AddLevel)
str << "a/"; str << "a/";
str << fileData.leftFileInfo.fileName; str << fileData.fileInfo[LeftSide].fileName;
} }
return diffText; return diffText;
} }
@@ -484,7 +484,7 @@ static QString rightFileName(const FileData &fileData, unsigned formatFlags)
} else { } else {
if (formatFlags & DiffUtils::AddLevel) if (formatFlags & DiffUtils::AddLevel)
str << "b/"; str << "b/";
str << fileData.rightFileInfo.fileName; str << fileData.fileInfo[RightSide].fileName;
} }
return diffText; return diffText;
} }
@@ -497,8 +497,8 @@ QString DiffUtils::makePatch(const QList<FileData> &fileDataList, unsigned forma
for (int i = 0; i < fileDataList.size(); i++) { for (int i = 0; i < fileDataList.size(); i++) {
const FileData &fileData = fileDataList.at(i); const FileData &fileData = fileDataList.at(i);
if (formatFlags & GitFormat) { if (formatFlags & GitFormat) {
str << "diff --git a/" << fileData.leftFileInfo.fileName str << "diff --git a/" << fileData.fileInfo[LeftSide].fileName
<< " b/" << fileData.rightFileInfo.fileName << '\n'; << " b/" << fileData.fileInfo[RightSide].fileName << '\n';
} }
if (fileData.fileOperation == FileData::NewFile if (fileData.fileOperation == FileData::NewFile
|| fileData.fileOperation == FileData::DeleteFile) { // git only? || fileData.fileOperation == FileData::DeleteFile) { // git only?
@@ -508,7 +508,7 @@ QString DiffUtils::makePatch(const QList<FileData> &fileDataList, unsigned forma
str << "deleted"; str << "deleted";
str << " file mode 100644\n"; str << " file mode 100644\n";
} }
str << "index " << fileData.leftFileInfo.typeInfo << ".." << fileData.rightFileInfo.typeInfo; str << "index " << fileData.fileInfo[LeftSide].typeInfo << ".." << fileData.fileInfo[RightSide].typeInfo;
if (fileData.fileOperation == FileData::ChangeFile) if (fileData.fileOperation == FileData::ChangeFile)
str << " 100644"; str << " 100644";
str << "\n"; str << "\n";
@@ -853,13 +853,13 @@ static FileData readDiffHeaderAndChunks(QStringView headerAndChunks, bool *ok)
const QRegularExpressionMatch leftMatch = leftFileRegExp.match(patch); const QRegularExpressionMatch leftMatch = leftFileRegExp.match(patch);
if (leftMatch.hasMatch() && leftMatch.capturedStart() == 0) { if (leftMatch.hasMatch() && leftMatch.capturedStart() == 0) {
patch = patch.mid(leftMatch.capturedEnd()); patch = patch.mid(leftMatch.capturedEnd());
fileData.leftFileInfo.fileName = leftMatch.captured(1); fileData.fileInfo[LeftSide].fileName = leftMatch.captured(1);
// followed by rightFileRegExp // followed by rightFileRegExp
const QRegularExpressionMatch rightMatch = rightFileRegExp.match(patch); const QRegularExpressionMatch rightMatch = rightFileRegExp.match(patch);
if (rightMatch.hasMatch() && rightMatch.capturedStart() == 0) { if (rightMatch.hasMatch() && rightMatch.capturedStart() == 0) {
patch = patch.mid(rightMatch.capturedEnd()); patch = patch.mid(rightMatch.capturedEnd());
fileData.rightFileInfo.fileName = rightMatch.captured(1); fileData.fileInfo[RightSide].fileName = rightMatch.captured(1);
fileData.chunks = readChunks(patch, fileData.chunks = readChunks(patch,
&fileData.lastChunkAtTheEndOfFile, &fileData.lastChunkAtTheEndOfFile,
@@ -869,8 +869,8 @@ static FileData readDiffHeaderAndChunks(QStringView headerAndChunks, bool *ok)
// or by binaryRegExp // or by binaryRegExp
const QRegularExpressionMatch binaryMatch = binaryRegExp.match(patch); const QRegularExpressionMatch binaryMatch = binaryRegExp.match(patch);
if (binaryMatch.hasMatch() && binaryMatch.capturedStart() == 0) { if (binaryMatch.hasMatch() && binaryMatch.capturedStart() == 0) {
fileData.leftFileInfo.fileName = binaryMatch.captured(1); fileData.fileInfo[LeftSide].fileName = binaryMatch.captured(1);
fileData.rightFileInfo.fileName = binaryMatch.captured(2); fileData.fileInfo[RightSide].fileName = binaryMatch.captured(2);
fileData.binaryFiles = true; fileData.binaryFiles = true;
readOk = true; readOk = true;
} }
@@ -1012,12 +1012,12 @@ static bool detectIndexAndBinary(QStringView patch, FileData *fileData, QStringV
const int dotsPosition = indices.indexOf(QStringLiteral("..")); const int dotsPosition = indices.indexOf(QStringLiteral(".."));
if (dotsPosition < 0) if (dotsPosition < 0)
return false; return false;
fileData->leftFileInfo.typeInfo = indices.left(dotsPosition).toString(); fileData->fileInfo[LeftSide].typeInfo = indices.left(dotsPosition).toString();
// if there is no space we take the remaining string // if there is no space we take the remaining string
const int spacePosition = indices.indexOf(QChar::Space, dotsPosition + 2); const int spacePosition = indices.indexOf(QChar::Space, dotsPosition + 2);
const int length = spacePosition < 0 ? -1 : spacePosition - dotsPosition - 2; const int length = spacePosition < 0 ? -1 : spacePosition - dotsPosition - 2;
fileData->rightFileInfo.typeInfo = indices.mid(dotsPosition + 2, length).toString(); fileData->fileInfo[RightSide].typeInfo = indices.mid(dotsPosition + 2, length).toString();
*remainingPatch = afterNextLine; *remainingPatch = afterNextLine;
} else if (fileData->fileOperation != FileData::ChangeFile) { } else if (fileData->fileOperation != FileData::ChangeFile) {
@@ -1034,9 +1034,9 @@ static bool detectIndexAndBinary(QStringView patch, FileData *fileData, QStringV
const QString devNull("/dev/null"); const QString devNull("/dev/null");
const QString leftFileName = fileData->fileOperation == FileData::NewFile const QString leftFileName = fileData->fileOperation == FileData::NewFile
? devNull : QLatin1String("a/") + fileData->leftFileInfo.fileName; ? devNull : QLatin1String("a/") + fileData->fileInfo[LeftSide].fileName;
const QString rightFileName = fileData->fileOperation == FileData::DeleteFile const QString rightFileName = fileData->fileOperation == FileData::DeleteFile
? devNull : QLatin1String("b/") + fileData->rightFileInfo.fileName; ? devNull : QLatin1String("b/") + fileData->fileInfo[RightSide].fileName;
const QString binaryLine = "Binary files " const QString binaryLine = "Binary files "
+ leftFileName + " and " + leftFileName + " and "
@@ -1116,7 +1116,7 @@ static bool detectFileData(QStringView patch, FileData *fileData, QStringView *r
// change / new / delete // change / new / delete
fileData->fileOperation = FileData::ChangeFile; fileData->fileOperation = FileData::ChangeFile;
fileData->leftFileInfo.fileName = fileData->rightFileInfo.fileName = commonFileName.toString(); fileData->fileInfo[LeftSide].fileName = fileData->fileInfo[RightSide].fileName = commonFileName.toString();
QStringView afterSecondLine; QStringView afterSecondLine;
const QStringView secondLine = readLine(afterDiffGit, &afterSecondLine, &hasNewLine); const QStringView secondLine = readLine(afterDiffGit, &afterSecondLine, &hasNewLine);
@@ -1172,10 +1172,10 @@ static bool detectFileData(QStringView patch, FileData *fileData, QStringView *r
const QLatin1String renameFrom("rename from "); const QLatin1String renameFrom("rename from ");
if (copyRenameFrom.startsWith(copyFrom)) { if (copyRenameFrom.startsWith(copyFrom)) {
fileData->fileOperation = FileData::CopyFile; fileData->fileOperation = FileData::CopyFile;
fileData->leftFileInfo.fileName = copyRenameFrom.mid(copyFrom.size()).toString(); fileData->fileInfo[LeftSide].fileName = copyRenameFrom.mid(copyFrom.size()).toString();
} else if (copyRenameFrom.startsWith(renameFrom)) { } else if (copyRenameFrom.startsWith(renameFrom)) {
fileData->fileOperation = FileData::RenameFile; fileData->fileOperation = FileData::RenameFile;
fileData->leftFileInfo.fileName = copyRenameFrom.mid(renameFrom.size()).toString(); fileData->fileInfo[LeftSide].fileName = copyRenameFrom.mid(renameFrom.size()).toString();
} else { } else {
return false; return false;
} }
@@ -1189,9 +1189,9 @@ static bool detectFileData(QStringView patch, FileData *fileData, QStringView *r
const QLatin1String copyTo("copy to "); const QLatin1String copyTo("copy to ");
const QLatin1String renameTo("rename to "); const QLatin1String renameTo("rename to ");
if (fileData->fileOperation == FileData::CopyFile && copyRenameTo.startsWith(copyTo)) { if (fileData->fileOperation == FileData::CopyFile && copyRenameTo.startsWith(copyTo)) {
fileData->rightFileInfo.fileName = copyRenameTo.mid(copyTo.size()).toString(); fileData->fileInfo[RightSide].fileName = copyRenameTo.mid(copyTo.size()).toString();
} else if (fileData->fileOperation == FileData::RenameFile && copyRenameTo.startsWith(renameTo)) { } else if (fileData->fileOperation == FileData::RenameFile && copyRenameTo.startsWith(renameTo)) {
fileData->rightFileInfo.fileName = copyRenameTo.mid(renameTo.size()).toString(); fileData->fileInfo[RightSide].fileName = copyRenameTo.mid(renameTo.size()).toString();
} else { } else {
return false; return false;
} }

View File

@@ -104,8 +104,7 @@ public:
FileData() = default; FileData() = default;
FileData(const ChunkData &chunkData) { chunks.append(chunkData); } FileData(const ChunkData &chunkData) { chunks.append(chunkData); }
QList<ChunkData> chunks; QList<ChunkData> chunks;
DiffFileInfo leftFileInfo; std::array<DiffFileInfo, SideCount> fileInfo{};
DiffFileInfo rightFileInfo;
FileOperation fileOperation = ChangeFile; FileOperation fileOperation = ChangeFile;
bool binaryFiles = false; bool binaryFiles = false;
bool lastChunkAtTheEndOfFile = false; bool lastChunkAtTheEndOfFile = false;

View File

@@ -892,8 +892,8 @@ void SideBySideDiffEditorWidget::showDiff()
foldingIndent.insert(blockNumber, 1); foldingIndent.insert(blockNumber, 1);
leftFormats[blockNumber].append(DiffSelection(&m_controller.m_fileLineFormat)); leftFormats[blockNumber].append(DiffSelection(&m_controller.m_fileLineFormat));
rightFormats[blockNumber].append(DiffSelection(&m_controller.m_fileLineFormat)); rightFormats[blockNumber].append(DiffSelection(&m_controller.m_fileLineFormat));
m_leftEditor->setFileInfo(blockNumber, contextFileData.leftFileInfo); m_leftEditor->setFileInfo(blockNumber, contextFileData.fileInfo[LeftSide]);
m_rightEditor->setFileInfo(blockNumber, contextFileData.rightFileInfo); m_rightEditor->setFileInfo(blockNumber, contextFileData.fileInfo[RightSide]);
leftText = separator; leftText = separator;
rightText = separator; rightText = separator;
blockNumber++; blockNumber++;
@@ -1051,8 +1051,8 @@ void SideBySideDiffEditorWidget::slotLeftJumpToOriginalFileRequested(
return; return;
const FileData fileData = m_controller.m_contextFileData.at(diffFileIndex); const FileData fileData = m_controller.m_contextFileData.at(diffFileIndex);
const QString leftFileName = fileData.leftFileInfo.fileName; const QString leftFileName = fileData.fileInfo[LeftSide].fileName;
const QString rightFileName = fileData.rightFileInfo.fileName; const QString rightFileName = fileData.fileInfo[RightSide].fileName;
if (leftFileName == rightFileName) { if (leftFileName == rightFileName) {
// The same file (e.g. in git diff), jump to the line number taken from the right editor. // The same file (e.g. in git diff), jump to the line number taken from the right editor.
// Warning: git show SHA^ vs SHA or git diff HEAD vs Index // Warning: git show SHA^ vs SHA or git diff HEAD vs Index
@@ -1090,7 +1090,7 @@ void SideBySideDiffEditorWidget::slotRightJumpToOriginalFileRequested(
return; return;
const FileData fileData = m_controller.m_contextFileData.at(diffFileIndex); const FileData fileData = m_controller.m_contextFileData.at(diffFileIndex);
const QString fileName = fileData.rightFileInfo.fileName; const QString fileName = fileData.fileInfo[RightSide].fileName;
m_controller.jumpToOriginalFile(fileName, lineNumber, columnNumber); m_controller.jumpToOriginalFile(fileName, lineNumber, columnNumber);
} }

View File

@@ -492,9 +492,9 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
const int count = input.m_contextFileData.size(); const int count = input.m_contextFileData.size();
for (const FileData &fileData : qAsConst(input.m_contextFileData)) { for (const FileData &fileData : qAsConst(input.m_contextFileData)) {
const QString leftFileInfo = "--- " + fileData.leftFileInfo.fileName + '\n'; const QString leftFileInfo = "--- " + fileData.fileInfo[LeftSide].fileName + '\n';
const QString rightFileInfo = "+++ " + fileData.rightFileInfo.fileName + '\n'; const QString rightFileInfo = "+++ " + fileData.fileInfo[RightSide].fileName + '\n';
setFileInfo(blockNumber, fileData.leftFileInfo, fileData.rightFileInfo); setFileInfo(blockNumber, fileData.fileInfo[LeftSide], fileData.fileInfo[RightSide]);
output.foldingIndent.insert(blockNumber, 1); output.foldingIndent.insert(blockNumber, 1);
output.selections[blockNumber].append(DiffSelection(input.m_fileLineFormat)); output.selections[blockNumber].append(DiffSelection(input.m_fileLineFormat));
blockNumber++; blockNumber++;
@@ -511,9 +511,9 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
output.selections[blockNumber].append(DiffSelection(input.m_chunkLineFormat)); output.selections[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
blockNumber++; blockNumber++;
const QString binaryLine = "Binary files " const QString binaryLine = "Binary files "
+ fileData.leftFileInfo.fileName + fileData.fileInfo[LeftSide].fileName
+ " and " + " and "
+ fileData.rightFileInfo.fileName + fileData.fileInfo[RightSide].fileName
+ " differ\n"; + " differ\n";
output.diffText += binaryLine; output.diffText += binaryLine;
charNumber += binaryLine.count(); charNumber += binaryLine.count();
@@ -672,8 +672,8 @@ void UnifiedDiffEditorWidget::jumpToOriginalFile(const QTextCursor &cursor)
return; return;
const FileData fileData = m_controller.m_contextFileData.at(fileIndex); const FileData fileData = m_controller.m_contextFileData.at(fileIndex);
const QString leftFileName = fileData.leftFileInfo.fileName; const QString leftFileName = fileData.fileInfo[LeftSide].fileName;
const QString rightFileName = fileData.rightFileInfo.fileName; const QString rightFileName = fileData.fileInfo[RightSide].fileName;
const int columnNumber = cursor.positionInBlock() - 1; // -1 for the first character in line const int columnNumber = cursor.positionInBlock() - 1; // -1 for the first character in line