![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: eventController.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef EVENTCONTROLLER_H_ 00013 #define EVENTCONTROLLER_H_ 00014 00015 #include "tmqt/eventHandler.h" 00016 #include "tmqt/tmMapArea.h" 00017 #include "tmqt/eventHandlerFactory.h" 00018 #include "tmqt/eventHandler.h" 00019 #include "tmqt/eventHandlers.h" 00020 #include "archiver/archivableObject.h" 00021 00022 #include <QtCore/QObject> 00023 #include <QtCore/QList> 00024 #include <QtCore/QHash> 00025 00026 class DtBaseWindow; 00027 class QPixmap; 00028 class DtEchelonView; 00029 class DtTerrainDatabase; 00030 class DtPaperMapDatabase; 00031 #include "tmqt/tmqtDefines.h" 00032 class DT_DLL_tmqt DtEventController : public DtArchivableObject 00033 { 00034 Q_OBJECT 00035 00036 public: 00037 00039 DtEventController(); 00040 00042 virtual ~DtEventController(); 00043 00045 virtual void connectToMapArea(DtTMMapArea* area ); 00046 00048 virtual void disconnectFromMapArea(DtTMMapArea* area); 00049 00053 virtual QList<DtEventHandler*>& defaultHandlers(); 00054 00056 DtEventHandler* insertDefaultHandler(DtEventHandlerType iType, int iPos); 00057 00060 virtual DtEventHandler* addDefaultHandler(DtEventHandlerType iType); 00061 00064 virtual DtEventHandler* addDefaultHandler(DtEventHandler*); 00065 00068 virtual void removeDefaultHandler(DtEventHandlerType iType); 00069 virtual void removeDefaultHandler(DtEventHandler*); 00070 00074 virtual void setEventHandler(DtEventHandler*); 00075 00078 virtual bool init(); 00079 00085 virtual bool addDefaultHandlers(); 00086 00089 virtual DtEventHandlerFactory* eventHandlerFactory(); 00090 00092 virtual void setBaseWindow(DtBaseWindow* win); 00093 virtual DtBaseWindow* baseWindow() const; 00094 00096 virtual DtEchelonView* echelonView(); 00097 00100 virtual const DtTerrainDatabase* terrainDatabase() const; 00101 virtual DtTerrainDatabase* terrainDatabase(); 00102 00103 virtual const DtPaperMapDatabase* paperMapDatabase() const; 00104 virtual DtPaperMapDatabase* paperMapDatabase(); 00105 00108 virtual void removeHandlerFor(DtEventHandlerType iType); 00109 00111 virtual DtEventHandlerType typeFromHandler(DtEventHandler*); 00112 00115 virtual bool appLevelController(); 00116 00118 DtEventHandler* currentEvent(); 00119 00121 virtual bool passKeyEventToMapArea(QKeyEvent*) const; 00122 00125 virtual bool canExitApplication(); 00126 00128 public: 00129 static DtEventController* create(); 00130 00133 static void globalAddHandler(DtEventHandlerType type, DtHandlerCreate fcn, void* usr = NULL, bool appLevel = false); 00134 static void globalRemoveHandler(DtEventHandlerType type); 00135 00136 public slots: 00137 00139 virtual void clearCurrentEvent(); 00140 00141 virtual void mouseEvent(QMouseEvent* evnt, const DtPoint& pnt); 00142 virtual void keyboardEvent(QKeyEvent* evnt); 00143 virtual void focusEvent(QEvent* evnt); 00144 virtual void enterEvent(QEvent* evnt); 00145 virtual void leaveEvent(QEvent* evnt); 00146 virtual void dropEvent(QDropEvent* evnt); 00147 virtual void dragEnterEvent(QDragEnterEvent* evnt); 00148 virtual void dragLeaveEvent(QDragLeaveEvent* evnt); 00149 virtual void dragMoveEvent(QDragMoveEvent* evnt); 00150 virtual void symbolsSelected(DtSymbolList* sl); 00151 virtual void selectionUpdated(const QVector<DtModelKey>&); 00152 virtual void selectionInProgress(DtSymbolSelector&); 00153 virtual void selectedModelDataUpdated(); 00154 virtual void symbolRemoved(const DtModelKey&); 00155 00157 virtual void aboutToDraw(QPainter*); 00158 00160 virtual void userDefinedAction(DtUserDefinedType iAction, void* usr); 00161 virtual void mapActivated(DtTMMapArea*); 00162 00164 virtual void initializeEventDlg(); 00165 00168 virtual DtEventHandler* handlerFor(DtEventHandlerType type); 00169 00172 virtual void tick(); 00173 00176 virtual void processNotifyCleanup(); 00177 00178 signals: 00180 void activated(DtEventHandler* handler); 00181 void deactivated(DtEventHandler* handler); 00182 00183 protected: 00184 bool myUsingEvent; 00185 QList<DtTMMapArea*> myMapAreaList; 00186 QList<DtEventHandler*> myDefaultHandlerList; 00187 QHash<int, DtEventHandler*> myTypedDefaultHandlerList; 00188 DtEventHandler* myCurrentHandler; 00189 DtEventHandlerFactory myEventHandlerFactory; 00190 DtBaseWindow* myBaseWindow; 00191 QHash<int, DtEventHandler*> myHandlers; 00192 00193 static QHash<int, DtHandlerCreateInfo> myGlobalHandlers; 00194 }; 00195 00196 inline DtEventHandler* DtEventController::currentEvent() 00197 { 00198 return myCurrentHandler; 00199 } 00200 00201 #endif //EVENTCONTROLLER_H_ 00202