9#include "difference_p.h"
12#include "differencestringpair.h"
13#include "levenshteintable.h"
17Difference::Difference(
int sourceLineNo,
int destinationLineNo,
int type)
18 : d_ptr(new DifferencePrivate(sourceLineNo, destinationLineNo,
type))
22Difference::~Difference() =
default;
24int Difference::type()
const
26 Q_D(
const Difference);
31int Difference::sourceLineNumber()
const
33 Q_D(
const Difference);
35 return d->sourceLineNo;
38int Difference::destinationLineNumber()
const
40 Q_D(
const Difference);
42 return d->destinationLineNo;
47 Q_D(
const Difference);
49 return d->trackingDestinationLineNo;
52void Difference::setTrackingDestinationLineNumber(
int i)
56 d->trackingDestinationLineNo = i;
63 return d->sourceLines[i];
68 Q_D(
const Difference);
70 return d->destinationLines[i];
73DifferenceStringList Difference::sourceLines()
const
75 Q_D(
const Difference);
77 return d->sourceLines;
80DifferenceStringList Difference::destinationLines()
const
82 Q_D(
const Difference);
84 return d->destinationLines;
87bool Difference::hasConflict()
const
89 Q_D(
const Difference);
94void Difference::setConflict(
bool conflicts)
98 d->conflicts = conflicts;
101bool Difference::isUnsaved()
const
103 Q_D(
const Difference);
108void Difference::setUnsaved(
bool unsaved)
112 d->unsaved = unsaved;
115bool Difference::applied()
const
117 Q_D(
const Difference);
122void Difference::setType(
int type)
129void Difference::addSourceLine(
const QString &line)
133 d->sourceLines.append(
new DifferenceString(line));
136void Difference::addDestinationLine(
const QString &line)
140 d->destinationLines.append(
new DifferenceString(line));
143int Difference::sourceLineCount()
const
145 Q_D(
const Difference);
147 return d->sourceLines.count();
150int Difference::destinationLineCount()
const
152 Q_D(
const Difference);
154 return d->destinationLines.count();
157int Difference::sourceLineEnd()
const
159 Q_D(
const Difference);
161 return d->sourceLineNo + d->sourceLines.count();
164int Difference::destinationLineEnd()
const
166 Q_D(
const Difference);
168 return d->destinationLineNo + d->destinationLines.count();
171int Difference::trackingDestinationLineEnd()
const
173 Q_D(
const Difference);
175 return d->trackingDestinationLineNo + d->destinationLines.count();
178void Difference::apply(
bool apply)
182 if (apply == d->applied) {
187 d->unsaved = !d->unsaved;
188 Q_EMIT differenceApplied(
this);
195 if (d->applied == apply) {
199 d->unsaved = !d->unsaved;
207 if (d->type != Difference::Change)
213 int slc = sourceLineCount();
215 if (slc != destinationLineCount())
220 for (
int i = 0; i < slc; ++i) {
223 DifferenceStringPair *pair =
new DifferenceStringPair(sl, dl);
227 table.createListsOfMarkers();
231QString Difference::recreateDifference()
const
251 difference += diffString->string();
255 for (
const DifferenceString *diffString : d->destinationLines) {
259 difference += QLatin1Char(
'+');
262 difference += QLatin1Char(
' ');
268 difference += diffString->string();
274#include "moc_difference.cpp"
void determineInlineDifferences()
This method will calculate the differences between the individual strings and store them as Markers.
void applyQuietly(bool apply)
Apply without emitting any signals.
int trackingDestinationLineNumber() const
Destination line number that tracks applying/unapplying of other differences Essentially a line numbe...
Computes the Levenshtein distance between two sequences.
unsigned int createTable(SequencePair *sequences)
This calculates the levenshtein distance of 2 sequences.
Type type(const QSqlDatabase &db)