src/libraries.h

changeset 7
68443f5be176
child 8
44679e468ba9
equal deleted inserted replaced
6:73e448b2943d 7:68443f5be176
1 #pragma once
2 #include <QDir>
3 #include <QAbstractTableModel>
4 #include "main.h"
5
6 class QSettings;
7
8 struct Library
9 {
10 enum Role
11 {
12 OfficialLibrary,
13 UnofficialLibrary,
14 WorkingLibrary,
15 } role;
16 QDir path;
17 static QString libraryRoleName(const Role role);
18 };
19
20 Q_DECLARE_METATYPE(Library)
21 QDataStream &operator<<(QDataStream&, const Library&);
22 QDataStream &operator>>(QDataStream&, Library&);
23
24 using Libraries = QVector<Library>;
25 Q_DECLARE_METATYPE(Libraries)
26
27 class LibraryManager : public QAbstractTableModel
28 {
29 Q_OBJECT
30 public:
31 LibraryManager(QObject* parent = nullptr);
32 LibraryManager(QSettings* settings, QObject* parent = nullptr);
33 QVector<Library>::const_iterator begin() const;
34 QVector<Library>::const_iterator end() const;
35 QFileInfo findFile(QString fileName) const;
36 void addLibrary(const Library& library);
37 const Library& library(int libraryIndex) const;
38 void setLibraryPath(int libraryIndex, const QDir& path);
39 void setLibraryRole(int libraryIndex, const Library::Role role);
40 void restoreFromSettings(QSettings* settings);
41 void storeToSettings(QSettings* settings);
42 int count() const;
43 // Definitions for QAbstractTableModel
44 Qt::ItemFlags flags(const QModelIndex& index) const override;
45 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
46 QVariant headerData(
47 int section,
48 Qt::Orientation orientation,
49 int role = Qt::DisplayRole) const override;
50 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
51 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
52 private:
53 enum Column
54 {
55 RoleColumn,
56 PathColumn
57 };
58 void signalLibraryChange(int library);
59 bool isValidIndex(int libraryIndex);
60 Libraries libraries;
61 };

mercurial