From 894c98ee89479294fff69a674030a51d93353493 Mon Sep 17 00:00:00 2001 From: Marek Kochanowicz Date: Fri, 20 Jun 2014 13:40:54 +0200 Subject: [PATCH] Added extra columnid type to use for ID of the inventory item --- apps/opencs/model/world/columnbase.cpp | 16 ++++++++++++---- apps/opencs/model/world/columnbase.hpp | 12 ++++++++---- apps/opencs/model/world/columns.cpp | 17 ++--------------- apps/opencs/model/world/columns.hpp | 3 +-- apps/opencs/model/world/refidcollection.cpp | 2 ++ 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/apps/opencs/model/world/columnbase.cpp b/apps/opencs/model/world/columnbase.cpp index c0a264a1f..59ee39126 100644 --- a/apps/opencs/model/world/columnbase.cpp +++ b/apps/opencs/model/world/columnbase.cpp @@ -1,4 +1,3 @@ - #include "columnbase.hpp" #include "columns.hpp" @@ -33,12 +32,21 @@ bool CSMWorld::ColumnBase::canHaveNestedColumns() const std::string CSMWorld::ColumnBase::getNestedColumnTitle(int columnNumber) const { - return Columns::getName (mDisplayType, columnNumber); + assert (mCanNest); + + return Columns::getName(static_cast(mNestedColumnId[columnNumber])); } void CSMWorld::ColumnBase::addNestedColumnDisplay(CSMWorld::ColumnBase::Display displayDefinition) { - assert (canHaveNestedColumns()); - + assert (mCanNest); + mNestedDisplayType.push_back(displayDefinition); } + +void CSMWorld::ColumnBase::addNestedColumnId(int columnId) +{ + assert (mCanNest); + + mNestedColumnId.push_back(columnId); +} diff --git a/apps/opencs/model/world/columnbase.hpp b/apps/opencs/model/world/columnbase.hpp index 0cd1f722f..1cc45780f 100644 --- a/apps/opencs/model/world/columnbase.hpp +++ b/apps/opencs/model/world/columnbase.hpp @@ -31,7 +31,7 @@ namespace CSMWorld Display_String, Display_LongString, - //CONCRETE TYPES STARTS HERE + //CONCRETE TYPES STARTS HERE (for drag and drop) Display_Skill, Display_Class, Display_Faction, @@ -92,13 +92,15 @@ namespace CSMWorld Display_QuestStatusType, Display_Gender, + //Those are top level columns that nest other columns Display_NestedItemList }; int mColumnId; int mFlags; Display mDisplayType; - std::vector mNestedDisplayType; + std::vector mNestedDisplayType; //used only for the columns that actually nest other columns + std::vector mNestedColumnId; //used only for the columns that actually nest other columns const bool mCanNest; ColumnBase (int columnId, Display displayType, int flag, bool canNest = false); @@ -113,8 +115,10 @@ namespace CSMWorld virtual std::string getTitle() const; std::string getNestedColumnTitle(int columnNumber) const; - - virtual void addNestedColumnDisplay(Display displayDefinition); + + void addNestedColumnDisplay(Display displayDefinition); + + void addNestedColumnId(int columnId); virtual int getId() const; diff --git a/apps/opencs/model/world/columns.cpp b/apps/opencs/model/world/columns.cpp index e39badeb5..1898277a5 100644 --- a/apps/opencs/model/world/columns.cpp +++ b/apps/opencs/model/world/columns.cpp @@ -174,6 +174,8 @@ namespace CSMWorld { ColumnId_PcRank, "PC Rank" }, { ColumnId_Scope, "Scope" }, { ColumnId_ReferenceableId, "Referenceable ID" }, + { ColumnId_InventoryItemId, "ID"}, + { ColumnId_ItemCount, "Count"}, { ColumnId_UseValue1, "Use value 1" }, { ColumnId_UseValue2, "Use value 2" }, @@ -216,21 +218,6 @@ std::string CSMWorld::Columns::getName (ColumnId column) return ""; } -std::string CSMWorld::Columns::getName(CSMWorld::ColumnBase::Display displayType, int columnNumber) -{ -//TODO, this is just temporary solution - switch (displayType) - { - case CSMWorld::ColumnBase::Display_NestedItemList: - if (columnNumber == 0) - return "ID"; - - if (columnNumber == 1) - return "Count"; - } - return "Do yourself a favor and take a look at the columns.cpp"; -} - int CSMWorld::Columns::getId (const std::string& name) { std::string name2 = Misc::StringUtils::lowerCase (name); diff --git a/apps/opencs/model/world/columns.hpp b/apps/opencs/model/world/columns.hpp index 436ca1334..5d8ddb87d 100644 --- a/apps/opencs/model/world/columns.hpp +++ b/apps/opencs/model/world/columns.hpp @@ -171,6 +171,7 @@ namespace CSMWorld ColumnId_ReferenceableId = 156, ColumnId_ContainerContent = 157, ColumnId_ItemCount = 158, + ColumnId_InventoryItemId = 159, // Allocated to a separate value range, so we don't get a collision should we ever need // to extend the number of use values. @@ -210,8 +211,6 @@ namespace CSMWorld std::string getName (ColumnId column); - std::string getName (ColumnBase::Display displayType, int columnNumber); - int getId (const std::string& name); ///< Will return -1 for an invalid name. diff --git a/apps/opencs/model/world/refidcollection.cpp b/apps/opencs/model/world/refidcollection.cpp index 47c8ec800..9fe42af96 100644 --- a/apps/opencs/model/world/refidcollection.cpp +++ b/apps/opencs/model/world/refidcollection.cpp @@ -170,6 +170,8 @@ CSMWorld::RefIdCollection::RefIdCollection() const RefIdColumn *content = &mColumns.back(); (&mColumns.back())->addNestedColumnDisplay(CSMWorld::ColumnBase::Display_String); (&mColumns.back())->addNestedColumnDisplay(CSMWorld::ColumnBase::Display_Integer); + (&mColumns.back())->addNestedColumnId(Columns::ColumnId_InventoryItemId); + (&mColumns.back())->addNestedColumnId(Columns::ColumnId_ItemCount); CreatureColumns creatureColumns (actorsColumns);