KompareDiff2

diffmodel.h
1/*
2SPDX-FileCopyrightText: 2001-2004,2009 Otto Bruggeman <bruggie@gmail.com>
3SPDX-FileCopyrightText: 2001-2003 John Firebaugh <jfirebaugh@kde.org>
4
5SPDX-License-Identifier: GPL-2.0-or-later
6*/
7
8#ifndef KOMPAREDIFF2_DIFFMODEL_H
9#define KOMPAREDIFF2_DIFFMODEL_H
10
11#include <QObject>
12#include <QStringList>
13#include "diffhunk.h"
14#include "kompare.h"
15#include "komparediff2_export.h"
16
17namespace Diff2
18{
19
20/**
21 * @class DiffModel diffmodel.h <KompareDiff2/DiffModel>
22 *
23 * A model describing the differences between two files.
24 */
25class KOMPAREDIFF2_EXPORT DiffModel : public QObject
26{
27 Q_OBJECT
28public:
29
30 DiffModel(const QString& srcBaseURL, const QString& destBaseURL);
31 DiffModel();
32 ~DiffModel() override;
33
34private:
35 DiffModel(const DiffModel&) : QObject() {}
36
37public:
38 int parseDiff(enum Kompare::Format format, const QStringList& list);
39
40 QString recreateDiff() const;
41
42 int hunkCount() const { return m_hunks.count(); }
43 int differenceCount() const { return m_differences.count(); }
44 int appliedCount() const { return m_appliedCount; }
45
46 DiffHunk* hunkAt(int i) { return (m_hunks.at(i)); }
47 const Difference* differenceAt(int i) const { return (m_differences.at(i)); }
48 Difference* differenceAt(int i) { return (m_differences.at(i)); }
49
50 DiffHunkList* hunks() { return &m_hunks; }
51 const DiffHunkList* hunks() const { return &m_hunks; }
52 DifferenceList* differences() { return &m_differences; }
53 const DifferenceList* differences() const { return &m_differences; }
54
55 int findDifference(Difference* diff) const { return m_differences.indexOf(diff); }
56
57 Difference* firstDifference();
58 Difference* lastDifference();
59 Difference* prevDifference();
60 Difference* nextDifference();
61
62 const QString source() const { return m_source; }
63 const QString destination() const { return m_destination; }
64 const QString sourceFile() const;
65 const QString destinationFile() const;
66 const QString sourcePath() const;
67 const QString destinationPath() const;
68 const QString sourceTimestamp() const { return m_sourceTimestamp; }
69 const QString destinationTimestamp() const { return m_destinationTimestamp; }
70 const QString sourceRevision() const { return m_sourceRevision; }
71 const QString destinationRevision() const { return m_destinationRevision; }
72
73 void setSourceFile(QString path);
74 void setDestinationFile(QString path);
75 void setSourceTimestamp(QString timestamp);
76 void setDestinationTimestamp(QString timestamp);
77 void setSourceRevision(QString revision);
78 void setDestinationRevision(QString revision);
79
80 void addHunk(DiffHunk* hunk);
81 void addDiff(Difference* diff);
82 bool hasUnsavedChanges() const;
83
84 int diffIndex(void) const { return m_diffIndex; }
85 void setDiffIndex(int diffIndex) { m_diffIndex = diffIndex; }
86
87 void applyDifference(bool apply);
88 void applyAllDifferences(bool apply);
89
90 bool setSelectedDifference(Difference* diff);
91
92 DiffModel& operator=(const DiffModel& model);
93 bool operator<(const DiffModel& model);
94
95 int localeAwareCompareSource(const DiffModel& model);
96
97 bool isBlended() const { return m_blended; }
98 void setBlended(bool blended) { m_blended = blended; }
99
100 /**
101 * @p oldlines - lines that were removed.
102 * @p newLines - lines that were inserted.
103 * @p startPos - number of line at which the change occurred
104 */
105 QPair<QList<Difference*>, QList<Difference*> > linesChanged(const QStringList& oldLines, const QStringList& newLines, int editLineNumber);
106
107private:
108 void splitSourceInPathAndFileName();
109 void splitDestinationInPathAndFileName();
110 void computeDiffStats(Difference* diff);
111 void processStartMarker(Difference* diff, const QStringList& lines, MarkerListConstIterator& currentMarker, int& currentListLine, bool isSource);
112
113private:
114 QString m_source;
115 QString m_destination;
116
117 QString m_sourcePath;
118 QString m_destinationPath;
119
120 QString m_sourceFile;
121 QString m_destinationFile;
122
123 QString m_sourceTimestamp;
124 QString m_destinationTimestamp;
125
126 QString m_sourceRevision;
127 QString m_destinationRevision;
128
129 DiffHunkList m_hunks;
130 DifferenceList m_differences;
131
132 int m_appliedCount;
133
134 int m_diffIndex;
135 Difference* m_selectedDifference;
136
137 bool m_blended;
138
139private Q_SLOTS:
140 void slotDifferenceApplied(Difference* diff);
141};
142
143} // End of namespace Diff2
144
145#endif
146
DiffHunk.
Definition diffhunk.h:23
A model describing the differences between two files.
Definition diffmodel.h:26
A difference.
Definition difference.h:124
Diff2 namespace.
Format
Patch format enum.
Definition kompare.h:26
qsizetype indexOf(const AT &value, qsizetype from) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Sat Apr 27 2024 22:10:24 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.