VR-Forces Developer's Guide
 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 
13 #if !defined(Q_MOC_RUN)
16 #include <vrvCore/DtUniqueID.h>
19 #include <vrfutil/rwUserQuestion.h>
22 
23 #endif
24 
25 #include <QDialog>
26 
27 class QLabel;
28 class DtSimMessage;
29 
30 namespace makVrf
31 {
33  {
34  Q_OBJECT
35 
36  public:
38  DtAskUserQuestionDialog(QWidget*, const DtRwUserQuestion& question);
39 
41  virtual ~DtAskUserQuestionDialog() override;
42 
44  virtual void modifyDialogForButtonResponse();
45 
47  virtual void modifyDialogForRadioButtonResponse();
48 
50  virtual void modifyDialogForComboBoxResponse();
51 
53  virtual void setMessage(const QString&);
54 
56  {
57  myElementID = id;
58  }
59 
61  {
62  return myElementID;
63  }
64 
65  void setQuestionId(int i)
66  {
67  myQuestionId = i;
68  }
69 
70  int questionId() const
71  {
72  return myQuestionId;
73  }
74 
75  boost::signals2::signal<void (DtAskUserQuestionDialog*, int)> signal_accepted;
76  boost::signals2::signal<void (DtAskUserQuestionDialog*)> signal_rejected;
77 
78  protected:
79  virtual void closeEvent(QCloseEvent* e) override;
80  virtual void reject() override;
81  virtual void accept() override;
82 
83  protected slots:
84  virtual void buttonAccept();
85  virtual void radioButtonAccepted();
86  virtual void comboBoxAccepted();
87 
88  protected:
92 
93  public:
95  int myChoice;
96  };
97 
102  {
103  public:
106 
108  virtual ~DtAskUserQuestionManager() override;
109 
111  static DtAskUserQuestionManager& instance(makVrv::DtDe& de);
112 
114  static void registerInstance(makVrv::DtDe& de, DtAskUserQuestionManager*);
115 
116  public:
119  virtual void askUserQuestion(makVrv::DtElementID, int questionId);
120 
122  virtual DtAskUserQuestionDialog* createQuestionDialog(const DtRwUserQuestion&, const QString& entityName);
123 
128  virtual void askQuestionsFor(const makVrv::DtSelectionManager::IdSet&);
129 
131  virtual void stopAskingQuestions();
132 
135  virtual void askNextQuestion();
136 
137  protected:
139  virtual DtAskUserQuestionDialog* createDialog(QWidget* parent, const DtRwUserQuestion& question) const;
140 
141  virtual void slot_accepted(DtAskUserQuestionDialog*, int choice);
142  virtual void slot_rejected(DtAskUserQuestionDialog*);
143  virtual void cleanupDialogReference(DtAskUserQuestionDialog*);
144  virtual DtString scriptIdFor(makVrv::DtElementID id, int questionId) const;
145  virtual void slot_onObjectAboutToBeRemoved(DtSimObjectReference s);
146  virtual void processUserQuestionOperation(DtSimMessage* msg);
147  virtual void cleanupDialogReference(makVrv::DtUniqueID, int questionId, bool deleteDialog = true);
148 
149  protected:
151 
153  {
154  QuestionStruct() : dialog(0) {};
155  QuestionStruct(DtAskUserQuestionDialog* d, const DtIfAskUserQuestion& q) : dialog(d), question(q) {};
156  QuestionStruct(const QuestionStruct& orig) : dialog(orig.dialog), question(orig.question) {};
157 
158  DtAskUserQuestionDialog* dialog;
160  };
161 
162  typedef std::map<int, QuestionStruct> QuestionDialogs;
163  typedef std::map<makVrv::DtElementID, QuestionDialogs> EntityQuestionDialogs;
164 
167 
168  typedef std::map<makVrv::DtElementID, std::vector<int> > PendingQuestionsToAsk;
170  PendingQuestionsToAsk::iterator myEntityAnsweringIterator;
171  };
172 }
PendingQuestionsToAsk myPendingQuestionsToAsk
Definition: askUserQuestionManager.h:169
QuestionStruct()
Definition: askUserQuestionManager.h:154
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
void setQuestionId(int i)
Definition: askUserQuestionManager.h:65
EntityQuestionDialogs myEntityQuestionDialogs
Definition: askUserQuestionManager.h:165
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
boost::signals2::signal< void(DtAskUserQuestionDialog *, int)> signal_accepted
Definition: askUserQuestionManager.h:75
makVrv::DtElementID elementID() const
Definition: askUserQuestionManager.h:60
Contains makVrv:DtSelectionManager class.
std::map< makVrv::DtElementID, std::vector< int > > PendingQuestionsToAsk
Definition: askUserQuestionManager.h:168
int questionId() const
Definition: askUserQuestionManager.h:70
makVrv::DtElementID myElementID
Definition: askUserQuestionManager.h:90
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
DtRwUserQuestion myQuestion
Definition: askUserQuestionManager.h:89
The DtAskUserQuestionManager will manage dialogs that will ask user questions based upon messages sen...
Definition: askUserQuestionManager.h:101
Definition: askUserQuestionManager.h:152
makVrv::DtSignalConnectionManager myConnectionManager
Definition: askUserQuestionManager.h:166
boost::signals2::signal< void(DtAskUserQuestionDialog *)> signal_rejected
Definition: askUserQuestionManager.h:76
Contains makVrv::DtVirtualBaseClass class.
QuestionStruct(const QuestionStruct &orig)
Definition: askUserQuestionManager.h:156
DtIfAskUserQuestion question
Definition: askUserQuestionManager.h:159
File: simMsg.h.
Definition: simMessage.h:35
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::map< int, QuestionStruct > QuestionDialogs
Definition: askUserQuestionManager.h:162
QuestionStruct(DtAskUserQuestionDialog *d, const DtIfAskUserQuestion &q)
Definition: askUserQuestionManager.h:155
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Base class to provide boost signal/slot management.
PendingQuestionsToAsk::iterator myEntityAnsweringIterator
Definition: askUserQuestionManager.h:170
Contains makVrv::DtUniqueID type.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
Definition: askUserQuestionManager.h:32
int myQuestionId
Definition: askUserQuestionManager.h:91
void setElementID(makVrv::DtElementID id)
Definition: askUserQuestionManager.h:55
makVrv::DtDe & myDe
Definition: askUserQuestionManager.h:150
int myChoice
Definition: askUserQuestionManager.h:95
DtIfAskUserQuestion class will allow the back-end to send a message to the front end to ask the user ...
Definition: ifAskUserQuestion.h:23
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
std::map< makVrv::DtElementID, QuestionDialogs > EntityQuestionDialogs
Definition: askUserQuestionManager.h:163
QLabel * myMessage
Definition: askUserQuestionManager.h:94
DtRwUserQuestion contains the contents of a question that is asked to the user.
Definition: rwUserQuestion.h:22

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)