EnvironmentDialog.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 <QDialog>
  5. #include <QObject>
  6. #include <QProcessEnvironment>
  7. #include <QSortFilterProxyModel>
  8. #include <QStandardItemModel>
  9. #include "ui_EnvironmentDialog.h"
  10. class EnvironmentItemModel : public QStandardItemModel
  11. {
  12. Q_OBJECT
  13. public:
  14. EnvironmentItemModel(const QProcessEnvironment& environment,
  15. QObject* parent = nullptr);
  16. QProcessEnvironment environment() const;
  17. void clear();
  18. QModelIndex buddy(const QModelIndex& index) const override;
  19. public slots:
  20. void appendVariable(const QString& key, const QString& value);
  21. void insertVariable(int row, const QString& key, const QString& value);
  22. };
  23. class EnvironmentSearchFilter : public QSortFilterProxyModel
  24. {
  25. Q_OBJECT
  26. public:
  27. EnvironmentSearchFilter(QObject* parent = nullptr);
  28. protected:
  29. bool filterAcceptsRow(int row, const QModelIndex& parent) const override;
  30. };
  31. class EnvironmentDialog
  32. : public QDialog
  33. , public Ui::EnvironmentDialog
  34. {
  35. Q_OBJECT
  36. public:
  37. EnvironmentDialog(const QProcessEnvironment& environment,
  38. QWidget* parent = nullptr);
  39. QProcessEnvironment environment() const;
  40. protected slots:
  41. void addEntry();
  42. void removeSelectedEntries();
  43. void selectionChanged();
  44. private:
  45. EnvironmentItemModel* m_model;
  46. EnvironmentSearchFilter* m_filter;
  47. };