Fix location delegates

- Mark OSMLocationPlugina as singleton in cmake
- Use this plugin for the LocationChooser
This commit is contained in:
Tobias Fella
2024-03-29 13:23:30 +01:00
parent 878eb48cb0
commit 92351edcd0
6 changed files with 30 additions and 41 deletions

View File

@@ -174,6 +174,10 @@ add_library(neochat STATIC
sharehandler.h
)
set_source_files_properties(qml/OsmLocationPlugin.qml PROPERTIES
QT_QML_SINGLETON_TYPE TRUE
)
qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src/org/kde/neochat
QML_FILES

View File

@@ -47,10 +47,12 @@ ApplicationWindow {
isLive: true
heading: NaN
visible: !isNaN(root.latitude) && !isNaN(root.longitude)
Component.onCompleted: mapView.map.addMapItem(this)
}
MapItemView {
model: root.liveLocationModel
delegate: LocationMapItem {}
Component.onCompleted: mapView.map.addMapItemView(this)
}
Connections {

View File

@@ -35,52 +35,25 @@ Components.AbstractMaximizeComponent {
content: MapView {
id: mapView
map.plugin: Plugin {
name: "osm"
PluginParameter {
name: "osm.useragent"
value: Application.name + "/" + Application.version + " (kde-devel@kde.org)"
}
PluginParameter {
name: "osm.mapping.providersrepository.address"
value: "https://autoconfig.kde.org/qtlocation/"
}
}
map.plugin: OsmLocationPlugin.plugin
MouseArea {
anchors.fill: parent
onClicked: {
root.location = mapView.map.toCoordinate(Qt.point(mouseX, mouseY), false);
mapView.map.addMapItem(mapView.locationMapItem);
}
}
MapQuickItem {
id: point
visible: root.location
anchorPoint.x: sourceItem.width / 2
anchorPoint.y: sourceItem.height * 0.85
coordinate: root.location
autoFadeIn: false
sourceItem: Kirigami.Icon {
width: height
height: Kirigami.Units.iconSizes.huge
source: "gps"
isMask: true
color: Kirigami.Theme.highlightColor
Kirigami.Icon {
anchors.centerIn: parent
anchors.verticalCenterOffset: -parent.height / 8
width: height
height: parent.height / 3 + 1
source: "pin"
isMask: true
color: Kirigami.Theme.highlightColor
}
}
readonly property LocationMapItem locationMapItem: LocationMapItem {
latitude: root.location.latitude
longitude: root.location.longitude
isLive: false
heading: NaN
asset: null
author: null
}
Connections {
target: mapView.map
function onCopyrightLinkActivated() {

View File

@@ -29,17 +29,22 @@ Kirigami.Page {
map.zoomLevel: LocationHelper.zoomToFit(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox), mapView.width, mapView.height)
MapItemView {
Component.onCompleted: mapView.map.addMapItemView(this)
anchors.fill: parent
model: LocationsModel {
id: locationsModel
room: root.room
}
delegate: LocationMapItem {
isLive: true
isLive: false
heading: NaN
}
}
MapItemView {
Component.onCompleted: mapView.map.addMapItemView(this)
anchors.fill: parent
model: LiveLocationsModel {
id: liveLocationsModel
room: root.room
@@ -49,7 +54,7 @@ Kirigami.Page {
Kirigami.PlaceholderMessage {
text: i18n("There are no locations shared in this room.")
visible: mapView.mapItems.length === 0
visible: mapView.map.mapItems.length === 0
anchors.centerIn: parent
}
Connections {

View File

@@ -7,11 +7,14 @@ import QtQuick
import QtLocation
QtObject {
id: root
property string userAgent: Application.name + "/" + Application.version + " (kde-devel@kde.org)"
property var plugin: Plugin {
name: "osm"
PluginParameter {
name: "osm.useragent"
value: Application.name + "/" + Application.version + " (kde-devel@kde.org)"
value: root.userAgent
}
PluginParameter {
name: "osm.mapping.providersrepository.address"

View File

@@ -76,7 +76,7 @@ ColumnLayout {
map.plugin: OsmLocationPlugin.plugin
LocationMapItem {
readonly property LocationMapItem locationMapItem: LocationMapItem {
latitude: root.latitude
longitude: root.longitude
asset: root.asset
@@ -85,6 +85,8 @@ ColumnLayout {
heading: NaN
}
Component.onCompleted: map.addMapItem(locationMapItem)
TapHandler {
acceptedButtons: Qt.LeftButton
onTapped: {