forked from mirror/openmw-tes3mp
hocking up dialogue sub view to a widget mapper
This commit is contained in:
parent
c0fb46384c
commit
d4a9236ae5
2 changed files with 55 additions and 0 deletions
|
@ -4,6 +4,10 @@
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QAbstractTableModel>
|
#include <QAbstractTableModel>
|
||||||
|
#include <QDoubleSpinBox>
|
||||||
|
#include <QSpinBox>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QDataWidgetMapper>
|
||||||
|
|
||||||
#include "../../model/world/columnbase.hpp"
|
#include "../../model/world/columnbase.hpp"
|
||||||
|
|
||||||
|
@ -23,6 +27,9 @@ CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId& id, CSM
|
||||||
|
|
||||||
int columns = model->columnCount();
|
int columns = model->columnCount();
|
||||||
|
|
||||||
|
mWidgetMapper = new QDataWidgetMapper (this);
|
||||||
|
mWidgetMapper->setModel (model);
|
||||||
|
|
||||||
for (int i=0; i<columns; ++i)
|
for (int i=0; i<columns; ++i)
|
||||||
{
|
{
|
||||||
int flags = model->headerData (i, Qt::Horizontal, CSMWorld::ColumnBase::Role_Flags).toInt();
|
int flags = model->headerData (i, Qt::Horizontal, CSMWorld::ColumnBase::Role_Flags).toInt();
|
||||||
|
@ -30,8 +37,53 @@ CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId& id, CSM
|
||||||
if (flags & CSMWorld::ColumnBase::Flag_Dialogue)
|
if (flags & CSMWorld::ColumnBase::Flag_Dialogue)
|
||||||
{
|
{
|
||||||
layout->addWidget (new QLabel (model->headerData (i, Qt::Horizontal).toString()), i, 0);
|
layout->addWidget (new QLabel (model->headerData (i, Qt::Horizontal).toString()), i, 0);
|
||||||
|
|
||||||
|
CSMWorld::ColumnBase::Display display = static_cast<CSMWorld::ColumnBase::Display>
|
||||||
|
(model->headerData (i, Qt::Horizontal, CSMWorld::ColumnBase::Role_Display).toInt());
|
||||||
|
|
||||||
|
QWidget *widget = 0;
|
||||||
|
|
||||||
|
if (model->flags (model->index (0, i)) & Qt::ItemIsEditable)
|
||||||
|
{
|
||||||
|
switch (display)
|
||||||
|
{
|
||||||
|
case CSMWorld::ColumnBase::Display_String:
|
||||||
|
|
||||||
|
layout->addWidget (widget = new QLineEdit, i, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CSMWorld::ColumnBase::Display_Integer:
|
||||||
|
|
||||||
|
/// \todo configure widget properly (range)
|
||||||
|
layout->addWidget (widget = new QSpinBox, i, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CSMWorld::ColumnBase::Display_Float:
|
||||||
|
|
||||||
|
/// \todo configure widget properly (range, format?)
|
||||||
|
layout->addWidget (widget = new QDoubleSpinBox, i, 1);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (display)
|
||||||
|
{
|
||||||
|
case CSMWorld::ColumnBase::Display_String:
|
||||||
|
case CSMWorld::ColumnBase::Display_Integer:
|
||||||
|
case CSMWorld::ColumnBase::Display_Float:
|
||||||
|
|
||||||
|
layout->addWidget (widget = new QLabel, i, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget)
|
||||||
|
mWidgetMapper->addMapping (widget, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mWidgetMapper->toFirst(); /// \todo use the correct row instead
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVWorld::DialogueSubView::setEditLock (bool locked)
|
void CSVWorld::DialogueSubView::setEditLock (bool locked)
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "../doc/subview.hpp"
|
#include "../doc/subview.hpp"
|
||||||
|
|
||||||
|
class QDataWidgetMapper;
|
||||||
|
|
||||||
namespace CSMDoc
|
namespace CSMDoc
|
||||||
{
|
{
|
||||||
class Document;
|
class Document;
|
||||||
|
@ -12,6 +14,7 @@ namespace CSVWorld
|
||||||
{
|
{
|
||||||
class DialogueSubView : public CSVDoc::SubView
|
class DialogueSubView : public CSVDoc::SubView
|
||||||
{
|
{
|
||||||
|
QDataWidgetMapper *mWidgetMapper;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue