1 #ifndef ESMFILE_HPP 2 #define ESMFILE_HPP 3 4 #include <QDateTime> 5 #include <QStringList> 6 7 #include "modelitem.hpp" 8 9 class QMimeData; 10 11 namespace ContentSelectorModel 12 { 13 class EsmFile : public ModelItem 14 { 15 Q_OBJECT 16 Q_PROPERTY(QString filename READ fileName) 17 18 public: 19 20 enum FileProperty 21 { 22 FileProperty_FileName = 0, 23 FileProperty_Author = 1, 24 FileProperty_Format = 2, 25 FileProperty_DateModified = 3, 26 FileProperty_FilePath = 4, 27 FileProperty_Description = 5, 28 FileProperty_GameFile = 6 29 }; 30 31 EsmFile(QString fileName = QString(), ModelItem *parent = nullptr); 32 // EsmFile(const EsmFile &); 33 ~EsmFile()34 ~EsmFile() 35 {} 36 37 void setFileProperty (const FileProperty prop, const QString &value); 38 39 void setFileName(const QString &fileName); 40 void setAuthor(const QString &author); 41 void setSize(const int size); 42 void setDate(const QDateTime &modified); 43 void setFormat(const int format); 44 void setFilePath(const QString &path); 45 void setGameFiles(const QStringList &gameFiles); 46 void setDescription(const QString &description); 47 addGameFile(const QString & name)48 inline void addGameFile (const QString &name) {mGameFiles.append(name); } 49 QVariant fileProperty (const FileProperty prop) const; 50 fileName() const51 inline QString fileName() const { return mFileName; } author() const52 inline QString author() const { return mAuthor; } modified() const53 inline QDateTime modified() const { return mModified; } format() const54 inline float format() const { return mFormat; } filePath() const55 inline QString filePath() const { return mPath; } 56 57 /// @note Contains file names, not paths. gameFiles() const58 inline const QStringList &gameFiles() const { return mGameFiles; } description() const59 inline QString description() const { return mDescription; } toolTip() const60 inline QString toolTip() const { return sToolTip.arg(mAuthor) 61 .arg(mFormat) 62 .arg(mModified.toString(Qt::ISODate)) 63 .arg(mPath) 64 .arg(mDescription) 65 .arg(mGameFiles.join(", ")); 66 } 67 68 bool isGameFile() const; 69 QByteArray encodedData() const; 70 71 public: 72 static int sPropertyCount; 73 static QString sToolTip; 74 75 private: 76 77 QString mFileName; 78 QString mAuthor; 79 QDateTime mModified; 80 int mFormat; 81 QString mPath; 82 QStringList mGameFiles; 83 QString mDescription; 84 QString mToolTip; 85 86 }; 87 } 88 89 #endif 90