![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: DtSelectionWidget.h,v $ $Revision: 1.12 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #pragma once 00013 #include <vrvCoreQt/vrvCoreQt.h> 00014 #include <vrvCoreQt/DtSelectionWidgetUi.hpp> 00015 #include <vrvCoreQt/DtFilteredListView.h> 00016 #include <vrvCore/DtSelectionManager.h> 00017 #include <vrvCore/DtSubjectObserver.h> 00018 #include <vrvCore/DtUniqueID.h> 00019 #include <vrvCore/DtElementData.h> 00020 #include <QtCore/QHash> 00021 00022 namespace makVrv 00023 { 00024 class DtFilter; 00025 class DtSelectionManager; 00026 00028 // 00035 class DT_DLL_VRVCOREQT DtSelectionWidget : public QWidget, public DtDeObserver 00036 { 00037 00038 Q_OBJECT 00039 00040 public: 00041 00043 DtSelectionWidget(DtDe& de, QWidget* parent = NULL, 00044 const Qt::WindowFlags& f = 0); 00045 00047 virtual ~DtSelectionWidget(); 00048 00050 virtual bool init( int iNumListBoxes = 1 ); 00051 00052 virtual void tick(); 00053 00055 virtual DtElementData::UniqueIdList selectedObjects( 00056 int iListBox = -1) const; 00057 00058 virtual QString selectedName(unsigned int iListBox = 0); 00059 virtual bool selectedNames(QString& name1, QString& name2); 00060 00061 virtual void addFilter(const DtFilter& filter, 00062 unsigned int iForListBox = 0, bool executeForFilter = false); 00063 00064 virtual DtFilteredListView* filteredListView(unsigned int iListBox = 0); 00065 00066 virtual void clearAllSelections(); 00067 virtual QString filterFor(const QString& windowTitle, 00068 const QString& listTitle); 00069 00072 virtual void addFinalFilter(const DtFilter& f); 00073 virtual void removeFinalFilter(); 00074 00076 virtual void removeButtons(); 00077 virtual void showButtons(); 00078 00080 virtual void makeConnections(bool connectMap = true); 00081 virtual void disconnectConnections(); 00082 00083 void setContinueAccept(bool); 00084 bool continueAccept() const; 00085 00088 virtual void setSelectedName(const QString& name, int iListBox = 0); 00089 00090 void onExternalSelectionChanged( const DtSelectionManager::IdSet& selected, 00091 const DtSelectionManager::IdSet& deselected ); 00092 00093 protected: 00094 virtual bool initConnections(); 00095 virtual bool initConnections(DtFilteredListView*); 00096 00097 virtual bool disconnectConnections(DtFilteredListView*); 00098 00101 virtual DtFilteredListView* createFilteredListView(unsigned int iForListBox); 00102 00103 virtual bool initFilters(unsigned int iForListBox = 0); 00104 virtual QString listTitle(unsigned int iForListBox = 0) const; 00105 virtual QString listCaption(unsigned int iForListBox = 0) const; 00106 00107 virtual bool initSelectionMode(); 00108 virtual QString windowTitle() const; 00109 00110 virtual DtFilteredListView* createFilteredListView() = 0; 00111 00112 virtual void slot_activate(DtDe* subject); 00113 00114 virtual void slot_deactivate(DtDe* subject); 00115 00119 void externalSelectionChanged( const DtSelectionManager::IdSet& selected, 00120 const DtSelectionManager::IdSet& deselected ); 00121 00122 signals: 00123 00126 void cancelActivated(); 00127 void accepted(); 00128 00129 public slots: 00130 00131 virtual void accept(); 00132 virtual void cancelAndClose(); 00133 00136 virtual void listSelectionUpdated(const DtElementData::UniqueIdList& d); 00137 00139 virtual void filterChanged(DtFilteredListView* window, const QString& filter); 00140 00142 virtual void comboTextChanged(DtFilteredListView* window, const QString& filter); 00143 00144 virtual bool createFilteredListViews(); 00145 00146 protected: 00147 00148 virtual void keyPressEvent(QKeyEvent *e); 00149 virtual void closeEvent(QCloseEvent *e); 00150 00151 public: 00152 Ui::DtSelectionWidgetUi myUiImpl; 00153 00154 protected: 00155 DtDe& myDe; 00156 int myNumListBoxes; 00157 00158 QList<DtFilteredListView*> myFilteredListViews; 00159 bool myClosing; 00160 00161 //static DtEntityMapperKey gForceLevel; 00162 static QHash<QString, QString> gCurrentFilter; 00163 00164 bool myUpdatingSelectionManager; 00165 00167 bool mySelectedOne; 00168 bool myContinueAccept; 00169 }; 00170 00171 inline void DtSelectionWidget::setContinueAccept(bool b) 00172 { 00173 myContinueAccept = b; 00174 } 00175 00176 inline bool DtSelectionWidget::continueAccept() const 00177 { 00178 return myContinueAccept; 00179 } 00180 }