2
import QtQuick.Controls 1.1
3
import QtQuick.Controls.Styles 1.0
4
import QtQuick.Dialogs 1.1
5
import econ.camera.uvcsettings 1.0
6
import econ.camera.see3cam130 1.0
7
import QtQuick.Layouts 1.1
14
property int denoiseMin: 0
15
property int denoiseMax: 15
16
property int qFactorMin: 10
17
property int qFactorMax: 96
18
property int frameRateMin: 1
19
property int frameRateMax: 120
20
property int expoCompMin: 8000
21
property int expoCompMax: 1000000
22
property int iHDRMin: 1
23
property int iHDRMax: 4
24
// Flags to prevent setting values in camera when getting the values from camera
25
property bool skipUpdateUIQFactor : false
26
property bool skipUpdateUIDenoise : false
27
property bool skipUpdateUIFrameRate: false
28
property bool skipUpdateUIOnAFWindowSize: false
29
property bool skipUpdateUIOnExpWindowSize: false
30
property bool skipUpdateUIOnBurstLength: false
31
property bool skipUpdateUIiHDR: false
32
property bool setButtonClicked: false
33
property bool skipUpdateUIFlickerCtrl:false
34
property int flickerCtrl
41
if(seecam130.enableDisableFaceRectangle(false)){
42
root.imageCapture(CommonEnums.BURST_SHOT);
47
root.enableVideoPin(true);
49
onGetStillImageFormats:
51
var stillImageFormat = []
52
stillImageFormat.push("jpg")
53
stillImageFormat.push("bmp")
54
stillImageFormat.push("raw")
55
stillImageFormat.push("png")
56
root.insertStillImageFormat(stillImageFormat);
64
root.imageCapture(CommonEnums.BURST_SHOT);
73
seecam130.getSceneMode()
74
seecam130.getEffectMode()
75
seecam130.getDenoiseValue()
76
seecam130.getQFactor()
77
seecam130.getExposureCompensation()
78
seecam130.getFrameRateCtrlValue()
84
id: getexposureCompFrameRateCtrlTimer
87
seecam130.getExposureCompensation()
88
seecam130.getFrameRateCtrlValue()
93
// Used when selecting auto focus in image Quality settings menu
95
id: getAutoFocusControlValues
98
seecam130.getAutoFocusROIModeAndWindowSize()
103
// Used when selecting auto exposure in image Quality settings menu
105
id: getAutoExpsoureControlValues
108
seecam130.getAutoExpROIModeAndWindowSize()
116
seecam130.setAutoFocusMode(See3Cam130.OneShot)
149
style: econscrollViewStyle
157
text: "--- Scene Mode ---"
159
font.family: "Ubuntu"
162
Layout.alignment: Qt.AlignCenter
163
opacity: 0.50196078431373
171
ExclusiveGroup { id: sceneInputGroup }
174
style: econRadioButtonStyle
176
exclusiveGroup: sceneInputGroup
177
activeFocusOnPress: true
179
seecam130.setSceneMode(See3Cam130.SCENE_NORMAL)
181
Keys.onReturnPressed: {
182
seecam130.setSceneMode(See3Cam130.SCENE_NORMAL)
187
style: econRadioButtonStyle
188
text: qsTr("Document")
189
exclusiveGroup: sceneInputGroup
190
activeFocusOnPress: true
192
seecam130.setSceneMode(See3Cam130.SCENE_DOCUMENT)
194
Keys.onReturnPressed: {
195
seecam130.setSceneMode(See3Cam130.SCENE_DOCUMENT)
204
text: "--- Special Effects ---"
206
font.family: "Ubuntu"
209
Layout.alignment: Qt.AlignCenter
210
opacity: 0.50196078431373
217
ExclusiveGroup { id: effectInputGroup }
220
style: econRadioButtonStyle
222
exclusiveGroup: effectInputGroup
223
activeFocusOnPress: true
226
seecam130.setEffectMode(See3Cam130.EFFECT_NORMAL)
228
Keys.onReturnPressed: {
229
seecam130.setEffectMode(See3Cam130.EFFECT_NORMAL)
235
style: econRadioButtonStyle
236
text: qsTr("Black and White")
237
exclusiveGroup: effectInputGroup
238
activeFocusOnPress: true
240
seecam130.setEffectMode(See3Cam130.EFFECT_BLACK_WHITE)
242
Keys.onReturnPressed: {
243
seecam130.setEffectMode(See3Cam130.EFFECT_BLACK_WHITE)
248
style: econRadioButtonStyle
249
text: qsTr("Negative")
250
exclusiveGroup: effectInputGroup
251
activeFocusOnPress: true
253
seecam130.setEffectMode(See3Cam130.EFFECT_NEGATIVE)
255
Keys.onReturnPressed: {
256
seecam130.setEffectMode(See3Cam130.EFFECT_NEGATIVE)
262
style: econRadioButtonStyle
263
text: qsTr("Grayscale")
264
exclusiveGroup: effectInputGroup
265
activeFocusOnPress: true
267
seecam130.setEffectMode(See3Cam130.EFFECT_GREYSCALE)
269
Keys.onReturnPressed: {
270
seecam130.setEffectMode(See3Cam130.EFFECT_GREYSCALE)
275
style: econRadioButtonStyle
277
exclusiveGroup: effectInputGroup
278
activeFocusOnPress: true
280
seecam130.setEffectMode(See3Cam130.EFFECT_SKETCH)
282
Keys.onReturnPressed: {
283
seecam130.setEffectMode(See3Cam130.EFFECT_SKETCH)
290
text: "--- Auto Focus Mode ---"
292
font.family: "Ubuntu"
295
Layout.alignment: Qt.AlignCenter
296
opacity: 0.50196078431373
301
ExclusiveGroup { id: afgroup }
303
exclusiveGroup: afgroup
306
activeFocusOnPress: true
307
style: econRadioButtonStyle
308
opacity: enabled ? 1 : 0.1
310
seecam130.setAutoFocusMode(See3Cam130.Continuous);
312
Keys.onReturnPressed: {
313
seecam130.setAutoFocusMode(See3Cam130.Continuous);
320
exclusiveGroup: afgroup
323
activeFocusOnPress: true
324
style: econRadioButtonStyle
325
opacity: enabled ? 1 : 0.1
327
seecam130.setAutoFocusMode(See3Cam130.OneShot);
329
Keys.onReturnPressed: {
330
seecam130.setAutoFocusMode(See3Cam130.OneShot);
335
activeFocusOnPress : true
337
style: econButtonStyle
338
enabled: (radioOneshot.enabled && radioOneshot.checked) ? true : false
339
opacity: (radioOneshot.enabled && radioOneshot.checked) ? 1 : 0.1
342
action: (radioOneshot.enabled && radioOneshot.checked) ? triggerAction : null
343
Keys.onReturnPressed: {
344
seecam130.setAutoFocusMode(See3Cam130.OneShot);
349
id: enableDisableAFRectText
350
text: "--- Enable/Disable AF Rectangle ---"
352
font.family: "Ubuntu"
355
Layout.alignment: Qt.AlignCenter
356
opacity: 0.50196078431373
361
ExclusiveGroup { id: afRectGroup }
363
exclusiveGroup: afRectGroup
366
activeFocusOnPress: true
367
style: econRadioButtonStyle
369
seecam130.enableDisableAFRectangle(true)
371
Keys.onReturnPressed: {
372
seecam130.enableDisableAFRectangle(true)
376
exclusiveGroup: afRectGroup
379
activeFocusOnPress: true
380
style: econRadioButtonStyle
382
seecam130.enableDisableAFRectangle(false)
384
Keys.onReturnPressed: {
385
seecam130.enableDisableAFRectangle(false)
391
text: "--- ROI - Auto Focus ---"
393
font.family: "Ubuntu"
396
Layout.alignment: Qt.AlignCenter
397
opacity: 0.50196078431373
402
ExclusiveGroup { id: roiAfgroup }
404
exclusiveGroup: roiAfgroup
407
activeFocusOnPress: true
408
style: econRadioButtonStyle
409
opacity: afCentered.enabled ? 1 : 0.1
410
// setROIAutoFoucs() args: mode, videoresolnWidth, videoresolnHeight, mouseXCord, mouseYCord, WinSize]
411
// videoresolnWidth, videoresolnHeight, mouseXCord, mouseYCord - these parameters are required only when click in preview]
412
// winSize is required only for manual mode
414
seecam130.setROIAutoFoucs(See3Cam130.AFCentered, 0, 0, 0, 0, 0);
415
afWindowSizeCombo.enabled = false
417
Keys.onReturnPressed: {
418
seecam130.setROIAutoFoucs(See3Cam130.AFCentered, 0, 0, 0, 0, 0);
419
afWindowSizeCombo.enabled = false
423
exclusiveGroup: roiAfgroup
426
activeFocusOnPress: true
427
style: econRadioButtonStyle
428
opacity: afManual.enabled ? 1 : 0.1
430
seecam130.setROIAutoFoucs(See3Cam130.AFManual, 0, 0, 0, 0, afWindowSizeCombo.currentText)
431
afWindowSizeCombo.enabled = true
433
Keys.onReturnPressed: {
434
seecam130.setROIAutoFocusMode(See3Cam130.AFManual, 0, 0, 0, 0, afWindowSizeCombo.currentText);
435
afWindowSizeCombo.enabled = true
442
id: afWindowSizeCombo
443
enabled: (afManual.enabled && afManual.checked) ? true : false
444
opacity: (afManual.enabled && afManual.checked) ? 1 : 0.1
446
ListElement { text: "1" }
447
ListElement { text: "2" }
448
ListElement { text: "3" }
449
ListElement { text: "4" }
450
ListElement { text: "5" }
451
ListElement { text: "6" }
452
ListElement { text: "7" }
453
ListElement { text: "8" }
455
activeFocusOnPress: true
456
style: econComboBoxStyle
457
onCurrentIndexChanged: {
458
if(skipUpdateUIOnAFWindowSize){
459
seecam130.setROIAutoFoucs(See3Cam130.AFManual, 0, 0, 0, 0, afWindowSizeCombo.currentText)
461
skipUpdateUIOnAFWindowSize = true
468
font.family: "Ubuntu"
471
Layout.alignment: Qt.AlignCenter
472
opacity: 0.50196078431373
477
ExclusiveGroup { id: iHDRgroup }
479
exclusiveGroup: iHDRgroup
482
activeFocusOnPress: true
483
style: econRadioButtonStyle
485
seecam130.setiHDRMode(See3Cam130.HdrOff, 0)
488
Keys.onReturnPressed: {
489
seecam130.setiHDRMode(See3Cam130.HdrOff, 0)
493
exclusiveGroup: iHDRgroup
496
activeFocusOnPress: true
497
style: econRadioButtonStyle
499
seecam130.setiHDRMode(See3Cam130.HdrAuto, 0)
502
Keys.onReturnPressed: {
503
seecam130.setiHDRMode(See3Cam130.HdrAuto, 0)
507
exclusiveGroup: iHDRgroup
510
activeFocusOnPress: true
511
style: econRadioButtonStyle
513
seecam130.setiHDRMode(See3Cam130.HdrManual, iHDRSlider.value)
515
Keys.onReturnPressed: {
516
seecam130.setiHDRMode(See3Cam130.HdrManual, iHDRSlider.value)
523
activeFocusOnPress: true
524
updateValueWhileDragging: false
528
style:econSliderStyle
529
minimumValue: iHDRMin
530
maximumValue: iHDRMax
531
enabled: (hdrManual.enabled && hdrManual.checked) ? true : false
532
opacity: enabled ? 1 : 0.1
534
iHDRTextField.text = iHDRSlider.value
535
if(skipUpdateUIiHDR){
536
seecam130.setiHDRMode(See3Cam130.HdrManual, iHDRSlider.value)
538
skipUpdateUIiHDR = true
544
text: iHDRSlider.value
546
font.family: "Ubuntu"
548
horizontalAlignment: TextInput.AlignHCenter
549
style: econTextFieldStyle
550
enabled: (hdrManual.enabled && hdrManual.checked) ? true : false
551
opacity: enabled ? 1 : 0.1
552
validator: IntValidator {bottom: iHDRSlider.minimumValue; top: iHDRSlider.maximumValue}
555
iHDRSlider.value = iHDRTextField.text
563
text: "--- Stream Mode ---"
565
font.family: "Ubuntu"
568
Layout.alignment: Qt.AlignCenter
569
opacity: 0.50196078431373
574
ExclusiveGroup { id: streamModeGroup }
576
exclusiveGroup: streamModeGroup
579
activeFocusOnPress: true
580
style: econRadioButtonStyle
584
Keys.onReturnPressed: {
589
exclusiveGroup: streamModeGroup
592
activeFocusOnPress: true
593
style: econRadioButtonStyle
597
Keys.onReturnPressed: {
604
text: "--- De-Noise ---"
606
font.family: "Ubuntu"
609
Layout.alignment: Qt.AlignCenter
610
opacity: 0.50196078431373
616
activeFocusOnPress: true
617
updateValueWhileDragging: false
621
style:econSliderStyle
622
minimumValue: denoiseMin
623
maximumValue: denoiseMax
625
deNoiseTextField.text = deNoiseSlider.value
626
if(skipUpdateUIDenoise){
627
seecam130.setDenoiseValue(deNoiseSlider.value)
629
skipUpdateUIDenoise = true
634
text: deNoiseSlider.value
636
font.family: "Ubuntu"
638
horizontalAlignment: TextInput.AlignHCenter
639
style: econTextFieldStyle
640
validator: IntValidator {bottom: deNoiseSlider.minimumValue; top: deNoiseSlider.maximumValue}
643
deNoiseSlider.value = deNoiseTextField.text
651
text: "--- ROI - Auto Exposure ---"
653
font.family: "Ubuntu"
656
Layout.alignment: Qt.AlignCenter
657
opacity: 0.50196078431373
662
ExclusiveGroup { id: roiExpogroup }
665
exclusiveGroup: roiExpogroup
668
activeFocusOnPress: true
669
style: econRadioButtonStyle
670
opacity: enabled ? 1 : 0.1
671
// setROIAutoExposure() args: mode, videoresolnWidth, videoresolnHeight, mouseXCord, mouseYCord, WinSize]
672
// videoresolnWidth, videoresolnHeight, mouseXCord, mouseYCord - these parameters are required only when click in preview]
673
// winSize is required only for manual mode
675
seecam130.setROIAutoExposure(See3Cam130.AutoExpFull, 0, 0, 0, 0, 0);
676
autoExpoWinSizeCombo.enabled = false
678
Keys.onReturnPressed: {
679
seecam130.setROIAutoExposure(See3Cam130.AutoExpFull, 0, 0, 0, 0, 0);
680
autoExpoWinSizeCombo.enabled = false
684
exclusiveGroup: roiExpogroup
687
activeFocusOnPress: true
688
style: econRadioButtonStyle
689
opacity: enabled ? 1 : 0.1
691
seecam130.setROIAutoExposure(See3Cam130.AutoExpManual, 0, 0, 0, 0, autoExpoWinSizeCombo.currentText);
692
autoExpoWinSizeCombo.enabled = true
694
Keys.onReturnPressed: {
695
seecam130.setROIAutoExposure(See3Cam130.AutoExpManual, 0, 0, 0, 0, autoExpoWinSizeCombo.currentText);
696
autoExpoWinSizeCombo.enabled = true
703
id: autoExpoWinSizeCombo
704
enabled: (autoexpManual.enabled && autoexpManual.checked) ? true : false
705
opacity: (autoexpManual.enabled && autoexpManual.checked) ? 1 : 0.1
707
ListElement { text: "1" }
708
ListElement { text: "2" }
709
ListElement { text: "3" }
710
ListElement { text: "4" }
711
ListElement { text: "5" }
712
ListElement { text: "6" }
713
ListElement { text: "7" }
714
ListElement { text: "8" }
716
activeFocusOnPress: true
717
style: econComboBoxStyle
718
onCurrentIndexChanged: {
719
if(skipUpdateUIOnExpWindowSize){
720
seecam130.setROIAutoExposure(See3Cam130.AutoExpManual, 0, 0, 0, 0, autoExpoWinSizeCombo.currentText)
722
skipUpdateUIOnExpWindowSize = true
726
id: exposureCompTextTitle
727
text: "--- Exposure Compensation ---"
729
font.family: "Ubuntu"
732
Layout.alignment: Qt.AlignCenter
733
opacity: 0.50196078431373
739
text: "value(µs)[8000 - 1000000]"
741
font.family: "Ubuntu"
745
wrapMode: Text.WordWrap
749
id: exposureCompValue
751
font.family: "Ubuntu"
753
horizontalAlignment: TextInput.AlignHCenter
755
style: econTextFieldStyle
758
validator: IntValidator {bottom: expoCompMin; top: expoCompMax}
762
activeFocusOnPress : true
764
tooltip: "You can set the required exposure compensation value by changing the
765
value in the text box and click the Set button"
766
style: econButtonStyle
772
exposureCompSet.enabled = false
773
setButtonClicked = true
774
seecam130.setExposureCompensation(exposureCompValue.text)
775
exposureCompSet.enabled = true
777
Keys.onReturnPressed: {
778
exposureCompSet.enabled = false
779
setButtonClicked = true
780
seecam130.setExposureCompensation(exposureCompValue.text)
781
exposureCompSet.enabled = true
787
text: "--- Q Factor ---"
789
font.family: "Ubuntu"
792
Layout.alignment: Qt.AlignCenter
793
opacity: 0.50196078431373
799
activeFocusOnPress: true
800
updateValueWhileDragging: false
804
style:econSliderStyle
805
minimumValue: qFactorMin
806
maximumValue: qFactorMax
808
qFactorTextField.text = qFactorSlider.value
809
if(skipUpdateUIQFactor){
810
seecam130.setQFactor(qFactorSlider.value)
812
skipUpdateUIQFactor = true
817
text: qFactorSlider.value
819
font.family: "Ubuntu"
821
horizontalAlignment: TextInput.AlignHCenter
822
style: econTextFieldStyle
823
validator: IntValidator {bottom: qFactorSlider.minimumValue; top: qFactorSlider.maximumValue}
826
qFactorSlider.value = qFactorTextField.text
834
text: "--- Image Capture ---"
836
font.family: "Ubuntu"
839
Layout.alignment: Qt.AlignCenter
840
opacity: 0.50196078431373
844
text: "Burst Length :"
846
font.family: "Ubuntu"
857
ListElement { text: "1" }
858
ListElement { text: "2" }
859
ListElement { text: "3" }
860
ListElement { text: "4" }
861
ListElement { text: "5" }
863
activeFocusOnPress: true
864
style: econComboBoxStyle
865
onCurrentIndexChanged: {
866
root.stillBurstLength(burstLengthCombo.currentIndex + 1) // combobox index starts from 0
867
if(skipUpdateUIOnBurstLength){
868
seecam130.setBurstLength(burstLengthCombo.currentText)
870
skipUpdateUIOnBurstLength = true
876
text: "--- Flip Control ---"
878
font.family: "Ubuntu"
881
Layout.alignment: Qt.AlignCenter
882
opacity: 0.50196078431373
887
id: flipCtrlHorizotal
888
activeFocusOnPress : true
890
style: econCheckBoxStyle
892
seecam130.setFlipHorzMode(checked)
894
Keys.onReturnPressed: {
895
seecam130.setFlipHorzMode(checked)
900
activeFocusOnPress : true
902
style: econCheckBoxStyle
904
seecam130.setFlipVertiMode(checked)
906
Keys.onReturnPressed: {
907
seecam130.setFlipVertiMode(checked)
913
id: faceDetectionText
914
text: "--- Face Detection ---"
916
font.family: "Ubuntu"
919
Layout.alignment: Qt.AlignCenter
920
opacity: 0.50196078431373
925
ExclusiveGroup { id: faceRectGroup }
927
exclusiveGroup: faceRectGroup
930
activeFocusOnPress: true
931
style: econRadioButtonStyle
933
seecam130.setFaceDetectionRect(true, faceDetectEmbedData.checked, overlayRect.checked)
935
Keys.onReturnPressed: {
936
seecam130.setFaceDetectionRect(true, faceDetectEmbedData.checked, overlayRect.checked)
940
exclusiveGroup: faceRectGroup
943
activeFocusOnPress: true
944
style: econRadioButtonStyle
946
seecam130.setFaceDetectionRect(false, faceDetectEmbedData.checked, overlayRect.checked)
948
Keys.onReturnPressed: {
949
seecam130.setFaceDetectionRect(false, faceDetectEmbedData.checked, overlayRect.checked)
956
id: faceDetectEmbedData
957
activeFocusOnPress : true
959
style: econCheckBoxTextWrapModeStyle
960
enabled: faceRectEnable.checked ? true : false
961
opacity: enabled ? 1 : 0.1
963
enableFaceDetectEmbedData()
965
Keys.onReturnPressed: {
966
enableFaceDetectEmbedData()
971
activeFocusOnPress : true
972
text: "Overlay Rectangle"
973
style: econCheckBoxTextWrapModeStyle
974
enabled: faceRectEnable.checked ? true : false
975
opacity: enabled ? 1 : 0.1
977
seecam130.setFaceDetectionRect(faceRectEnable.checked, faceDetectEmbedData.checked, checked)
979
Keys.onReturnPressed: {
980
seecam130.setFaceDetectionRect(faceRectEnable.checked, faceDetectEmbedData.checked, checked)
986
id: smileDetectionText
987
text: "--- Smile Detection ---"
989
font.family: "Ubuntu"
992
Layout.alignment: Qt.AlignCenter
993
opacity: 0.50196078431373
997
ExclusiveGroup { id: smileDetectGroup }
999
exclusiveGroup: smileDetectGroup
1000
id: smileDetectEnable
1002
activeFocusOnPress: true
1003
style: econRadioButtonStyle
1005
seecam130.setSmileDetection(true, smileDetectEmbedData.checked)
1007
Keys.onReturnPressed: {
1008
seecam130.setSmileDetection(true, smileDetectEmbedData.checked)
1012
exclusiveGroup: smileDetectGroup
1013
id:smileDetectDisable
1015
activeFocusOnPress: true
1016
style: econRadioButtonStyle
1018
seecam130.setSmileDetection(false, smileDetectEmbedData.checked)
1020
Keys.onReturnPressed: {
1021
seecam130.setSmileDetection(false, smileDetectEmbedData.checked)
1028
id: smileDetectEmbedData
1029
activeFocusOnPress : true
1031
style: econCheckBoxStyle
1032
enabled: smileDetectEnable.checked ? true : false
1033
opacity: enabled ? 1 : 0.1
1035
enableSmileDetectEmbedData()
1037
Keys.onReturnPressed: {
1038
enableSmileDetectEmbedData()
1045
text: "--- Frame Rate Control ---"
1047
font.family: "Ubuntu"
1050
Layout.alignment: Qt.AlignCenter
1051
opacity: 0.50196078431373
1057
activeFocusOnPress: true
1058
updateValueWhileDragging: false
1062
style:econSliderStyle
1063
minimumValue: frameRateMin
1064
maximumValue: frameRateMax
1066
frameRateTextField.text = frameRateSlider.value
1067
if(skipUpdateUIFrameRate){
1068
seecam130.setFrameRateCtrlValue(frameRateSlider.value)
1070
skipUpdateUIFrameRate = true
1074
id: frameRateTextField
1075
text: frameRateSlider.value
1077
font.family: "Ubuntu"
1079
horizontalAlignment: TextInput.AlignHCenter
1080
style: econTextFieldStyle
1081
validator: IntValidator {bottom: frameRateSlider.minimumValue; top: frameRateSlider.maximumValue}
1083
if(text.length > 0){
1084
frameRateSlider.value = frameRateTextField.text
1091
id: flickerctrlField
1092
text: "-- Flicker Detection Control --"
1094
font.family: "Ubuntu"
1097
Layout.alignment: Qt.AlignCenter
1098
opacity: 0.50196078431373
1107
ListElement { text: "AUTO" }
1108
ListElement { text: "50Hz" }
1109
ListElement { text: "60Hz" }
1110
ListElement { text: "DISABLE" }
1112
activeFocusOnPress: true
1113
style: econComboBoxStyle
1114
onCurrentIndexChanged: {
1115
if(skipUpdateUIFlickerCtrl){
1116
setFlickerDetectionFn();
1122
Layout.alignment: Qt.AlignCenter
1126
activeFocusOnPress : true
1128
tooltip: "Click to set default values in extension controls"
1130
style: econButtonStyle
1131
Keys.onReturnPressed: {
1132
setToDefaultValues()
1138
// Layout.alignment: Qt.AlignCenter
1140
id: f_wversion_selected130
1142
action: firmwareVersion
1143
activeFocusOnPress : true
1144
tooltip: "Click to view the firmware version of the camera"
1145
style: ButtonStyle {
1146
background: Rectangle {
1147
border.width: control.activeFocus ? 3 :0
1149
border.color: control.activeFocus ? "#ffffff" : "#222021"
1153
source: "images/f_wversion_selected.png"
1156
Keys.onReturnPressed: {
1157
getFirmwareVersion()
1161
id: serial_no_selected
1163
action: serialNumber
1164
activeFocusOnPress : true
1165
tooltip: "Click to view the Serial Number"
1166
style: ButtonStyle {
1167
background: Rectangle {
1168
border.width: control.activeFocus ? 3 :0
1170
border.color: control.activeFocus ? "#ffffff" : "#222021"
1174
source: "images/serial_no_selected.png"
1177
Keys.onReturnPressed: {
1195
defaultSceneMode(sceneMode)
1197
onEffectModeValue: {
1198
defaultEffectMode(effectMode)
1200
onDenoiseValueReceived:{
1201
skipUpdateUIDenoise = false
1202
deNoiseSlider.value = denoiseValue
1203
skipUpdateUIDenoise = true
1205
onFrameRateCtrlValueReceived:{
1206
skipUpdateUIFrameRate = false
1207
frameRateSlider.value = frameRateCtrlValue
1208
skipUpdateUIFrameRate = true
1212
defaultAfMode(afMode)
1214
onFaceDetectModeValue:{
1215
if(faceDetectMode == See3Cam130.FaceRectEnable){
1216
faceRectEnable.checked = true
1217
if(faceDetectEmbedDataValue == See3Cam130.FaceDetectEmbedDataEnable){
1218
faceDetectEmbedData.checked = true
1220
if(faceDetectOverlayRect == See3Cam130.FaceDetectOverlayRectEnable){
1221
overlayRect.checked = true
1223
}else if(faceDetectMode == See3Cam130.FaceRectDisable){
1224
faceRectDisable.checked = true
1225
if(faceDetectEmbedDataValue == See3Cam130.FaceDetectEmbedDataEnable){
1226
faceDetectEmbedData.checked = true
1228
faceDetectEmbedData.checked = false
1230
if(faceDetectOverlayRect == See3Cam130.FaceDetectOverlayRectEnable){
1231
overlayRect.checked = true
1233
overlayRect.checked = false
1237
onSmileDetectModeValue:{
1238
if(smileDetectMode == See3Cam130.SmileDetectEnable){
1239
smileDetectEnable.checked = true
1240
if(smileDetectEmbedDataValue == See3Cam130.SmileDetectEmbedDataEnable){
1241
smileDetectEmbedData.checked = true
1243
}else if(smileDetectMode == See3Cam130.SmileDetectDisable){
1244
smileDetectDisable.checked = true
1245
if(smileDetectEmbedDataValue == See3Cam130.SmileDetectEmbedDataEnable){
1246
smileDetectEmbedData.checked = true
1248
smileDetectEmbedData.checked = false
1253
onExposureCompValueReceived:{
1254
exposureCompValue.text = exposureCompensation
1257
onHDRModeValueReceived:{
1258
defaultHDRMode(hdrMode)
1259
if(hdrMode == See3Cam130.HdrManual){
1260
iHDRSlider.value = hdrValue
1264
skipUpdateUIQFactor = false
1265
qFactorSlider.value = qFactor
1266
skipUpdateUIQFactor = true
1269
if(roiMode == See3Cam130.AFCentered){
1270
afCentered.checked = true
1271
afWindowSizeCombo.currentIndex = winSize-1
1272
}else if(roiMode == See3Cam130.AFManual){
1273
skipUpdateUIOnAFWindowSize = false
1274
afManual.checked = true
1275
afWindowSizeCombo.currentIndex = winSize-1
1276
}else if(roiMode == See3Cam130.AFDisabled){
1277
rectEnable.enabled = false
1278
rectDisable.enabled = false
1279
rectEnable.opacity = 0.1
1280
rectDisable.opacity = 0.1
1281
afCentered.enabled = false
1282
afManual.enabled = false
1283
afWindowSizeCombo.enabled = false
1286
onRoiAutoExpModeValue:{
1287
currentROIAutoExposureMode(roiMode, winSize)
1289
onBurstLengthValue:{
1290
skipUpdateUIOnBurstLength = false
1291
burstLengthCombo.currentIndex = burstLength - 1
1293
onFlickerDetectionMode:{
1295
skipUpdateUIFlickerCtrl = false
1296
if(flickerMode == See3Cam130.MODE_AUTO){
1297
flickercombo.currentIndex = 0
1298
}else if(flickerMode == See3Cam130.MODE_50Hz){
1299
flickercombo.currentIndex = 1
1300
}else if(flickerMode == See3Cam130.MODE_60Hz){
1301
flickercombo.currentIndex = 2
1302
}else if(flickerMode == See3Cam130.MODE_DISABLE){
1303
flickercombo.currentIndex = 3
1305
skipUpdateUIFlickerCtrl = true;
1309
if(afRectMode == See3Cam130.AFRectEnable){
1310
rectEnable.checked = true
1312
}else if(afRectMode == See3Cam130.AFRectDisable){
1313
rectDisable.checked = true
1318
updateFlipMode(flipMode, flipEnableDisableMode)
1321
if(streamMode == See3Cam130.STREAM_MASTER){
1322
streamMaster.checked = true
1323
root.captureBtnEnable(true)
1324
root.videoRecordBtnEnable(true)
1325
}else if(streamMode == See3Cam130.STREAM_TRIGGER){
1326
streamTrigger.checked = true
1327
root.captureBtnEnable(false)
1328
root.videoRecordBtnEnable(false)
1329
displayMessageBox(qsTr("Trigger Mode"), qsTr("Frames will be out only when external hardware pulses are given to PIN 5 of CN3. Refer the document."))
1332
onIndicateCommandStatus:{
1333
if(setButtonClicked){
1334
displayMessageBox(title, text)
1335
setButtonClicked = false
1339
onIndicateExposureValueRangeFailure:{
1340
if(setButtonClicked){
1341
displayMessageBox(title, text)
1342
setButtonClicked = false
1343
seecam130.getExposureCompensation()
1350
id: econTextFieldStyle
1353
background: Rectangle {
1357
border.color: "#333"
1367
background: Rectangle {
1370
border.width: control.activeFocus ? 3 :0
1372
border.color: control.activeFocus ? "#ffffff" : "#222021"
1373
radius: control.activeFocus ? 5 : 0
1377
horizontalAlignment: Text.AlignHCenter
1378
verticalAlignment: Text.AlignVCenter
1379
font.family: "Ubuntu"
1387
id: econscrollViewStyle
1389
scrollToClickedPosition: true
1392
source: "images/scroller.png"
1394
scrollBarBackground: Image {
1396
source: "images/Scroller_bg.png"
1398
incrementControl: Image {
1400
source: "images/down_arrow.png"
1402
decrementControl: Image {
1404
source: "images/up_arrow.png"
1409
id: econComboBoxStyle
1412
id: burstLengthCombo_bkgrnd
1413
source: "../../Views/images/device_box.png"
1415
width: burstLengthCombo_bkgrnd.sourceSize.width - 28
1416
height: burstLengthCombo_bkgrnd.sourceSize.height
1418
border.color: "white"
1419
border.width: control.activeFocus ? 3 : 1
1420
radius: control.activeFocus ? 5 : 0
1424
anchors.fill: parent
1426
elide: Text.ElideRight
1427
text: control.currentText
1428
verticalAlignment: Text.AlignVCenter
1430
font.family: "Ubuntu"
1437
id: econCheckBoxStyle
1442
font.family: "Ubuntu"
1447
background: Rectangle {
1449
border.color: control.activeFocus ? "#ffffff" : "#222021"
1456
id: econCheckBoxTextWrapModeStyle
1461
font.family: "Ubuntu"
1466
wrapMode: Text.WordWrap
1468
background: Rectangle {
1470
border.color: control.activeFocus ? "#ffffff" : "#222021"
1475
id: econRadioButtonStyle
1480
font.family: "Ubuntu"
1485
background: Rectangle {
1487
border.color: control.activeFocus ? "#ffffff" : "#222021"
1494
onTitleTextChanged: {
1495
messageDialog.title = _title.toString()
1496
messageDialog.text = _text.toString()
1497
messageDialog.open()
1500
messageDialog.title = qsTr("Serial Number")
1501
messageDialog.text = serialNumber;
1505
Component.onCompleted:{
1506
//getting valid effect mode and scene mode takes some time.
1507
//So In timer, after 500 ms, getting effect mode and scene mode is done
1508
getCamValuesTimer.start()
1509
seecam130.getAutoFocusMode()
1510
seecam130.getiHDRMode()
1511
seecam130.getBurstLength()
1512
seecam130.getAutoFocusROIModeAndWindowSize()
1513
seecam130.getAutoExpROIModeAndWindowSize()
1514
seecam130.getAFRectMode()
1515
seecam130.getFlipMode()
1516
seecam130.getStreamMode()
1517
seecam130.getFlickerDetection()
1518
seecam130.getFaceDetectMode()
1519
seecam130.getSmileDetectMode()
1520
root.disablePowerLineFreq() //Added by Navya-4th June 2019 - call to disable Power Line Frequency.
1524
function displayMessageBox(title, text){
1525
messageDialog.title = qsTr(title)
1526
messageDialog.text = qsTr(text)
1527
messageDialog.open()
1530
function updateFlipMode(flipMode, FlipEnableDisableMode){
1532
case See3Cam130.FlipHorizontal:
1533
if(FlipEnableDisableMode == See3Cam130.FlipEnable){
1534
flipCtrlHorizotal.checked = true
1536
flipCtrlHorizotal.checked = false
1539
case See3Cam130.FlipVertical:
1540
if(FlipEnableDisableMode == See3Cam130.FlipEnable){
1541
flipCtrlVertical.checked = true
1543
flipCtrlVertical.checked = false
1546
case See3Cam130.FlipBoth:
1547
if(FlipEnableDisableMode == See3Cam130.FlipEnable){
1548
flipCtrlHorizotal.checked = true
1549
flipCtrlVertical.checked = true
1551
flipCtrlHorizotal.checked = false
1552
flipCtrlVertical.checked = false
1559
// current ROI auto exposure mode
1560
function currentROIAutoExposureMode(roiMode, winSize){
1562
case See3Cam130.AutoExpFull:
1563
autoexpFull.checked = true
1564
autoExpoWinSizeCombo.enabled = false
1566
case See3Cam130.AutoExpManual:
1567
skipUpdateUIOnExpWindowSize = false
1568
autoexpManual.checked = true
1569
// If window size is got from camera is 0 then set window size to 1 in UI
1571
autoExpoWinSizeCombo.currentIndex = 0
1573
autoExpoWinSizeCombo.currentIndex = winSize-1
1575
case See3Cam130.AutoExpDisabled:
1576
autoexpFull.enabled = false
1577
autoexpManual.enabled = false
1578
autoExpoWinSizeCombo.enabled = false
1583
function setMasterMode(){
1584
seecam130.setStreamMode(See3Cam130.STREAM_MASTER)
1585
root.checkForTriggerMode(false)
1586
root.captureBtnEnable(true)
1587
root.videoRecordBtnEnable(true)
1590
function setTriggerMode(){
1591
root.checkForTriggerMode(true)
1592
root.captureBtnEnable(false)
1593
root.videoRecordBtnEnable(false)
1594
seecam130.setStreamMode(See3Cam130.STREAM_TRIGGER)
1595
displayMessageBox(qsTr("Trigger Mode"), qsTr("Frames will be out only when external hardware pulses are given to PIN 5 of CN3. Refer the document See3CAM_130_Trigger_Mode"))
1598
function getSerialNumber() {
1599
uvccamera.getSerialNumber()
1600
messageDialog.open()
1603
function getFirmwareVersion() {
1604
uvccamera.getFirmWareVersion()
1605
messageDialog.open()
1607
function setToDefaultValues(){
1608
root.checkForTriggerMode(false)
1609
seecam130.setToDefault()
1610
seecam130.getSceneMode()
1611
seecam130.getEffectMode()
1612
seecam130.getAutoFocusMode()
1613
seecam130.getiHDRMode()
1614
seecam130.getDenoiseValue()
1615
seecam130.getQFactor()
1616
seecam130.getBurstLength()
1617
seecam130.getAutoFocusROIModeAndWindowSize()
1618
seecam130.getAutoExpROIModeAndWindowSize()
1619
seecam130.getAFRectMode()
1620
seecam130.getFlipMode()
1621
seecam130.getStreamMode()
1622
seecam130.getFlickerDetection()
1623
// Added by Sankari: 17 Apr 2017. To get preview in master mode
1624
root.startUpdatePreviewInMasterMode()
1625
seecam130.getFaceDetectMode()
1626
seecam130.getSmileDetectMode()
1627
seecam130.getExposureCompensation()
1628
seecam130.getFrameRateCtrlValue()
1631
function defaultSceneMode(mode)
1635
case See3Cam130.SCENE_NORMAL:
1636
sceneNormal.checked = true
1638
case See3Cam130.SCENE_DOCUMENT:
1639
sceneDoc.checked = true
1643
function defaultEffectMode(mode)
1647
case See3Cam130.EFFECT_NORMAL:
1648
effectNormal.checked = true
1650
case See3Cam130.EFFECT_BLACK_WHITE:
1651
effectBW.checked = true
1653
case See3Cam130.EFFECT_GREYSCALE:
1654
effectGrayscale.checked = true
1656
case See3Cam130.EFFECT_NEGATIVE:
1657
effectNegative.checked = true
1659
case See3Cam130.EFFECT_SKETCH:
1660
effectSketch.checked = true
1665
function defaultAfMode(mode)
1669
case See3Cam130.Continuous:
1670
radioContin.checked = true
1672
case See3Cam130.OneShot:
1673
radioOneshot.checked = true
1675
case See3Cam130.AfModeDisabled:
1676
radioContin.enabled = false
1677
radioOneshot.enabled = false
1678
trigger.enabled = false
1683
function defaultHDRMode(mode)
1687
case See3Cam130.HdrOff:
1688
hdrOff.checked = true
1690
case See3Cam130.HdrAuto:
1691
hdrAuto.checked = true
1693
case See3Cam130.HdrManual:
1694
hdrManual.checked = true
1698
function enableDisableAutoFocusUIControls(autoFocusSelect){
1699
if(autoFocusSelect){
1700
radioContin.enabled = true
1701
radioOneshot.enabled = true
1702
trigger.enabled = true
1703
afCentered.enabled = true
1704
afManual.enabled = true
1705
if(afCentered.checked)
1706
afWindowSizeCombo.enabled = false
1707
if(afManual.checked)
1708
afWindowSizeCombo.enabled = true
1709
rectEnable.enabled = true
1710
rectEnable.opacity = 1
1711
rectDisable.enabled = true
1712
rectDisable.opacity = 1
1713
radioContin.opacity = 1
1714
radioOneshot.opacity = 1
1715
afCentered.opacity = 1
1716
afManual.opacity = 1
1718
radioContin.enabled = false
1719
radioOneshot.enabled = false
1720
trigger.enabled = false
1721
afCentered.enabled = false
1722
afManual.enabled = false
1723
afWindowSizeCombo.enabled = false
1724
radioContin.opacity = 0.1
1725
radioOneshot.opacity = 0.1
1726
afCentered.opacity = 0.1
1727
afManual.opacity = 0.1
1728
rectEnable.enabled = false
1729
rectEnable.opacity = 0.1
1730
rectDisable.enabled = false
1731
rectDisable.opacity = 0.1
1733
getAutoFocusControlValues.start()
1736
function enableFaceDetectEmbedData(){
1737
if(seecam130.setFaceDetectionRect(faceRectEnable.checked, faceDetectEmbedData.checked, overlayRect.checked)){
1738
if(faceDetectEmbedData.checked){
1739
displayMessageBox(qsTr("Status"),qsTr("The last part of the frame will be replaced by face data.Refer document See3CAM_130_Face_and_Smile_Detection for more details"))
1744
function enableSmileDetectEmbedData(){
1745
setButtonClicked = false
1746
if(seecam130.setSmileDetection(true, smileDetectEmbedData.checked)){
1747
if(smileDetectEmbedData.checked){
1748
messageDialog.title = qsTr("Status")
1749
messageDialog.text = qsTr("The last part of the frame will be replaced by smile data.Refer document See3CAM_130_Face_and_Smile_Detection for more details")
1750
messageDialog.open()
1755
function setFlickerDetectionFn()
1757
switch(flickercombo.currentIndex){
1759
flickerCtrl= See3Cam130.MODE_AUTO
1762
flickerCtrl = See3Cam130.MODE_50Hz
1765
flickerCtrl = See3Cam130.MODE_60Hz
1768
flickerCtrl = See3Cam130.MODE_DISABLE
1771
seecam130.setFlickerDetection(flickerCtrl)
1774
function enableDisableAutoExposureControls(autoExposureSelect){
1775
if(autoExposureSelect){
1776
autoexpManual.enabled = true
1777
autoexpFull.enabled = true
1778
if(autoexpManual.checked)
1779
autoExpoWinSizeCombo.enabled = true
1780
if(autoexpFull.checked)
1781
autoExpoWinSizeCombo.enabled = false
1782
autoexpManual.opacity = 1
1783
autoexpFull.opacity = 1
1784
exposureCompValue.enabled = true
1785
exposureCompValue.opacity = 1
1786
exposureCompSet.enabled = true
1787
exposureCompSet.opacity = 1
1788
exposureCompText.opacity = 1
1790
autoexpManual.enabled = false
1791
autoexpFull.enabled = false
1792
autoExpoWinSizeCombo.enabled = false
1793
autoexpManual.opacity = 0.1
1794
autoexpFull.opacity = 0.1
1795
exposureCompValue.enabled = false
1796
exposureCompValue.opacity = 0.1
1797
exposureCompSet.enabled = false
1798
exposureCompSet.opacity = 0.1
1799
exposureCompText.opacity = 0.1
1801
getAutoExpsoureControlValues.start()
1806
onMouseRightClicked:{
1807
if(afManual.enabled && afManual.checked){
1808
seecam130.setROIAutoFoucs(See3Cam130.AFManual, width, height, x, y, afWindowSizeCombo.currentText)
1810
if(autoexpManual.enabled && autoexpManual.checked){
1811
seecam130.setROIAutoExposure(See3Cam130.AutoExpManual, width, height, x, y, autoExpoWinSizeCombo.currentText)
1814
onAutoFocusSelected:{
1815
enableDisableAutoFocusUIControls(autoFocusSelect)
1817
onAutoExposureSelected:{
1818
enableDisableAutoExposureControls(autoExposureSelect)
1820
onEnableFaceRectafterBurst:{
1821
seecam130.enableDisableFaceRectangle(true)
1828
if(rectEnable.checked){
1829
seecam130.enableDisableAFRectangle(true)
1832
onBeforeRecordVideo:{
1833
seecam130.enableDisableAFRectangle(false)
1834
seecam130.enableDisableFaceRectangle(false)
1836
onAfterRecordVideo:{
1837
if(rectEnable.checked){
1838
seecam130.enableDisableAFRectangle(true)
1840
seecam130.enableDisableFaceRectangle(true)
1842
onVideoResolutionChanged:{
1843
getexposureCompFrameRateCtrlTimer.start()
1845
onPreviewFPSChanged:{
1846
getexposureCompFrameRateCtrlTimer.start()
1848
onVideoColorSpaceChanged:{
1849
getexposureCompFrameRateCtrlTimer.start()