![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtInformationDialogPage.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvUtil/signalslib.h> 00016 00017 #include <vrfGuiObjectInformationQt/vrfGuiObjectInformationQt.h> 00018 00019 #include <vrvCoreQt/DtPage.h> 00020 #include <vrvCore/DtPageConfiguration.h> 00021 #include <vrvCore/DtStateView.h> 00022 #include <vrvCore/DtEntityState.h> 00023 #include <vrvCore/DtSimEntry.h> 00024 00025 #include <vrvUtil/DtSignalConnectionManager.h> 00026 00027 #include <QtGui/QTreeWidget> 00028 00029 class QLabel; 00030 class QVBoxLayout; 00031 00032 namespace makVrv 00033 { 00034 class DtDe; 00035 class DtPersistenceToolbarWidget; 00036 } 00037 00038 namespace makVrf 00039 { 00040 namespace makVrfGuiObjectInformationQt 00041 { 00042 class DtInformationDialogPageLogic; 00043 class DtInformationTreeWidgetItem; 00044 00045 class DT_DLL_VRFGUIOBJECTINFORMATIONQT DtItemUpdateFunction 00046 { 00047 public: 00048 DtItemUpdateFunction() 00049 : myLogic(0) 00050 { 00051 } 00052 00053 DtItemUpdateFunction(DtInformationDialogPageLogic* l) 00054 : myLogic(l) 00055 { 00056 } 00057 00058 virtual ~DtItemUpdateFunction() 00059 { 00060 } 00061 00062 virtual void setLogic(DtInformationDialogPageLogic* l); 00063 00064 virtual QVariant value(int col, int role, const QTreeWidgetItem*, 00065 makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) = 0; 00066 virtual bool valueNeedsUpdate(int col, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) = 0; 00067 00068 virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) 00069 { 00070 } 00071 00072 virtual void deactivate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s) 00073 { 00074 } 00075 00076 protected: 00077 DtInformationDialogPageLogic* myLogic; 00078 makVrv::DtSignalConnectionManager myConnections; 00079 }; 00080 00081 class DtItemUpdateFunctionCreatorInterface 00082 { 00083 public: 00084 virtual ~DtItemUpdateFunctionCreatorInterface() {}; 00085 virtual std::string creatorName() = 0; 00086 virtual DtItemUpdateFunction* create() = 0; 00087 }; 00088 00089 template <typename T> class DtItemUpdateFunctionCreator : public DtItemUpdateFunctionCreatorInterface 00090 { 00091 public: 00092 DtItemUpdateFunctionCreator() {}; 00093 virtual ~DtItemUpdateFunctionCreator() {}; 00094 00095 virtual std::string creatorName() { return T::creatorName(); }; 00096 virtual DtItemUpdateFunction* create() { return new T(); }; 00097 }; 00098 00099 class DT_DLL_VRFGUIOBJECTINFORMATIONQT DtInformationDialogPage : public makVrv::DtPage 00100 { 00101 Q_OBJECT 00102 public: 00103 00105 DtInformationDialogPage(makVrv::DtDe& de, QWidget* parent, Qt::WindowFlags f = Qt::SubWindow); 00106 00108 virtual ~DtInformationDialogPage(); 00109 00110 virtual void setupGui(); 00111 00112 QTreeWidget* dataItems() 00113 { 00114 return myDataItems; 00115 } 00116 00118 virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state); 00119 00121 virtual void deactivate(); 00122 00123 virtual void stateViewRemoved(); 00124 00125 virtual void updateData(); 00126 00127 virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList&); 00128 00129 virtual const makVrv::DtPageConfiguration::PagePathList& informationItems() const 00130 { 00131 return myInformationItems; 00132 } 00133 00134 boost::signal<void ()> signal_stateViewUpdated; 00135 00136 protected: 00137 virtual QWidget* createPageContents(); 00138 00140 virtual void activate(); 00141 00142 protected: 00143 DtInformationDialogPageLogic* myLogic; 00144 makVrv::DtPageConfiguration::PagePathList myInformationItems; 00145 00146 public: 00147 makVrv::DtPersistenceToolbarWidget* myTitle; 00148 QVBoxLayout* myMainLayout; 00149 QVBoxLayout* myContentsLayout; 00150 QTreeWidget* myDataItems; 00151 }; 00152 00153 class DT_DLL_VRFGUIOBJECTINFORMATIONQT DtInformationDialogPageLogic 00154 { 00155 public: 00156 DtInformationDialogPageLogic(makVrv::DtDe&, DtInformationDialogPage* iface); 00157 00158 virtual ~DtInformationDialogPageLogic(); 00159 00160 virtual void updateData(); 00161 00162 makVrv::DtDe& de() 00163 { 00164 return myDe; 00165 } 00166 00167 makVrv::DtElementID elementId() const 00168 { 00169 return myStateId; 00170 } 00171 00172 makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state() 00173 { 00174 return myState; 00175 } 00176 00177 virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList& pathList); 00178 00179 public: 00181 virtual void addDataItem(const std::string& name, DtItemUpdateFunction* function, 00182 const std::string& before = ""); 00183 00185 virtual void replaceUpdateFunction(const std::string& name, DtItemUpdateFunction* function); 00186 00188 virtual void removeDataItem(const std::string& name); 00189 00191 virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state); 00192 virtual void deactivate(); 00193 00194 virtual void stateViewRemoved(); 00195 00196 protected: 00197 virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*); 00198 virtual DtInformationTreeWidgetItem* createTreeWidgetItem(); 00199 00201 virtual void slot_onUpdateRateChanged(makVrv::DtUniqueID id, int rate); 00202 00203 virtual void completeRateChange(); 00204 virtual void slot_onStateViewAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& state); 00205 00206 protected: 00207 DtInformationDialogPage* myInterface; 00208 makVrv::DtDe& myDe; 00209 makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* myState; 00210 makVrv::DtElementID myStateId; 00211 std::map<std::string, DtInformationTreeWidgetItem*> myItems; 00212 }; 00213 00214 class DT_DLL_VRFGUIOBJECTINFORMATIONQT DtInformationTreeWidgetItem : public QTreeWidgetItem 00215 { 00216 public: 00217 DtInformationTreeWidgetItem(); 00218 virtual ~DtInformationTreeWidgetItem(); 00219 00220 DtItemUpdateFunction* setUpdateFunction(DtItemUpdateFunction* f) 00221 { 00222 DtItemUpdateFunction* old = myUpdater; 00223 00224 myUpdater = f; 00225 00226 return old; 00227 } 00228 00229 virtual bool needsUpdate(int col) const; 00230 00231 const std::string& internalName() const 00232 { 00233 return myInternalName; 00234 } 00235 00236 void setInternalName(const std::string& n) 00237 { 00238 myInternalName = n; 00239 } 00240 00241 void setState(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s) 00242 { 00243 myState = s; 00244 } 00245 00246 void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s) 00247 { 00248 myUpdater->activate(s); 00249 } 00250 00251 void deactivate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s) 00252 { 00253 myUpdater->deactivate(s); 00254 } 00255 00256 DtItemUpdateFunction* updater() 00257 { 00258 return myUpdater; 00259 } 00260 00261 protected: 00262 virtual QVariant data(int col, int role) const; 00263 00264 protected: 00265 DtItemUpdateFunction* myUpdater; 00266 std::string myInternalName; 00267 makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* myState; 00268 }; 00269 } 00270 }