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

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)