Warning, /network/neochat/src/qml/LocationMapItem.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
0002 // SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004
0005 import QtQuick
0006 import QtQuick.Controls
0007 import QtQuick.Layouts
0008 import QtLocation
0009 import QtPositioning
0010
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.kirigamiaddons.labs.components as KirigamiComponents
0013
0014 import org.kde.neochat
0015
0016 /** Location marker for any of the shared location maps. */
0017 MapQuickItem {
0018 id: root
0019 required property real latitude
0020 required property real longitude
0021
0022 required property string asset
0023 required property var author
0024
0025 required property bool isLive
0026
0027 required property real heading
0028
0029 anchorPoint.x: sourceItem.width / 2
0030 anchorPoint.y: sourceItem.height
0031 coordinate: QtPositioning.coordinate(root.latitude, root.longitude)
0032 autoFadeIn: false
0033 sourceItem: Kirigami.Icon {
0034 id: mainIcon
0035 width: height
0036 height: Kirigami.Units.iconSizes.huge
0037 source: "gps"
0038 isMask: true
0039 color: root.isLive ? Kirigami.Theme.highlightColor : Kirigami.Theme.disabledTextColor
0040
0041 Kirigami.Icon {
0042 anchors.centerIn: parent
0043 anchors.verticalCenterOffset: -parent.height / 8
0044 visible: root.asset === "m.pin"
0045 width: height
0046 height: parent.height / 3 + 1
0047 source: "pin"
0048 isMask: true
0049 color: parent.color
0050 }
0051 KirigamiComponents.Avatar {
0052 anchors.centerIn: parent
0053 anchors.verticalCenterOffset: -parent.height / 8
0054 visible: root.asset === "m.self"
0055 width: height
0056 height: parent.height / 3 + 1
0057 name: root.author.displayName
0058 source: root.author.avatarSource
0059 color: root.author.color
0060 }
0061
0062 Kirigami.Icon {
0063 id: headingIcon
0064 source: "go-up-symbolic"
0065 color: parent.color
0066 visible: !isNaN(root.heading) && root.isLive
0067 anchors.bottom: mainIcon.top
0068 anchors.horizontalCenter: mainIcon.horizontalCenter
0069 transform: Rotation {
0070 origin.x: headingIcon.width / 2
0071 origin.y: headingIcon.height + mainIcon.height / 2
0072 angle: root.heading
0073 }
0074 }
0075 }
0076 }