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

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)