mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-30 06:15:32 +00:00
Changes needed to add new nested row.
This commit is contained in:
parent
befdeb1889
commit
7b5bf637ab
9 changed files with 50 additions and 0 deletions
|
@ -52,3 +52,8 @@ void CSMWorld::CollectionBase::removeNestedRows(int row, int column, int subRow)
|
||||||
{
|
{
|
||||||
assert(false); //todo, make pure abstract
|
assert(false); //todo, make pure abstract
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSMWorld::CollectionBase::addNestedRow(int row, int col, int position)
|
||||||
|
{
|
||||||
|
assert(false);
|
||||||
|
}
|
||||||
|
|
|
@ -66,6 +66,8 @@ namespace CSMWorld
|
||||||
|
|
||||||
virtual void removeNestedRows(int row, int column, int subRow);
|
virtual void removeNestedRows(int row, int column, int subRow);
|
||||||
|
|
||||||
|
virtual void addNestedRow(int row, int col, int position);
|
||||||
|
|
||||||
virtual void appendBlankRecord (const std::string& id,
|
virtual void appendBlankRecord (const std::string& id,
|
||||||
UniversalId::Type type = UniversalId::Type_None) = 0;
|
UniversalId::Type type = UniversalId::Type_None) = 0;
|
||||||
///< \param type Will be ignored, unless the collection supports multiple record types
|
///< \param type Will be ignored, unless the collection supports multiple record types
|
||||||
|
|
|
@ -145,6 +145,13 @@ bool CSMWorld::IdTable::removeRows (int row, int count, const QModelIndex& paren
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSMWorld::IdTable::addNestedRow(const QModelIndex& parent, int position)
|
||||||
|
{
|
||||||
|
assert(parent.isValid());
|
||||||
|
|
||||||
|
mIdCollection->addNestedRow(parent.row(), parent.column(), position);
|
||||||
|
}
|
||||||
|
|
||||||
QModelIndex CSMWorld::IdTable::index (int row, int column, const QModelIndex& parent) const
|
QModelIndex CSMWorld::IdTable::index (int row, int column, const QModelIndex& parent) const
|
||||||
{
|
{
|
||||||
unsigned int encodedId = 0;
|
unsigned int encodedId = 0;
|
||||||
|
|
|
@ -80,6 +80,8 @@ namespace CSMWorld
|
||||||
|
|
||||||
virtual bool removeRows (int row, int count, const QModelIndex& parent = QModelIndex());
|
virtual bool removeRows (int row, int count, const QModelIndex& parent = QModelIndex());
|
||||||
|
|
||||||
|
void addNestedRow (const QModelIndex& parent, int position);
|
||||||
|
|
||||||
virtual QModelIndex index (int row, int column, const QModelIndex& parent = QModelIndex())
|
virtual QModelIndex index (int row, int column, const QModelIndex& parent = QModelIndex())
|
||||||
const;
|
const;
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,8 @@ namespace CSMWorld
|
||||||
virtual int getNestedRowsCount(const RefIdColumn *column, const RefIdData& data, int index) const = 0;
|
virtual int getNestedRowsCount(const RefIdColumn *column, const RefIdData& data, int index) const = 0;
|
||||||
|
|
||||||
virtual void removeNestedRow (const RefIdColumn *column, RefIdData& data, int index, int rowToRemove) const = 0;
|
virtual void removeNestedRow (const RefIdColumn *column, RefIdData& data, int index, int rowToRemove) const = 0;
|
||||||
|
|
||||||
|
virtual void addNestedRow (const RefIdColumn *column, RefIdData& data, int index, int position) const = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -227,6 +227,25 @@ void CSMWorld::ContainerRefIdAdapter::removeNestedRow (const RefIdColumn *column
|
||||||
list.erase (list.begin () + rowToRemove);
|
list.erase (list.begin () + rowToRemove);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSMWorld::ContainerRefIdAdapter::addNestedRow (const RefIdColumn *column, RefIdData& data, int index, int position) const
|
||||||
|
{
|
||||||
|
assert(column==mContent);
|
||||||
|
|
||||||
|
std::vector<ESM::ContItem>& list = static_cast<Record<ESM::Container>&> (
|
||||||
|
data.getRecord (RefIdData::LocalIndex (index, UniversalId::Type_Container))).get().mInventory.mList;
|
||||||
|
|
||||||
|
ESM::ContItem newRow = {0, ""};
|
||||||
|
if (position >= (int)list.size())
|
||||||
|
{
|
||||||
|
list.push_back(newRow);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
list.insert(list.begin()+position, newRow);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void CSMWorld::ContainerRefIdAdapter::setData (const RefIdColumn *column, RefIdData& data, int index,
|
void CSMWorld::ContainerRefIdAdapter::setData (const RefIdColumn *column, RefIdData& data, int index,
|
||||||
const QVariant& value) const
|
const QVariant& value) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -635,6 +635,8 @@ namespace CSMWorld
|
||||||
virtual int getNestedRowsCount(const RefIdColumn *column, const RefIdData& data, int index) const;
|
virtual int getNestedRowsCount(const RefIdColumn *column, const RefIdData& data, int index) const;
|
||||||
|
|
||||||
virtual void removeNestedRow (const RefIdColumn *column, RefIdData& data, int index, int rowToRemove) const;
|
virtual void removeNestedRow (const RefIdColumn *column, RefIdData& data, int index, int rowToRemove) const;
|
||||||
|
|
||||||
|
virtual void addNestedRow (const RefIdColumn *column, RefIdData& data, int index, int position) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CreatureColumns : public ActorColumns
|
struct CreatureColumns : public ActorColumns
|
||||||
|
|
|
@ -625,3 +625,12 @@ int CSMWorld::RefIdCollection::getNestedColumnsCount(int row, int column) const
|
||||||
|
|
||||||
return adaptor.getNestedColumnsCount(&mColumns.at(column), mData);
|
return adaptor.getNestedColumnsCount(&mColumns.at(column), mData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSMWorld::RefIdCollection::addNestedRow(int row, int col, int position)
|
||||||
|
{
|
||||||
|
RefIdData::LocalIndex localIndex = mData.globalToLocalIndex (row);
|
||||||
|
|
||||||
|
const CSMWorld::NestedRefIdAdapter& adaptor = dynamic_cast<const CSMWorld::NestedRefIdAdapter&>(findAdaptor (localIndex.second));
|
||||||
|
|
||||||
|
adaptor.addNestedRow(&mColumns.at(col), mData, localIndex.first, position);
|
||||||
|
}
|
||||||
|
|
|
@ -79,6 +79,8 @@ namespace CSMWorld
|
||||||
|
|
||||||
virtual void removeNestedRows(int row, int column, int subRow);
|
virtual void removeNestedRows(int row, int column, int subRow);
|
||||||
|
|
||||||
|
virtual void addNestedRow(int row, int col, int position);
|
||||||
|
|
||||||
virtual void cloneRecord(const std::string& origin,
|
virtual void cloneRecord(const std::string& origin,
|
||||||
const std::string& destination,
|
const std::string& destination,
|
||||||
const UniversalId::Type type);
|
const UniversalId::Type type);
|
||||||
|
|
Loading…
Reference in a new issue