Warning, /education/kstars/kstars/kstarslite/qml/indi/DevicePanel.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2016 Artem Fedoskin <afedoskin3@gmail.com> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 import QtQuick 2.8 0005 import QtQuick.Window 2.2 0006 import "../modules" 0007 import "../constants" 1.0 0008 import QtQuick.Layouts 1.2 0009 import QtQuick.Controls 2.0 0010 0011 KSPage { 0012 id: devicesPage 0013 title: devicesPage.deviceName + " - " + tabBar.currentItem.text 0014 0015 property string deviceName 0016 property ImagePreview imagePreview: null 0017 0018 ColumnLayout { 0019 anchors.fill: parent 0020 0021 Item { 0022 anchors { 0023 left: parent.left 0024 right: parent.right 0025 } 0026 height: tabBar.height 0027 0028 KSTabBarArrow { 0029 imgSource: "../images/left-arrow.png" 0030 tabBar: tabBar 0031 state: { 0032 if(!tabBar.contentItem.atXBeginning) { 0033 return "Visible" 0034 } else { 0035 return "Invisible" 0036 } 0037 } 0038 anchors { 0039 left: parent.left 0040 top: parent.top 0041 bottom: parent.bottom 0042 } 0043 } 0044 0045 KSTabBarArrow { 0046 imgSource: "../images/right-arrow.png" 0047 tabBar: tabBar 0048 state: { 0049 if(!tabBar.contentItem.atXEnd) { 0050 return "Visible" 0051 } else { 0052 return "Invisible" 0053 } 0054 } 0055 anchors { 0056 right: parent.right 0057 top: parent.top 0058 bottom: parent.bottom 0059 } 0060 flickSpeed: -1000 0061 } 0062 0063 TabBar { 0064 id: tabBar 0065 Layout.fillHeight: true 0066 anchors { 0067 left: parent.left 0068 right: parent.right 0069 } 0070 clip: true 0071 spacing: 20 0072 Component.onCompleted: { 0073 contentItem.flickDeceleration = 1000 0074 } 0075 0076 background: Rectangle { 0077 color: Num.sysPalette.base 0078 } 0079 } 0080 } 0081 0082 SwipeView { 0083 id: deviceSwipeView 0084 Layout.fillHeight: true 0085 Layout.fillWidth: true 0086 currentIndex: tabBar.currentIndex 0087 clip: true 0088 0089 property var groups: [] 0090 property var properties: [] 0091 property var tabs: [] 0092 0093 onCurrentIndexChanged: { 0094 tabBar.currentIndex = currentIndex 0095 } 0096 0097 Connections { 0098 target: ClientManagerLite 0099 onNewINDIProperty: { 0100 if(devicesPage.deviceName === deviceName) { 0101 if(deviceSwipeView.groups.indexOf(groupName) == -1) { 0102 deviceSwipeView.groups.push(groupName) 0103 var newTabComp = Qt.createComponent("../modules/KSTab.qml"); 0104 var newTab = newTabComp.createObject(deviceSwipeView) 0105 newTab.title = groupName 0106 0107 var columnForTab = Qt.createQmlObject('import QtQuick 2.7 0108 import QtQuick.Layouts 1.3 0109 Column { 0110 spacing: 5 0111 }', newTab.contentItem) 0112 0113 newTab.rootItem = columnForTab 0114 var tabButton = Qt.createQmlObject('import QtQuick 2.7; 0115 import QtQuick.Controls 2.0 0116 import "../modules" 0117 KSTabButton {}', 0118 tabBar); 0119 tabButton.text = groupName 0120 if(tabBar.count == 1) { 0121 //Without notifying about adding first item to tabBar title of devicesPage won't be updated 0122 tabBar.currentItemChanged() 0123 } 0124 0125 deviceSwipeView.tabs.push(newTab) 0126 if(groupName == "Motion Control") { 0127 var component = Qt.createComponent("modules/MotionControl.qml"); 0128 var motionControl = component.createObject(newTab) 0129 motionControl.deviceName = deviceName 0130 } 0131 } 0132 0133 if(groupName != "Motion Control") { 0134 for(var i = 0; i < deviceSwipeView.tabs.length; ++i) { 0135 var tab = deviceSwipeView.tabs[i] 0136 if(tab.title === groupName) { 0137 var propComp = Qt.createComponent("modules/Property.qml"); 0138 var property = propComp.createObject(tab.rootItem) 0139 property.propName = propName 0140 property.label = label 0141 property.deviceName = deviceName 0142 property.parentTab = tab 0143 if(propName == "CCD_EXPOSURE" && devicesPage.imagePreview == null) { 0144 var imgPreviewComp = Qt.createComponent("ImagePreview.qml"); 0145 devicesPage.imagePreview = imgPreviewComp.createObject(window) 0146 devicesPage.imagePreview.deviceName = devicesPage.deviceName 0147 } 0148 } 0149 } 0150 } 0151 } 0152 } 0153 0154 onRemoveINDIProperty: { 0155 for(var i = 0; i < deviceSwipeView.tabs.length; ++i) { 0156 var tab = deviceSwipeView.tabs[i] 0157 if(tab.title === groupName && groupName != "Motion Control") { 0158 var contentItem = deviceSwipeView.tabs[i].rootItem 0159 for(var c = 0; c < contentItem.children.length; ++c) { 0160 if(contentItem.children[c].propName === propName) { 0161 contentItem.children[c].destroy() 0162 } 0163 } 0164 if(contentItem.children.length == 0) { 0165 var groups = deviceSwipeView.groups 0166 groups.splice(groups.indexOf(groupName), 1) 0167 tab.destroy() 0168 } 0169 /*if(propName == "CCD_EXPOSURE" && devicesPage.imagePreview != null) { 0170 imgPreview.destroy() 0171 }*/ 0172 } 0173 } 0174 } 0175 } 0176 } 0177 } 0178 }