1 /*
2  This file is part of the Okteta Kasten Framework, made within the KDE community.
3 
4  SPDX-FileCopyrightText: 2009 Friedrich W. H. Kossebau <kossebau@kde.org>
5  SPDX-FileCopyrightText: 2009, 2012 Alex Richardson <alex.richardson@gmx.de>
6 
7  SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
8  */
9 
10 #ifndef KASTEN_STRUCTURESMANAGERVIEW_HPP
11 #define KASTEN_STRUCTURESMANAGERVIEW_HPP
12 
13 // KF
14 #include <KNS3/Entry>
15 // Qt
16 #include <QWidget>
17 
18 class StructureAddRemoveWidget;
19 class QPushButton;
20 class KPluginSelector;
21 
22 namespace KNS3 {
23 class Button;
24 }
25 namespace Kasten {
26 class StructuresManager;
27 class StructuresTool;
28 }
29 
30 class StructuresManagerView : public QWidget
31 {
32     Q_OBJECT
33 
34 public:
35     Q_PROPERTY(QStringList values READ values NOTIFY changed USER true)
36     explicit StructuresManagerView(Kasten::StructuresTool* manager, QWidget* parent = nullptr);
37 
38     ~StructuresManagerView() override;
39 
40 public:
41     QStringList values() const;
42 
43 Q_SIGNALS:
44     void selectedPluginsChanged();
45     void changed(const QStringList& newValues);
46 
47 private Q_SLOTS:
48     void onGetNewStructuresClicked(const KNS3::Entry::List& changedEntries);
49     void onPluginSelectorChange(bool change);
50     void advancedSelection();
51     void setSelectedStructures(const QStringList& selectedStructures);
52 
53 private:
54     void rebuildPluginSelectorEntries();
55     void reloadSelectedItems();
56 
57 private:
58     Kasten::StructuresTool* mTool;
59     QStringList mSelectedStructures;
60     KNS3::Button* mGetNewStructuresButton;
61     QPushButton* mAdvancedSelectionButton;
62     KPluginSelector* mStructuresSelector = nullptr;
63     bool mRebuildingPluginsList : 1;
64 
65 };
66 
67 #endif
68