Kstars

DetailsDialog.qml
1 // SPDX-FileCopyrightText: 2016 Artem Fedoskin <[email protected]>
2 // SPDX-License-Identifier: GPL-2.0-or-later
3 
4 import QtQuick 2.7
5 import QtQuick.Window 2.2
6 import QtQuick.Controls 2.0
7 import QtQuick.Layouts 1.3
8 import "helpers"
9 import "menus"
10 import "../modules"
11 import "../constants" 1.0
12 
13 KSPage {
14  title: SkyMapLite.clickedObjectLite.translatedName + " - " + tabBar.currentItem.text
15  Item {
16  anchors.fill: parent
17 
18  TabBar {
19  id: tabBar
20  property bool isTab: true
21  spacing: 20
22  currentIndex: detailsSwipeView.currentIndex
23  anchors {
24  top: parent.top
25  left: parent.left
26  right: parent.right
27  }
28  background: Rectangle {
29  anchors.fill: parent
30  color: Num.sysPalette.base
31  }
32 
33  KSTabButton {
34  text: xi18n("General")
35  }
36 
37  KSTabButton {
38  text: xi18n("Position")
39  }
40 
41  KSTabButton {
42  Component.onCompleted: {
43  var oldParent = parent
44  parent = Qt.binding(function() { return DetailDialogLite.isLinksOn ? oldParent : null })
45  }
46 
47  text: xi18n("Links")
48  }
49 
50  KSTabButton {
51  Component.onCompleted: {
52  var oldParent = parent
53  parent = Qt.binding(function() { return DetailDialogLite.isLogOn ? oldParent : null })
54  }
55  text: xi18n("Log")
56  }
57  }
58 
59  SwipeView {
60  id: detailsSwipeView
61  anchors {
62  top:tabBar.bottom
63  topMargin: 10
64  left: parent.left
65  right: parent.right
66  bottom: parent.bottom
67  }
68 
69  currentIndex: tabBar.currentIndex
70  clip: true
71 
72  Pane {
73  clip: true
74 
75  background: Rectangle {
76  anchors.fill: parent
77  color: Num.sysPalette.base
78  }
79 
80  Flickable {
81  anchors.fill: parent
82  ScrollBar.vertical: ScrollBar { }
83  flickableDirection: Flickable.VerticalFlick
84 
85  contentHeight: generalCol.height
86 
87  Column {
88  id: generalCol
89  width: parent.width
90  spacing: 15
91 
92  KSText {
93  text: DetailDialogLite.name
94  font.pointSize: 16
95  width: parent.width
96  wrapMode: Text.Wrap
97  horizontalAlignment: Text.AlignHCenter
98  }
99 
100  Image {
101  source: DetailDialogLite.thumbnail
102  anchors.horizontalCenter: parent.horizontalCenter
103  }
104 
105  KSText {
106  text: DetailDialogLite.typeInConstellation
107  anchors.horizontalCenter: parent.horizontalCenter
108  font.pointSize: 12
109  }
110 
111  Column {
112  id: telescopesCol
113  width: parent.width
114  property var telescopeControls: []
115 
116  Connections {
117  target: ClientManagerLite
118  onTelescopeAdded: {
119  var controls = Qt.createComponent("helpers/TelescopeControl.qml")
120  var controlsObj = controls.createObject(telescopesCol)
121  controlsObj.telescope = newTelescope
122  telescopesCol.telescopeControls.push(controlsObj)
123 
124  }
125 
126  onTelescopeRemoved: {
127  for(var i = 0; i < telescopesCol.telescopeControls.length; ++i) {
128  if(telescopesCol.telescopeControls[i].telescope == delTelescope) {
129  telescopesCol.telescopeControls[i].parent = null
130  telescopesCol.telescopeControls[i].destroy()
131  }
132  }
133  }
134  }
135  }
136 
137  DetailsItem {
138  label: xi18n("Magnitude")
139  value: DetailDialogLite.magnitude
140  }
141 
142  DetailsItem {
143  label: xi18n("Distance")
144  value: DetailDialogLite.distance
145  }
146 
147  DetailsItem {
148  label: xi18n("B - V Index")
149  value: DetailDialogLite.BVindex
150  }
151 
152  DetailsItem {
153  label: xi18n("Size")
154  value: DetailDialogLite.angSize
155  }
156 
157  DetailsItem {
158  label: xi18n("Illumination")
159  value: DetailDialogLite.illumination
160  }
161 
162  DetailsItem {
163  label: xi18n("Perihelion")
164  value: DetailDialogLite.perihelion
165  }
166 
167  DetailsItem {
168  label: xi18n("OrbitID")
169  value: DetailDialogLite.orbitID
170  }
171 
172  DetailsItem {
173  label: xi18n("NEO")
174  value: DetailDialogLite.NEO
175  }
176 
177  DetailsItem {
178  label: xi18n("Diameter")
179  value: DetailDialogLite.diameter
180  }
181 
182  DetailsItem {
183  label: xi18n("Rotation period")
184  value: DetailDialogLite.rotation
185  }
186 
187  DetailsItem {
188  label: xi18n("EarthMOID")
189  value: DetailDialogLite.earthMOID
190  }
191 
192  DetailsItem {
193  label: xi18n("OrbitClass")
194  value: DetailDialogLite.orbitClass
195  }
196 
197  DetailsItem {
198  label: xi18n("Albedo")
199  value: DetailDialogLite.albedo
200  }
201 
202  DetailsItem {
203  label: xi18n("Dimensions")
204  value: DetailDialogLite.dimensions
205  }
206 
207  DetailsItem {
208  label: xi18n("Period")
209  value: DetailDialogLite.period
210  }
211  }
212  }
213  }
214 
215  Pane {
216  clip: true
217 
218  background: Rectangle {
219  anchors.fill: parent
220  color: Num.sysPalette.base
221  }
222 
223  Flickable {
224  anchors.fill: parent
225  ScrollBar.vertical: ScrollBar { }
226  flickableDirection: Flickable.VerticalFlick
227 
228  contentHeight: coordinatesCol.height
229 
230  Column {
231  id: coordinatesCol
232  width: parent.width
233  spacing: 15
234 
235  KSText {
236  text: xi18n("Coordinates")
237  font {
238  pointSize: 16
239  }
240  anchors.horizontalCenter: parent.horizontalCenter
241  }
242 
243  DetailsItem {
244  label: DetailDialogLite.RALabel
245  value: DetailDialogLite.RA
246  }
247 
248  DetailsItem {
249  label: DetailDialogLite.decLabel
250  value: DetailDialogLite.dec
251  }
252 
253  DetailsItem {
254  label: xi18n("RA (J2000.0)")
255  value: DetailDialogLite.RA0
256  }
257 
258  DetailsItem {
259  label: xi18n("Dec (J2000.0)")
260  value: DetailDialogLite.dec0
261  }
262 
263  DetailsItem {
264  label: xi18n("Azimuth")
265  value: DetailDialogLite.az
266  }
267 
268  DetailsItem {
269  label: xi18n("Altitude")
270  value: DetailDialogLite.alt
271  }
272 
273  DetailsItem {
274  label: xi18n("Hour angle")
275  value: DetailDialogLite.HA
276  }
277 
278  DetailsItem {
279  label: xi18n("Airmass")
280  value: DetailDialogLite.airmass
281  }
282 
283  KSText {
284  text: xi18n("Rise/Set/Transit")
285  font {
286  pointSize: 16
287  }
288  anchors.horizontalCenter: parent.horizontalCenter
289  }
290 
291  DetailsItem {
292  label: xi18n("Rise time")
293  value: DetailDialogLite.timeRise
294  }
295 
296  DetailsItem {
297  label: xi18n("Transit time")
298  value: DetailDialogLite.timeTransit
299  }
300 
301  DetailsItem {
302  label: xi18n("Set time")
303  value: DetailDialogLite.timeSet
304  }
305 
306  DetailsItem {
307  label: xi18n("Azimuth at rise")
308  value: DetailDialogLite.azRise
309  }
310 
311  DetailsItem {
312  label: xi18n("Azimuth at transit")
313  value: DetailDialogLite.altTransit
314  }
315 
316  DetailsItem {
317  label: xi18n("Azimuth at set")
318  value: DetailDialogLite.azSet
319  }
320  }
321  }
322  }
323 
324  Pane {
325  parent: DetailDialogLite.isLinksOn ? detailsSwipeView : null
326  clip: true
327  id: links
328 
329  background: Rectangle {
330  anchors.fill: parent
331  color: Num.sysPalette.base
332  }
333 
334  GridLayout {
335  id: linkCol
336  rowSpacing: 15
337  anchors {
338  top: parent.top
339  left: parent.left
340  right: parent.right
341  bottom: addInfoLandscape.top
342  }
343 
344  flow: window.isPortrait ? GridLayout.TopToBottom : GridLayout.LeftToRight
345 
346  ColumnLayout {
347  id: infoCol
348 
349  Layout.fillWidth: true
350  Layout.fillHeight: true
351  Layout.minimumWidth: parent.width/2
352 
353  spacing: 10
354 
355  KSText {
356  id: infoLabel
357  text: xi18n("Information Links")
358 
359  font.pointSize: 16
360  anchors.horizontalCenter: parent.horizontalCenter
361  }
362 
363  Rectangle {
364  id: infoSeparator
365  Layout.fillWidth: true
366  height: 1
367  color: "grey"
368  }
369 
370  KSListView {
371  Layout.fillHeight: true
372  Layout.fillWidth: true
373 
374  model: DetailDialogLite.infoTitleList
375 
376  onClicked: {
377  detailsLinkMenu.openForInfo(index)
378  }
379  }
380  }
381 
382  ColumnLayout {
383  id: imgCol
384 
385  Layout.fillWidth: true
386  Layout.fillHeight: true
387  Layout.minimumWidth: parent.width/2
388 
389  spacing: 10
390 
391  KSText {
392  id: imgLabel
393  text: xi18n("Image Links")
394 
395  font.pointSize: 16
396  anchors.horizontalCenter: parent.horizontalCenter
397  }
398 
399  Rectangle {
400  id: imgSeparator
401  Layout.fillWidth: true
402  height: 1
403  color: "grey"
404  }
405 
406  KSListView {
407  Layout.fillHeight: true
408  Layout.fillWidth: true
409 
410  model: DetailDialogLite.imageTitleList
411 
412  onClicked: {
413  detailsLinkMenu.openForImage(index)
414  }
415  }
416  }
417  }
418 
419  Button {
420  id: addInfoLandscape
421  text: xi18n("Add Link")
422 
423  anchors.bottom: parent.bottom
424 
425  onClicked: {
426  detailsAddLink.openAdd()
427  }
428  }
429  }
430 
431  Pane {
432  parent: DetailDialogLite.isLogOn ? detailsSwipeView : null
433  clip: true
434 
435  background: Rectangle {
436  anchors.fill: parent
437  color: Num.sysPalette.base
438  }
439 
440  Flickable {
441  anchors.fill: parent
442  ScrollBar.vertical: ScrollBar { }
443  flickableDirection: Flickable.VerticalFlick
444 
445  contentHeight: logCol.height
446 
447  Column {
448  id: logCol
449  width: parent.width
450  spacing: 15
451 
452  KSText {
453  text: xi18n("Log")
454  font {
455  pointSize: 16
456  }
457  anchors.horizontalCenter: parent.horizontalCenter
458  }
459 
460  TextArea {
461  id: logArea
462  placeholderText: i18n("Record here observation logs and/or data on %1.", SkyMapLite.clickedObjectLite.getTranslatedName())
463  padding: 5
464  width: parent.width
465  wrapMode: TextArea.Wrap
466  text: DetailDialogLite.userLog
467 
468  Connections {
469  target: DetailDialogLite
470  onUserLogChanged: {
471  logArea.text = DetailDialogLite.userLog
472  }
473  }
474 
475  onEditingFinished: {
476  DetailDialogLite.saveLogData(text)
477  }
478 
479  background: Rectangle {
480  implicitWidth: parent.width
481  implicitHeight: 40
482  border{
483  color: Num.sysPalette.base
484  width: 2
485  }
486  }
487  }
488  }
489  }
490  }
491  }
492  }
493 }
494 
495 
496 
QTextStream & right(QTextStream &stream)
QTextStream & left(QTextStream &stream)
This qml code implements a vertical scrollbar which shall be displayed in listview of sky-objects.
Definition: ScrollBar.qml:9
QString xi18n(const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
QTextStream & left(QTextStream &s)
QString label(StandardShortcut id)
QTextStream & right(QTextStream &s)
Item for displaying sky objects; also handles user interaction events.
Definition: skymaplite.h:58
KJOBWIDGETS_EXPORT QWidget * window(KJob *job)
Q_INVOKABLE QString getTranslatedName()
QString & fill(QChar ch, int size)
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Fri Aug 12 2022 04:00:53 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.