1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-04-01 12:06:43 +00:00

buttons are functional

This commit is contained in:
Marek Kochanowicz 2014-03-12 12:25:37 +01:00
parent 299b7a6ce6
commit cb9bcc3cc1
3 changed files with 81 additions and 24 deletions

View file

@ -255,21 +255,19 @@ CSVWorld::DialogueDelegateDispatcher::~DialogueDelegateDispatcher()
=============================================================EditWidget===================================================== =============================================================EditWidget=====================================================
*/ */
CSVWorld::EditWidget::EditWidget(QWidget *parent, const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete) : CSVWorld::EditWidget::EditWidget(QWidget *parent, int row, CSMWorld::IdTable* table, QUndoStack& undoStack, bool createAndDelete) :
mDispatcher(this, dynamic_cast<CSMWorld::IdTable*>(document.getData().getTableModel (id)), document.getUndoStack()), mDispatcher(this, table, undoStack),
QScrollArea(parent), QScrollArea(parent),
mWidgetMapper(NULL), mWidgetMapper(NULL),
mMainWidget(NULL), mMainWidget(NULL),
mUndoStack(document.getUndoStack()), mUndoStack(undoStack),
mTable(dynamic_cast<CSMWorld::IdTable*>(document.getData().getTableModel(id))) mTable(table)
{ {
remake (id); remake (row);
} }
void CSVWorld::EditWidget::remake(const CSMWorld::UniversalId& id) void CSVWorld::EditWidget::remake(int row)
{ {
const QModelIndex indexToFocus(mTable->getModelIndex (id.getId(), 0));
if (mMainWidget) if (mMainWidget)
{ {
delete mMainWidget; delete mMainWidget;
@ -300,7 +298,6 @@ void CSVWorld::EditWidget::remake(const CSMWorld::UniversalId& id)
int unlocked = 0; int unlocked = 0;
int locked = 0; int locked = 0;
const int focusedRow = indexToFocus.row();
const int columns = mTable->columnCount(); const int columns = mTable->columnCount();
for (int i=0; i<columns; ++i) for (int i=0; i<columns; ++i)
{ {
@ -312,7 +309,7 @@ void CSVWorld::EditWidget::remake(const CSMWorld::UniversalId& id)
(mTable->headerData (i, Qt::Horizontal, CSMWorld::ColumnBase::Role_Display).toInt()); (mTable->headerData (i, Qt::Horizontal, CSMWorld::ColumnBase::Role_Display).toInt());
mDispatcher.makeDelegate(display); mDispatcher.makeDelegate(display);
QWidget *editor = mDispatcher.makeEditor(display, (mTable->index (focusedRow, i))); QWidget *editor = mDispatcher.makeEditor(display, (mTable->index (row, i)));
if (editor) if (editor)
{ {
@ -335,7 +332,7 @@ void CSVWorld::EditWidget::remake(const CSMWorld::UniversalId& id)
} }
} }
mWidgetMapper->setCurrentModelIndex (indexToFocus); mWidgetMapper->setCurrentModelIndex(mTable->index(row, 0));
this->setMinimumWidth(300); this->setMinimumWidth(300);
this->setWidget(mMainWidget); this->setWidget(mMainWidget);
@ -349,25 +346,71 @@ void CSVWorld::EditWidget::remake(const CSMWorld::UniversalId& id)
CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document,
bool createAndDelete) : bool createAndDelete) :
SubView (id) SubView (id),
mEditWidget(0),
mMainLayout(NULL),
mUndoStack(document.getUndoStack()),
mTable(dynamic_cast<CSMWorld::IdTable*>(document.getData().getTableModel(id))),
mRow (-1)
{ {
mRow = mTable->getModelIndex (id.getId(), 0).row();
QWidget *mainWidget = new QWidget(this); QWidget *mainWidget = new QWidget(this);
QHBoxLayout *buttonsLayout = new QHBoxLayout; QHBoxLayout *buttonsLayout = new QHBoxLayout;
QPushButton* mPrevButton = new QPushButton(tr("Previous")); QPushButton* prevButton = new QPushButton(tr("Previous"), mainWidget);
QPushButton* mNextButton = new QPushButton(tr("Next")); QPushButton* nextButton = new QPushButton(tr("Next"), mainWidget);
buttonsLayout->addWidget(mPrevButton); buttonsLayout->addWidget(prevButton);
buttonsLayout->addWidget(mNextButton); buttonsLayout->addWidget(nextButton);
connect(nextButton, SIGNAL(clicked()), this, SLOT(nextId()));
connect(prevButton, SIGNAL(clicked()), this, SLOT(prevId()));
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget); mMainLayout = new QVBoxLayout(mainWidget);
mEditWidget = new EditWidget(mainWidget, mRow, mTable, mUndoStack, false);
mMainLayout->addLayout(buttonsLayout);
mMainLayout->addWidget(mEditWidget);
mEditWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
EditWidget* editWidget = new EditWidget(mainWidget, id, document, false);
mainLayout->addLayout(buttonsLayout);
mainLayout->addWidget(editWidget);
editWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
setWidget(mainWidget); setWidget(mainWidget);
}
void CSVWorld::DialogueSubView::prevId()
{
if (mRow < 1)
{
return;
}
int newRow = mRow - 1;
QModelIndex newIndex(mTable->index(newRow, 0));
if (!newIndex.isValid())
{
return;
}
mEditWidget->remake(newRow);
mRow = newRow;
}
void CSVWorld::DialogueSubView::nextId()
{
if (mRow == -1)
{
return;
}
int newRow = mRow + 1;
QModelIndex newIndex(mTable->index(newRow, 0));
if (!newIndex.isValid())
{
return;
}
mEditWidget->remake(newRow);
mRow = newRow;
} }
void CSVWorld::DialogueSubView::setEditLock (bool locked) void CSVWorld::DialogueSubView::setEditLock (bool locked)

View file

@ -14,6 +14,7 @@ class QDataWidgetMapper;
class QSize; class QSize;
class QEvent; class QEvent;
class QLabel; class QLabel;
class QVBoxLayout;
namespace CSMWorld namespace CSMWorld
{ {
@ -130,18 +131,32 @@ namespace CSVWorld
public: public:
EditWidget (QWidget *parent, const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete = false); EditWidget (QWidget *parent, int row, CSMWorld::IdTable* table, QUndoStack& undoStack, bool createAndDelete = false);
void remake(const CSMWorld::UniversalId& id); void remake(int row);
}; };
class DialogueSubView : public CSVDoc::SubView class DialogueSubView : public CSVDoc::SubView
{ {
Q_OBJECT
EditWidget* mEditWidget;
QVBoxLayout* mMainLayout;
CSMWorld::IdTable* mTable;
QUndoStack& mUndoStack;
int mRow;
public: public:
DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete = false); DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete = false);
virtual void setEditLock (bool locked); virtual void setEditLock (bool locked);
private slots:
void nextId();
void prevId();
}; };
} }

View file

@ -9,7 +9,6 @@
#include <QUndoStack> #include <QUndoStack>
#include "../../model/world/commands.hpp" #include "../../model/world/commands.hpp"
#include <iostream>
void CSVWorld::EnumDelegate::setModelDataImp (QWidget *editor, QAbstractItemModel *model, void CSVWorld::EnumDelegate::setModelDataImp (QWidget *editor, QAbstractItemModel *model,
const QModelIndex& index) const const QModelIndex& index) const