summaryrefslogtreecommitdiff
path: root/src/plugins/diffeditor/diffeditorcontroller.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@theqtcompany.com>2014-11-24 15:43:48 +0100
committerEike Ziller <eike.ziller@theqtcompany.com>2014-11-24 15:43:48 +0100
commita47fbb83094ac2d2014fdd563ae22be9f0200baa (patch)
tree2b29ca96979b5facf549131aee58c13e9c2c368b /src/plugins/diffeditor/diffeditorcontroller.cpp
parent63487158f1928f2d8499995783610839904ab149 (diff)
parenta4a4f7a4759e97142f751fdb91cb11536e5102e2 (diff)
downloadqt-creator-a47fbb83094ac2d2014fdd563ae22be9f0200baa.tar.gz
Merge remote-tracking branch 'origin/3.3'
Conflicts: src/plugins/coreplugin/coreplugin.cpp src/plugins/coreplugin/themesettingswidget.cpp src/plugins/qbsprojectmanager/qbsprojectmanager.cpp src/plugins/qbsprojectmanager/qbsprojectmanager.h src/plugins/qmlprofiler/qml/Overview.js src/shared/qbs Change-Id: Ibe92c166fc5bfbcb4d6964e50ca7298d8459d60e
Diffstat (limited to 'src/plugins/diffeditor/diffeditorcontroller.cpp')
-rw-r--r--src/plugins/diffeditor/diffeditorcontroller.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/plugins/diffeditor/diffeditorcontroller.cpp b/src/plugins/diffeditor/diffeditorcontroller.cpp
index 796ff19673..df10cf1f33 100644
--- a/src/plugins/diffeditor/diffeditorcontroller.cpp
+++ b/src/plugins/diffeditor/diffeditorcontroller.cpp
@@ -108,6 +108,44 @@ bool DiffEditorController::isIgnoreWhitespace() const
return m_ignoreWhitespace;
}
+// ### fixme: git-specific handling should be done in the git plugin:
+// Remove unexpanded branches and follows-tag, clear indentation
+// and create E-mail
+static void formatGitDescription(QString *description)
+{
+ QString result;
+ result.reserve(description->size());
+ foreach (QString line, description->split(QLatin1Char('\n'))) {
+ if (line.startsWith(QLatin1String("commit "))
+ || line.startsWith(QLatin1String("Branches: <Expand>"))) {
+ continue;
+ }
+ if (line.startsWith(QLatin1String("Author: ")))
+ line.replace(0, 8, QStringLiteral("From: "));
+ else if (line.startsWith(QLatin1String(" ")))
+ line.remove(0, 4);
+ result.append(line);
+ result.append(QLatin1Char('\n'));
+ }
+ *description = result;
+}
+
+QString DiffEditorController::contents() const
+{
+ QString result = m_description;
+ const int formattingOptions = DiffUtils::GitFormat;
+ if (formattingOptions & DiffUtils::GitFormat)
+ formatGitDescription(&result);
+
+ const QString diff = DiffUtils::makePatch(diffFiles(), formattingOptions);
+ if (!diff.isEmpty()) {
+ if (!result.isEmpty())
+ result += QLatin1Char('\n');
+ result += diff;
+ }
+ return result;
+}
+
QString DiffEditorController::makePatch(bool revert, bool addPrefix) const
{
if (m_diffFileIndex < 0 || m_chunkIndex < 0)