43 Q_DECLARE_METATYPE(Library) |
43 Q_DECLARE_METATYPE(Library) |
44 Q_DECLARE_METATYPE(Library::Role) |
44 Q_DECLARE_METATYPE(Library::Role) |
45 QDataStream &operator<<(QDataStream&, const Library&); |
45 QDataStream &operator<<(QDataStream&, const Library&); |
46 QDataStream &operator>>(QDataStream&, Library&); |
46 QDataStream &operator>>(QDataStream&, Library&); |
47 |
47 |
48 using Libraries = QVector<Library>; |
48 using Libraries = QList<Library>; |
49 Q_DECLARE_METATYPE(Libraries) |
49 //QDataStream &operator<<(QDataStream&, const Libraries&); |
|
50 //QDataStream &operator>>(QDataStream&, Libraries&); |
|
51 //Q_DECLARE_METATYPE(Libraries) |
50 |
52 |
51 class Configuration; |
53 class Configuration; |
52 |
54 |
53 class LibrariesModel : public QAbstractTableModel |
55 class LibrariesModel : public QAbstractTableModel |
54 { |
56 { |
55 Q_OBJECT |
57 Q_OBJECT |
56 public: |
58 public: |
57 LibrariesModel(QObject* parent = nullptr); |
59 LibrariesModel(QObject* parent = nullptr); |
58 QVector<Library>::const_iterator begin() const; |
60 auto begin() const { return this->libraries.begin(); } |
59 QVector<Library>::const_iterator end() const; |
61 auto end() const { return this->libraries.end(); } |
60 QString findFile(QString fileName) const; |
62 QString findFile(QString fileName) const; |
61 void addLibrary(const Library& library); |
63 void addLibrary(const Library& library); |
62 void removeLibrary(const int libraryIndex); |
64 void removeLibrary(const std::size_t libraryIndex); |
63 const Library& library(int libraryIndex) const; |
65 const Library& library(std::size_t libraryIndex) const; |
64 void setLibraryPath(int libraryIndex, const QDir& path); |
66 void setLibraryPath(std::size_t libraryIndex, const QDir& path); |
65 void setLibraryRole(int libraryIndex, const Library::Role role); |
67 void setLibraryRole(std::size_t libraryIndex, const Library::Role role); |
66 void restoreFromSettings(); |
68 void restoreFromSettings(); |
67 void storeToSettings(); |
69 void storeToSettings(); |
68 int count() const; |
70 std::size_t count() const; |
69 void moveLibrary(const int libraryFromIndex, const int libraryToIndex); |
71 void moveLibrary(const std::size_t libraryFromIndex, const std::size_t libraryToIndex); |
70 // Definitions for QAbstractTableModel |
72 // Definitions for QAbstractTableModel |
71 Qt::ItemFlags flags(const QModelIndex& index) const override; |
73 Qt::ItemFlags flags(const QModelIndex& index) const override; |
72 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; |
74 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; |
73 QVariant headerData( |
75 QVariant headerData( |
74 int section, |
76 int section, |
75 Qt::Orientation orientation, |
77 Qt::Orientation orientation, |
76 int role = Qt::DisplayRole) const override; |
78 int role = Qt::DisplayRole) const override; |
77 int rowCount(const QModelIndex&) const override; |
79 int rowCount(const QModelIndex&) const override; |
78 int columnCount(const QModelIndex&) const override; |
80 int columnCount(const QModelIndex&) const override; |
79 bool isValidIndex(const int libraryIndex) const; |
81 bool isValidIndex(const std::size_t libraryIndex) const; |
80 ColorTable loadColorTable(QTextStream& errors) const; |
82 ColorTable loadColorTable(QTextStream& errors) const; |
81 private: |
83 private: |
82 enum Column |
84 enum Column |
83 { |
85 { |
84 RoleColumn, |
86 RoleColumn, |
85 PathColumn |
87 PathColumn |
86 }; |
88 }; |
87 void signalLibraryChange(int library); |
89 void signalLibraryChange(std::size_t library); |
88 Libraries libraries; |
90 Libraries libraries; |
89 }; |
91 }; |