kdelibs/interfaces/ktexteditor/codecompletionmodel.cpp
2014-11-13 01:04:59 +02:00

124 lines
3.1 KiB
C++

/* This file is part of the KDE libraries
Copyright (C) 2005-2006 Hamish Rodda <rodda@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "codecompletionmodel.h"
#include "document.h"
using namespace KTextEditor;
class KTextEditor::CodeCompletionModelPrivate
{
public:
CodeCompletionModelPrivate()
: rowCount(0),hasGroups(true)
{}
int rowCount;
bool hasGroups;
};
CodeCompletionModel::CodeCompletionModel(QObject* parent)
: QAbstractItemModel(parent)
, d(new CodeCompletionModelPrivate)
{
}
CodeCompletionModel::~ CodeCompletionModel()
{
delete d;
}
int CodeCompletionModel::columnCount( const QModelIndex & ) const
{
return ColumnCount;
}
QModelIndex CodeCompletionModel::index( int row, int column, const QModelIndex & parent ) const
{
if (row < 0 || row >= d->rowCount || column < 0 || column >= ColumnCount || parent.isValid())
return QModelIndex();
return createIndex(row, column, 0);
}
QMap< int, QVariant > CodeCompletionModel::itemData( const QModelIndex & index ) const
{
QMap<int, QVariant> ret = QAbstractItemModel::itemData(index);
for (int i = CompletionRole; i <= LastItemDataRole; ++i) {
QVariant v = data(index, i);
if (v.isValid())
ret.insert(i, v);
}
return ret;
}
QModelIndex CodeCompletionModel::parent( const QModelIndex & ) const
{
return QModelIndex();
}
void CodeCompletionModel::setRowCount( int rowCount )
{
d->rowCount = rowCount;
}
int CodeCompletionModel::rowCount( const QModelIndex & parent ) const
{
if (parent.isValid())
return 0;
return d->rowCount;
}
void CodeCompletionModel::completionInvoked(KTextEditor::View* view, const Range& range, InvocationType invocationType)
{
Q_UNUSED(view)
Q_UNUSED(range)
Q_UNUSED(invocationType)
}
void CodeCompletionModel::executeCompletionItem(Document* document, const Range& word, int row) const
{
document->replaceText(word, data(index(row, Name, QModelIndex())).toString());
}
bool CodeCompletionModel::hasGroups() const {
return d->hasGroups;
}
void CodeCompletionModel::setHasGroups(bool hasGroups)
{
if (d->hasGroups!=hasGroups) {
d->hasGroups=hasGroups;
emit hasGroupsChanged(this,hasGroups);
}
}
CodeCompletionModel2::CodeCompletionModel2(QObject* parent) : CodeCompletionModel(parent)
{
}
void CodeCompletionModel2::executeCompletionItem2(Document* document, const Range& word, const QModelIndex& index) const
{
document->replaceText(word, data(index.sibling(index.row(), Name)).toString());
}
#include "codecompletionmodel.moc"