0% found this document useful (0 votes)
2 views7 pages

Bag Decision QML

The document is a QML file for a Bag Decision interface developed by Agiliad, containing various functions related to user decisions on bag handling in a workstation environment. It includes event handling for user interactions, decision execution based on enums, and timers for managing decision timeouts. The code facilitates communication with the WorkstationVolumeRenderer to update the UI and manage bag processing based on user input and system states.

Uploaded by

Anurag Ji
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views7 pages

Bag Decision QML

The document is a QML file for a Bag Decision interface developed by Agiliad, containing various functions related to user decisions on bag handling in a workstation environment. It includes event handling for user interactions, decision execution based on enums, and timers for managing decision timeouts. The code facilitates communication with the WorkstationVolumeRenderer to update the UI and manage bag processing based on user input and system states.

Uploaded by

Anurag Ji
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

1 /*!

2 * @file BagDecision.qml
3 * @author Agiliad
4 * @brief This file contains functionality related to Sending Bag Decision.
5 * @date Jun, 11 2018
6 *
7 */
8
9 import QtQuick 2.7
10 import QMLEnums 1.0
11 import VREnums 1.0
12
13 Item {
14 property var commandenum
15 property alias tipInitialDecisionTimeralias: tipInitialDecisionTimer
16 property alias tipAnalysisTimeralias : tipAnalysisTimer
17 property var confirmationMsgPopup
18
19 Item
20 {
21 id: msgboxdecision
22 property var flag;
23 function messageDialogOnAccepted()
24 {
25 if(userDecisiontimeoutDialogTimer.running)
26 {
27 userDecisiontimeoutDialogTimer.stop()
28 }
29 console.info("Anurag::Anurag BagDecision messageDialogOnAccepted")
30 //msgboxexecuteuserdecision(flag);
31 //WorkstationVolumeRenderer.applyDecisionNextBag();
32 idlescreenobject.updateInactivityTimeoutInterval(false)
33 }
34 function messageDialogOnRejected()
35 {
36 msgboxexecuteuserdecision(flag+1);
37 }
38 }
39
40 function msgboxexecuteuserdecision(desision)
41 {
42 switch(desision)
43 {
44 case Enums.RELEASE_STOP_THE_CHECK_ACCEPT:
45 osrworkspacemodel.releaseStoptheCheckvisible = false
46 stopTheCheck(false)
47 executeDecision(commandenum)
48 break;
49 case Enums.RELEASE_STOP_THE_CHECK_REJECT:
50 osrworkspacemodel.releaseStoptheCheckvisible = false
51 stopTheCheck(true)
52 break;
53 case Enums.TRAY_PICKUP_ACCEPT:
54 osrworkspacemodel.isBagRendering = false;
55
WorkstationVolumeRenderer.vtkSettingsChanged(Enums.TEPC_NOTIFY_READY_FOR_PUSH_TRANS
FER);
56 sendVtkDecision(commandenum)
57 break;
58 case Enums.TRAY_PICKUP_REJECT:
59 osrworkspacemodel.isBagRendering = false;
60 sendVtkDecision(commandenum)
61 break;
62 case Enums.DECISION_TIMEOUT_ACCEPT:
63 if (!WorkstationVolumeRenderer.isTIPBag()
64 && ((viewobject.currentView === Enums.BAGSCREENING_SCREEN)
65 || (viewobject.currentView === Enums.TRAINING_BAG_SCREEN)))
66 {
67 var res =
WorkstationVolumeRenderer.validateUserDecisionForNonTIPBag(commandenum);
68 if(!res)
69 {
70 stopTheCheckRelease();
71 }
72 }
73 else
74 {
75 stopTheCheckRelease();
76 }
77 break;
78 case Enums.DECISION_TIMEOUT_REJECT:
79 break;
80 case Enums.TIP_DECISION_ACCEPT:
81 case Enums.TIP_DECISION_REJECT:
82 tipAnalysisTimer.stop();
83 executeDecision(commandenum);
84 break;
85 case Enums.NON_TIP_DECISION_ACCEPT:
86 case Enums.NON_TIP_DECISION_REJECT:
87 stopTheCheckRelease();
88 break;
89
90 case Enums.USER_CLEAR_DECISION_MSG_ACCEPT:
91 case Enums.USER_CLEAR_DECISION_MSG_REJECT:
92 stopTheCheckRelease();
93 break;
94
95 case Enums.USER_SUSPECT_DECISION_MSG_ACCEPT:
96 case Enums.USER_SUSPECT_DECISION_MSG_REJECT:
97 var reslt =
WorkstationVolumeRenderer.validateUserDecisionForNonTIPBag(commandenum);
98 if (!reslt)
99 {
100 stopTheCheckRelease();
101 }
102 break;
103
104 case Enums.USER_TIMEOUT_DECISION_MSG_ACCEPT:
105 case Enums.USER_TIMEOUT_DECISION_MSG_REJECT:
106 // Do the general timeout processing after feedback dialog dismissed
107 handleGeneralBagTimeoutProcessing(commandenum);
108 break;
109 }
110 }
111
112 function stopTheCheck(flag)
113 {
114 if(flag !== osrworkspacemodel.stopthecheckstatus)
115 {
116 osrworkspacemodel.stopthecheckstatus = flag;
117 osrworkspacemodel.runAnimation = flag;
118 WorkstationVolumeRenderer.setObviousThreatFlag(flag);
119 console.info("Send Stop-the-Check" + flag);
120 }
121 }
122
123 function stopTheCheckRelease()
124 {
125 if(osrworkspacemodel.stopthecheckstatus)
126 {
127 osrworkspacemodel.releaseStoptheCheckvisible = true
128 msgboxdecision.flag = Enums.RELEASE_STOP_THE_CHECK_ACCEPT;
129 createAndShowMessageBox(qsTr("Please confirm ") +
workstationConfig.getTranslatedText(workstationConfig.getHighThreatUpperText())
130 + " " +
workstationConfig.getTranslatedText(workstationConfig.getHi
ghThreatLowerText())
131 + qsTr(" for this bag?"),
132 Enums.OK | Enums.CANCEL, true, true, msgboxdecision)
133 }
134 else
135 {
136 executeDecision(commandenum);
137 }
138 }
139
140 function checkforTrayPickupAndSendDecision(tempdecision, tdgitm)
141 {
142
143 if(workstationConfig.isBagPickupEnabled()
144 && (viewobject.getWorkstationNameEnum() === Enums.OSR_WORKSTATION)
145 && (viewobject.currentView === Enums.BAGSCREENING_SCREEN)
146 && (tempdecision === Enums.TEPC_SUSPECT_BAG || tempdecision ===
Enums.TEPC_TIMEOUT_BAG)
147 && !WorkstationVolumeRenderer.isTIPBag())
148 {
149 msgboxdecision.flag = Enums.TRAY_PICKUP_ACCEPT;
150 createAndShowMessageBox(qsTr("Please press the OK button when the tray has been
picked up for hand search."),
151 Enums.OK, true, false, tdgitm);
152 }
153 else
154 {
155 osrworkspacemodel.isBagRendering = false;
156 sendVtkDecision(tempdecision);
157 }
158 }
159
160 function sendBagDecision(commandEnum, trainingDecisionInfo)
161 {
162 WorkstationVolumeRenderer.setBagDecisionTime();
163
164 tipInitialDecisionTimer.stop();
165 commandenum = commandEnum
166 osrworkspacemodel.bagDecisionProgressbarValue = 0.0;
167 osrworkspacemodel.bagDecisionTimeRemainingVisible = false
168 osrworkspacemodel.userdecisiontimer.stop();
169
170 if (WorkstationVolumeRenderer.isTIPBag()
171 && (viewobject.currentView === Enums.BAGSCREENING_SCREEN))
172 {
173 osrworkspacemodel.stopthecheckstatus = false;
174 osrworkspacemodel.runAnimation = false;
175 WorkstationVolumeRenderer.showTipThreat(commandenum);
176 }
177 else
178 {
179 if (commandEnum === Enums.TEPC_TIMEOUT_BAG)
180 {
181 if((confirmationMsgPopup !== undefined) && (confirmationMsgPopup !== null))
182 {
183 confirmationMsgPopup.close()
184 }
185 if (viewobject.currentView === Enums.TRAINING_BAG_SCREEN &&
186 trainingDecisionInfo !== undefined && trainingDecisionInfo.isValid)
187 {
188 // Training Simulator decision feedback for timeout case.
189 msgboxdecision.flag = Enums.USER_TIMEOUT_DECISION_MSG_ACCEPT;
190 createAndShowMessageBox(trainingDecisionInfo.message, Enums.OK, true, false,
191 msgboxdecision, 0, 0,
trainingDecisionInfo.messageColor,
192 trainingDecisionInfo.messageBgColor,
trainingDecisionInfo.title,
193 undefined, trainingDecisionInfo.dialogBgColor);
194 }
195 else
196 {
197 handleGeneralBagTimeoutProcessing(commandEnum);
198 }
199 }
200 else if ((commandEnum === Enums.TEPC_SUSPECT_BAG)
201 && ((viewobject.currentView === Enums.BAGSCREENING_SCREEN)
202 || (viewobject.currentView === Enums.TRAINING_BAG_SCREEN)))
203
204 {
205 if (viewobject.currentView === Enums.TRAINING_BAG_SCREEN &&
206 trainingDecisionInfo !== undefined && trainingDecisionInfo.isValid)
207 {
208 msgboxdecision.flag = Enums.USER_SUSPECT_DECISION_MSG_ACCEPT;
209 createAndShowMessageBox(trainingDecisionInfo.message, Enums.OK, true, false,
210 msgboxdecision, 0, 0,
trainingDecisionInfo.messageColor,
211 trainingDecisionInfo.messageBgColor,
trainingDecisionInfo.title,
212 undefined, trainingDecisionInfo.dialogBgColor);
213 }
214 else
215 {
216 var res =
WorkstationVolumeRenderer.validateUserDecisionForNonTIPBag(commandEnum);
217 if (!res)
218 {
219 stopTheCheckRelease();
220 }
221 }
222 }
223 else
224 {
225 if ((commandEnum === Enums.TEPC_CLEAR_BAG) && (viewobject.currentView ===
Enums.TRAINING_BAG_SCREEN &&
226 (trainingDecisionInfo !==
undefined &&
trainingDecisionInfo.isValid)))
227 {
228 msgboxdecision.flag = Enums.USER_CLEAR_DECISION_MSG_ACCEPT;
229 createAndShowMessageBox(trainingDecisionInfo.message, Enums.OK, true, false,
230 msgboxdecision, 0, 0,
trainingDecisionInfo.messageColor,
231 trainingDecisionInfo.messageBgColor,
trainingDecisionInfo.title,
232 undefined, trainingDecisionInfo.dialogBgColor);
233 }
234 else
235 {
236 stopTheCheckRelease();
237 }
238 }
239 }
240 }
241
242 function handleGeneralBagTimeoutProcessing(commandEnum)
243 {
244 if(workstationConfig.showDialogForUserDecisionTimeout() > 0)
245 {
246 msgboxdecision.flag = Enums.DECISION_TIMEOUT_ACCEPT
247 userDecisiontimeoutDialogTimer.userDecisionTimeoutMsgId =
createAndShowMessageBox(workstationConfig.getUserDecisionTimeoutText(),
248
Enums.OK,true,false, msgboxdecision)
249 userDecisiontimeoutDialogTimer.interval =
workstationConfig.showDialogForUserDecisionTimeout()
250 msgboxexecuteuserdecision(msgboxdecision.flag);
251 if(userDecisiontimeoutDialogTimer.interval > 0)
252 {
253 userDecisiontimeoutDialogTimer.start()
254 console.info("Anurag::Anurag BagDecision UserDecisionTimeout Started")
255 }
256 else
257 {
258 userDecisiontimeoutDialogTimer.stop()
259 }
260 }
261 else
262 {
263 var res = WorkstationVolumeRenderer.validateUserDecisionForNonTIPBag(commandEnum);
264 if (!res)
265 {
266 stopTheCheckRelease();
267 }
268 }
269 }
270
271 function sendVtkDecision(decision)
272 {
273 console.log("Anurag::Anurag BagDecision Send Vtk Decision called");
274 WorkstationVolumeRenderer.vtkSettingsChanged(decision);
275 }
276
277 function executeDecision(decision)
278 {
279 if ((osrworkspacemodel.pickboxModeDraw)||
280 (osrworkspacemodel.pickboxModeAccept))
281 {
282 WorkstationVolumeRenderer.vtkSettingsChanged(Enums.TEPC_PICKBOX_ACCEPT_ANOMALY);
283 }
284
285 viewobject.showHideOperatorThreatOptions(false);
286 osrworkspacemodel.updateScreeningPanelEnability(false);
287
288 if(WorkstationVolumeRenderer.getCurrentVRViewmode() === VREnums.VIEW_AS_SLAB)
289 {
290 osrworkspacemodel.slabModel.funcSetSelectedSlabViewType(VREnums.BAG_VIEW);
291 }
292 else
293 {
294 osrworkspacemodel.threeDimModel.funcSetSelected3DViewType(VREnums.VIEW_AS_SURFACE)
295 }
296
297 if (osrworkspacemodel.userdecisiontimer.running)
298 {
299 osrworkspacemodel.userdecisiontimer.stop();
300 osrworkspacemodel.bagDecisionProgressbarValue = 0.0;
301 osrworkspacemodel.totalIntervalPassed = 0;
302 osrworkspacemodel.bagDecisionTimeRemaining =
workstationConfig.getBagDecisionTimeout()/1000
303 osrworkspacemodel.bagDecisionTimeTemp =
workstationConfig.getBagDecisionTimeout()/1000
304
305 }
306
307 osrworkspacemodel.threatOnlyMode = false;
308 osrworkspacemodel.threatColorizationEnable = false;
309 osrworkspacemodel.showAllThreat = false;
310 osrworkspacemodel.setDefaultVal();
311 osrworkspacemodel.reloadPresetButtonClicked();
312 osrworkspacemodel.setVariableDensitySliderValue(0);
313 osrworkspacemodel.resetMeasurementBoxButtons();
314
315 checkforTrayPickupAndSendDecision(commandenum, msgboxdecision);
316
317 if ((osrworkspacemodel.getScreen() === Enums.RERUNSELECTION_BAG_SCREEN)
318 || (osrworkspacemodel.getScreen() === Enums.TRAINING_BAG_SCREEN))
319 {
320 if (commandenum !== Enums.TEPC_NEXT_BAG && commandenum !== Enums.TEPC_STOP_BAG)
321 {
322 viewobject.notifyOperatorDecision("",commandenum,
WorkstationVolumeRenderer.getOperatorDecisiontime(),WorkstationVolumeRenderer.get
BagRenderedtime());
323
324 WorkstationVolumeRenderer.vtkSettingsChanged(Enums.TEPC_NEXT_BAG);
325 }
326 if (commandenum === Enums.TEPC_STOP_BAG)
327 {
328 viewobject.notifyOperatorDecision("",commandenum,
WorkstationVolumeRenderer.getOperatorDecisiontime(),WorkstationVolumeRenderer.get
BagRenderedtime());
329
330 }
331
332 }
333 }
334
335 Timer
336 {
337 id: tipAnalysisTimer
338 interval: workstationConfig.getTipAnalysisTimeout()
339 repeat: false;
340 property var msgDlgId;
341 onTriggered:
342 {
343 //On Message box close event execute decision function gets call
344 msgDlgId.close();
345 }
346 }
347 Timer
348 {
349 id: tipInitialDecisionTimer
350 interval: workstationConfig.getTipInitialDecisionTimeout()
351 repeat: false;
352 onTriggered:
353 {
354 sendBagDecision(Enums.TEPC_TIMEOUT_BAG)
355 }
356 }
357
358 Timer
359 {
360 id: userDecisiontimeoutDialogTimer
361 interval: workstationConfig.showDialogForUserDecisionTimeout()
362 repeat: false;
363 property var userDecisionTimeoutMsgId;
364 onTriggered:
365 {
366 //On Message box close event execute decision function gets call
367 if(userDecisionTimeoutMsgId !== undefined)
368 {
369 userDecisionTimeoutMsgId.close();
370 }
371 }
372 }
373 Connections {
374 target: WorkstationVolumeRenderer
375 onShowTIPResult:
376 {
377 var bgColor;
378 var textColor;
379 if (result === Enums.TIP_HIT)
380 {
381 msgboxdecision.flag = Enums.TIP_DECISION_ACCEPT;
382 bgColor = tipConfigModel.tipHitBgColor;
383 textColor = tipConfigModel.tipHittextColor;
384 }
385 else if (result === Enums.TIP_MISS)
386 {
387 msgboxdecision.flag = Enums.TIP_DECISION_ACCEPT;
388 bgColor = tipConfigModel.tipMissBgColor;
389 textColor = tipConfigModel.tipMisstextColor;
390 }
391 else if (result === Enums.TIP_NONE)
392 {
393 msgboxdecision.flag = Enums.NON_TIP_DECISION_ACCEPT;
394 bgColor = tipConfigModel.tipNonTIPBgColor;
395 textColor = tipConfigModel.tipNonTIPtextColor;
396 }
397
398 tipAnalysisTimer.msgDlgId = createAndShowMessageBox(message, Enums.OK, true,
false, msgboxdecision,
399 0,
osrworkspacemodel.interactiveIm
agePanelPos +
osrworkspacemodel.titleBarHeigh
t + 60,
400 textColor, bgColor);
401 if(msgboxdecision.flag === Enums.TIP_DECISION_ACCEPT)
402 {
403 tipAnalysisTimer.interval = workstationConfig.getTipAnalysisTimeout()
404 if (tipAnalysisTimer.interval > 0)
405 {
406 tipAnalysisTimer.start();
407 }
408 else
409 {
410 tipAnalysisTimer.stop();
411 }
412 }
413 }
414 }
415 }
416

You might also like