summaryrefslogtreecommitdiff
path: root/apps/opencs/view/world/dialoguecreator.cpp
blob: 82ebee8467739307dda8bc815cbf72369d17b86d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "dialoguecreator.hpp"

#include <components/esm3/loaddial.hpp>

#include "../../model/doc/document.hpp"

#include "../../model/world/data.hpp"
#include "../../model/world/commands.hpp"
#include "../../model/world/columns.hpp"
#include "../../model/world/idtable.hpp"

void CSVWorld::DialogueCreator::configureCreateCommand (CSMWorld::CreateCommand& command) const
{
    int index =
        dynamic_cast<CSMWorld::IdTable&> (*getData().getTableModel (getCollectionId())).
        findColumnIndex (CSMWorld::Columns::ColumnId_DialogueType);

    command.addValue (index, mType);
}

CSVWorld::DialogueCreator::DialogueCreator (CSMWorld::Data& data, QUndoStack& undoStack,
    const CSMWorld::UniversalId& id, int type)
: GenericCreator (data, undoStack, id, true), mType (type)
{}

CSVWorld::Creator *CSVWorld::TopicCreatorFactory::makeCreator (CSMDoc::Document& document, 
                                                               const CSMWorld::UniversalId& id) const
{
    return new DialogueCreator (document.getData(), document.getUndoStack(), id, ESM::Dialogue::Topic);
}

CSVWorld::Creator *CSVWorld::JournalCreatorFactory::makeCreator (CSMDoc::Document& document, 
                                                                 const CSMWorld::UniversalId& id) const
{
    return new DialogueCreator (document.getData(), document.getUndoStack(), id, ESM::Dialogue::Journal);
}