File indexing completed on 2024-05-12 04:39:28

0001 /*
0002     SPDX-FileCopyrightText: 2007-2008 Aleix Pol <aleixpol@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef CMAKECACHEMODEL_H
0008 #define CMAKECACHEMODEL_H
0009 
0010 #include <cmakecommonexport.h>
0011 #include <QStandardItemModel>
0012 #include <QVariant>
0013 #include <QSet>
0014 
0015 #include <util/path.h>
0016 
0017 /**
0018 * This class parses the CMakeCache.txt files and put it to a Model
0019 * @author Aleix Pol
0020 */
0021 class CMakeCacheModel : public QStandardItemModel
0022 {
0023     Q_OBJECT
0024     public:
0025         CMakeCacheModel(QObject* parent, const KDevelop::Path &path);
0026         ~CMakeCacheModel() override {}
0027 
0028         bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
0029 
0030         int internal() const { return m_internalBegin; }
0031         
0032         QString value(const QString& name) const;
0033         bool isAdvanced(int i) const;
0034         bool isInternal(int i) const;
0035         
0036         QList<QModelIndex> persistentIndices() const;
0037         KDevelop::Path filePath() const;
0038         void read();
0039         QVariantMap changedValues() const;
0040 
0041     Q_SIGNALS:
0042         void valueChanged(const QString& name, const QString& value) const;
0043 
0044     public Q_SLOTS:
0045         void reset();
0046         
0047     private:
0048         KDevelop::Path m_filePath;
0049         int m_internalBegin;
0050         QSet<QString> m_internal;
0051         QSet<int> m_modifiedRows;
0052 };
0053 
0054 #endif