PageMain.qml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. import QtQuick 2.15
  2. import QtQuick.Window 2.15
  3. import QtQuick.Layouts 1.3
  4. import QtQuick.Controls 2.14
  5. import QtQuick.Dialogs 1.3
  6. import QtQuick.Controls.Styles 1.4
  7. import QtQuick.VirtualKeyboard 2.15
  8. import TService 1.0
  9. Rectangle{
  10. id:root
  11. //anchors.fill:parent
  12. Item{
  13. id:rootitem
  14. anchors.fill:parent
  15. property int max_compartment_num:4
  16. enum Page_Type {
  17. Page_Type_Settings,
  18. Page_Type_Testing,
  19. Page_Type_ValveTest,
  20. Page_Type_Calibration
  21. }
  22. SwipeView {
  23. id: swipeView
  24. //anchors.fill: parent
  25. width: main_window.width
  26. height: main_window.height
  27. currentIndex: 0
  28. y: !inputPanel.active ? 0 : Math.min(0, main_window.height - inputPanel.height - activeFocusItemBottom)
  29. Behavior on y {
  30. NumberAnimation {
  31. duration: 250
  32. easing.type: Easing.InOutQuad
  33. }
  34. }
  35. PageSetting {
  36. id:page_set
  37. }
  38. PageTest {
  39. id:pagetest
  40. //visible: false;
  41. }
  42. PageCalibration {
  43. id:pagecalibration
  44. }
  45. function changePages(compartment_num){
  46. console.log("changePages num : "+compartment_num)
  47. removePage(pagetest)
  48. removePage(pagecalibration)
  49. /*
  50. if(compartment_num>7){
  51. addPage(page_recoveryvalve1)
  52. addPage(page_recoveryvalve2)
  53. addPage(page_recoveryvalve3)
  54. addPage(page_recoveryvalve4)
  55. addPage(page_recoveryvalve5)
  56. addPage(page_recoveryvalve6)
  57. addPage(page_recoveryvalve7)
  58. addPage(page_recoveryvalve8)
  59. }else if(compartment_num>6){
  60. removePage(page_recoveryvalve8)
  61. addPage(page_recoveryvalve1)
  62. addPage(page_recoveryvalve2)
  63. addPage(page_recoveryvalve3)
  64. addPage(page_recoveryvalve4)
  65. addPage(page_recoveryvalve5)
  66. addPage(page_recoveryvalve6)
  67. addPage(page_recoveryvalve7)
  68. }else if(compartment_num>5){
  69. removePage(page_recoveryvalve8)
  70. removePage(page_recoveryvalve7)
  71. addPage(page_recoveryvalve1)
  72. addPage(page_recoveryvalve2)
  73. addPage(page_recoveryvalve3)
  74. addPage(page_recoveryvalve4)
  75. addPage(page_recoveryvalve5)
  76. addPage(page_recoveryvalve6)
  77. }else if(compartment_num>4){
  78. removePage(page_recoveryvalve8)
  79. removePage(page_recoveryvalve7)
  80. removePage(page_recoveryvalve6)
  81. addPage(page_recoveryvalve1)
  82. addPage(page_recoveryvalve2)
  83. addPage(page_recoveryvalve3)
  84. addPage(page_recoveryvalve4)
  85. addPage(page_recoveryvalve5)
  86. }else
  87. */
  88. if(compartment_num>3){
  89. //removePage(page_recoveryvalve8)
  90. //removePage(page_recoveryvalve7)
  91. //removePage(page_recoveryvalve6)
  92. //removePage(page_recoveryvalve5)
  93. addPage(page_recoveryvalve1)
  94. addPage(page_recoveryvalve2)
  95. addPage(page_recoveryvalve3)
  96. addPage(page_recoveryvalve4)
  97. }else if(compartment_num>2){
  98. //removePage(page_recoveryvalve8)
  99. //removePage(page_recoveryvalve7)
  100. //removePage(page_recoveryvalve6)
  101. //removePage(page_recoveryvalve5)
  102. removePage(page_recoveryvalve4)
  103. addPage(page_recoveryvalve1)
  104. addPage(page_recoveryvalve2)
  105. addPage(page_recoveryvalve3)
  106. }else if(compartment_num>1){
  107. //removePage(page_recoveryvalve8)
  108. //removePage(page_recoveryvalve7)
  109. //removePage(page_recoveryvalve6)
  110. //removePage(page_recoveryvalve5)
  111. removePage(page_recoveryvalve4)
  112. removePage(page_recoveryvalve3)
  113. addPage(page_recoveryvalve1)
  114. addPage(page_recoveryvalve2)
  115. }else if(compartment_num>0){
  116. //removePage(page_recoveryvalve8)
  117. //removePage(page_recoveryvalve7)
  118. //removePage(page_recoveryvalve6)
  119. //removePage(page_recoveryvalve5)
  120. removePage(page_recoveryvalve4)
  121. removePage(page_recoveryvalve3)
  122. removePage(page_recoveryvalve2)
  123. addPage(page_recoveryvalve1)
  124. }
  125. addPage(pagetest)
  126. addPage(pagecalibration)
  127. }
  128. function addPage(page){
  129. for(var n=0; n<count; n++){
  130. if(page === itemAt(n))
  131. return
  132. }
  133. addItem(page)
  134. page.visible = true
  135. }
  136. function removePage(page){
  137. for(var n=0; n<count; n++){
  138. if(page === itemAt(n))
  139. takeItem(n)
  140. }
  141. page.visible = false
  142. }
  143. Component.onCompleted: {
  144. //page_set.show()
  145. //currentIndex=0
  146. }
  147. }
  148. PageIndicator {
  149. id: indicator
  150. count: swipeView.count
  151. currentIndex: swipeView.currentIndex
  152. anchors.bottom: swipeView.bottom
  153. anchors.horizontalCenter: parent.horizontalCenter
  154. //interactive: true
  155. }
  156. Component.onCompleted: {
  157. StandardManager.init()
  158. CalibrationPara.init()
  159. testService.init()
  160. //StandardManager.init()
  161. //CalibrationPara.init()
  162. }
  163. }
  164. RecoveryValve {
  165. id:page_recoveryvalve1
  166. compartment_id: 1
  167. volume: 0
  168. visible: false
  169. }
  170. RecoveryValve {
  171. id:page_recoveryvalve2
  172. compartment_id: 2
  173. volume: 0
  174. visible: false
  175. }
  176. RecoveryValve {
  177. id:page_recoveryvalve3
  178. compartment_id: 3
  179. volume: 0
  180. visible: false
  181. }
  182. RecoveryValve {
  183. id:page_recoveryvalve4
  184. compartment_id: 4
  185. volume: 0
  186. visible: false
  187. }
  188. /*
  189. RecoveryValve {
  190. id:page_recoveryvalve5
  191. compartment_id: 5
  192. volume: 0
  193. visible: false
  194. }
  195. RecoveryValve {
  196. id:page_recoveryvalve6
  197. compartment_id: 6
  198. volume: 0
  199. visible: false
  200. }
  201. RecoveryValve {
  202. id:page_recoveryvalve7
  203. compartment_id: 7
  204. volume: 0
  205. visible: false
  206. }
  207. RecoveryValve {
  208. id:page_recoveryvalve8
  209. compartment_id: 8
  210. volume: 0
  211. visible: false
  212. }
  213. */
  214. //PageStandard {
  215. // id:pagestandard
  216. // visible: false
  217. //}
  218. Log{
  219. id:log
  220. z:10
  221. width: 300
  222. height: 50
  223. //anchors.centerIn: parent
  224. anchors.top: parent.top
  225. anchors.topMargin: 100
  226. anchors.left: parent.left
  227. anchors.leftMargin: 480
  228. }
  229. Log{
  230. id:genreportprogress
  231. z:20
  232. width: 300
  233. height: 50
  234. //anchors.centerIn: parent
  235. anchors.top: parent.top
  236. anchors.topMargin: 100
  237. anchors.left: parent.left
  238. anchors.leftMargin: 480
  239. }
  240. TestService{
  241. id:testService
  242. }
  243. Popup{
  244. id: popupCenter
  245. modal: true //模态, 为 true后弹出窗口会叠加一个独特的背景调光效果
  246. focus: true //焦点, 当弹出窗口实际接收到焦点时,activeFocus将为真
  247. padding: 0
  248. closePolicy: Popup.CloseOnEscape //| Popup.CloseOnPressOutside
  249. property var raiseItem: null
  250. property bool item_opened: false
  251. background: Rectangle {
  252. color: Qt.rgba(0,0,0,0) //背景为无色
  253. }
  254. Loader {
  255. id:loaderCenter
  256. onLoaded: {
  257. popupCenter.x = (main_window.width - loaderCenter.width) * 0.5
  258. popupCenter.y = (main_window.height - loaderCenter.height) * 0.5
  259. popupCenter.z = 12
  260. }
  261. }
  262. onOpened: {
  263. loaderCenter.sourceComponent = popupCenter.raiseItem
  264. popupCenter.item_opened = true
  265. }
  266. onClosed: {
  267. loaderCenter.sourceComponent = null
  268. popupCenter.raiseItem = null
  269. popupCenter.item_opened = false
  270. }
  271. }
  272. Component{
  273. id: com_leakage
  274. PageLeakageInput{
  275. id:leakage_input
  276. carplate: page_set.licenseplate
  277. }
  278. }
  279. Component.onCompleted: {
  280. //page_set.show()
  281. testService.onNotice.connect(qmlProcessNotice);
  282. testService.onWarning.connect(qmlProcessWarning);
  283. testService.sigPressure.connect(qmlProcessPressure);
  284. testService.sigState.connect(qmlProcessState);
  285. testService.sigSystemResult.connect(qmlProcessSystemResult);
  286. testService.sigValveResult.connect(qmlProcessValveResult);
  287. testService.sigSelfTestResult.connect(qmlProcessSelfResult);
  288. testService.onGenreportProgress.connect(qmlProcessReportProgress);
  289. testService.sigStop.connect(qmlProcessStop);
  290. console.log("main.qml tservice init: 222" )
  291. }
  292. function delay(duration) { // In milliseconds
  293. var timeStart = new Date().getTime();
  294. while (new Date().getTime() - timeStart < duration) {
  295. // Do nothing
  296. }
  297. // Duration has passed
  298. }
  299. function qmlProcessReportProgress(str){
  300. console.log("main.qml tservice qmlProcessReportProgress:", str )
  301. if(str === "close"){
  302. genreportprogress.exit()
  303. if(popupCenter.item_opened == true){
  304. popupCenter.close()
  305. }
  306. }else{
  307. genreportprogress.show(str)
  308. }
  309. }
  310. function qmlProcessNotice(str){
  311. console.log("main.qml tservice qmlProcessNotice: enter [%s]", str )
  312. log.show(str)
  313. }
  314. function qmlProcessWarning(str){
  315. console.log("main.qml tservice init: 222 [%s]", str )
  316. //log.show2(str)
  317. //id_mesDialog.text = str+", 是否继续?";
  318. //id_mesDialog.open()
  319. }
  320. function getTestPage(id){
  321. var page_var
  322. switch(id){
  323. case 1:page_var = page_recoveryvalve1
  324. break
  325. case 2:page_var = page_recoveryvalve2
  326. break
  327. case 3:page_var = page_recoveryvalve3
  328. break
  329. case 4:page_var = page_recoveryvalve4
  330. break
  331. /*
  332. case 5:page_var = page_recoveryvalve5
  333. break
  334. case 6:page_var = page_recoveryvalve6
  335. break
  336. case 7:page_var = page_recoveryvalve7
  337. break
  338. case 8:page_var = page_recoveryvalve8
  339. break
  340. */
  341. default:
  342. page_var = page_recoveryvalve1
  343. break;
  344. }
  345. return page_var
  346. }
  347. function qmlProcessPressure(id, map){
  348. //console.log("main.qml qmlProcessPressure ",id )
  349. //log.show2(str)
  350. //var textstring = ''
  351. //var varmap = map
  352. //textstring += map.pressure+":"
  353. //textstring += map.direction.toString()+":"
  354. //textstring += map.stage.toString()+":"
  355. //textstring += map.step.toString()+":"
  356. //console.log("main.qml qmlProcessPressure :",textstring.toString() )
  357. if((id >= 1) &&(id<=rootitem.max_compartment_num)){
  358. var page_var = getTestPage(id)
  359. page_var.update_pressure(map);
  360. }else if(id === 0){
  361. //pagetest.show_pressure(map.pressure)
  362. }
  363. //console.log("show compartment ",id, str )
  364. }
  365. function qmlProcessState(id, str1, str2){
  366. if((id >= 1) &&(id<=rootitem.max_compartment_num)){
  367. var page_var = getTestPage(id)
  368. page_var.update_runstate(str1, str2)
  369. }else if(id === 0){
  370. //pagetest.show_selftestState(str1)
  371. console.log("qmlProcessState pagetest ",id, str1 )
  372. }
  373. }
  374. function qmlProcessSystemResult(id, str, bPassed){
  375. if((id >= 1) &&(id<=rootitem.max_compartment_num)){
  376. var page_var = getTestPage(id)
  377. page_var.show_systemresult(str, bPassed)
  378. }
  379. }
  380. function qmlProcessValveResult(id, str, bPassed){
  381. if((id >= 1) &&(id<=rootitem.max_compartment_num)){
  382. var page_var = getTestPage(id)
  383. page_var.show_valveresult(str, bPassed)
  384. }
  385. }
  386. function qmlProcessSelfResult(id, str, bPassed){
  387. if(id === 0){
  388. if(bPassed){
  389. pagetest.show_selftestResult("通过")
  390. //pagetest.show_selftestResult(str)
  391. }else{
  392. pagetest.show_selftestResult("未通过")
  393. //pagetest.show_selftestResult(str)
  394. }
  395. //pagetest.show_selftestDetail(str)
  396. }
  397. }
  398. function qmlProcessStop(id){
  399. if((id >= 1) &&(id<=rootitem.max_compartment_num)){
  400. var page_var = getTestPage(id)
  401. page_var.test_stoped()
  402. if(testService.check_alltest_ok(0))
  403. {
  404. qmlshowPopupCenter(com_leakage)
  405. }
  406. }else if(id === 0){
  407. //pagetest.selftestStop()
  408. console.log("qmlProcessStop pagetest ",id )
  409. }
  410. }
  411. function qmlshowPopupCenter(raiseItem){
  412. popupCenter.raiseItem = raiseItem
  413. popupCenter.open()
  414. }
  415. }