6#include <QtWidgets/QTreeWidget>
9#include <imod/TSingleModelObserverBase.h>
10#include <istd/IPolymorphic.h>
13#include <imtbase/IObjectCollection.h>
14#include <imtlic/IFeatureInfoProvider.h>
31 typedef QMap<QByteArray, QByteArrayList> DependencyMap;
33 void OnFeaturePackageCollectionUpdate();
34 void EnumerateMissingDependencies();
35 void UpdateFeatureTree();
36 void UpdateFeatureTreeCheckStates();
37 QTreeWidgetItem* GetItem(
const QByteArray& itemId);
39 bool HasDependency(
const DependencyMap& dependencyMap,
const QByteArray& fromFeatureId,
const QByteArray& toFeatureId);
41 virtual void UpdateFeaturePackageModel() = 0;
42 virtual void FeatureTreeItemChanged() = 0;
44 void on_FeatureTree_itemChanged(QTreeWidgetItem *item,
int column);
49 DR_ITEM_ID = Qt::UserRole,
59 class FeaturePackageCollectionObserver:
public imod::TSingleModelObserverBase<imtbase::IObjectCollection>
62 FeaturePackageCollectionObserver();
67 virtual void OnUpdate(
const istd::IChangeable::ChangeSet& changeSet)
override;
72 struct FeatureDescription
79 typedef QList<FeatureDescription> FeatureDescriptionList;
82 QTreeWidget* m_treeWidgetPtr;
84 bool m_isGuiModelInitialized;
85 bool m_isCollectionRepresentationInitialized;
87 FeaturePackageCollectionObserver m_packageCollectionObserver;
90 FeatureDescriptionList m_features;
91 DependencyMap m_dependencies;
92 QByteArrayList m_missingDependencies;
95 QByteArray m_selectedFeatureId;
98 QMap<QByteArray, QString> m_packageNameMap;
99 QMap<QByteArray, FeatureDescriptionList> m_packageFeatureMap;
100 DependencyMap m_packageDependenciyMap;