added dialogue sub view (editing of a single record; not functional yet); fixed a bug in Universal to string conversion

This commit is contained in:
Marc Zinnschlag 2012-12-13 13:35:08 +01:00
parent 02184526e6
commit 3d4c8c5444
12 changed files with 92 additions and 4 deletions

View file

@ -14,6 +14,7 @@ set (OPENCS_SRC
view/doc/subview.cpp view/doc/subview.cpp
view/world/table.cpp view/world/tablesubview.cpp view/world/subviews.cpp view/world/util.cpp view/world/table.cpp view/world/tablesubview.cpp view/world/subviews.cpp view/world/util.cpp
view/world/dialoguesubview.cpp
view/tools/reportsubview.cpp view/tools/subviews.cpp view/tools/reportsubview.cpp view/tools/subviews.cpp
) )
@ -34,6 +35,7 @@ set (OPENCS_HDR
view/doc/subview.hpp view/doc/subviewfactoryimp.hpp view/doc/subview.hpp view/doc/subviewfactoryimp.hpp
view/world/table.hpp view/world/tablesubview.hpp view/world/subviews.hpp view/world/util.hpp view/world/table.hpp view/world/tablesubview.hpp view/world/subviews.hpp view/world/util.hpp
view/world/dialoguesubview.hpp
view/tools/reportsubview.hpp view/tools/subviews.hpp view/tools/reportsubview.hpp view/tools/subviews.hpp
) )

View file

@ -67,6 +67,24 @@ namespace CSMWorld
return true; return true;
} }
}; };
template<typename ESXRecordT>
struct FixedRecordTypeColumn : public Column<ESXRecordT>
{
int mType;
FixedRecordTypeColumn (int type) : Column<ESXRecordT> ("Type"), mType (type) {}
virtual QVariant get (const Record<ESXRecordT>& record) const
{
return mType;
}
virtual bool isEditable() const
{
return false;
}
};
} }
#endif #endif

View file

@ -14,6 +14,7 @@ CSMWorld::Data::Data()
{ {
mGlobals.addColumn (new StringIdColumn<ESM::Global>); mGlobals.addColumn (new StringIdColumn<ESM::Global>);
mGlobals.addColumn (new RecordStateColumn<ESM::Global>); mGlobals.addColumn (new RecordStateColumn<ESM::Global>);
mGlobals.addColumn (new FixedRecordTypeColumn<ESM::Global> (UniversalId::Type_Global));
mGlobals.addColumn (new FloatValueColumn<ESM::Global>); mGlobals.addColumn (new FloatValueColumn<ESM::Global>);
mModels.insert (std::make_pair ( mModels.insert (std::make_pair (

View file

@ -24,6 +24,7 @@ namespace
static const TypeData sIdArg[] = static const TypeData sIdArg[] =
{ {
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Global, "Global Variable" },
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0 } // end marker { CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0 } // end marker
}; };
@ -208,8 +209,8 @@ std::string CSMWorld::UniversalId::toString() const
switch (mArgumentType) switch (mArgumentType)
{ {
case ArgumentType_None: break; case ArgumentType_None: break;
case ArgumentType_Id: stream << ": " << mId; case ArgumentType_Id: stream << ": " << mId; break;
case ArgumentType_Index: stream << ": " << mIndex; case ArgumentType_Index: stream << ": " << mIndex; break;
} }
return stream.str(); return stream.str();

View file

@ -36,6 +36,8 @@ namespace CSMWorld
Type_Globals, Type_Globals,
Type_Global,
Type_VerificationResults Type_VerificationResults
}; };

View file

@ -0,0 +1,14 @@
#include "dialoguesubview.hpp"
CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document,
bool createAndDelete)
: SubView (id)
{
}
void CSVWorld::DialogueSubView::setEditLock (bool locked)
{
}

View file

@ -0,0 +1,24 @@
#ifndef CSV_WORLD_DIALOGUESUBVIEW_H
#define CSV_WORLD_DIALOGUESUBVIEW_H
#include "../doc/subview.hpp"
namespace CSMDoc
{
class Document;
}
namespace CSVWorld
{
class DialogueSubView : public CSVDoc::SubView
{
public:
DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete);
virtual void setEditLock (bool locked);
};
}
#endif

View file

@ -4,9 +4,13 @@
#include "../doc/subviewfactoryimp.hpp" #include "../doc/subviewfactoryimp.hpp"
#include "tablesubview.hpp" #include "tablesubview.hpp"
#include "dialoguesubview.hpp"
void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager) void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
{ {
manager.add (CSMWorld::UniversalId::Type_Globals, manager.add (CSMWorld::UniversalId::Type_Globals,
new CSVDoc::SubViewFactoryWithCreateFlag<TableSubView> (true)); new CSVDoc::SubViewFactoryWithCreateFlag<TableSubView> (true));
manager.add (CSMWorld::UniversalId::Type_Global,
new CSVDoc::SubViewFactoryWithCreateFlag<DialogueSubView> (true));
} }

View file

@ -2,7 +2,7 @@
#include "table.hpp" #include "table.hpp"
#include <QHeaderView> #include <QHeaderView>
#include <QUndoStack>
#include <QAction> #include <QAction>
#include <QMenu> #include <QMenu>
#include <QContextMenuEvent> #include <QContextMenuEvent>
@ -129,6 +129,13 @@ void CSVWorld::Table::setEditLock (bool locked)
mEditLock = locked; mEditLock = locked;
} }
CSMWorld::UniversalId CSVWorld::Table::getUniversalId (int row) const
{
return CSMWorld::UniversalId (
static_cast<CSMWorld::UniversalId::Type> (mProxyModel->data (mProxyModel->index (row, 2)).toInt()),
mProxyModel->data (mProxyModel->index (row, 0)).toString().toStdString());
}
#include <sstream> /// \todo remove #include <sstream> /// \todo remove
void CSVWorld::Table::createRecord() void CSVWorld::Table::createRecord()
{ {

View file

@ -50,6 +50,8 @@ namespace CSVWorld
void setEditLock (bool locked); void setEditLock (bool locked);
CSMWorld::UniversalId getUniversalId (int row) const;
private slots: private slots:
void createRecord(); void createRecord();

View file

@ -10,9 +10,16 @@ CSVWorld::TableSubView::TableSubView (const CSMWorld::UniversalId& id, CSMDoc::D
: SubView (id) : SubView (id)
{ {
setWidget (mTable = new Table (id, document.getData(), document.getUndoStack(), createAndDelete)); setWidget (mTable = new Table (id, document.getData(), document.getUndoStack(), createAndDelete));
connect (mTable, SIGNAL (doubleClicked (const QModelIndex&)), this, SLOT (rowActivated (const QModelIndex&)));
} }
void CSVWorld::TableSubView::setEditLock (bool locked) void CSVWorld::TableSubView::setEditLock (bool locked)
{ {
mTable->setEditLock (locked); mTable->setEditLock (locked);
} }
void CSVWorld::TableSubView::rowActivated (const QModelIndex& index)
{
focusId (mTable->getUniversalId (index.row()));
}

View file

@ -3,7 +3,7 @@
#include "../doc/subview.hpp" #include "../doc/subview.hpp"
class QUndoStack; class QModelIndex;
namespace CSMDoc namespace CSMDoc
{ {
@ -16,6 +16,8 @@ namespace CSVWorld
class TableSubView : public CSVDoc::SubView class TableSubView : public CSVDoc::SubView
{ {
Q_OBJECT
Table *mTable; Table *mTable;
public: public:
@ -23,6 +25,10 @@ namespace CSVWorld
TableSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete); TableSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete);
virtual void setEditLock (bool locked); virtual void setEditLock (bool locked);
private slots:
void rowActivated (const QModelIndex& index);
}; };
} }