/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include #include "QCMakePreset.h" #include #include #include #include #include #include class QObject; class QCMakePresetItemModel : public QAbstractItemModel { Q_OBJECT public: QCMakePresetItemModel(QObject* parent = nullptr); QVariant data(QModelIndex const& index, int role) const override; Qt::ItemFlags flags(QModelIndex const& index) const override; int rowCount(QModelIndex const& parent = QModelIndex{}) const override; int columnCount(QModelIndex const& parent = QModelIndex{}) const override; QModelIndex index(int row, int column, QModelIndex const& parent = QModelIndex{}) const override; QModelIndex parent(QModelIndex const& index) const override; QVector const& presets() const; int presetNameToRow(QString const& name) const; public slots: void setPresets(QVector const& presets); private: QVector m_presets; static constexpr quintptr SEPARATOR_INDEX = static_cast(-2); static constexpr quintptr CUSTOM_INDEX = static_cast(-1); };