VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
syncMatrixTreeWidget.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #if !defined(Q_MOC_RUN)
15 #include <vrfutil/rwUUID.h>
18 #endif
19 
20 #include <QtWidgets/QStyledItemDelegate>
21 #include <QtWidgets/QTreeWidget>
22 #include <QtWidgets/QHeaderView>
23 
24 class QToolButton;
25 class QLabel;
26 class DtRwSyncMatrixPlan;
27 
28 namespace makVrf
29 {
30  class DtObjectListViewItem;
31 
33  {
34  Q_OBJECT
35  public:
36  explicit DtSyncMatrixItemDelegate(makVrv::DtDe& de, QObject *parent = Q_NULLPTR);
37 
38  virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
39  virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
40  virtual bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option,
41  const QModelIndex& index) override;
42  virtual bool helpEvent(QHelpEvent* event, QAbstractItemView* view, const QStyleOptionViewItem& option,
43  const QModelIndex& index) override;
44  virtual void addingObjectsStopped();
45 
46  virtual void getHotSpots(const QStyleOptionViewItem &option, QRect& addPlan, QRect& continuePlan) const;
47 
48  const QString& addPlanText() const { return myAddPlanText; }
49  const QString& continuePlanText() const { return myContinuePlanText; }
50 
51  signals:
52  void signal_addObject();
53  void signal_removeObject(const QModelIndex &index);
54  void signal_setPlan(const QModelIndex &index);
55  void signal_linkPlan(const QModelIndex &index);
56  void signal_unlinkPlan(const QModelIndex &index);
57 
58  protected:
59 
60  virtual QPoint getIconPosition(const QPixmap& pixmap, const QStyleOptionViewItem &option,
61  const Qt::Alignment& alignment = Qt::AlignCenter) const;
62  virtual void updateIcons();
63 
64  protected:
66  QPixmap myAddIcon;
67  QPixmap myRemoveIcon;
68  static int myIconMargin;
69  static float myDrawTextSize;
72  int myAddingObject = -1;
73  QString myAddPlanText;
75  };
76 
79  {
80  Q_OBJECT
81  public:
82 
85  {
86  PhaseSectionUserRoleActive = Qt::UserRole,
88  };
89 
90  DtSyncMatrixTreeWidgetHeader(makVrv::DtDe& de, Qt::Orientation orientation, QWidget* parent = Q_NULLPTR);
91 
92  virtual ~DtSyncMatrixTreeWidgetHeader() override;
93 
94  virtual int phaseColumnFromName(const QString& phaseName);
95  virtual void moveToPhase(const QString& requestedPhase, const QString& prevPhase, bool prevPhaseCompleted);
96 
97  virtual void resizePhaseSections();
98 
99  protected slots:
100  virtual void slot_sectionMoved(int _logicalIndex, int oldVisualIndex, int newVisualIndex);
101 
102  signals:
103  void signal_addPhase(int phaseIndex);
104  void signal_removePhase(const QString& phaseName);
105  void signal_editPhase(const QString& phaseName);
106  void signal_movePhase(const QString& phaseName, int phaseIndex);
107 
108  protected:
109 
110  virtual void addPhaseEvent(int phaseIndex);
111  virtual void removePhaseEvent(const QString& phaseName);
112  virtual void editPhaseEvent(const QString& phaseName);
113  virtual void movePhaseEvent(const QString& phaseName, int phaseIndex);
114 
115  virtual void mousePressEvent(QMouseEvent* event) override;
116  virtual void mouseDoubleClickEvent(QMouseEvent* event) override;
117  virtual void mouseMoveEvent(QMouseEvent* event) override;
118  virtual void paintSection(QPainter* painter, const QRect& rect, int logicalIndex) const override;
119  virtual void contextMenuEvent(QContextMenuEvent* event) override;
120 
121  virtual QPoint getAddIconPosition(const QRect &rect) const;
122  virtual QPoint getEditIconPosition(const QRect &rect) const;
123  virtual QPoint getRemoveIconPosition(const QRect &rect) const;
124 
125  virtual void updateIcons();
126 
127  protected:
129  QPixmap myAddIcon;
130  QPixmap myEditIcon;
131  QPixmap myRemoveIcon;
132  static int myIconMargin;
135  };
136 
139  {
140  Q_OBJECT
141 
142  Q_PROPERTY(QColor PhaseActiveColor MEMBER myPhaseActiveColor USER true)
143  Q_PROPERTY(QColor PhaseCompletedColor MEMBER myPhaseCompletedColor USER true)
144  Q_PROPERTY(QColor PlanCellBackgroundColor MEMBER myPlanCellBackgroundColor USER true)
145  Q_PROPERTY(QColor PlanCellColor MEMBER myPlanCellColor USER true)
146  Q_PROPERTY(QColor AddContinueColor MEMBER myAddContinueColor USER true)
147 
148  public:
149 
154  {
155  ItemUserRoleUUID = Qt::UserRole,
160  ItemUserRolePlanLinked
161  };
162 
163  //CTOR
164  DtSyncMatrixTreeWidget(makVrv::DtDe& de, QWidget* parent = Q_NULLPTR);
165 
166  //DTOR
167  virtual ~DtSyncMatrixTreeWidget() override;
168 
169  virtual void resetMatrix(const DtRwSyncMatrixPhaseList& phases);
170  virtual void clearObjects();
171  virtual void clearPlans();
172  virtual void clearAll();
173  virtual void addingObjectsStopped();
174 
175  const QColor& phaseActiveColor() const
176  {
177  return myPhaseActiveColor;
178  }
179 
180  const QColor& phaseCompletedColor() const
181  {
182  return myPhaseCompletedColor;
183  }
184 
185  const QColor& planCellBackgroundColor() const
186  {
187  return myPlanCellBackgroundColor;
188  }
189 
190  const QColor& planCellColor() const
191  {
192  return myPlanCellColor;
193  }
194 
195  const QColor& addContinueColor() const
196  {
197  return myAddContinueColor;
198  }
199 
200  virtual QTreeWidgetItem* topLevelObjectItem(const DtUUID& uuid);
201  virtual QTreeWidgetItem* addTopLevelObject(const DtUUID& syncMatrixUUID, const DtUUID& uuid, const QString& name);
202  virtual QTreeWidgetItem* addChildObject(QTreeWidgetItem* parent, const DtUUID& syncMatrixUUID, const DtUUID& uuid, const QString& name);
203  virtual void setPlanStatus(const DtUUID& uuid, const QString& phaseName,
204  const DtRwSyncMatrixPlan* planSummary, bool valid, bool activated);
205  virtual void setPlanStatus(QTreeWidgetItem* item, const QString& phaseName,
206  const DtRwSyncMatrixPlan* planSummary, bool valid, bool activated);
207  virtual void removeObject(const DtUUID& uuid);
208  virtual void renameObject(const DtUUID& uuid, const QString& name);
209 
210  virtual bool phaseNameExists(const QString& phaseName);
211  virtual void moveToPhase(const QString& requestedPhase, const QString& prevPhase, bool prevPhaseCompleted);
212 
213  virtual QString getObjectName(const DtUUID& uuid);
214 
216  virtual void updateDisplay();
217  virtual void updateDisplay(QTreeWidgetItem*);
218 
219  signals:
220  void signal_addPhase(int phaseIndex);
221  void signal_removePhase(const QString& phaseName);
222  void signal_editPhase(const QString& phaseName);
223  void signal_movePhase(const QString& phaseName, int phaseIndex);
224 
225  void signal_addObject();
226  void signal_removeObject(const DtUUID& uuid);
227 
228  void signal_setPlan(const DtUUID& uuid, const QString& phaseName);
229  void signal_linkPlan(const DtUUID& uuid, const QString& phaseName, const QString& toPhaseName);
230  void signal_unlinkPlan(const DtUUID& uuid, const QString& phaseName, const QString& toPhaseName);
231  void signal_removePlan(const DtUUID& uuid, const QString& phaseName);
232  void signal_copyPlan(const DtUUID& uuid, const QString& phaseName);
233  void signal_pastePlan(const DtUUID& uuid, const QString& phaseName);
234  void signal_activatePlan(const DtUUID& uuid, const QString& phaseName, bool activate);
235 
236  protected slots:
237  virtual void slot_addObject();
238  virtual void slot_removeObject(const QModelIndex& index);
239  virtual void slot_setPlan(const QModelIndex& index);
240  virtual void slot_linkPlan(const QModelIndex& index);
241  virtual void slot_unlinkPlan(const QModelIndex& index);
242 
243  protected:
244  virtual void syncMatrixItemCopyPlan(QTreeWidgetItem* item, int column);
245  virtual void syncMatrixItemPastePlan(QTreeWidgetItem* item, int column);
246  virtual void syncMatrixItemRemovePlan(QTreeWidgetItem* item, int column);
247  virtual void syncMatrixItemActivatePlan(QTreeWidgetItem* item, int column, bool activate);
248 
249  virtual QTreeWidgetItem* findObjectItem(const DtUUID& uuid, QTreeWidgetItem* parent);
250  virtual void deactivateChildItems(QTreeWidgetItem* item, int column);
251 
252  virtual void clearItemPlan(QTreeWidgetItem* item);
253 
254  virtual void contextMenuEvent(QContextMenuEvent* event) override;
255  virtual QTreeWidgetItem* createTreeItem(const DtUUID&, const QString& name) const;
256  virtual QVariant displayPlanStatement(const DtObjectListViewItem*, int column) const;
257 
258  protected:
265  };
266 }
double myDevicePixelRatio
Definition: syncMatrixTreeWidget.h:134
UUID is a unique ID wrapper class.
Definition: uuid.h:59
static float myDrawTextSize
Definition: syncMatrixTreeWidget.h:69
class DtRwSyncMatrixPlan:
Definition: rwSyncMatrixPlan.h:23
The header view of the synchronization matrix.
Definition: syncMatrixTreeWidget.h:78
QColor myPhaseCompletedColor
Definition: syncMatrixTreeWidget.h:261
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
Definition: syncMatrixTreeWidget.h:158
const QString & addPlanText() const
Definition: syncMatrixTreeWidget.h:48
Definition: syncMatrixTreeWidget.h:157
const QColor & planCellColor() const
Definition: syncMatrixTreeWidget.h:190
Contains the DtUUID class declaration.
QString myAddPlanText
Definition: syncMatrixTreeWidget.h:73
const QString & continuePlanText() const
Definition: syncMatrixTreeWidget.h:49
QPixmap myRemoveIcon
Definition: syncMatrixTreeWidget.h:67
QPixmap myAddIcon
Definition: syncMatrixTreeWidget.h:66
A tree widget that represents the synchronization matrix.
Definition: syncMatrixTreeWidget.h:138
makVrv::DtSignalConnectionManager myConnections
Definition: syncMatrixTreeWidget.h:133
QPixmap myRemoveIcon
Definition: syncMatrixTreeWidget.h:131
QPixmap myAddIcon
Definition: syncMatrixTreeWidget.h:129
static int myIconMargin
Definition: syncMatrixTreeWidget.h:68
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
QColor myPlanCellColor
Definition: syncMatrixTreeWidget.h:263
Definition: syncMatrixTreeWidget.h:156
Definition: rwSyncMatrixPhaseList.h:17
static int myIconMargin
Definition: syncMatrixTreeWidget.h:132
const QColor & addContinueColor() const
Definition: syncMatrixTreeWidget.h:195
Base class to provide boost signal/slot management.
PhaseSectionUserRole
enums for user data stored in the tree widget header sections:
Definition: syncMatrixTreeWidget.h:84
QColor myPlanCellBackgroundColor
Definition: syncMatrixTreeWidget.h:262
const QColor & planCellBackgroundColor() const
Definition: syncMatrixTreeWidget.h:185
QColor myAddContinueColor
Definition: syncMatrixTreeWidget.h:264
makVrv::DtDe & myDe
Definition: syncMatrixTreeWidget.h:259
QColor myPhaseActiveColor
Definition: syncMatrixTreeWidget.h:260
const QColor & phaseCompletedColor() const
Definition: syncMatrixTreeWidget.h:180
const QColor & phaseActiveColor() const
Definition: syncMatrixTreeWidget.h:175
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
makVrv::DtDe & myDe
Definition: syncMatrixTreeWidget.h:65
This tree widget item can be used in any tree that wants to display an icon next to the name of an ob...
Definition: objectListViewItem.h:45
QString myContinuePlanText
Definition: syncMatrixTreeWidget.h:74
QPixmap myEditIcon
Definition: syncMatrixTreeWidget.h:130
makVrv::DtDe & myDe
Definition: syncMatrixTreeWidget.h:128
Definition: syncMatrixTreeWidget.h:32
makVrv::DtSignalConnectionManager myConnections
Definition: syncMatrixTreeWidget.h:70
double myDevicePixelRatio
Definition: syncMatrixTreeWidget.h:71
ObjectItemUserRole
enums for user data stored in the tree widget: uuid - object&#39;s uuid in the first column has plan...
Definition: syncMatrixTreeWidget.h:153

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)