VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
uiPropertiesTable.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
13 #include <readerWriter/rwInt.h>
14 #include <readerWriter/rwReal.h>
15 #include <readerWriter/rwString.h>
17 
18 #include <QTableWidget>
19 #include <QHeaderView>
20 #include <QKeyEvent>
21 #include <QItemDelegate>
22 #include <QComboBox>
23 
26 class QTableWidgetItem;
27 class QHBoxLayout;
28 class QPushButton;
29 class QVBoxLayout;
30 class DtRwPropertiesList;
31 class DtRwPropertiesMap;
32 class QCheckBox;
33 
37 {
38 public:
39  DtUiPropertiesTableWidget(QWidget * parent = 0) : QTableWidget(parent) {}
41 
42  virtual QSize sizeHint() const;
43  virtual void accept();
44 };
45 
47 {
48 public:
49  DtUiTableWidgetItem() : myOriginalValue(0), myModifiedValue(0), myIsKey(false), myIsReadOnly(false), myOwnsValues(false), myIsPropertyValue(true) {};
50 
51  virtual ~DtUiTableWidgetItem() { if (myOwnsValues) { delete myOriginalValue; delete myModifiedValue; } };
52 
53  void setOwnsValues(bool b) { myOwnsValues = b; };
54  void setOriginalValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myOriginalValue; myOriginalValue = rw; };
55  void setModifiedValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myModifiedValue; myModifiedValue = rw; };
56  void setIsPropertyValue(bool b) { myIsPropertyValue = b; };
57 
58  bool isInt() const { return dynamic_cast<const DtRwInt*>(myOriginalValue) != 0; };
59  bool isReal() const { return dynamic_cast<const DtRwReal*>(myOriginalValue) != 0; };
60  void setIsKey(bool b) { myIsKey = b; };
61  bool isKey() const { return myIsKey; };
62 
63  virtual QVariant data(int role) const
64  {
65  if (role == Qt::BackgroundColorRole)
66  {
67  if (flags() & Qt::ItemIsEditable)
68  {
69  return QTableWidgetItem::data(role);
70  }
71  else
72  {
73  return QColor(Qt::lightGray);
74  }
75  }
76  else if (role == Qt::FontRole)
77  {
78  QFont f = qvariant_cast<QFont>(QTableWidgetItem::data(Qt::FontRole));
79 
80  bool same = true;
81 
82  if (!myOriginalValue && myModifiedValue)
83  {
84  same = false;
85  }
86  else if (myIsKey)
87  {
88  same = (myOriginalValue->name() == myModifiedValue->name());
89  }
90  else if (myOriginalValue && myModifiedValue)
91  {
92  if (myIsPropertyValue)
93  {
94  same = DtRwProperties::propertyFactory()->compareReaderWriter(myOriginalValue, myModifiedValue);
95  }
96  else
97  {
98  same = DtRwProperties::factory()->compareReaderWriter(myOriginalValue, myModifiedValue);
99  }
100  }
101 
102  f.setBold(!same);
103 
104  return f;
105  }
106 
107  return QTableWidgetItem::data(role);
108  }
109 
110  void setReadOnly(bool b) { if (b) setFlags((Qt::ItemFlags)(flags() & ~Qt::ItemIsEditable)); else setFlags((Qt::ItemFlags)(flags() | Qt::ItemIsEditable)); };
111  const DtReaderWriter* originalValue() const { return myOriginalValue; }
112  const DtReaderWriter* modifiedValue() const { return myModifiedValue; }
113 
114 protected:
115  bool myIsKey;
121 };
122 
124 {
125 public:
126  DtUiTableWidgetItemDelegate(QObject* p, bool b) : QItemDelegate(p), myRowsAsColumns(b), myTable(dynamic_cast<QTableWidget*>(p)) {};
127 
128 protected:
129  virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
130  const QModelIndex &index) const;
131 
132 protected:
134  QIntValidator myIntValidator;
135  QDoubleValidator myDoubleValidator;
137 };
138 
140 {
141 public:
142  DtUiTableWidgetComboBox(QWidget* w) : QComboBox(w) { };
144 
145  void setTableWidgetItem(DtUiTableWidgetItem* i) { myTableWidgetItem = i; };
146  DtUiTableWidgetItem* tableWidgetItem() const { return myTableWidgetItem; };
147 
148 protected:
149  virtual void paintEvent(QPaintEvent *);
150 
151 protected:
153 };
154 
156 {
157  Q_OBJECT
158 
159 public:
162 
164  virtual ~DtUiPropertiesTable();
165 
167 
168  virtual void setEnabled(bool);
169 
170 protected:
171  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
172 
174  virtual void createControls(QWidget* widget);
175  virtual void processUiEvent(const DtUiElementEvent& e);
176 
177  virtual void columnHeadersFrom(const DtPropertyInterface* prototype, QStringList& columns) const;
178  virtual QString columnTitleFor(const QString&) const;
179  virtual void fillInAndMapRwItemToTableItems(int row, int& colStart, DtReaderWriter*);
180 
181  virtual const DtReaderWriter* readerWriterFromPrototype(const DtReaderWriter* prototype, int col) const;
182 
183  virtual void flatten(const DtReaderWriter* prototype, std::vector<const DtReaderWriter*>& list) const;
184  virtual void tableItemCreated(DtUiTableWidgetItem*, int row, int col);
185 
186  virtual void itemRemoved(DtUiTableWidgetItem*);
187  virtual void updateEnableStatus();
188 
189  virtual QStringList convertToTitles(const QStringList& cols) const;
190 
191  virtual bool canHavePrimary() const;
192 
193  virtual void addPrimaryCheckBox(int row, int col);
194 
195  virtual DtString currentPrimary() const;
196  virtual DtString keyFor(int col) const;
197  virtual void updatePrimaryData();
198  virtual void setCurrentPrimary(const DtString&, bool, bool updateData = true);
199  virtual void elementChanged();
200  virtual void clearPrimaryData();
201  virtual void setPrimaryDataFrom(int);
202  virtual QCheckBox* primaryCheckBox(int) const;
203 
204  virtual void setEquipmentAvailable(const DtString&, bool);
205 
206  virtual void addPrimaryEntry(DtReaderWriter* rw);
207 
208  virtual void fixRowTitle(int row = - 1);
209  virtual bool initForPossibleMultiMap(DtRwPropertiesMap*);
210  virtual QString getContainedName(const QString& = "") const;
211 
212  virtual void fillInTableFromSelection(DtReaderWriter*);
213  virtual void addContainedItems(DtReaderWriter*);
214  virtual void updateAddButton();
215 
216  virtual void removeRow(int);
217  virtual void decorateElement();
218 
219 protected slots:
220  virtual void itemChanged(QTableWidgetItem*);
221  virtual void addRow();
222  virtual void removeRow();
223  virtual void itemSelectionChanged();
224  virtual void valueComboChanged();
225  virtual void primaryChanged();
226  virtual void addNewContainerItem();
227  virtual void editContainerItem();
228  virtual void removeContainerItem();
229  virtual void containedItemSelected();
230 
231 public:
235  QVBoxLayout* myLayout;
236  QHBoxLayout* myButtonLayout;
238 
261  QHBoxLayout* myContainerLayout;
265 
266 protected:
267  typedef std::map<DtUiTableWidgetItem*, DtReaderWriter*> TableWidgetItemMap;
275 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)