| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file Copyright.txt or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include <QDialog> | |
| #include <QObject> | |
| #include <QProcessEnvironment> | |
| #include <QSortFilterProxyModel> | |
| #include <QStandardItemModel> | |
| #include "ui_EnvironmentDialog.h" | |
| class EnvironmentItemModel : public QStandardItemModel | |
| { | |
| Q_OBJECT | |
| public: | |
| EnvironmentItemModel(const QProcessEnvironment& environment, | |
| QObject* parent = nullptr); | |
| QProcessEnvironment environment() const; | |
| void clear(); | |
| QModelIndex buddy(const QModelIndex& index) const override; | |
| public slots: | |
| void appendVariable(const QString& key, const QString& value); | |
| void insertVariable(int row, const QString& key, const QString& value); | |
| }; | |
| class EnvironmentSearchFilter : public QSortFilterProxyModel | |
| { | |
| Q_OBJECT | |
| public: | |
| EnvironmentSearchFilter(QObject* parent = nullptr); | |
| protected: | |
| bool filterAcceptsRow(int row, const QModelIndex& parent) const override; | |
| }; | |
| class EnvironmentDialog | |
| : public QDialog | |
| , public Ui::EnvironmentDialog | |
| { | |
| Q_OBJECT | |
| public: | |
| EnvironmentDialog(const QProcessEnvironment& environment, | |
| QWidget* parent = nullptr); | |
| QProcessEnvironment environment() const; | |
| protected slots: | |
| void addEntry(); | |
| void removeSelectedEntries(); | |
| void selectionChanged(); | |
| private: | |
| EnvironmentItemModel* m_model; | |
| EnvironmentSearchFilter* m_filter; | |
| }; |