![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00009 #pragma once 00010 #include <vrvCoreQt/vrvCoreQt.h> 00011 #include <QtGui/QWidget> 00012 #include <vrvCoreQt/DtSelectionWidget.h> 00013 #include <vrvCoreQt/DtTreeWidget.h> 00014 #include <vrvCore/DtUniqueID.h> 00015 #include <vrvUtil/DtVirtualBaseClass.h> 00016 00017 class QVBoxLayout; 00018 class QTreeWidgetItem; 00019 00020 namespace makVrv 00021 { 00022 class DtObjectsSelectionList; 00023 class DtObjectListViewItem; 00024 class DtElementEntry; 00025 class DtDe; 00026 00027 const int DtIconColumn = 0; 00028 const int DtNameColumn = 1; 00029 00030 class DtObjectListViewItem; 00031 00032 typedef QVariant (*DtObjectsListDataFcn)(DtObjectListViewItem*, 00033 DtElementEntry&, const DtObjectsSelectionList*); 00034 typedef bool (*DtObjectsListSortFcn)(const QTreeWidgetItem& lhs, 00035 const QTreeWidgetItem& rhs, 00036 int iDataColumn, const DtObjectsSelectionList*); 00037 00041 class DT_DLL_VRVCOREQT DtObjectsListDataFunctions 00042 { 00043 public: 00044 DtObjectsListDataFunctions() : myDataFunction(NULL), mySortFunction(NULL) {}; 00045 DtObjectsListDataFunctions(DtObjectsListDataFcn d, DtObjectsListSortFcn s) : 00046 myDataFunction(d), mySortFunction(s) {}; 00047 00048 DtObjectsListDataFunctions(const DtObjectsListDataFunctions& orig) : 00049 myDataFunction(orig.myDataFunction), mySortFunction(orig.mySortFunction) {}; 00050 00051 DtObjectsListDataFcn myDataFunction; 00052 DtObjectsListSortFcn mySortFunction; 00053 }; 00054 00058 class DT_DLL_VRVCOREQT DtObjectsSelectionList : public DtSelectionWidget 00059 { 00060 Q_OBJECT 00061 00062 public: 00063 00065 DtObjectsSelectionList(DtDe& de, QWidget* parent = NULL, 00066 const Qt::WindowFlags& flags = 0); 00067 00069 virtual ~DtObjectsSelectionList(); 00070 00071 bool init(int iNumListBoxes = 1); 00072 00073 virtual void tick(); 00074 00075 virtual QVariant data(DtObjectListViewItem* item, int iDataColumn, int iColumn, int iRole) const; 00076 00077 virtual bool isDataShown(int data); 00078 00079 public slots: 00081 virtual int sort(const QTreeWidgetItem& lhs, const QTreeWidgetItem& rhs, int iColumnId) const; 00082 00083 protected slots: 00084 virtual void filterItemAdded(const DtUniqueID&, QTreeWidgetItem*); 00085 virtual void filterItemUpdated(const DtUniqueID&, QTreeWidgetItem*); 00086 virtual void filterItemRemoved(const DtUniqueID&, QTreeWidgetItem*); 00087 virtual void filterListViewCleared(); 00088 00089 00092 virtual void showObjectOptions(int); 00093 00095 virtual void symbolMapChanged(); 00096 00097 signals: 00098 void rightClickOnItem( QPoint where ); 00099 void filterListItemAdded(const DtUniqueID&, QTreeWidgetItem*); 00100 void filterListItemRemoved(const DtUniqueID&, QTreeWidgetItem*); 00101 void filteredListViewCreated( DtFilteredListView * ); 00102 void filteredListViewToBeDestroyed( DtFilteredListView * ); 00103 00104 protected: 00105 virtual DtFilteredListView* createFilteredListView(); 00106 virtual DtFilteredListView* createFilteredListView(unsigned int iListBox); 00107 virtual bool initConnections(DtFilteredListView* window); 00108 00113 virtual void initializeColumns(); 00114 virtual void addColumn(int id, const QString& column, bool initiallyVisible = true, 00115 DtObjectsListDataFcn dataFcn = NULL, DtObjectsListSortFcn sortFcn = NULL); 00116 00118 virtual void createColumns(DtFilteredListView* window); 00119 00122 virtual QPixmap createMenuArrow(DtFilteredListView* window); 00123 00124 virtual void keyPressEvent(QKeyEvent *e); 00125 00126 protected: 00127 QStringList myItems; 00128 QHash<int, DtObjectsListDataFunctions> myDataFunctions; 00129 bool myInitialized; 00130 }; 00131 00132 00134 // 00138 class DtObjectsList : public QWidget 00139 { 00140 00141 Q_OBJECT 00142 00143 public: 00144 00146 DtObjectsList(DtDe& de, QWidget* parent = NULL, 00147 const Qt::WindowFlags& flags = 0); 00148 00150 virtual ~DtObjectsList(); 00151 00152 public: 00153 00156 virtual bool init(); 00157 00160 virtual bool eventFilter(QObject* o, QEvent* e); 00161 DtObjectsSelectionList* objectsSelectionList() const; 00162 00163 virtual void tick(); 00164 00165 signals: 00166 00167 void showInformationClicked(const DtElementEntry&); 00168 void deleteRequested(); 00169 void rightClickOnItem( QPoint where ); 00170 void filterListItemAdded(const DtUniqueID&, QTreeWidgetItem*); 00171 void filterListItemRemoved(const DtUniqueID&, QTreeWidgetItem*); 00172 00173 public slots: 00174 virtual void showInformation(QTreeWidgetItem*, int); 00175 //virtual void selectionModeChanged(DtBaseWindow* window); 00176 virtual void filteredListViewCreated( DtFilteredListView* ); 00177 virtual void filteredListViewToBeDestroyed( DtFilteredListView* ); 00178 00179 protected: 00180 virtual void keyPressEvent(QKeyEvent *e); 00181 00183 virtual DtObjectsSelectionList* createObjectsSelectionList() = 0; 00184 00185 private: 00186 00188 DtObjectsList(const DtObjectsList& orig); 00189 00191 DtObjectsList& operator=(const DtObjectsList& orig); 00192 00193 protected: 00194 DtObjectsSelectionList* myObjectsSelectionList; 00195 QVBoxLayout* myMasterLayout; 00196 00197 bool mySelectionModeEnabled; 00198 DtDe& myDe; 00199 }; 00200 00201 inline DtObjectsSelectionList* DtObjectsList::objectsSelectionList() const 00202 { 00203 return myObjectsSelectionList; 00204 } 00205 00207 00208 class DtObjectListViewItem : public QTreeWidgetItem 00209 { 00210 public: 00211 DtObjectListViewItem(QTreeWidget* parent) : QTreeWidgetItem(parent), myDestroyed(false), myProcessing(false) {}; 00212 void setDataSource(DtObjectsSelectionList* s) { myDataSource = s; }; 00213 00214 bool destroyed() const { return myDestroyed; }; 00215 void setDestroyed(bool b) { myDestroyed = b; }; 00216 00217 virtual QVariant data(int iColumn, int role) const; 00218 00219 virtual bool operator<(const QTreeWidgetItem&) const; 00220 00221 protected: 00222 mutable bool myProcessing; 00223 bool myDestroyed; 00224 DtObjectsSelectionList* myDataSource; 00225 }; 00226 00227 class DtObjectListView : public DtFilteredListView 00228 { 00229 public: 00230 DtObjectListView(DtDe& de, QWidget* parent) 00231 : DtFilteredListView(de, parent) {}; 00232 00233 void setDataSource(DtObjectsSelectionList* s) { myDataSource = s; }; 00234 00235 protected: 00236 virtual QTreeWidgetItem* createListViewItem(const DtElementEntry& ) 00237 { 00238 DtObjectListViewItem* it = new DtObjectListViewItem(myFilteredListView); 00239 00240 it->setDataSource(myDataSource); 00241 it->setIcon(0, QPixmap()); 00242 return it; 00243 } 00244 00245 protected: 00246 DtObjectsSelectionList* myDataSource; 00247 00248 }; 00249 00252 class DT_DLL_VRVCOREQT DtObjectListViewCreator : public DtVirtualBaseClass 00253 { 00254 00255 public: 00257 static DtObjectListViewCreator& instance(DtDe& de); 00258 00260 static void registerInstance(DtDe& de,DtObjectListViewCreator* anInstance); 00261 00263 virtual DtObjectListView* create(DtDe& de, QWidget * parent); 00264 }; 00265 }