VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
askUserQuestionManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 #include <vrvCore/DtUniqueID.h>
17 #include <vrvCore/DtStateView.h>
18 #include <vrvCore/DtEntityState.h>
19 #include <vrfutil/rwUserQuestion.h>
22 #include <vrvUtil/signalslib.h>
23 
24 #include <QDialog>
25 
26 class QLabel;
27 class DtSimMessage;
28 
29 namespace makVrf
30 {
32  {
33  Q_OBJECT
34 
35  public:
37  DtAskUserQuestionDialog(QWidget*, const DtRwUserQuestion& question);
38 
40  virtual ~DtAskUserQuestionDialog();
41 
43  virtual void modifyDialogForButtonResponse();
44 
46  virtual void modifyDialogForRadioButtonResponse();
47 
49  virtual void modifyDialogForComboBoxResponse();
50 
52  virtual void setMessage(const QString&);
53 
54  void setElementID(makVrv::DtElementID id)
55  {
56  myElementID = id;
57  }
58 
59  makVrv::DtElementID elementID() const
60  {
61  return myElementID;
62  }
63 
64  void setQuestionId(int i)
65  {
66  myQuestionId = i;
67  }
68 
69  int questionId() const
70  {
71  return myQuestionId;
72  }
73 
74  boost::signal<void (DtAskUserQuestionDialog*, int)> signal_accepted;
75  boost::signal<void (DtAskUserQuestionDialog*)> signal_rejected;
76 
77  protected:
78  virtual void closeEvent(QCloseEvent* e);
79  virtual void reject();
80  virtual void accept();
81 
82  protected slots:
83  virtual void buttonAccept();
84  virtual void radioButtonAccepted();
85  virtual void comboBoxAccepted();
86 
87  protected:
91 
92  public:
94  int myChoice;
95  };
96 
101  {
102  public:
105 
107  virtual ~DtAskUserQuestionManager();
108 
110  static DtAskUserQuestionManager& instance(makVrv::DtDe& de);
111 
113  static void registerInstance(makVrv::DtDe& de, DtAskUserQuestionManager*);
114 
115  public:
118  virtual void askUserQuestion(makVrv::DtElementID, int questionId);
119 
121  virtual DtAskUserQuestionDialog* createQuestionDialog(const DtRwUserQuestion&, const QString& entityName);
122 
127  virtual void askQuestionsFor(const makVrv::DtSelectionManager::IdSet&);
128 
130  virtual void stopAskingQuestions();
131 
134  virtual void askNextQuestion();
135 
136  protected:
138  virtual DtAskUserQuestionDialog* createDialog(QWidget* parent, const DtRwUserQuestion& question) const;
139 
140  virtual void slot_accepted(DtAskUserQuestionDialog*, int choice);
141  virtual void slot_rejected(DtAskUserQuestionDialog*);
142  virtual void cleanupDialogReference(DtAskUserQuestionDialog*);
143  virtual DtString scriptIdFor(makVrv::DtElementID id, int questionId) const;
144  virtual void slot_onObjectAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
145  virtual void processUserQuestionOperation(DtSimMessage* msg);
146  virtual void cleanupDialogReference(makVrv::DtUniqueID, int questionId, bool deleteDialog = true);
147 
148  protected:
150 
152  {
153  QuestionStruct() : dialog(0) {};
154  QuestionStruct(DtAskUserQuestionDialog* d, const DtIfAskUserQuestion& q) : dialog(d), question(q) {};
155  QuestionStruct(const QuestionStruct& orig) : dialog(orig.dialog), question(orig.question) {};
156 
157  DtAskUserQuestionDialog* dialog;
159  };
160 
161  typedef std::map<int, QuestionStruct> QuestionDialogs;
162  typedef std::map<makVrv::DtElementID, QuestionDialogs> EntityQuestionDialogs;
163 
166 
167  typedef std::map<makVrv::DtElementID, std::vector<int> > PendingQuestionsToAsk;
169  PendingQuestionsToAsk::iterator myEntityAnsweringIterator;
170  };
171 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)