diff options
author | hjk <hjk@qt.io> | 2020-02-05 09:27:26 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-02-06 07:03:44 +0000 |
commit | 7f37c503db291d031770701cd0b912405597dbb7 (patch) | |
tree | b20a9480011e16bc7c72bce627d182f9a62b7b1d /src/plugins/vcsbase | |
parent | c17767c78ebc6b3d3b66e4d78d46b0eef4ac003f (diff) |
Vcs: Move responsibility to set editor parameters to editor factory
So it doesn't need to be named twice in the editor factory setup.
This intentially includes a de-optimiztion: storing the parameters
by value, not by pointer. That's more natural, does not need to
keep the parameters alive on the caller side, and it's uncritical
in this context.
Change-Id: I92867d3f2f75c38911ae82d3eeb4759cba71b723
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/vcsbase')
-rw-r--r-- | src/plugins/vcsbase/basevcssubmiteditorfactory.cpp | 13 | ||||
-rw-r--r-- | src/plugins/vcsbase/basevcssubmiteditorfactory.h | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/submiteditorfile.cpp | 7 | ||||
-rw-r--r-- | src/plugins/vcsbase/submiteditorfile.h | 3 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbasesubmiteditor.cpp | 37 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbasesubmiteditor.h | 8 |
6 files changed, 36 insertions, 34 deletions
diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp index f278b8a0eb..e99637f32b 100644 --- a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp +++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp @@ -41,22 +41,23 @@ const char SUBMIT[] = "Vcs.Submit"; const char DIFF_SELECTED[] = "Vcs.DiffSelectedFiles"; VcsSubmitEditorFactory::VcsSubmitEditorFactory - (const VcsBaseSubmitEditorParameters *parameters, + (const VcsBaseSubmitEditorParameters ¶meters, const EditorCreator &editorCreator, VcsBasePluginPrivate *plugin) : IEditorFactory(plugin) { - setId(parameters->id); - setDisplayName(QLatin1String(parameters->displayName)); - addMimeType(parameters->mimeType); + setId(parameters.id); + setDisplayName(QLatin1String(parameters.displayName)); + addMimeType(parameters.mimeType); - setEditorCreator([this, editorCreator] { + setEditorCreator([this, editorCreator, parameters] { VcsBaseSubmitEditor *editor = editorCreator(); + editor->setParameters(parameters); editor->registerActions(m_undoAction, m_redoAction, m_submitAction, m_diffAction); return editor; }); - Context context(parameters->id); + Context context(parameters.id); m_undoAction = new QAction(tr("&Undo"), this); ActionManager::registerAction(m_undoAction, Core::Constants::UNDO, context); diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.h b/src/plugins/vcsbase/basevcssubmiteditorfactory.h index da648eeb17..133d9fd0ff 100644 --- a/src/plugins/vcsbase/basevcssubmiteditorfactory.h +++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.h @@ -47,7 +47,7 @@ class VCSBASE_EXPORT VcsSubmitEditorFactory : public Core::IEditorFactory public: typedef std::function<VcsBaseSubmitEditor *()> EditorCreator; - VcsSubmitEditorFactory(const VcsBaseSubmitEditorParameters *parameters, + VcsSubmitEditorFactory(const VcsBaseSubmitEditorParameters ¶meters, const EditorCreator &editorCreator, VcsBasePluginPrivate *plugin); diff --git a/src/plugins/vcsbase/submiteditorfile.cpp b/src/plugins/vcsbase/submiteditorfile.cpp index e7e5d01e15..2ea545c047 100644 --- a/src/plugins/vcsbase/submiteditorfile.cpp +++ b/src/plugins/vcsbase/submiteditorfile.cpp @@ -42,13 +42,10 @@ using namespace Utils; submit editor files. */ -SubmitEditorFile::SubmitEditorFile(const VcsBaseSubmitEditorParameters *parameters, VcsBaseSubmitEditor *parent) : - Core::IDocument(parent), +SubmitEditorFile::SubmitEditorFile(VcsBaseSubmitEditor *editor) : m_modified(false), - m_editor(parent) + m_editor(editor) { - setId(parameters->id); - setMimeType(QLatin1String(parameters->mimeType)); setTemporary(true); connect(m_editor, &VcsBaseSubmitEditor::fileContentsChanged, this, &Core::IDocument::contentsChanged); diff --git a/src/plugins/vcsbase/submiteditorfile.h b/src/plugins/vcsbase/submiteditorfile.h index 1030eb46c1..de326c6101 100644 --- a/src/plugins/vcsbase/submiteditorfile.h +++ b/src/plugins/vcsbase/submiteditorfile.h @@ -37,8 +37,7 @@ namespace Internal { class SubmitEditorFile : public Core::IDocument { public: - explicit SubmitEditorFile(const VcsBaseSubmitEditorParameters *parameters, - VcsBaseSubmitEditor *parent = nullptr); + explicit SubmitEditorFile(VcsBaseSubmitEditor *editor); OpenResult open(QString *errorString, const QString &fileName, const QString &realFileName) override; diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index db5513c456..3dec0aeaef 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -134,16 +134,15 @@ static inline QString submitMessageCheckScript() class VcsBaseSubmitEditorPrivate { public: - VcsBaseSubmitEditorPrivate(const VcsBaseSubmitEditorParameters *parameters, - SubmitEditorWidget *editorWidget, + VcsBaseSubmitEditorPrivate(SubmitEditorWidget *editorWidget, VcsBaseSubmitEditor *q); SubmitEditorWidget *m_widget; QToolBar *m_toolWidget = nullptr; - const VcsBaseSubmitEditorParameters *m_parameters; + VcsBaseSubmitEditorParameters m_parameters; QString m_displayName; QString m_checkScriptWorkingDirectory; - SubmitEditorFile *m_file; + SubmitEditorFile m_file; QPointer<QAction> m_diffAction; QPointer<QAction> m_submitAction; @@ -151,12 +150,9 @@ public: NickNameDialog *m_nickNameDialog = nullptr; }; -VcsBaseSubmitEditorPrivate::VcsBaseSubmitEditorPrivate(const VcsBaseSubmitEditorParameters *parameters, - SubmitEditorWidget *editorWidget, +VcsBaseSubmitEditorPrivate::VcsBaseSubmitEditorPrivate(SubmitEditorWidget *editorWidget, VcsBaseSubmitEditor *q) : - m_widget(editorWidget), - m_parameters(parameters), - m_file(new SubmitEditorFile(parameters, q)) + m_widget(editorWidget), m_file(q) { auto completer = new QCompleter(q); completer->setCaseSensitivity(Qt::CaseSensitive); @@ -165,15 +161,22 @@ VcsBaseSubmitEditorPrivate::VcsBaseSubmitEditorPrivate(const VcsBaseSubmitEditor m_widget->descriptionEdit()->setCompletionLengthThreshold(4); } -VcsBaseSubmitEditor::VcsBaseSubmitEditor(const VcsBaseSubmitEditorParameters *parameters, - SubmitEditorWidget *editorWidget) : - d(new VcsBaseSubmitEditorPrivate(parameters, editorWidget, this)) +VcsBaseSubmitEditor::VcsBaseSubmitEditor(SubmitEditorWidget *editorWidget) { + d = new VcsBaseSubmitEditorPrivate(editorWidget, this); +} + +void VcsBaseSubmitEditor::setParameters(const VcsBaseSubmitEditorParameters ¶meters) +{ + d->m_parameters = parameters; + d->m_file.setId(parameters.id); + d->m_file.setMimeType(QLatin1String(parameters.mimeType)); + setWidget(d->m_widget); - document()->setPreferredDisplayName(QCoreApplication::translate("VCS", d->m_parameters->displayName)); + document()->setPreferredDisplayName(QCoreApplication::translate("VCS", d->m_parameters.displayName)); // Message font according to settings - CompletingTextEdit *descriptionEdit = editorWidget->descriptionEdit(); + CompletingTextEdit *descriptionEdit = d->m_widget->descriptionEdit(); const TextEditor::FontSettings fs = TextEditor::TextEditorSettings::fontSettings(); const QTextCharFormat tf = fs.toTextCharFormat(TextEditor::C_TEXT); descriptionEdit->setFont(tf.font()); @@ -187,7 +190,7 @@ VcsBaseSubmitEditor::VcsBaseSubmitEditor(const VcsBaseSubmitEditorParameters *pa pal.setBrush(QPalette::HighlightedText, selectionFormat.foreground()); descriptionEdit->setPalette(pal); - d->m_file->setModified(false); + d->m_file.setModified(false); // We are always clean to prevent the editor manager from asking to save. connect(d->m_widget, &SubmitEditorWidget::diffSelected, @@ -338,7 +341,7 @@ void VcsBaseSubmitEditor::setLineWrapWidth(int w) Core::IDocument *VcsBaseSubmitEditor::document() const { - return d->m_file; + return &d->m_file; } QString VcsBaseSubmitEditor::checkScriptWorkingDirectory() const @@ -453,7 +456,7 @@ QStringList VcsBaseSubmitEditor::rowsToFiles(const QList<int> &rows) const void VcsBaseSubmitEditor::slotDiffSelectedVcsFiles(const QList<int> &rawList) { - if (d->m_parameters->diffType == VcsBaseSubmitEditorParameters::DiffRows) + if (d->m_parameters.diffType == VcsBaseSubmitEditorParameters::DiffRows) emit diffSelectedRows(rawList); else emit diffSelectedFiles(rowsToFiles(rawList)); diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index 30fd82e694..8e60e39ff7 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -68,8 +68,7 @@ class VCSBASE_EXPORT VcsBaseSubmitEditor : public Core::IEditor Q_PROPERTY(bool emptyFileListEnabled READ isEmptyFileListEnabled WRITE setEmptyFileListEnabled DESIGNABLE true) protected: - explicit VcsBaseSubmitEditor(const VcsBaseSubmitEditorParameters *parameters, - SubmitEditorWidget *editorWidget); + explicit VcsBaseSubmitEditor(SubmitEditorWidget *editorWidget); public: // Register the actions with the submit editor widget. @@ -144,6 +143,9 @@ protected: bool isDescriptionMandatory() const; private: + friend class VcsSubmitEditorFactory; // for setParameters() + void setParameters(const VcsBaseSubmitEditorParameters ¶meters); + void slotDiffSelectedVcsFiles(const QList<int> &rawList); void slotCheckSubmitMessage(); void slotInsertNickName(); @@ -155,7 +157,7 @@ private: bool runSubmitMessageCheckScript(const QString &script, QString *errorMessage) const; QString promptForNickName(); - VcsBaseSubmitEditorPrivate *d; + VcsBaseSubmitEditorPrivate *d = nullptr; friend class Internal::SubmitEditorFile; // for the file contents }; |