VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtItemsListWidget.h
Go to the documentation of this file.
1 /*****************************************************************************
2 * Copyright (c) 2023 MAK Technologies, Inc.
3 * All rights reserved.
4 *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCoreQt/vrvCoreQt.h>
14 #include <vrvCoreQt/DtTreeWidget.h>
15 #include <QtWidgets/QWidget>
18 #include <boost/unordered_map.hpp>
19 
20 class QVBoxLayout;
21 class QTreeWidgetItem;
22 class QLabel;
23 class QLineEdit;
24 class QPushButton;
25 
26 namespace makVrv
27 {
28  class DtDe;
29 
34  class DT_DLL_VRVCOREQT DtItemsListWidget : public QWidget
35  , public DtItemsListInterface
36  {
37  Q_OBJECT
38 
39  public :
40 
42 
45  {
46  ItemElementId = Qt::UserRole,
49  ItemIsSubType
50  };
51 
53  virtual ~DtItemsListWidget();
54 
56  void setupGui();
57 
59  void connectSignals();
60 
66  virtual void addSubTypeTopLevelItem(const DtElementAttributes::ElementSubtypes& subType,
67  const std::string& displayName, int index, const std::string& icon);
68 
76  virtual void addSubTypeTopLevelItem(const DtElementAttributes::ElementSubtypes& subType,
77  const std::string& displayName, int index, double r, double g, double b);
78 
84  virtual void addSubTypeItem(const DtElementAttributes::ElementSubtypes& subType, DtElementID elementId, const std::string& displayName);
85 
88  virtual bool hasSubTypeTopLevelItem(const DtElementAttributes::ElementSubtypes& subType);
89 
95  virtual void addTypeTopLevelItem(const DtElementEntry::ElementType& type,
96  const std::string& displayName, int index, const std::string& icon);
97 
103  virtual void addTypeItem(const DtElementEntry::ElementType& type, DtElementID elementId, const std::string& displayName);
104 
107  virtual bool hasTypeTopLevelItem(const DtElementEntry::ElementType& type);
108 
110  virtual void sortItems();
111 
113  virtual void removeItem(DtElementID id);
114 
117  virtual void renameItem(DtElementID id, const std::string& newName);
118 
121  virtual void updateItemDamageState(DtElementID id, EntityStateListener::DamageState damageState);
122 
125  virtual void updateItemSubType(DtElementID id, int subType);
126 
128  virtual void setSelectedItems(const DtSelectionManager::IdSet& selected,
129  const DtSelectionManager::IdSet& deselected);
130 
139  virtual bool comparator(const QTreeWidgetItem& lhs, const QTreeWidgetItem& rhs) const;
140 
141  protected:
142 
144  DtItemsListWidget(DtDe& de, QWidget* parent = NULL, const Qt::WindowFlags& f = 0);
145 
150  void setItemAttributes(QTreeWidgetItem* item, DtElementID elementId, const QString& displayName);
151 
155  DtElementID getItemElementId(QTreeWidgetItem* item);
156 
159  bool parseNumber(const QTreeWidgetItem& lhs, int& number, QString& name) const;
160 
161  protected slots:
162 
164  virtual void on_objectsTreeWidget_rightClickOnItem(QTreeWidgetItem* item, QMouseEvent*, int column);
165 
167  virtual void on_objectsTreeWidget_itemDoubleClicked(QTreeWidgetItem* item, int column);
168 
170  virtual void on_objectsTreeWidget_itemSelectionChanged();
171 
173  virtual void on_lookupLineEdit_textChanged(QString str);
174 
176  virtual void on_searchCleanButton_released();
177 
178  private:
179 
181  DtItemsListWidget() = delete;
182 
184  DtItemsListWidget(const DtItemsListWidget& orig) = delete;
185 
187  DtItemsListWidget& operator=(const DtItemsListWidget& orig) = delete;
188 
189  protected:
191  QVBoxLayout * myMainLayout;
196  boost::unordered_map<DtElementEntry::ElementType, QTreeWidgetItem*> myElementTypeItemsMap;
197  boost::unordered_map<DtElementAttributes::ElementSubtypes, QTreeWidgetItem*> myElementSubtypeItemsMap;
198  boost::unordered_map<DtElementID, QTreeWidgetItem*> myElementItemsMap;
199  // Allow in const function
200  mutable std::map<const QString, std::pair<QString, int> > myObjectListCache;
201  };
202 
206  : public DtVirtualBaseClass
207  {
208  public:
209  static DtItemsListWidgetCreator& instance(DtDe& de);
210  static void registerInstance(DtDe& de, DtItemsListWidgetCreator* creator);
211  virtual DtItemsListWidget* create(DtDe& de, QWidget* parent) const;
212  };
213 }
Override QTreeWidget to provide additional functionality (mainly right click support) ...
Definition: DtTreeWidget.h:20
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DamageState
Definition: DtEntityStateListener.h:64
ItemsListWidgetItemDataRole
Item data stored in the objects tree widget item.
Definition: DtItemsListWidget.h:44
DtDe & myDe
Definition: DtItemsListWidget.h:190
boost::unordered_map< DtElementAttributes::ElementSubtypes, QTreeWidgetItem * > myElementSubtypeItemsMap
Definition: DtItemsListWidget.h:197
Definition: DtItemsListWidget.h:48
Creator for the DtItemsListWidget.
Definition: DtItemsListWidget.h:205
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
Contains DLL export macros.
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
boost::unordered_map< DtElementEntry::ElementType, QTreeWidgetItem * > myElementTypeItemsMap
Definition: DtItemsListWidget.h:196
ElementSubtypes
Definition: DtElementAttributes.h:57
Contains makVrv::DtVirtualBaseClass class.
Definition: DtItemsListWidget.h:47
DtTreeWidget * myObjectsTreeWidget
Definition: DtItemsListWidget.h:195
Interface for display the objects, terrains, observers in the scene in a list. Used by DtObjectsListW...
Definition: DtItemsListInterface.h:26
QLineEdit * myLookupLineEdit
Definition: DtItemsListWidget.h:193
QVBoxLayout * myMainLayout
Definition: DtItemsListWidget.h:191
QLabel * myLookupLabel
Definition: DtItemsListWidget.h:192
ElementType
Definition: DtElementEntry.h:26
boost::unordered_map< DtElementID, QTreeWidgetItem * > myElementItemsMap
Definition: DtItemsListWidget.h:198
std::map< const QString, std::pair< QString, int > > myObjectListCache
Definition: DtItemsListWidget.h:200
Contains the DtItemsListInterface class declaration.
Base class to provide boost signal/slot management.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
QPushButton * mySearchCleanButton
Definition: DtItemsListWidget.h:194
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
Widget for display the objects, terrains, observers in the scene in a list. Used by DtObjectsListWidg...
Definition: DtItemsListWidget.h:34

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)