diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-09-08 12:52:35 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-09-12 10:04:20 +0000 |
commit | 21ab4c427c160eafd5550ff46944ee5be23bd7a5 (patch) | |
tree | dedcd6f5273f1c05d1fa2199906ef1bcf3ac736f | |
parent | 1e3b5418eac08df5292913e7ff8841972b72695e (diff) |
VCS: Offer to save-all before commit
Task-number: QTCREATORBUG-3857
Change-Id: I3ff3d90803eec4134b9da4af5567753ad7bffafb
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r-- | src/plugins/bazaar/bazaarplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/clearcase/clearcaseplugin.cpp | 8 | ||||
-rw-r--r-- | src/plugins/clearcase/clearcaseplugin.h | 1 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/git/gitplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.cpp | 5 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.cpp | 7 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.h | 1 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.h | 5 |
11 files changed, 48 insertions, 1 deletions
diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp index a441b5e78fc..426c55bfc30 100644 --- a/src/plugins/bazaar/bazaarplugin.cpp +++ b/src/plugins/bazaar/bazaarplugin.cpp @@ -509,6 +509,9 @@ void BazaarPlugin::createSubmitEditorActions() void BazaarPlugin::commit() { + if (!promptBeforeCommit())) + return; + if (raiseSubmitEditor()) return; diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 8f215be159e..03f570d9814 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -837,6 +837,11 @@ void ClearCasePlugin::updateActions(VcsBasePlugin::ActionState as) updateStatusActions(); } +QString ClearCasePlugin::commitDisplayName() const +{ + return tr("check in", "\"commit\" action for ClearCase."); +} + void ClearCasePlugin::checkOutCurrentFile() { const VcsBasePluginState state = currentState(); @@ -1206,6 +1211,9 @@ void ClearCasePlugin::startCheckInActivity() * check in will start. */ void ClearCasePlugin::startCheckIn(const QString &workingDir, const QStringList &files) { + if (!promptBeforeCommit()) + return; + if (raiseSubmitEditor()) return; diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h index d2db83a8ac8..70c18334263 100644 --- a/src/plugins/clearcase/clearcaseplugin.h +++ b/src/plugins/clearcase/clearcaseplugin.h @@ -199,6 +199,7 @@ private: void syncSlot(); Q_INVOKABLE void updateStatusActions(); + QString commitDisplayName() const final; void checkOutCurrentFile(); void addCurrentFile(); void undoCheckOutCurrent(); diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 16a0fa211dd..e312cda6398 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -651,6 +651,9 @@ void CvsPlugin::startCommitAll() * commit will start. */ void CvsPlugin::startCommit(const QString &workingDir, const QString &file) { + if (!promptBeforeCommit()) + return; + if (raiseSubmitEditor()) return; if (isCommitEditorOpen()) { diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 311127aaa7e..a310e132cb4 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -926,6 +926,9 @@ void GitPlugin::gitGui() void GitPlugin::startCommit(CommitType commitType) { + if (!promptBeforeCommit()) + return; + if (raiseSubmitEditor()) return; if (isCommitEditorOpen()) { diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index e982b51cdf4..5c12b42c519 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -37,12 +37,12 @@ #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/command.h> +#include <coreplugin/documentmanager.h> #include <coreplugin/id.h> #include <coreplugin/vcsmanager.h> #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> #include <coreplugin/idocument.h> -#include <coreplugin/documentmanager.h> #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/locator/commandlocator.h> @@ -494,6 +494,9 @@ void MercurialPlugin::createSubmitEditorActions() void MercurialPlugin::commit() { + if (!promptBeforeCommit()) + return; + if (raiseSubmitEditor()) return; diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index c4a1e50ac46..0278cd6403c 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -556,6 +556,8 @@ void PerforcePlugin::printOpenedFileList() void PerforcePlugin::startSubmitProject() { + if (!promptBeforeCommit()) + return; if (raiseSubmitEditor()) return; @@ -1225,6 +1227,11 @@ void PerforceDiffConfig::triggerReRun() emit reRunDiff(effectiveParameters); } +QString PerforcePlugin::commitDisplayName() const +{ + return tr("submit", "\"commit\" action for perforce"); +} + void PerforcePlugin::p4Diff(const QString &workingDir, const QStringList &files) { PerforceDiffParameters p; diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index ae90276f977..814969537ad 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -113,6 +113,7 @@ private slots: #endif private: + QString commitDisplayName() const final; void p4Diff(const PerforceDiffParameters &p); void openCurrentFile(); diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index c72dbf703d3..d35d027b57e 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -642,6 +642,9 @@ void SubversionPlugin::startCommitProject() * commit will start. */ void SubversionPlugin::startCommit(const QString &workingDir, const QStringList &files) { + if (!promptBeforeCommit()) + return; + if (raiseSubmitEditor()) return; if (isCommitEditorOpen()) { diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index edc68b2a0cf..dcf648a4e7c 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -641,6 +641,16 @@ bool VcsBasePlugin::enableMenuAction(ActionState as, QAction *menuAction) const return true; } +QString VcsBasePlugin::commitDisplayName() const +{ + return tr("commit", "name of \"commit\" action of the VCS."); +} + +bool VcsBasePlugin::promptBeforeCommit() +{ + return DocumentManager::saveAllModifiedDocuments(tr("Save before %1?").arg(commitDisplayName()); +} + void VcsBasePlugin::promptToDeleteCurrentFile() { const VcsBasePluginState state = currentState(); diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h index 0312d637242..72b2c5a46eb 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.h +++ b/src/plugins/vcsbase/vcsbaseplugin.h @@ -178,6 +178,11 @@ public: const QProcessEnvironment &env = QProcessEnvironment()); protected: + // Display name of the commit action: + virtual QString commitDisplayName() const; + // Prompt to save all files before commit: + bool promptBeforeCommit(); + // Convenience slot for "Delete current file" action. Prompts to // delete the file via VcsManager. void promptToDeleteCurrentFile(); |