Introduced IQuickFixFactory.

This commit is contained in:
Roberto Raggi
2010-06-22 14:14:22 +02:00
parent 3e7c7296d1
commit 23aa0af883
5 changed files with 66 additions and 5 deletions

View File

@@ -207,6 +207,8 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess
m_quickFixCollector = new CppQuickFixCollector; m_quickFixCollector = new CppQuickFixCollector;
addAutoReleasedObject(m_quickFixCollector); addAutoReleasedObject(m_quickFixCollector);
addAutoReleasedObject(new CppQuickFixFactory);
CppFileWizard::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); CppFileWizard::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard);
wizardParameters.setCategory(QLatin1String(Constants::WIZARD_CATEGORY)); wizardParameters.setCategory(QLatin1String(Constants::WIZARD_CATEGORY));

View File

@@ -50,6 +50,7 @@
#include <cppeditor/cpprefactoringchanges.h> #include <cppeditor/cpprefactoringchanges.h>
#include <cpptools/cpptoolsconstants.h> #include <cpptools/cpptoolsconstants.h>
#include <cpptools/cppmodelmanagerinterface.h> #include <cpptools/cppmodelmanagerinterface.h>
#include <extensionsystem/pluginmanager.h>
#include <QtGui/QApplication> #include <QtGui/QApplication>
#include <QtGui/QTextBlock> #include <QtGui/QTextBlock>
@@ -1079,8 +1080,19 @@ TextEditor::QuickFixState *CppQuickFixCollector::initializeCompletion(TextEditor
return 0; return 0;
} }
QList<TextEditor::QuickFixOperation::Ptr> CppQuickFixCollector::quickFixOperations(TextEditor::BaseTextEditor *editor) const CppQuickFixFactory::CppQuickFixFactory(QObject *parent)
: TextEditor::IQuickFixFactory(parent)
{ {
}
CppQuickFixFactory::~CppQuickFixFactory()
{
}
QList<TextEditor::QuickFixOperation::Ptr> CppQuickFixFactory::quickFixOperations(TextEditor::BaseTextEditor *editor)
{
QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations;
QSharedPointer<RewriteLogicalAndOp> rewriteLogicalAndOp(new RewriteLogicalAndOp(editor)); QSharedPointer<RewriteLogicalAndOp> rewriteLogicalAndOp(new RewriteLogicalAndOp(editor));
QSharedPointer<SplitIfStatementOp> splitIfStatementOp(new SplitIfStatementOp(editor)); QSharedPointer<SplitIfStatementOp> splitIfStatementOp(new SplitIfStatementOp(editor));
QSharedPointer<MoveDeclarationOutOfIfOp> moveDeclarationOutOfIfOp(new MoveDeclarationOutOfIfOp(editor)); QSharedPointer<MoveDeclarationOutOfIfOp> moveDeclarationOutOfIfOp(new MoveDeclarationOutOfIfOp(editor));
@@ -1092,7 +1104,6 @@ QList<TextEditor::QuickFixOperation::Ptr> CppQuickFixCollector::quickFixOperatio
QSharedPointer<WrapStringLiteral> wrapStringLiteral(new WrapStringLiteral(editor)); QSharedPointer<WrapStringLiteral> wrapStringLiteral(new WrapStringLiteral(editor));
QSharedPointer<CStringToNSString> wrapCString(new CStringToNSString(editor)); QSharedPointer<CStringToNSString> wrapCString(new CStringToNSString(editor));
QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations;
quickFixOperations.append(rewriteLogicalAndOp); quickFixOperations.append(rewriteLogicalAndOp);
quickFixOperations.append(splitIfStatementOp); quickFixOperations.append(splitIfStatementOp);
quickFixOperations.append(moveDeclarationOutOfIfOp); quickFixOperations.append(moveDeclarationOutOfIfOp);

View File

@@ -107,7 +107,20 @@ public:
virtual bool supportsEditor(TextEditor::ITextEditable *editor); virtual bool supportsEditor(TextEditor::ITextEditable *editor);
virtual TextEditor::QuickFixState *initializeCompletion(TextEditor::ITextEditable *editable); virtual TextEditor::QuickFixState *initializeCompletion(TextEditor::ITextEditable *editable);
virtual QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations(TextEditor::BaseTextEditor *editor) const; };
class CppQuickFixFactory: public TextEditor::IQuickFixFactory
{
Q_OBJECT
public:
CppQuickFixFactory(QObject *parent = 0);
virtual ~CppQuickFixFactory();
/*
* Returns true if this IQuickFixFactory can be used with the given editor.
*/
virtual QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations(TextEditor::BaseTextEditor *editor);
}; };
} // end of namespace Internal } // end of namespace Internal

View File

@@ -31,7 +31,7 @@
#include "basetexteditor.h" #include "basetexteditor.h"
#include <coreplugin/ifile.h> #include <coreplugin/ifile.h>
#include <extensionsystem/pluginmanager.h>
#include <QtGui/QApplication> #include <QtGui/QApplication>
#include <QtGui/QTextBlock> #include <QtGui/QTextBlock>
@@ -40,6 +40,7 @@
using TextEditor::RefactoringChanges; using TextEditor::RefactoringChanges;
using TextEditor::QuickFixOperation; using TextEditor::QuickFixOperation;
using TextEditor::QuickFixCollector; using TextEditor::QuickFixCollector;
using TextEditor::IQuickFixFactory;
QuickFixOperation::QuickFixOperation(TextEditor::BaseTextEditor *editor) QuickFixOperation::QuickFixOperation(TextEditor::BaseTextEditor *editor)
: _editor(editor) : _editor(editor)
@@ -184,3 +185,26 @@ void QuickFixCollector::cleanup()
{ {
_quickFixes.clear(); _quickFixes.clear();
} }
QList<TextEditor::QuickFixOperation::Ptr> QuickFixCollector::quickFixOperations(TextEditor::BaseTextEditor *editor) const
{
QList<TextEditor::IQuickFixFactory *> factories =
ExtensionSystem::PluginManager::instance()->getObjects<TextEditor::IQuickFixFactory>();
QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations;
foreach (TextEditor::IQuickFixFactory *factory, factories)
quickFixOperations += factory->quickFixOperations(editor);
return quickFixOperations;
}
IQuickFixFactory::IQuickFixFactory(QObject *parent)
: QObject(parent)
{
}
IQuickFixFactory::~IQuickFixFactory()
{
}

View File

@@ -115,13 +115,24 @@ public:
virtual void cleanup(); virtual void cleanup();
virtual TextEditor::QuickFixState *initializeCompletion(TextEditor::ITextEditable *editable) = 0; virtual TextEditor::QuickFixState *initializeCompletion(TextEditor::ITextEditable *editable) = 0;
virtual QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations(TextEditor::BaseTextEditor *editor) const = 0; virtual QList<TextEditor::QuickFixOperation::Ptr> quickFixOperations(TextEditor::BaseTextEditor *editor) const;
private: private:
TextEditor::ITextEditable *_editable; TextEditor::ITextEditable *_editable;
QList<TextEditor::QuickFixOperation::Ptr> _quickFixes; QList<TextEditor::QuickFixOperation::Ptr> _quickFixes;
}; };
class TEXTEDITOR_EXPORT IQuickFixFactory: public QObject
{
Q_OBJECT
public:
IQuickFixFactory(QObject *parent = 0);
virtual ~IQuickFixFactory();
virtual QList<QuickFixOperation::Ptr> quickFixOperations(TextEditor::BaseTextEditor *editor) = 0;
};
} // end of namespace TextEditor } // end of namespace TextEditor
#endif // TEXTEDITORQUICKFIX_H #endif // TEXTEDITORQUICKFIX_H