VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 "vrfutil/rwInt.h"
14 #include "vrfutil/rwReal.h"
15 #include "vrfutil/rwString.h"
16 #include "vrfutil/rwProperties.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 
35 {
36 public:
37  DtUiPropertiesTableWidget(QWidget * parent = 0) : QTableWidget(parent) {}
39 
40  virtual QSize sizeHint() const;
41  virtual void accept();
42 };
43 
45 {
46 public:
47  DtUiTableWidgetItem() : myOriginalValue(0), myModifiedValue(0), myIsKey(false), myIsReadOnly(false), myOwnsValues(false) {};
48 
49  virtual ~DtUiTableWidgetItem() { if (myOwnsValues) { delete myOriginalValue; delete myModifiedValue; } };
50 
51  void setOwnsValues(bool b) { myOwnsValues = b; };
52  void setOriginalValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myOriginalValue; myOriginalValue = rw; };
53  void setModifiedValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myModifiedValue; myModifiedValue = rw; };
54 
55  bool isInt() const { return dynamic_cast<const DtRwInt*>(myOriginalValue) != 0; };
56  bool isReal() const { return dynamic_cast<const DtRwReal*>(myOriginalValue) != 0; };
57  void setIsKey(bool b) { myIsKey = b; };
58  bool isKey() const { return myIsKey; };
59 
60  virtual QVariant data(int role) const
61  {
62  if (role == Qt::BackgroundColorRole)
63  {
64  if (flags() & Qt::ItemIsEditable)
65  {
66  return QTableWidgetItem::data(role);
67  }
68  else
69  {
70  return Qt::lightGray;
71  }
72  }
73  else if (role == Qt::FontRole)
74  {
75  QFont f = qvariant_cast<QFont>(QTableWidgetItem::data(Qt::FontRole));
76 
77  bool same = true;
78 
79  if (!myOriginalValue && myModifiedValue)
80  {
81  same = false;
82  }
83  else if (myIsKey)
84  {
85  same = (myOriginalValue->name() == myModifiedValue->name());
86  }
87  else if (myOriginalValue && myModifiedValue)
88  {
89  same = DtRwProperties::propertyFactory()->compareReaderWriter(myOriginalValue, myModifiedValue);
90  }
91 
92  f.setBold(!same);
93 
94  return f;
95  }
96 
97  return QTableWidgetItem::data(role);
98  }
99 
100  void setReadOnly(bool b) { if (b) setFlags((Qt::ItemFlags)(flags() & ~Qt::ItemIsEditable)); else setFlags((Qt::ItemFlags)(flags() | Qt::ItemIsEditable)); };
101  const DtReaderWriter* originalValue() const { return myOriginalValue; }
102  const DtReaderWriter* modifiedValue() const { return myModifiedValue; }
103 
104 protected:
105  bool myIsKey;
110 };
111 
113 {
114 public:
115  DtUiTableWidgetItemDelegate(QObject* p, bool b) : QItemDelegate(p), myRowsAsColumns(b), myTable(dynamic_cast<QTableWidget*>(p)) {};
116 
117 protected:
118  virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
119  const QModelIndex &index) const;
120 
121 protected:
123  QIntValidator myIntValidator;
124  QDoubleValidator myDoubleValidator;
126 };
127 
129 {
130 public:
133 
134  void setTableWidgetItem(DtUiTableWidgetItem* i) { myTableWidgetItem = i; };
135  DtUiTableWidgetItem* tableWidgetItem() const { return myTableWidgetItem; };
136 
137 protected:
138  virtual void paintEvent(QPaintEvent *);
139 
140 protected:
142 };
143 
145 {
146  Q_OBJECT
147 
148 public:
151 
153  virtual ~DtUiPropertiesTable();
154 
156 
157  virtual void setEnabled(bool);
158 
159 protected:
160  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
161 
163  virtual void createControls(QWidget* widget);
164  virtual void processUiEvent(const DtUiElementEvent& e);
165 
166  virtual void columnHeadersFrom(const DtPropertyInterface* prototype, QStringList& columns) const;
167  virtual QString columnTitleFor(const QString&) const;
168  virtual void fillInAndMapRwItemToTableItems(int row, int& colStart, DtReaderWriter*);
169 
170  virtual const DtReaderWriter* readerWriterFromPrototype(const DtReaderWriter* prototype, int col) const;
171 
172  virtual void flatten(const DtReaderWriter* prototype, std::vector<const DtReaderWriter*>& list) const;
173  virtual void tableItemCreated(DtUiTableWidgetItem*, int row, int col);
174 
175  virtual void itemRemoved(DtUiTableWidgetItem*);
176  virtual void updateEnableStatus();
177 
178  virtual QStringList convertToTitles(const QStringList& cols) const;
179 
180 protected slots:
181  virtual void itemChanged(QTableWidgetItem*);
182  virtual void addRow();
183  virtual void removeRow();
184  virtual void itemSelectionChanged();
185  virtual void valueComboChanged();
186 
187 public:
191  QVBoxLayout* myLayout;
192  QHBoxLayout* myButtonLayout;
193 
194 protected:
195  typedef std::map<DtUiTableWidgetItem*, DtReaderWriter*> TableWidgetItemMap;
199 };

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)