Add the ID completion delegate

c++11
Stanislav Bas 10 years ago
parent 19cc6b83e5
commit 33e36ee922

@ -69,7 +69,7 @@ opencs_units (view/world
opencs_units_noqt (view/world
subviews enumdelegate vartypedelegate recordstatusdelegate idtypedelegate datadisplaydelegate
scripthighlighter idvalidator dialoguecreator physicssystem
scripthighlighter idvalidator dialoguecreator physicssystem idcompletiondelegate
)
opencs_units (view/widget

@ -0,0 +1,41 @@
#include "idcompletiondelegate.hpp"
#include "../../model/world/idcompletionmanager.hpp"
CSVWorld::IdCompletionDelegate::IdCompletionDelegate(CSMWorld::CommandDispatcher *dispatcher,
CSMDoc::Document& document,
QObject *parent)
: CommandDelegate(dispatcher, document, parent)
{}
QWidget *CSVWorld::IdCompletionDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
return createEditor(parent, option, index, CSMWorld::ColumnBase::Display_None);
}
QWidget *CSVWorld::IdCompletionDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index,
CSMWorld::ColumnBase::Display display) const
{
int columnIdData = index.data(CSMWorld::ColumnBase::Role_ColumnId).toInt();
CSMWorld::Columns::ColumnId columnId = static_cast<CSMWorld::Columns::ColumnId>(columnIdData);
CSMWorld::IdCompletionManager &completionManager = getDocument().getIdCompletionManager();
QWidget *editor = CSVWorld::CommandDelegate::createEditor(parent, option, index, display);
QLineEdit *lineEditor = qobject_cast<QLineEdit *>(editor);
if (lineEditor != NULL && completionManager.isCompleterExistFor(columnId))
{
lineEditor->setCompleter(completionManager.getCompleter(columnId).get());
}
return editor;
}
CSVWorld::CommandDelegate *CSVWorld::IdCompletionDelegateFactory::makeDelegate(CSMWorld::CommandDispatcher *dispatcher,
CSMDoc::Document& document,
QObject *parent) const
{
return new IdCompletionDelegate(dispatcher, document, parent);
}

@ -0,0 +1,36 @@
#ifndef CSV_WORLD_IDCOMPLETIONMANAGER_HPP
#define CSV_WORLD_IDCOMPLETIONMANAGER_HPP
#include "util.hpp"
namespace CSVWorld
{
/// \brief Enables the Id completion for a column
class IdCompletionDelegate : public CommandDelegate
{
public:
IdCompletionDelegate(CSMWorld::CommandDispatcher *dispatcher,
CSMDoc::Document& document,
QObject *parent);
virtual QWidget *createEditor (QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index) const;
virtual QWidget *createEditor (QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index,
CSMWorld::ColumnBase::Display display) const;
};
class IdCompletionDelegateFactory : public CommandDelegateFactory
{
public:
virtual CommandDelegate *makeDelegate(CSMWorld::CommandDispatcher *dispatcher,
CSMDoc::Document& document,
QObject *parent) const;
///< The ownership of the returned CommandDelegate is transferred to the caller.
};
}
#endif
Loading…
Cancel
Save