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