forked from qt-creator/qt-creator
UnifiedDiffData: Rename setDiff into diffOutput and make it static
Conform to sibling struct SideDiffData. Change-Id: I7630ec7480c34a94f17ef09904e332da768f0c37 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -1021,7 +1021,7 @@ void SideBySideDiffEditorWidget::showDiff()
|
|||||||
if (futureInterface.isCanceled())
|
if (futureInterface.isCanceled())
|
||||||
futureInterface.reportCanceled();
|
futureInterface.reportCanceled();
|
||||||
});
|
});
|
||||||
const int firstPartMax = 20; // showDiff is about 4 times quicker than filling document
|
const int firstPartMax = 20; // diffOutput is about 4 times quicker than filling document
|
||||||
const int leftPartMax = 60;
|
const int leftPartMax = 60;
|
||||||
const int rightPartMax = 100;
|
const int rightPartMax = 100;
|
||||||
futureInterface.setProgressRange(0, rightPartMax);
|
futureInterface.setProgressRange(0, rightPartMax);
|
||||||
|
|||||||
@@ -423,8 +423,8 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData
|
|||||||
return diffText;
|
return diffText;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progressMin,
|
UnifiedDiffOutput UnifiedDiffData::diffOutput(QFutureInterface<void> &fi, int progressMin,
|
||||||
int progressMax, const DiffEditorInput &input)
|
int progressMax, const DiffEditorInput &input)
|
||||||
{
|
{
|
||||||
UnifiedDiffOutput output;
|
UnifiedDiffOutput output;
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
|
|||||||
for (const FileData &fileData : qAsConst(input.m_contextFileData)) {
|
for (const FileData &fileData : qAsConst(input.m_contextFileData)) {
|
||||||
const QString leftFileInfo = "--- " + fileData.fileInfo[LeftSide].fileName + '\n';
|
const QString leftFileInfo = "--- " + fileData.fileInfo[LeftSide].fileName + '\n';
|
||||||
const QString rightFileInfo = "+++ " + fileData.fileInfo[RightSide].fileName + '\n';
|
const QString rightFileInfo = "+++ " + fileData.fileInfo[RightSide].fileName + '\n';
|
||||||
setFileInfo(blockNumber, fileData.fileInfo[LeftSide], fileData.fileInfo[RightSide]);
|
output.diffData.setFileInfo(blockNumber, fileData.fileInfo[LeftSide], fileData.fileInfo[RightSide]);
|
||||||
output.foldingIndent.insert(blockNumber, 1);
|
output.foldingIndent.insert(blockNumber, 1);
|
||||||
output.selections[blockNumber].append({input.m_fileLineFormat});
|
output.selections[blockNumber].append({input.m_fileLineFormat});
|
||||||
blockNumber++;
|
blockNumber++;
|
||||||
@@ -463,14 +463,14 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
|
|||||||
for (int j = 0; j < fileData.chunks.count(); j++) {
|
for (int j = 0; j < fileData.chunks.count(); j++) {
|
||||||
const int oldBlockNumber = blockNumber;
|
const int oldBlockNumber = blockNumber;
|
||||||
output.foldingIndent.insert(blockNumber, 2);
|
output.foldingIndent.insert(blockNumber, 2);
|
||||||
output.diffText += setChunk(input, fileData.chunks.at(j),
|
output.diffText += output.diffData.setChunk(input, fileData.chunks.at(j),
|
||||||
(j == fileData.chunks.count() - 1)
|
(j == fileData.chunks.count() - 1)
|
||||||
&& fileData.lastChunkAtTheEndOfFile,
|
&& fileData.lastChunkAtTheEndOfFile,
|
||||||
&blockNumber,
|
&blockNumber,
|
||||||
&charNumber,
|
&charNumber,
|
||||||
&output.selections);
|
&output.selections);
|
||||||
if (!fileData.chunks.at(j).contextChunk)
|
if (!fileData.chunks.at(j).contextChunk)
|
||||||
setChunkIndex(oldBlockNumber, blockNumber - oldBlockNumber, j);
|
output.diffData.setChunkIndex(oldBlockNumber, blockNumber - oldBlockNumber, j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fi.setProgressValue(DiffUtils::interpolate(++i, 0, count, progressMin, progressMax));
|
fi.setProgressValue(DiffUtils::interpolate(++i, 0, count, progressMin, progressMax));
|
||||||
@@ -521,17 +521,16 @@ void UnifiedDiffEditorWidget::showDiff()
|
|||||||
futureInterface.reportCanceled();
|
futureInterface.reportCanceled();
|
||||||
});
|
});
|
||||||
const int progressMax = 100;
|
const int progressMax = 100;
|
||||||
const int firstPartMax = 20; // showDiff is about 4 times quicker than filling document
|
const int firstPartMax = 20; // diffOutput is about 4 times quicker than filling document
|
||||||
futureInterface.setProgressRange(0, progressMax);
|
futureInterface.setProgressRange(0, progressMax);
|
||||||
futureInterface.setProgressValue(0);
|
futureInterface.setProgressValue(0);
|
||||||
QFutureInterface<void> fi = futureInterface;
|
QFutureInterface<void> fi = futureInterface;
|
||||||
UnifiedDiffData diffData;
|
const UnifiedDiffOutput output = UnifiedDiffData::diffOutput(fi, 0, firstPartMax, input);
|
||||||
const UnifiedDiffOutput output = diffData.setDiff(fi, 0, firstPartMax, input);
|
|
||||||
if (futureInterface.isCanceled())
|
if (futureInterface.isCanceled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const ShowResult result = {TextDocumentPtr(new TextDocument("DiffEditor.UnifiedDiffEditor")),
|
const ShowResult result = {TextDocumentPtr(new TextDocument("DiffEditor.UnifiedDiffEditor")),
|
||||||
diffData, output.selections};
|
output.diffData, output.selections};
|
||||||
// No need to store the change history
|
// No need to store the change history
|
||||||
result.textDocument->document()->setUndoRedoEnabled(false);
|
result.textDocument->document()->setUndoRedoEnabled(false);
|
||||||
|
|
||||||
|
|||||||
@@ -24,23 +24,13 @@ class ChunkSelection;
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class DiffEditorDocument;
|
class DiffEditorDocument;
|
||||||
|
class UnifiedDiffOutput;
|
||||||
class UnifiedDiffOutput
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
QString diffText;
|
|
||||||
// 'foldingIndent' is populated with <block number> and folding indentation
|
|
||||||
// value where 1 indicates start of new file and 2 indicates a diff chunk.
|
|
||||||
// Remaining lines (diff contents) are assigned 3.
|
|
||||||
QHash<int, int> foldingIndent;
|
|
||||||
DiffSelections selections;
|
|
||||||
};
|
|
||||||
|
|
||||||
class UnifiedDiffData
|
class UnifiedDiffData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UnifiedDiffOutput setDiff(QFutureInterface<void> &fi, int progressMin, int progressMax,
|
static UnifiedDiffOutput diffOutput(QFutureInterface<void> &fi, int progressMin, int progressMax,
|
||||||
const DiffEditorInput &input);
|
const DiffEditorInput &input);
|
||||||
|
|
||||||
// block number, visual line number, chunk row number
|
// block number, visual line number, chunk row number
|
||||||
using LineNumbers = QMap<int, QPair<int, int>>;
|
using LineNumbers = QMap<int, QPair<int, int>>;
|
||||||
@@ -61,6 +51,18 @@ private:
|
|||||||
DiffSelections *selections);
|
DiffSelections *selections);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class UnifiedDiffOutput
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UnifiedDiffData diffData;
|
||||||
|
QString diffText;
|
||||||
|
// 'foldingIndent' is populated with <block number> and folding indentation
|
||||||
|
// value where 1 indicates start of new file and 2 indicates a diff chunk.
|
||||||
|
// Remaining lines (diff contents) are assigned 3.
|
||||||
|
QHash<int, int> foldingIndent;
|
||||||
|
DiffSelections selections;
|
||||||
|
};
|
||||||
|
|
||||||
class UnifiedDiffEditorWidget final : public SelectableTextEditorWidget
|
class UnifiedDiffEditorWidget final : public SelectableTextEditorWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|||||||
Reference in New Issue
Block a user