![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: embarkationConfigurationDialog.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTEMBARKATIONCONFIGURATIONDIALOG_H_ 00013 #define DTEMBARKATIONCONFIGURATIONDIALOG_H_ 00014 00015 #include <QtGui/QDialog> 00016 #include <QtCore/QHash> 00017 00018 #include "entityEditorImpl/entityEditorImplDefines.h" 00019 #include "vrfobjparam/loadPoint.h" 00020 #include <vrfExtProtocol/rangedObjType.h> 00021 #include "entityEditorImpl/uiPositionElement.h" 00022 00023 class DtOccupancyDirectorDescriptor; 00024 class QPushButton; 00025 class DtEmbarkationSlotEntry; 00026 class QListWidget; 00027 class DtUiPositionElement; 00028 class QListWidgetItem; 00029 class DtReaderWriterRegistryData; 00030 00031 class DT_DLL_entityeditorimpl DtUiLoadPositionElement : public DtUiPositionElement 00032 { 00033 public: 00034 DtUiLoadPositionElement(); 00035 00036 virtual void clear(); 00037 00038 virtual void setPosition(DtReaderWriterRegistryData*); 00039 virtual QWidget* createControls(QWidget*); 00040 }; 00041 00042 class DT_DLL_entityeditorimpl DtEmbarkationConfigurationDialog : public QDialog 00043 { 00044 Q_OBJECT 00045 00046 public: 00047 DtEmbarkationConfigurationDialog(QWidget* parent); 00048 virtual ~DtEmbarkationConfigurationDialog(); 00049 00050 virtual bool init(const DtOccupancyDirectorDescriptor*); 00051 00052 DtOccupancyDirectorDescriptor* descriptor() const; 00053 00054 public: 00056 static void addEntityType(const QString&, const DtRangedObjectType&); 00057 static void removeEntityType(const QString&); 00058 static void removeEntityType(const DtRangedObjectType&); 00059 static void clearEntityTypes(); 00060 static DtRangedObjectType objectTypeFor(const QString&); 00061 static QString entityTypeText(const DtRangedObjectType&); 00062 static QHash<QString, DtRangedObjectType>& entityTypes(); 00063 00064 protected: 00065 virtual void createComplexCanvas(); 00066 virtual void createEmbarkationConfigurationCanvas(const DtOccupancyDirectorDescriptor* desc); 00067 00068 virtual bool isComplex(const DtOccupancyDirectorDescriptor* desc) const; 00069 virtual bool isComplex(const DtRwTemplatedListPtr<DtLoadPoint>&) const; 00070 virtual bool isComplex(const DtLoadPoint*) const; 00071 00073 virtual bool isComplex(const DtEmbarkationSlotEntry*) const; 00074 00075 virtual void createEntityTypesList(QWidget* parent, const DtOccupancyDirectorDescriptor*); 00076 virtual QWidget* createLoadList(QWidget* parent, const QString& title, DtUiLoadPositionElement*& position); 00077 00078 virtual void validateEmbarkationButtons(); 00079 00082 virtual QListWidgetItem* addSlot(const DtEmbarkationSlotEntry*); 00083 00086 virtual void removeSlot(DtOccupancyDirectorDescriptor* desc, DtEmbarkationSlotEntry*); 00087 00090 virtual void addSlot(DtOccupancyDirectorDescriptor* desc, const DtRangedObjectType&); 00091 00092 virtual int slotIndex(const DtOccupancyDirectorDescriptor*, const DtEmbarkationSlotEntry*) const; 00093 00094 static void initializeEntityTypes(); 00095 00096 virtual DtLoadPoint* pointFor(const DtOccupancyDirectorDescriptor*, 00097 const DtEmbarkationSlotEntry*, const DtRwTemplatedListPtr<DtLoadPoint>&) const; 00098 virtual QListWidgetItem* itemFor(const DtEmbarkationSlotEntry*) const; 00099 00101 virtual void reworkPointsFrom(int iSlotIndex, const DtRwTemplatedListPtr<DtLoadPoint>&) const; 00102 00103 protected slots: 00104 virtual void clear(); 00105 virtual void selectedEntityTypeChanged(); 00106 virtual void addEntityType(); 00107 virtual void removeSelectedSlot(); 00108 00109 protected: 00110 QWidget* myCanvas; 00111 QPushButton* myOK; 00112 DtOccupancyDirectorDescriptor* myDescriptor; 00113 QListWidget* myEntityTypes; 00114 QPushButton* myAddType; 00115 QPushButton* myRemoveType; 00116 00117 DtUiLoadPositionElement* myIngressPosition; 00118 DtUiLoadPositionElement* myEgressPosition; 00119 00120 static QHash<QString, DtRangedObjectType> gEntityTypes; 00121 }; 00122 00123 inline DtOccupancyDirectorDescriptor* DtEmbarkationConfigurationDialog::descriptor() const 00124 { 00125 return myDescriptor; 00126 } 00127 00128 #endif