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