diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2018-08-28 00:03:59 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2018-08-28 07:26:14 +0000 |
commit | 767137157e4971413ee0ab4f9ee5ea48a2b43737 (patch) | |
tree | d0397f2692a7cc469863ba84de647a81f51d2dc6 /src/plugins/vcsbase | |
parent | f1f506b47970b746d472acb65eb94014f9fafe33 (diff) | |
download | qt-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.cpp | 37 | ||||
-rw-r--r-- | src/plugins/vcsbase/basevcssubmiteditorfactory.h | 9 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.h | 7 |
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(); |