![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtAskIfCanTask.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 ******************************************************************************/ 00010 00011 #pragma once 00012 00013 #include <vrvUtil/signalslib.h> 00014 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00015 #include <vrfGuiCore/DtVrfCurrentTaskManager.h> 00016 #include <vrfGuiCore/DtVrfVrlinkDataInterface.h> 00017 00018 #include <vrvUtil/DtVirtualBaseClass.h> 00019 00020 #include <vector> 00021 #include <string> 00022 #include <map> 00023 00024 #include <QDialog> 00025 #include <QTime> 00026 00027 class DtSimTask; 00028 class QWidget; 00029 class QTimer; 00030 class QLabel; 00031 class QPushButton; 00032 00033 namespace makVrv 00034 { 00035 class DtDe; 00036 } 00037 00038 namespace makVrf 00039 { 00042 class DT_DLL_VRFGUICOREQT DtAskIfCanTaskDialog : public QDialog 00043 { 00044 Q_OBJECT 00045 00046 public: 00047 DtAskIfCanTaskDialog(makVrv::DtDe&, QWidget* parent); 00048 00049 virtual ~DtAskIfCanTaskDialog(); 00050 00052 virtual std::vector<std::string> askIfCanTask(const std::vector<std::string>& names, const DtSimTask& newTask); 00053 00055 virtual int exec(); 00056 00057 protected: 00059 virtual void setupGui(); 00060 00062 virtual void receiveCurrentTasks(std::string, const DtVrfCurrentTaskManager::EntityTaskInformation&); 00063 00065 virtual DtVrfCurrentTaskManager::DtSimTaskSharedPtr willBlock(const DtSimTask* newTask, const DtVrfCurrentTaskManager::EntityTaskInformation& tasks) const; 00066 00068 virtual void timeout(); 00069 00070 protected slots: 00072 virtual void askToTask(); 00073 00075 virtual void timerCheck(); 00076 00078 virtual void hideMe(); 00079 00081 virtual bool shouldInterruptTask(DtVrfVrlinkDataInterfacePtr); 00082 00084 virtual bool shouldAbandonPlan(DtVrfVrlinkDataInterfacePtr); 00085 00086 public: 00087 QWidget* myWaitingFrame; 00088 QLabel* myWaitingLabel; 00089 QPushButton* myCancel; 00090 00091 protected: 00092 makVrv::DtDe& myDe; 00093 QVector<std::string> myAskingToTask; 00094 std::vector<std::string> myToTask; 00095 DtSimTask* myNewTask; 00096 00097 typedef std::map<std::string, QString> NeedToAskMap; 00098 NeedToAskMap myNeedToAsk; 00099 00100 QTimer* myCheckTimer; 00101 QTime myElapsedTimer; 00102 00103 int mySelectedInterruptAll; 00104 int mySelectedAbandonAll; 00105 00106 QRect myGeometry; 00107 }; 00108 00112 class DT_DLL_VRFGUICOREQT DtAskIfCanTask : public makVrv::DtVirtualBaseClass 00113 { 00114 public: 00115 DtAskIfCanTask(makVrv::DtDe&); 00116 00118 virtual ~DtAskIfCanTask(); 00119 00120 static DtAskIfCanTask& instance(makVrv::DtDe&); 00121 static void registerInstance(makVrv::DtDe&, DtAskIfCanTask *); 00122 00126 virtual std::vector<std::string> askIfCanTask(const std::vector<std::string>& names, const DtSimTask& newTask); 00127 00128 protected: 00129 virtual DtAskIfCanTaskDialog* createAskToTaskDialog(QWidget* parent); 00130 00131 protected: 00132 makVrv::DtDe& myDe; 00133 }; 00134 }