handle comboboxes

actorid
Marek Kochanowicz 11 years ago
parent a8b11829d4
commit 08ccae6b49

@ -17,4 +17,9 @@ bool CSMWorld::ColumnBase::isUserEditable() const
std::string CSMWorld::ColumnBase::getTitle() const
{
return Columns::getName (static_cast<Columns::ColumnId> (mColumnId));
}
int CSMWorld::ColumnBase::getId() const
{
return mColumnId;
}

@ -105,6 +105,8 @@ namespace CSMWorld
///< Can this column be edited directly by the user?
virtual std::string getTitle() const;
virtual int getId() const;
};
template<typename ESXRecordT>

@ -230,4 +230,9 @@ std::pair<CSMWorld::UniversalId, std::string> CSMWorld::IdTable::view (int row)
id = "sys::default";
return std::make_pair (UniversalId (UniversalId::Type_Scene, id), hint);
}
int CSMWorld::IdTable::getColumnId(int column) const
{
return mIdCollection->getColumn(column).getId();
}

@ -103,6 +103,8 @@ namespace CSMWorld
std::pair<UniversalId, std::string> view (int row) const;
///< Return the UniversalId and the hint for viewing \a row. If viewing is not
/// supported by this table, return (UniversalId::Type_None, "").
int getColumnId(int column) const;
};
}

@ -16,6 +16,7 @@
#include "../../model/world/columnbase.hpp"
#include "../../model/world/idtable.hpp"
#include "../../model/world/columns.hpp"
#include "recordstatusdelegate.hpp"
#include "util.hpp"
@ -123,13 +124,20 @@ QSize CSVWorld::DialogueDelegateDispatcher::sizeHint (const QStyleOptionViewItem
QWidget* CSVWorld::DialogueDelegateDispatcher::makeEditor(CSMWorld::ColumnBase::Display display, const QModelIndex& index)
{
bool hasEnums = CSMWorld::Columns::hasEnums(static_cast<CSMWorld::Columns::ColumnId>(mTable->getColumnId(index.column() ) ) );
QWidget* editor = NULL;
std::map<int, CommandDelegate*>::iterator delegateIt(mDelegates.find(display));
if (delegateIt != mDelegates.end())
{
editor = delegateIt->second->createEditor(dynamic_cast<QWidget*>(mParent), QStyleOptionViewItem(), index);
DialogueDelegateDispatcherProxy* proxy = new DialogueDelegateDispatcherProxy(editor, display);
connect(editor, SIGNAL(editingFinished()), proxy, SLOT(editorDataCommited()));
if (hasEnums) //combox is used for all enums
{
connect(editor, SIGNAL(currentIndexChanged ( int)), proxy, SLOT(editorDataCommited()));
} else
{
connect(editor, SIGNAL(editingFinished()), proxy, SLOT(editorDataCommited()));
}
connect(proxy, SIGNAL(editorDataCommited(QWidget*, const QModelIndex&, CSMWorld::ColumnBase::Display)), this, SLOT(editorDataCommited(QWidget*, const QModelIndex&, CSMWorld::ColumnBase::Display)));
mProxys.push_back(proxy); //deleted in the destructor
}

Loading…
Cancel
Save