You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw-tes3mp/components/contentselector/model/esmfile.cpp

146 lines
3.4 KiB
C++

#include "esmfile.hpp"
#include <QMimeData>
#include <QDataStream>
int ContentSelectorModel::EsmFile::sPropertyCount = 7;
QString ContentSelectorModel::EsmFile::sToolTip = QString("<b>Author:</b> %1<br/> \
<b>Version:</b> %2<br/> \
<b>Modified:</b> %3<br/> \
<b>Path:</b><br/>%4<br/> \
<br/><b>Description:</b><br/>%5<br/> \
<br/><b>Dependencies: </b>%6<br/>");
ContentSelectorModel::EsmFile::EsmFile(QString fileName, ModelItem *parent)
: ModelItem(parent), mFileName(fileName), mFormat(0)
{}
void ContentSelectorModel::EsmFile::setFileName(const QString &fileName)
{
mFileName = fileName;
}
void ContentSelectorModel::EsmFile::setAuthor(const QString &author)
{
mAuthor = author;
}
void ContentSelectorModel::EsmFile::setDate(const QDateTime &modified)
{
mModified = modified;
}
void ContentSelectorModel::EsmFile::setFormat(int format)
{
mFormat = format;
}
void ContentSelectorModel::EsmFile::setFilePath(const QString &path)
{
mPath = path;
}
void ContentSelectorModel::EsmFile::setGameFiles(const QStringList &gamefiles)
{
mGameFiles = gamefiles;
}
void ContentSelectorModel::EsmFile::setDescription(const QString &description)
{
mDescription = description;
}
QByteArray ContentSelectorModel::EsmFile::encodedData() const
{
QByteArray encodedData;
QDataStream stream(&encodedData, QIODevice::WriteOnly);
stream << mFileName << mAuthor << QString::number(mFormat)
<< mModified.toString() << mPath << mDescription
<< mGameFiles;
return encodedData;
}
bool ContentSelectorModel::EsmFile::isGameFile() const
{
return (mGameFiles.size() == 0) &&
(mFileName.endsWith(QLatin1String(".esm"), Qt::CaseInsensitive) ||
mFileName.endsWith(QLatin1String(".omwgame"), Qt::CaseInsensitive));
}
QVariant ContentSelectorModel::EsmFile::fileProperty(const FileProperty prop) const
{
switch (prop)
{
case FileProperty_FileName:
return mFileName;
break;
case FileProperty_Author:
return mAuthor;
break;
case FileProperty_Format:
return mFormat;
break;
case FileProperty_DateModified:
return mModified.toString(Qt::ISODate);
break;
case FileProperty_FilePath:
return mPath;
break;
case FileProperty_Description:
return mDescription;
break;
case FileProperty_GameFile:
return mGameFiles;
break;
default:
break;
}
return QVariant();
}
void ContentSelectorModel::EsmFile::setFileProperty (const FileProperty prop, const QString &value)
{
switch (prop)
{
case FileProperty_FileName:
mFileName = value;
break;
case FileProperty_Author:
mAuthor = value;
break;
case FileProperty_Format:
mFormat = value.toInt();
break;
case FileProperty_DateModified:
mModified = QDateTime::fromString(value);
break;
case FileProperty_FilePath:
mPath = value;
break;
case FileProperty_Description:
mDescription = value;
break;
case FileProperty_GameFile:
mGameFiles << value;
break;
default:
break;
}
}