KOSMIndoorMap

IndoorMapScale.qml
1 /*
2  SPDX-FileCopyrightText: 2020 Volker Krause <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 import QtQuick 2.12
8 import QtQuick.Controls 2.12 as QQC2
9 
10 Item {
11  id: root
12  property var map
13 
14  implicitHeight: background.height
15  visible: !map.mapLoader.isLoading && !map.hasError
16 
17  property int __margin: 2
18 
19  function updateScale() {
20  var d = map.view.mapScreenToMeters(background.width - 2 * __margin);
21  var s = d < 5 ? 1 : d < 20 ? 5 : d < 100 ? 10 : 20;
22  d /= s;
23  d = Math.floor(d);
24  d *= s;
25  scaleLabel.text = i18ndc("kosmindoormap", "length in meters", "%1 m", d)
26  scale.width = map.view.mapMetersToScreen(d);
27  }
28 
29  Rectangle {
30  id: background
31  color: scaleLabel.palette.base
32  opacity: 0.5
33  height: scaleLabel.implicitHeight + scale.height + 2 * __margin
34  width: root.width
35  }
36 
37  QQC2.Label {
38  id: scaleLabel
39  anchors.bottom: scale.top
40  anchors.horizontalCenter: scale.horizontalCenter
41  }
42 
43  Rectangle {
44  id: scale
45  anchors.bottom: root.bottom
46  anchors.left: root.left
47  anchors.margins: __margin
48  height: 4
49  color: scaleLabel.color
50  }
51 
52  Component.onCompleted: root.updateScale()
53 
54  Connections {
55  target: root.map.view
56  function onTransformationChanged() { root.updateScale(); }
57  }
58  Connections {
59  target: root
60  function onWidthChanged() { root.updateScale(); }
61  }
62 }
QString i18ndc(const char *domain, const char *context, const char *text, const TYPE &arg...)
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Oct 25 2021 23:04:00 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.