mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-10 03:39:55 +00:00
moved meta data into a new single-row table
This commit is contained in:
parent
d282bead23
commit
f3ff90e1fd
@ -26,7 +26,7 @@ opencs_units_noqt (model/world
|
||||
universalid record commands columnbase scriptcontext cell refidcollection
|
||||
refidadapter refiddata refidadapterimp ref collectionbase refcollection columns infocollection tablemimedata cellcoordinates cellselection resources resourcesmanager scope
|
||||
pathgrid landtexture land nestedtablewrapper nestedcollection nestedcoladapterimp nestedinfocollection
|
||||
idcompletionmanager
|
||||
idcompletionmanager metadata
|
||||
)
|
||||
|
||||
opencs_hdrs_noqt (model/world
|
||||
|
@ -2282,9 +2282,6 @@ CSMDoc::Document::Document (const Files::ConfigurationManager& configuration,
|
||||
|
||||
if (mNew)
|
||||
{
|
||||
mData.setDescription ("");
|
||||
mData.setAuthor ("");
|
||||
|
||||
if (mContentFiles.size()==1)
|
||||
createBase();
|
||||
}
|
||||
|
@ -475,6 +475,8 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
||||
mDebugProfiles.addColumn (new ScriptColumn<ESM::DebugProfile> (
|
||||
ScriptColumn<ESM::DebugProfile>::Type_Lines));
|
||||
|
||||
mMetaData.appendBlankRecord ("sys::meta");
|
||||
|
||||
addModel (new IdTable (&mGlobals), UniversalId::Type_Global);
|
||||
addModel (new IdTable (&mGmsts), UniversalId::Type_Gmst);
|
||||
addModel (new IdTable (&mSkills), UniversalId::Type_Skill);
|
||||
@ -515,6 +517,7 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
||||
UniversalId::Type_Texture);
|
||||
addModel (new ResourceTable (&mResourcesManager.get (UniversalId::Type_Videos)),
|
||||
UniversalId::Type_Video);
|
||||
addModel (new IdTable (&mMetaData), UniversalId::Type_MetaData);
|
||||
|
||||
mRefLoadCache.clear(); // clear here rather than startLoading() and continueLoading() for multiple content files
|
||||
}
|
||||
@ -803,6 +806,11 @@ const CSMWorld::Resources& CSMWorld::Data::getResources (const UniversalId& id)
|
||||
return mResourcesManager.get (id.getType());
|
||||
}
|
||||
|
||||
const CSMWorld::MetaData& CSMWorld::Data::getMetaData() const
|
||||
{
|
||||
return mMetaData.getRecord (0).get();
|
||||
}
|
||||
|
||||
QAbstractItemModel *CSMWorld::Data::getTableModel (const CSMWorld::UniversalId& id)
|
||||
{
|
||||
std::map<UniversalId::Type, QAbstractItemModel *>::iterator iter = mModelIndex.find (id.getType());
|
||||
@ -847,9 +855,12 @@ int CSMWorld::Data::startLoading (const boost::filesystem::path& path, bool base
|
||||
mBase = base;
|
||||
mProject = project;
|
||||
|
||||
mAuthor = mReader->getAuthor();
|
||||
mDescription = mReader->getDesc();
|
||||
MetaData metaData;
|
||||
metaData.mId = "sys::meta";
|
||||
metaData.load (*mReader);
|
||||
|
||||
mMetaData.setRecord (0, Record<MetaData> (RecordBase::State_ModifiedOnly, 0, &metaData));
|
||||
|
||||
return mReader->getRecordCount();
|
||||
}
|
||||
|
||||
@ -1103,24 +1114,14 @@ int CSMWorld::Data::count (RecordBase::State state) const
|
||||
count (state, mPathgrids);
|
||||
}
|
||||
|
||||
void CSMWorld::Data::setDescription (const std::string& description)
|
||||
{
|
||||
mDescription = description;
|
||||
}
|
||||
|
||||
std::string CSMWorld::Data::getDescription() const
|
||||
{
|
||||
return mDescription;
|
||||
}
|
||||
|
||||
void CSMWorld::Data::setAuthor (const std::string& author)
|
||||
{
|
||||
mAuthor = author;
|
||||
return mMetaData.getRecord (0).get().mDescription;
|
||||
}
|
||||
|
||||
std::string CSMWorld::Data::getAuthor() const
|
||||
{
|
||||
return mAuthor;
|
||||
return mMetaData.getRecord (0).get().mAuthor;
|
||||
}
|
||||
|
||||
std::vector<std::string> CSMWorld::Data::getIds (bool listDeleted) const
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "infocollection.hpp"
|
||||
#include "nestedinfocollection.hpp"
|
||||
#include "pathgrid.hpp"
|
||||
#include "metadata.hpp"
|
||||
#ifndef Q_MOC_RUN
|
||||
#include "subcellcollection.hpp"
|
||||
#endif
|
||||
@ -94,11 +95,10 @@ namespace CSMWorld
|
||||
RefIdCollection mReferenceables;
|
||||
RefCollection mRefs;
|
||||
IdCollection<ESM::Filter> mFilters;
|
||||
Collection<MetaData> mMetaData;
|
||||
const ResourcesManager& mResourcesManager;
|
||||
std::vector<QAbstractItemModel *> mModels;
|
||||
std::map<UniversalId::Type, QAbstractItemModel *> mModelIndex;
|
||||
std::string mAuthor;
|
||||
std::string mDescription;
|
||||
ESM::ESMReader *mReader;
|
||||
const ESM::Dialogue *mDialogue; // last loaded dialogue
|
||||
bool mBase;
|
||||
@ -238,6 +238,8 @@ namespace CSMWorld
|
||||
/// Throws an exception, if \a id does not match a resources list.
|
||||
const Resources& getResources (const UniversalId& id) const;
|
||||
|
||||
const MetaData& getMetaData() const;
|
||||
|
||||
QAbstractItemModel *getTableModel (const UniversalId& id);
|
||||
///< If no table model is available for \a id, an exception is thrown.
|
||||
///
|
||||
@ -267,12 +269,8 @@ namespace CSMWorld
|
||||
int count (RecordBase::State state) const;
|
||||
///< Return number of top-level records with the given \a state.
|
||||
|
||||
void setDescription (const std::string& description);
|
||||
|
||||
std::string getDescription() const;
|
||||
|
||||
void setAuthor (const std::string& author);
|
||||
|
||||
std::string getAuthor() const;
|
||||
|
||||
signals:
|
||||
|
27
apps/opencs/model/world/metadata.cpp
Normal file
27
apps/opencs/model/world/metadata.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
#include "metadata.hpp"
|
||||
|
||||
#include <components/esm/loadtes3.hpp>
|
||||
#include <components/esm/esmreader.hpp>
|
||||
#include <components/esm/esmwriter.hpp>
|
||||
|
||||
void CSMWorld::MetaData::blank()
|
||||
{
|
||||
mFormat = ESM::Header::CurrentFormat;
|
||||
mAuthor.clear();
|
||||
mDescription.clear();
|
||||
}
|
||||
|
||||
void CSMWorld::MetaData::load (ESM::ESMReader& esm)
|
||||
{
|
||||
mFormat = esm.getHeader().mFormat;
|
||||
mAuthor = esm.getHeader().mData.author.toString();
|
||||
mDescription = esm.getHeader().mData.desc.toString();
|
||||
}
|
||||
|
||||
void CSMWorld::MetaData::save (ESM::ESMWriter& esm) const
|
||||
{
|
||||
esm.setFormat (mFormat);
|
||||
esm.setAuthor (mAuthor);
|
||||
esm.setDescription (mDescription);
|
||||
}
|
29
apps/opencs/model/world/metadata.hpp
Normal file
29
apps/opencs/model/world/metadata.hpp
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef CSM_WOLRD_METADATA_H
|
||||
#define CSM_WOLRD_METADATA_H
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace ESM
|
||||
{
|
||||
class ESMReader;
|
||||
class ESMWriter;
|
||||
}
|
||||
|
||||
namespace CSMWorld
|
||||
{
|
||||
struct MetaData
|
||||
{
|
||||
std::string mId;
|
||||
|
||||
int mFormat;
|
||||
std::string mAuthor;
|
||||
std::string mDescription;
|
||||
|
||||
void blank();
|
||||
|
||||
void load (ESM::ESMReader& esm);
|
||||
void save (ESM::ESMWriter& esm) const;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
@ -120,6 +120,7 @@ namespace
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_MagicEffect, "Magic Effect", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Pathgrid, "Pathgrid", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_StartScript, "Start Script", 0 },
|
||||
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_MetaData, "Meta Data", 0 },
|
||||
|
||||
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0, 0 } // end marker
|
||||
};
|
||||
|
@ -131,6 +131,7 @@ namespace CSMWorld
|
||||
Type_StartScripts,
|
||||
Type_StartScript,
|
||||
Type_Search,
|
||||
Type_MetaData,
|
||||
Type_RunLog
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user