TextEditor: Wiggle codeassist setup

Remove GenericProposalModel convenience constructor,
add GenericProposal instead. Less user side code.

Change-Id: I833f9943df27b50579485c93efb96943ec403f65
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
This commit is contained in:
hjk
2014-09-13 02:22:24 +02:00
parent fef838eed7
commit 78a04f0a6d
13 changed files with 25 additions and 43 deletions

View File

@@ -107,8 +107,8 @@ private:
class VirtualFunctionProposal : public GenericProposal class VirtualFunctionProposal : public GenericProposal
{ {
public: public:
VirtualFunctionProposal(int cursorPos, GenericProposalModel *model, bool openInSplit) VirtualFunctionProposal(int cursorPos, const QList<AssistProposalItem *> &items, bool openInSplit)
: GenericProposal(cursorPos, model) : GenericProposal(cursorPos, items)
, m_openInSplit(openInSplit) , m_openInSplit(openInSplit)
{} {}
@@ -140,9 +140,7 @@ public:
QList<AssistProposalItem *> items; QList<AssistProposalItem *> items;
items << itemFromFunction(m_params.function); items << itemFromFunction(m_params.function);
items << hintItem; items << hintItem;
return new VirtualFunctionProposal(m_params.cursorPosition, return new VirtualFunctionProposal(m_params.cursorPosition, items, m_params.openInNextSplit);
new GenericProposalModel(items),
m_params.openInNextSplit);
} }
IAssistProposal *perform(const AssistInterface *) QTC_OVERRIDE IAssistProposal *perform(const AssistInterface *) QTC_OVERRIDE
@@ -166,9 +164,7 @@ public:
items << itemFromFunction(func); items << itemFromFunction(func);
items.first()->setOrder(1000); // Ensure top position for function of static type items.first()->setOrder(1000); // Ensure top position for function of static type
return new VirtualFunctionProposal(m_params.cursorPosition, return new VirtualFunctionProposal(m_params.cursorPosition, items, m_params.openInNextSplit);
new GenericProposalModel(items),
m_params.openInNextSplit);
} }
private: private:

View File

@@ -915,8 +915,9 @@ class FakeVimAssistProposalModel : public GenericProposalModel
{ {
public: public:
FakeVimAssistProposalModel(const QList<AssistProposalItem *> &items) FakeVimAssistProposalModel(const QList<AssistProposalItem *> &items)
: GenericProposalModel(items) {
{} loadContent(items);
}
bool supportsPrefixExpansion() const QTC_OVERRIDE bool supportsPrefixExpansion() const QTC_OVERRIDE
{ {

View File

@@ -427,14 +427,8 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
} }
m_startPosition = pos + 1; m_startPosition = pos + 1;
return createContentProposal();
}
IAssistProposal *GlslCompletionAssistProcessor::createContentProposal() const return new GenericProposal(m_startPosition, m_completions);
{
GenericProposalModel *model = new GenericProposalModel(m_completions);
IAssistProposal *proposal = new GenericProposal(m_startPosition, model);
return proposal;
} }
IAssistProposal *GlslCompletionAssistProcessor::createHintProposal( IAssistProposal *GlslCompletionAssistProcessor::createHintProposal(

View File

@@ -107,7 +107,6 @@ public:
TextEditor::IAssistProposal *perform(const TextEditor::AssistInterface *interface) QTC_OVERRIDE; TextEditor::IAssistProposal *perform(const TextEditor::AssistInterface *interface) QTC_OVERRIDE;
private: private:
TextEditor::IAssistProposal *createContentProposal() const;
TextEditor::IAssistProposal *createHintProposal(const QVector<GLSL::Function *> &symbols); TextEditor::IAssistProposal *createHintProposal(const QVector<GLSL::Function *> &symbols);
bool acceptsIdleEditor() const; bool acceptsIdleEditor() const;
void addCompletion(const QString &text, const QIcon &icon, int order = 0); void addCompletion(const QString &text, const QIcon &icon, int order = 0);

View File

@@ -512,8 +512,7 @@ QmlJSCompletionAssistProcessor::~QmlJSCompletionAssistProcessor()
IAssistProposal *QmlJSCompletionAssistProcessor::createContentProposal() const IAssistProposal *QmlJSCompletionAssistProcessor::createContentProposal() const
{ {
GenericProposalModel *model = new QmlJSAssistProposalModel(m_completions); GenericProposalModel *model = new QmlJSAssistProposalModel(m_completions);
IAssistProposal *proposal = new GenericProposal(m_startPosition, model); return new GenericProposal(m_startPosition, model);
return proposal;
} }
IAssistProposal *QmlJSCompletionAssistProcessor::createHintProposal( IAssistProposal *QmlJSCompletionAssistProcessor::createHintProposal(

View File

@@ -66,8 +66,9 @@ class QmlJSAssistProposalModel : public TextEditor::GenericProposalModel
{ {
public: public:
QmlJSAssistProposalModel(const QList<TextEditor::AssistProposalItem *> &items) QmlJSAssistProposalModel(const QList<TextEditor::AssistProposalItem *> &items)
: TextEditor::GenericProposalModel(items) {
{} loadContent(items);
}
void filter(const QString &prefix) QTC_OVERRIDE; void filter(const QString &prefix) QTC_OVERRIDE;
void sort(const QString &prefix) QTC_OVERRIDE; void sort(const QString &prefix) QTC_OVERRIDE;

View File

@@ -92,8 +92,6 @@ public:
if (!interface) if (!interface)
return 0; return 0;
QScopedPointer<const AssistInterface> assistInterface(interface);
QIcon icon = QIcon::fromTheme(QLatin1String("edit-paste"), QIcon(QLatin1String(Core::Constants::ICON_PASTE))).pixmap(16); QIcon icon = QIcon::fromTheme(QLatin1String("edit-paste"), QIcon(QLatin1String(Core::Constants::ICON_PASTE))).pixmap(16);
CircularClipboard * clipboard = CircularClipboard::instance(); CircularClipboard * clipboard = CircularClipboard::instance();
QList<AssistProposalItem *> items; QList<AssistProposalItem *> items;
@@ -106,7 +104,7 @@ public:
items.append(item); items.append(item);
} }
return new GenericProposal(interface->position(), new GenericProposalModel(items)); return new GenericProposal(interface->position(), items);
} }
}; };

View File

@@ -38,6 +38,13 @@ GenericProposal::GenericProposal(int cursorPos, GenericProposalModel *model)
, m_model(model) , m_model(model)
{} {}
GenericProposal::GenericProposal(int cursorPos, const QList<AssistProposalItem *> &items)
: m_basePosition(cursorPos)
, m_model(new GenericProposalModel)
{
m_model->loadContent(items);
}
GenericProposal::~GenericProposal() GenericProposal::~GenericProposal()
{} {}

View File

@@ -37,11 +37,13 @@
namespace TextEditor { namespace TextEditor {
class GenericProposalModel; class GenericProposalModel;
class AssistProposalItem;
class TEXTEDITOR_EXPORT GenericProposal : public IAssistProposal class TEXTEDITOR_EXPORT GenericProposal : public IAssistProposal
{ {
public: public:
GenericProposal(int cursorPos, GenericProposalModel *model); GenericProposal(int cursorPos, GenericProposalModel *model);
GenericProposal(int cursorPos, const QList<AssistProposalItem *> &items);
~GenericProposal(); ~GenericProposal();
bool isFragile() const QTC_OVERRIDE; bool isFragile() const QTC_OVERRIDE;

View File

@@ -136,13 +136,6 @@ private:
GenericProposalModel::GenericProposalModel() GenericProposalModel::GenericProposalModel()
{} {}
GenericProposalModel::GenericProposalModel(const QList<AssistProposalItem *> &items)
: m_currentItems(items)
, m_originalItems(items)
{
mapPersistentIds();
}
GenericProposalModel::~GenericProposalModel() GenericProposalModel::~GenericProposalModel()
{ {
qDeleteAll(m_originalItems); qDeleteAll(m_originalItems);
@@ -152,11 +145,6 @@ void GenericProposalModel::loadContent(const QList<AssistProposalItem *> &items)
{ {
m_originalItems = items; m_originalItems = items;
m_currentItems = items; m_currentItems = items;
mapPersistentIds();
}
void GenericProposalModel::mapPersistentIds()
{
for (int i = 0; i < m_originalItems.size(); ++i) for (int i = 0; i < m_originalItems.size(); ++i)
m_idByText.insert(m_originalItems.at(i)->text(), i); m_idByText.insert(m_originalItems.at(i)->text(), i);
} }

View File

@@ -50,7 +50,6 @@ class TEXTEDITOR_EXPORT GenericProposalModel : public IAssistProposalModel
{ {
public: public:
GenericProposalModel(); GenericProposalModel();
GenericProposalModel(const QList<AssistProposalItem *> &items);
~GenericProposalModel(); ~GenericProposalModel();
void reset() QTC_OVERRIDE; void reset() QTC_OVERRIDE;
@@ -77,8 +76,6 @@ protected:
QList<AssistProposalItem *> m_currentItems; QList<AssistProposalItem *> m_currentItems;
private: private:
void mapPersistentIds();
QHash<QString, int> m_idByText; QHash<QString, int> m_idByText;
QList<AssistProposalItem *> m_originalItems; QList<AssistProposalItem *> m_originalItems;
}; };

View File

@@ -196,10 +196,10 @@ IAssistProposal *KeywordsCompletionAssistProcessor::perform(const AssistInterfac
IAssistProposal *proposal = new FunctionHintProposal(m_startPosition, model); IAssistProposal *proposal = new FunctionHintProposal(m_startPosition, model);
return proposal; return proposal;
} else { } else {
QList<TextEditor::AssistProposalItem *> items; QList<AssistProposalItem *> items;
addWordsToProposalList(&items, m_keywords.variables(), m_variableIcon); addWordsToProposalList(&items, m_keywords.variables(), m_variableIcon);
addWordsToProposalList(&items, m_keywords.functions(), m_functionIcon); addWordsToProposalList(&items, m_keywords.functions(), m_functionIcon);
return new GenericProposal(m_startPosition, new GenericProposalModel(items)); return new GenericProposal(m_startPosition, items);
} }
} }

View File

@@ -72,7 +72,7 @@ IAssistProposal *QuickFixAssistProcessor::perform(const AssistInterface *interfa
item->setOrder(op->priority()); item->setOrder(op->priority());
items.append(item); items.append(item);
} }
return new GenericProposal(interface->position(), new GenericProposalModel(items)); return new GenericProposal(interface->position(), items);
} }
return 0; return 0;