diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-05-04 18:12:55 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-05-10 13:16:22 +0000 |
commit | 42e072f15968e354c981c7da499c230634189bf5 (patch) | |
tree | 2fcba8fcaf007755b3c8c6ab756778def662f690 | |
parent | b5b9b7e32c26245ad5f6d41a31be036f30088ea3 (diff) |
Move MinimizableInfoBars from CppEditorDocument to IDocument
Similar to the InfoBar.
The only thing that an editor implementation needs to do is to set a
settings group and the possible info bars in the document constructor.
And later call document->minimizableInfoBars()->setInfoVisible(id,
visible) to manage the state.
Change-Id: I23afb3639b70b1bfccd424579da018280a7fe2cb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/plugins/coreplugin/idocument.cpp | 9 | ||||
-rw-r--r-- | src/plugins/coreplugin/idocument.h | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditordocument.cpp | 31 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditordocument.h | 3 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditorwidget.cpp | 4 | ||||
-rw-r--r-- | src/plugins/texteditor/texteditor.cpp | 7 |
6 files changed, 31 insertions, 25 deletions
diff --git a/src/plugins/coreplugin/idocument.cpp b/src/plugins/coreplugin/idocument.cpp index 0ece562f4b..9dfe282a1f 100644 --- a/src/plugins/coreplugin/idocument.cpp +++ b/src/plugins/coreplugin/idocument.cpp @@ -27,6 +27,7 @@ #include <utils/fileutils.h> #include <utils/infobar.h> +#include <utils/minimizableinfobars.h> #include <utils/optional.h> #include <utils/qtcassert.h> @@ -226,6 +227,7 @@ public: QString uniqueDisplayName; Utils::FilePath autoSavePath; Utils::InfoBar *infoBar = nullptr; + MinimizableInfoBars *minimizableInfoBars = nullptr; Id id; optional<bool> fileIsReadOnly; bool temporary = false; @@ -678,6 +680,13 @@ Utils::InfoBar *IDocument::infoBar() return d->infoBar; } +MinimizableInfoBars *IDocument::minimizableInfoBars() +{ + if (!d->minimizableInfoBars) + d->minimizableInfoBars = new Utils::MinimizableInfoBars(*infoBar()); + return d->minimizableInfoBars; +} + /*! Sets the absolute \a filePath of the file that backs this document. The default implementation sets the file name and sends the filePathChanged() and diff --git a/src/plugins/coreplugin/idocument.h b/src/plugins/coreplugin/idocument.h index 788e1b792b..16d94fa779 100644 --- a/src/plugins/coreplugin/idocument.h +++ b/src/plugins/coreplugin/idocument.h @@ -35,6 +35,7 @@ namespace Utils { class FilePath; class InfoBar; +class MinimizableInfoBars; } // namespace Utils namespace Core { @@ -133,6 +134,7 @@ public: void setWriteWarning(bool has); Utils::InfoBar *infoBar(); + Utils::MinimizableInfoBars *minimizableInfoBars(); signals: // For meta data changes: file name, modified state, ... diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index 4a1bbc35fb..edd776f537 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -50,6 +50,7 @@ #include <utils/executeondestruction.h> #include <utils/infobar.h> #include <utils/mimeutils.h> +#include <utils/minimizableinfobars.h> #include <utils/qtcassert.h> #include <utils/runextensions.h> @@ -106,7 +107,6 @@ private: }; CppEditorDocument::CppEditorDocument() - : m_minimizableInfoBars(*infoBar()) { setId(CppEditor::Constants::CPPEDITOR_ID); setSyntaxHighlighter(new CppHighlighter); @@ -130,8 +130,8 @@ CppEditorDocument::CppEditorDocument() connect(&m_parseContextModel, &ParseContextModel::preferredParseContextChanged, this, &CppEditorDocument::reparseWithPreferredParseContext); - m_minimizableInfoBars.setSettingsGroup(Constants::CPPEDITOR_SETTINGSGROUP); - m_minimizableInfoBars.setPossibleInfoBarEntries( + minimizableInfoBars()->setSettingsGroup(Constants::CPPEDITOR_SETTINGSGROUP); + minimizableInfoBars()->setPossibleInfoBarEntries( {{NO_PROJECT_CONFIGURATION, tr("<b>Warning</b>: This file is not part of any project. " "The code model might have issues parsing this file properly.")}}); @@ -413,25 +413,20 @@ QFuture<CursorInfo> CppEditorDocument::cursorInfo(const CursorInfoParams ¶ms return processor()->cursorInfo(params); } -const Utils::MinimizableInfoBars &CppEditorDocument::minimizableInfoBars() const -{ - return m_minimizableInfoBars; -} - BaseEditorDocumentProcessor *CppEditorDocument::processor() { if (!m_processor) { m_processor.reset(mm()->createEditorDocumentProcessor(this)); - connect(m_processor.data(), &BaseEditorDocumentProcessor::projectPartInfoUpdated, - [this] (const ProjectPartInfo &info) - { - const bool hasProjectPart = !(info.hints & ProjectPartInfo::IsFallbackMatch); - m_minimizableInfoBars.setInfoVisible(NO_PROJECT_CONFIGURATION, !hasProjectPart); - m_parseContextModel.update(info); - const bool isAmbiguous = info.hints & ProjectPartInfo::IsAmbiguousMatch; - const bool isProjectFile = info.hints & ProjectPartInfo::IsFromProjectMatch; - showHideInfoBarAboutMultipleParseContexts(isAmbiguous && isProjectFile); - }); + connect(m_processor.data(), + &BaseEditorDocumentProcessor::projectPartInfoUpdated, + [this](const ProjectPartInfo &info) { + const bool hasProjectPart = !(info.hints & ProjectPartInfo::IsFallbackMatch); + minimizableInfoBars()->setInfoVisible(NO_PROJECT_CONFIGURATION, !hasProjectPart); + m_parseContextModel.update(info); + const bool isAmbiguous = info.hints & ProjectPartInfo::IsAmbiguousMatch; + const bool isProjectFile = info.hints & ProjectPartInfo::IsFromProjectMatch; + showHideInfoBarAboutMultipleParseContexts(isAmbiguous && isProjectFile); + }); connect(m_processor.data(), &BaseEditorDocumentProcessor::codeWarningsUpdated, [this] (unsigned revision, const QList<QTextEdit::ExtraSelection> selections, diff --git a/src/plugins/cppeditor/cppeditordocument.h b/src/plugins/cppeditor/cppeditordocument.h index 384f57db86..471ba99c9b 100644 --- a/src/plugins/cppeditor/cppeditordocument.h +++ b/src/plugins/cppeditor/cppeditordocument.h @@ -33,7 +33,6 @@ #include "editordocumenthandle.h" #include <texteditor/textdocument.h> -#include <utils/minimizableinfobars.h> #include <QMutex> #include <QTimer> @@ -65,7 +64,6 @@ public: void scheduleProcessDocument(); - const Utils::MinimizableInfoBars &minimizableInfoBars() const; ParseContextModel &parseContextModel(); QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms); @@ -135,7 +133,6 @@ private: // (Un)Registration in CppModelManager QScopedPointer<CppEditorDocumentHandle> m_editorDocumentHandle; - Utils::MinimizableInfoBars m_minimizableInfoBars; ParseContextModel m_parseContextModel; }; diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index 9a73d1f2e8..7c09724eee 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -552,10 +552,6 @@ void CppEditorWidget::finalizeInitialization() insertExtraToolBarWidget(TextEditorWidget::Left, d->m_preprocessorButton); } - // Toolbar: Actions to show minimized info bars - d->m_cppEditorDocument->minimizableInfoBars().createShowInfoBarActions( - [this](QWidget *w) { return this->insertExtraToolBarWidget(TextEditorWidget::Left, w); }); - d->m_outlineTimer.setInterval(5000); d->m_outlineTimer.setSingleShot(true); connect(&d->m_outlineTimer, &QTimer::timeout, this, [this] { diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 28dca256e6..333f5f37aa 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -80,6 +80,7 @@ #include <utils/hostosinfo.h> #include <utils/infobar.h> #include <utils/mimeutils.h> +#include <utils/minimizableinfobars.h> #include <utils/multitextcursor.h> #include <utils/qtcassert.h> #include <utils/styledbar.h> @@ -8534,6 +8535,12 @@ BaseTextEditor *TextEditorFactoryPrivate::createEditorHelper(const TextDocumentP if (m_useGenericHighlighter) textEditorWidget->setupGenericHighlighter(); textEditorWidget->finalizeInitialization(); + + // Toolbar: Actions to show minimized info bars + document->minimizableInfoBars()->createShowInfoBarActions([textEditorWidget](QWidget *w) { + return textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Left, w); + }); + editor->finalizeInitialization(); return editor; } |