QCMakePresetItemModel.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include <cm/optional>
  5. #include "QCMakePreset.h"
  6. #include <QAbstractItemModel>
  7. #include <QModelIndex>
  8. #include <QString>
  9. #include <QVariant>
  10. #include <QVector>
  11. #include <QtGlobal>
  12. class QObject;
  13. class QCMakePresetItemModel : public QAbstractItemModel
  14. {
  15. Q_OBJECT
  16. public:
  17. QCMakePresetItemModel(QObject* parent = nullptr);
  18. QVariant data(const QModelIndex& index, int role) const override;
  19. Qt::ItemFlags flags(const QModelIndex& index) const override;
  20. int rowCount(const QModelIndex& parent = QModelIndex{}) const override;
  21. int columnCount(const QModelIndex& parent = QModelIndex{}) const override;
  22. QModelIndex index(int row, int column,
  23. const QModelIndex& parent = QModelIndex{}) const override;
  24. QModelIndex parent(const QModelIndex& index) const override;
  25. QVector<QCMakePreset> const& presets() const;
  26. int presetNameToRow(const QString& name) const;
  27. public slots:
  28. void setPresets(QVector<QCMakePreset> const& presets);
  29. private:
  30. QVector<QCMakePreset> m_presets;
  31. static constexpr quintptr SEPARATOR_INDEX = static_cast<quintptr>(-2);
  32. static constexpr quintptr CUSTOM_INDEX = static_cast<quintptr>(-1);
  33. };