summaryrefslogtreecommitdiff
path: root/src/plugins/vcsbase
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2018-08-28 00:03:59 +0300
committerOrgad Shaneh <orgads@gmail.com>2018-08-28 07:26:14 +0000
commit767137157e4971413ee0ab4f9ee5ea48a2b43737 (patch)
treed0397f2692a7cc469863ba84de647a81f51d2dc6 /src/plugins/vcsbase
parentf1f506b47970b746d472acb65eb94014f9fafe33 (diff)
downloadqt-creator-767137157e4971413ee0ab4f9ee5ea48a2b43737.tar.gz
VCS: Consolidate submit editor actions setup
Change-Id: I36754779b6a9aa35de705b368daf8c2a1de058c6 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/vcsbase')
-rw-r--r--src/plugins/vcsbase/basevcssubmiteditorfactory.cpp37
-rw-r--r--src/plugins/vcsbase/basevcssubmiteditorfactory.h9
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.h7
3 files changed, 47 insertions, 6 deletions
diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
index b2d05a2835..7b5b1fbab7 100644
--- a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
+++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
@@ -24,24 +24,55 @@
****************************************************************************/
#include "basevcssubmiteditorfactory.h"
+
+#include "vcsbaseplugin.h"
#include "vcsbasesubmiteditor.h"
+#include <coreplugin/actionmanager/actionmanager.h>
+#include <utils/qtcassert.h>
+
+#include <QAction>
+
+using namespace Core;
+
namespace VcsBase {
+const char SUBMIT[] = "Vcs.Submit";
+const char DIFF_SELECTED[] = "Vcs.DiffSelectedFiles";
+
VcsSubmitEditorFactory::VcsSubmitEditorFactory
(const VcsBaseSubmitEditorParameters *parameters,
const EditorCreator &editorCreator,
- QObject *parent)
- : IEditorFactory(parent), m_editorCreator(editorCreator)
+ VcsBasePlugin *plugin)
+ : IEditorFactory(plugin), m_editorCreator(editorCreator)
{
setId(parameters->id);
setDisplayName(QLatin1String(parameters->displayName));
addMimeType(parameters->mimeType);
+
+ Context context(parameters->id);
+ m_undoAction = new QAction(tr("&Undo"), this);
+ ActionManager::registerAction(m_undoAction, Core::Constants::UNDO, context);
+
+ m_redoAction = new QAction(tr("&Redo"), this);
+ ActionManager::registerAction(m_redoAction, Core::Constants::REDO, context);
+
+ QTC_ASSERT(plugin, return);
+ m_submitAction = new QAction(VcsBaseSubmitEditor::submitIcon(),
+ plugin->commitDisplayName(), this);
+ Command *command = ActionManager::registerAction(m_submitAction, SUBMIT, context);
+ command->setAttribute(Command::CA_UpdateText);
+ connect(m_submitAction, &QAction::triggered, plugin, &VcsBasePlugin::commitFromEditor);
+
+ m_diffAction = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff &Selected Files"), this);
+ ActionManager::registerAction(m_diffAction, DIFF_SELECTED, context);
}
Core::IEditor *VcsSubmitEditorFactory::createEditor()
{
- return m_editorCreator();
+ VcsBaseSubmitEditor *editor = m_editorCreator();
+ editor->registerActions(m_undoAction, m_redoAction, m_submitAction, m_diffAction);
+ return editor;
}
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.h b/src/plugins/vcsbase/basevcssubmiteditorfactory.h
index da2e6ffaa9..d74f635698 100644
--- a/src/plugins/vcsbase/basevcssubmiteditorfactory.h
+++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.h
@@ -30,10 +30,13 @@
#include <coreplugin/editormanager/ieditorfactory.h>
#include <functional>
+QT_FORWARD_DECLARE_CLASS(QAction);
+
namespace VcsBase {
class VcsBaseSubmitEditor;
class VcsBaseSubmitEditorParameters;
+class VcsBasePlugin;
// Parametrizable base class for editor factories creating instances of
// VcsBaseSubmitEditor subclasses.
@@ -46,12 +49,16 @@ public:
VcsSubmitEditorFactory(const VcsBaseSubmitEditorParameters *parameters,
const EditorCreator &editorCreator,
- QObject *parent = nullptr);
+ VcsBasePlugin *plugin);
Core::IEditor *createEditor() override;
private:
EditorCreator m_editorCreator;
+ QAction *m_submitAction = nullptr;
+ QAction *m_diffAction = nullptr;
+ QAction *m_undoAction = nullptr;
+ QAction *m_redoAction = nullptr;
};
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h
index 87ba3ce1bc..1bbe0c29b4 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.h
+++ b/src/plugins/vcsbase/vcsbaseplugin.h
@@ -177,9 +177,12 @@ public:
QTextCodec *outputCodec = nullptr,
const QProcessEnvironment &env = QProcessEnvironment());
-protected:
- // Display name of the commit action:
+ // Display name of the commit action
virtual QString commitDisplayName() const;
+
+ virtual void commitFromEditor() = 0;
+
+protected:
// Prompt to save all files before commit:
bool promptBeforeCommit();