1 #include "esmfile.hpp"
2 
3 #include <QMimeData>
4 #include <QDataStream>
5 
6 int ContentSelectorModel::EsmFile::sPropertyCount = 7;
7 QString ContentSelectorModel::EsmFile::sToolTip = QString("<b>Author:</b> %1<br/> \
8                                               <b>Version:</b> %2<br/> \
9                                               <b>Modified:</b> %3<br/> \
10                                               <b>Path:</b><br/>%4<br/> \
11                                               <br/><b>Description:</b><br/>%5<br/> \
12                                               <br/><b>Dependencies: </b>%6<br/>");
13 
14 
EsmFile(QString fileName,ModelItem * parent)15 ContentSelectorModel::EsmFile::EsmFile(QString fileName, ModelItem *parent)
16                 : ModelItem(parent), mFileName(fileName), mFormat(0)
17 {}
18 
setFileName(const QString & fileName)19 void ContentSelectorModel::EsmFile::setFileName(const QString &fileName)
20 {
21     mFileName = fileName;
22 }
23 
setAuthor(const QString & author)24 void ContentSelectorModel::EsmFile::setAuthor(const QString &author)
25 {
26     mAuthor = author;
27 }
28 
setDate(const QDateTime & modified)29 void ContentSelectorModel::EsmFile::setDate(const QDateTime &modified)
30 {
31     mModified = modified;
32 }
33 
setFormat(int format)34 void ContentSelectorModel::EsmFile::setFormat(int format)
35 {
36     mFormat = format;
37 }
38 
setFilePath(const QString & path)39 void ContentSelectorModel::EsmFile::setFilePath(const QString &path)
40 {
41     mPath = path;
42 }
43 
setGameFiles(const QStringList & gamefiles)44 void ContentSelectorModel::EsmFile::setGameFiles(const QStringList &gamefiles)
45 {
46     mGameFiles = gamefiles;
47 }
48 
setDescription(const QString & description)49 void ContentSelectorModel::EsmFile::setDescription(const QString &description)
50 {
51     mDescription = description;
52 }
53 
encodedData() const54 QByteArray ContentSelectorModel::EsmFile::encodedData() const
55 {
56     QByteArray encodedData;
57     QDataStream stream(&encodedData, QIODevice::WriteOnly);
58 
59     stream << mFileName << mAuthor << QString::number(mFormat)
60            << mModified.toString() << mPath << mDescription
61            << mGameFiles;
62 
63     return encodedData;
64 }
65 
isGameFile() const66 bool ContentSelectorModel::EsmFile::isGameFile() const
67 {
68     return (mGameFiles.size() == 0) &&
69         (mFileName.endsWith(QLatin1String(".esm"), Qt::CaseInsensitive) ||
70         mFileName.endsWith(QLatin1String(".omwgame"), Qt::CaseInsensitive));
71 }
72 
fileProperty(const FileProperty prop) const73 QVariant ContentSelectorModel::EsmFile::fileProperty(const FileProperty prop) const
74 {
75     switch (prop)
76     {
77     case FileProperty_FileName:
78         return mFileName;
79         break;
80 
81     case FileProperty_Author:
82         return mAuthor;
83         break;
84 
85     case FileProperty_Format:
86         return mFormat;
87         break;
88 
89     case FileProperty_DateModified:
90         return mModified.toString(Qt::ISODate);
91         break;
92 
93     case FileProperty_FilePath:
94         return mPath;
95         break;
96 
97     case FileProperty_Description:
98         return mDescription;
99         break;
100 
101     case FileProperty_GameFile:
102         return mGameFiles;
103         break;
104 
105     default:
106         break;
107     }
108     return QVariant();
109 }
setFileProperty(const FileProperty prop,const QString & value)110 void ContentSelectorModel::EsmFile::setFileProperty (const FileProperty prop, const QString &value)
111 {
112     switch (prop)
113     {
114     case FileProperty_FileName:
115         mFileName = value;
116         break;
117 
118     case FileProperty_Author:
119         mAuthor = value;
120         break;
121 
122     case FileProperty_Format:
123         mFormat = value.toInt();
124         break;
125 
126     case FileProperty_DateModified:
127         mModified = QDateTime::fromString(value);
128         break;
129 
130     case FileProperty_FilePath:
131         mPath = value;
132         break;
133 
134     case FileProperty_Description:
135         mDescription = value;
136         break;
137 
138     case FileProperty_GameFile:
139         mGameFiles << value;
140         break;
141 
142     default:
143         break;
144     }
145 }
146