From b7faf4d6746cb5d20bb9afae39bee67e68dbb714 Mon Sep 17 00:00:00 2001
From: Petar Perisin <petar.perisin@gmail.com>
Date: Sat, 12 Jan 2013 18:52:05 +0100
Subject: [PATCH] Git: added custom message to EnsureStash popup

Better overview in stash dialog.

Change-Id: Icb6d3f8e2e068882e661e017ce8a0bb00ec6dba5
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/git/branchmodel.cpp |  2 +-
 src/plugins/git/gitclient.cpp   | 15 +++++++++------
 src/plugins/git/gitclient.h     |  4 ++--
 src/plugins/git/gitplugin.cpp   |  4 ++--
 4 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp
index 927bd58c8ab..ed8df9321f3 100644
--- a/src/plugins/git/branchmodel.cpp
+++ b/src/plugins/git/branchmodel.cpp
@@ -431,7 +431,7 @@ void BranchModel::checkoutBranch(const QModelIndex &idx)
         return;
 
     QString errorMessage;
-    switch (m_client->ensureStash(m_workingDirectory, &errorMessage)) {
+    switch (m_client->ensureStash(m_workingDirectory, QLatin1String("Branch-Checkout"), 0, &errorMessage)) {
     case GitClient::StashUnchanged:
     case GitClient::Stashed:
     case GitClient::NotStashed:
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 3b0630df5ec..a873f198732 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1568,17 +1568,17 @@ static inline int askWithDetailedText(QWidget *parent,
 }
 
 // Convenience that pops up an msg box.
-GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory)
+GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory, const QString &keyword, QString *message)
 {
     QString errorMessage;
-    const StashResult sr = ensureStash(workingDirectory, &errorMessage);
+    const StashResult sr = ensureStash(workingDirectory, keyword, message, &errorMessage);
     if (sr == StashFailed)
         outputWindow()->appendError(errorMessage);
     return sr;
 }
 
 // Ensure that changed files are stashed before a pull or similar
-GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory, QString *errorMessage)
+GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory, const QString &keyword, QString *message, QString *errorMessage)
 {
     QString statusOutput;
     switch (gitStatus(workingDirectory, StatusMode(NoUntracked | NoSubmodules),
@@ -1597,14 +1597,17 @@ GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory, Q
     switch (answer) {
         case QMessageBox::Cancel:
             return StashCanceled;
-        case QMessageBox::Yes:
-            if (!executeSynchronousStash(workingDirectory, creatorStashMessage(QLatin1String("push")), errorMessage))
+        case QMessageBox::Yes: {
+            const QString stashMessage = creatorStashMessage(keyword);
+            if (!executeSynchronousStash(workingDirectory, stashMessage, errorMessage))
                 return StashFailed;
+            if (message)
+                *message = stashMessage;
             break;
+        }
         case QMessageBox::No: // At your own risk, so.
             return NotStashed;
         }
-
     return Stashed;
  }
 
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index d7eb76a41fa..f0e36309a6e 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -207,8 +207,8 @@ public:
 
     enum StashResult { StashUnchanged, StashCanceled, StashFailed,
                        Stashed, NotStashed /* User did not want it */ };
-    StashResult ensureStash(const QString &workingDirectory, QString *errorMessage);
-    StashResult ensureStash(const QString &workingDirectory);
+    StashResult ensureStash(const QString &workingDirectory, const QString &keyword, QString *message = 0);
+    StashResult ensureStash(const QString &workingDirectory, const QString &keyword, QString *message, QString *errorMessage);
 
     bool getCommitData(const QString &workingDirectory, bool amend,
                        QString *commitTemplate, CommitData *commitData,
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index e4ffae16283..6a4491343f1 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -901,7 +901,7 @@ void GitPlugin::pull()
         }
     }
 
-    GitClient::StashResult stashResult = m_gitClient->ensureStash(state.topLevel());
+    GitClient::StashResult stashResult = m_gitClient->ensureStash(state.topLevel(), QLatin1String("Pull"));
     switch (stashResult) {
     case GitClient::StashUnchanged:
     case GitClient::Stashed:
@@ -1031,7 +1031,7 @@ void GitPlugin::promptApplyPatch()
 void GitPlugin::applyPatch(const QString &workingDirectory, QString file)
 {
     // Ensure user has been notified about pending changes
-    switch (m_gitClient->ensureStash(workingDirectory)) {
+    switch (m_gitClient->ensureStash(workingDirectory, QLatin1String("Apply-Patch"))) {
     case GitClient::StashUnchanged:
     case GitClient::Stashed:
     case GitClient::NotStashed:
-- 
GitLab