VR-Forces 4.0.4 Class Documentation
include/vrvCoreQt/DtObjectsList.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)