mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Compare commits
7 commits
a149434511
...
4b9c7e820f
Author | SHA1 | Date | |
---|---|---|---|
|
4b9c7e820f | ||
|
8212b28641 | ||
|
f60f01838c | ||
|
f7d32c850d | ||
|
9bd1631103 | ||
|
7201a40c5f | ||
|
c5e5535f51 |
6 changed files with 72 additions and 89 deletions
|
@ -12,7 +12,7 @@ jobs:
|
||||||
windows-mxe:
|
windows-mxe:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
VERSION: ${{ '3.2.0' }} # 'official' images should have a dot-zero version
|
VERSION: ${{ '3.3.0' }} # 'official' images should have a dot-zero version
|
||||||
mxe_sha: '974808c2ecb02866764d236fe533ae57ba342e7a'
|
mxe_sha: '974808c2ecb02866764d236fe533ae57ba342e7a'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
import QtQuick 2.5
|
import QtQuick
|
||||||
import QtLocation 5.3
|
import QtLocation
|
||||||
import QtPositioning 5.3
|
import QtPositioning
|
||||||
import org.subsurfacedivelog.mobile 1.0
|
import org.subsurfacedivelog.mobile 1.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
@ -15,7 +15,7 @@ Item {
|
||||||
id: mapHelper
|
id: mapHelper
|
||||||
map: map
|
map: map
|
||||||
editMode: false
|
editMode: false
|
||||||
onSelectedDivesChanged: rootItem.selectedDivesChanged(list)
|
onSelectedDivesChanged: (list) => { rootItem.selectedDivesChanged(list) }
|
||||||
onEditModeChanged: editMessage.isVisible = editMode === true ? 1 : 0
|
onEditModeChanged: editMessage.isVisible = editMode === true ? 1 : 0
|
||||||
onCoordinatesChanged: {}
|
onCoordinatesChanged: {}
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
|
@ -29,7 +29,6 @@ Item {
|
||||||
id: map
|
id: map
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
zoomLevel: defaultZoomIn
|
zoomLevel: defaultZoomIn
|
||||||
|
|
||||||
property var mapType
|
property var mapType
|
||||||
readonly property var defaultCenter: QtPositioning.coordinate(0, 0)
|
readonly property var defaultCenter: QtPositioning.coordinate(0, 0)
|
||||||
readonly property real defaultZoomIn: 12.0
|
readonly property real defaultZoomIn: 12.0
|
||||||
|
@ -41,12 +40,46 @@ Item {
|
||||||
property real newZoomOut: 1.0
|
property real newZoomOut: 1.0
|
||||||
property var clickCoord: QtPositioning.coordinate(0, 0)
|
property var clickCoord: QtPositioning.coordinate(0, 0)
|
||||||
property bool isReady: false
|
property bool isReady: false
|
||||||
|
|
||||||
Component.onCompleted: isReady = true
|
Component.onCompleted: isReady = true
|
||||||
onZoomLevelChanged: {
|
onZoomLevelChanged: {
|
||||||
if (isReady)
|
if (isReady)
|
||||||
mapHelper.calculateSmallCircleRadius(map.center)
|
mapHelper.calculateSmallCircleRadius(map.center)
|
||||||
}
|
}
|
||||||
|
property geoCoordinate startCentroid
|
||||||
|
startCentroid: newCenter
|
||||||
|
|
||||||
|
PinchHandler {
|
||||||
|
id: pinch
|
||||||
|
target: null
|
||||||
|
onActiveChanged: if (active) {
|
||||||
|
map.startCentroid = map.toCoordinate(pinch.centroid.position, false)
|
||||||
|
}
|
||||||
|
onScaleChanged: (delta) => {
|
||||||
|
map.zoomLevel += Math.log2(delta)
|
||||||
|
map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position)
|
||||||
|
}
|
||||||
|
onRotationChanged: (delta) => {
|
||||||
|
map.bearing -= delta
|
||||||
|
map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position)
|
||||||
|
}
|
||||||
|
grabPermissions: PointerHandler.TakeOverForbidden
|
||||||
|
}
|
||||||
|
WheelHandler {
|
||||||
|
id: wheel
|
||||||
|
// workaround for QTBUG-87646 / QTBUG-112394 / QTBUG-112432:
|
||||||
|
// Magic Mouse pretends to be a trackpad but doesn't work with PinchHandler
|
||||||
|
// and we don't yet distinguish mice and trackpads on Wayland either
|
||||||
|
acceptedDevices: Qt.platform.pluginName === "cocoa" || Qt.platform.pluginName === "wayland"
|
||||||
|
? PointerDevice.Mouse | PointerDevice.TouchPad
|
||||||
|
: PointerDevice.Mouse
|
||||||
|
rotationScale: 1/120
|
||||||
|
property: "zoomLevel"
|
||||||
|
}
|
||||||
|
DragHandler {
|
||||||
|
id: drag
|
||||||
|
target: null
|
||||||
|
onTranslationChanged: (delta) => map.pan(-delta.x, -delta.y)
|
||||||
|
}
|
||||||
|
|
||||||
MapItemView {
|
MapItemView {
|
||||||
id: mapItemView
|
id: mapItemView
|
||||||
|
@ -68,6 +101,8 @@ Item {
|
||||||
MouseArea {
|
MouseArea {
|
||||||
drag.target: (mapHelper.editMode && model.isSelected) ? mapItem : undefined
|
drag.target: (mapHelper.editMode && model.isSelected) ? mapItem : undefined
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (!mapHelper.editMode && model.divesite)
|
if (!mapHelper.editMode && model.divesite)
|
||||||
mapHelper.selectedLocationChanged(model.divesite)
|
mapHelper.selectedLocationChanged(model.divesite)
|
||||||
|
@ -122,8 +157,8 @@ Item {
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onPressed: { map.stopZoomAnimations(); mouse.accepted = false }
|
onPressed: (mouse) => { map.stopZoomAnimations(); mouse.accepted = false }
|
||||||
onWheel: { map.stopZoomAnimations(); wheel.accepted = false }
|
onWheel: (wheel) => { map.stopZoomAnimations(); wheel.accepted = false }
|
||||||
onDoubleClicked: map.doubleClickHandler(map.toCoordinate(Qt.point(mouseX, mouseY)))
|
onDoubleClicked: map.doubleClickHandler(map.toCoordinate(Qt.point(mouseX, mouseY)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,15 +4,15 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
#include "qmlmapwidgethelper.h"
|
|
||||||
#include "core/divefilter.h"
|
#include "core/divefilter.h"
|
||||||
#include "core/divelist.h"
|
#include "core/divelist.h"
|
||||||
#include "core/divelog.h"
|
#include "core/divelog.h"
|
||||||
#include "core/divesite.h"
|
#include "core/divesite.h"
|
||||||
#include "core/qthelper.h"
|
#include "core/qthelper.h"
|
||||||
#include "core/range.h"
|
#include "core/range.h"
|
||||||
#include "qt-models/maplocationmodel.h"
|
#include "qmlmapwidgethelper.h"
|
||||||
#include "qt-models/divelocationmodel.h"
|
#include "qt-models/divelocationmodel.h"
|
||||||
|
#include "qt-models/maplocationmodel.h"
|
||||||
#ifndef SUBSURFACE_MOBILE
|
#ifndef SUBSURFACE_MOBILE
|
||||||
#include "desktop-widgets/mapwidget.h"
|
#include "desktop-widgets/mapwidget.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,7 +44,7 @@ void MapWidgetHelper::centerOnDiveSite(struct dive_site *ds)
|
||||||
} else {
|
} else {
|
||||||
// dive site with GPS
|
// dive site with GPS
|
||||||
m_mapLocationModel->setSelected(ds);
|
m_mapLocationModel->setSelected(ds);
|
||||||
QGeoCoordinate dsCoord (ds->location.lat.udeg * 0.000001, ds->location.lon.udeg * 0.000001);
|
QGeoCoordinate dsCoord(ds->location.lat.udeg * 0.000001, ds->location.lon.udeg * 0.000001);
|
||||||
QMetaObject::invokeMethod(m_map, "centerOnCoordinate", Q_ARG(QVariant, QVariant::fromValue(dsCoord)));
|
QMetaObject::invokeMethod(m_map, "centerOnCoordinate", Q_ARG(QVariant, QVariant::fromValue(dsCoord)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ void MapWidgetHelper::centerOnSelectedDiveSite()
|
||||||
// find the most top-left and bottom-right dive sites on the map coordinate system.
|
// find the most top-left and bottom-right dive sites on the map coordinate system.
|
||||||
qreal minLat = 0.0, minLon = 0.0, maxLat = 0.0, maxLon = 0.0;
|
qreal minLat = 0.0, minLon = 0.0, maxLat = 0.0, maxLon = 0.0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for(struct dive_site *dss: selDS) {
|
for (struct dive_site *dss : selDS) {
|
||||||
if (!has_location(&dss->location))
|
if (!has_location(&dss->location))
|
||||||
continue;
|
continue;
|
||||||
qreal lat = dss->location.lat.udeg * 0.000001;
|
qreal lat = dss->location.lat.udeg * 0.000001;
|
||||||
|
@ -92,7 +92,7 @@ void MapWidgetHelper::centerOnSelectedDiveSite()
|
||||||
// Pass coordinates to QML, either as a point or as a rectangle.
|
// Pass coordinates to QML, either as a point or as a rectangle.
|
||||||
// If we didn't find any coordinates, do nothing.
|
// If we didn't find any coordinates, do nothing.
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
QGeoCoordinate dsCoord (selDS[0]->location.lat.udeg * 0.000001, selDS[0]->location.lon.udeg * 0.000001);
|
QGeoCoordinate dsCoord(selDS[0]->location.lat.udeg * 0.000001, selDS[0]->location.lon.udeg * 0.000001);
|
||||||
QMetaObject::invokeMethod(m_map, "centerOnCoordinate", Q_ARG(QVariant, QVariant::fromValue(dsCoord)));
|
QMetaObject::invokeMethod(m_map, "centerOnCoordinate", Q_ARG(QVariant, QVariant::fromValue(dsCoord)));
|
||||||
} else if (count > 1) {
|
} else if (count > 1) {
|
||||||
QGeoCoordinate coordTopLeft(minLat, minLon);
|
QGeoCoordinate coordTopLeft(minLat, minLon);
|
||||||
|
@ -134,7 +134,7 @@ void MapWidgetHelper::selectedLocationChanged(struct dive_site *ds_in)
|
||||||
return;
|
return;
|
||||||
QGeoCoordinate locationCoord = location->coordinate;
|
QGeoCoordinate locationCoord = location->coordinate;
|
||||||
|
|
||||||
for (auto [idx, dive]: enumerated_range(divelog.dives)) {
|
for (auto [idx, dive] : enumerated_range(divelog.dives)) {
|
||||||
struct dive_site *ds = dive->dive_site;
|
struct dive_site *ds = dive->dive_site;
|
||||||
if (!ds || !ds->has_gps_location())
|
if (!ds || !ds->has_gps_location())
|
||||||
continue;
|
continue;
|
||||||
|
@ -162,7 +162,7 @@ void MapWidgetHelper::selectedLocationChanged(struct dive_site *ds_in)
|
||||||
void MapWidgetHelper::selectVisibleLocations()
|
void MapWidgetHelper::selectVisibleLocations()
|
||||||
{
|
{
|
||||||
QList<int> selectedDiveIds;
|
QList<int> selectedDiveIds;
|
||||||
for (auto [idx, dive]: enumerated_range(divelog.dives)) {
|
for (auto [idx, dive] : enumerated_range(divelog.dives)) {
|
||||||
struct dive_site *ds = dive->dive_site;
|
struct dive_site *ds = dive->dive_site;
|
||||||
if (!ds || ds->has_gps_location())
|
if (!ds || ds->has_gps_location())
|
||||||
continue;
|
continue;
|
||||||
|
@ -251,8 +251,8 @@ QString MapWidgetHelper::pluginObject()
|
||||||
{
|
{
|
||||||
QString lang = getUiLanguage().replace('_', '-');
|
QString lang = getUiLanguage().replace('_', '-');
|
||||||
QString cacheFolder = QString::fromStdString(system_default_directory() + "/googlemaps").replace("\\", "/");
|
QString cacheFolder = QString::fromStdString(system_default_directory() + "/googlemaps").replace("\\", "/");
|
||||||
return QStringLiteral("import QtQuick 2.0;"
|
return QStringLiteral("import QtQuick;"
|
||||||
"import QtLocation 5.3;"
|
"import QtLocation;"
|
||||||
"Plugin {"
|
"Plugin {"
|
||||||
" id: mapPlugin;"
|
" id: mapPlugin;"
|
||||||
" name: 'googlemaps';"
|
" name: 'googlemaps';"
|
||||||
|
@ -263,5 +263,6 @@ QString MapWidgetHelper::pluginObject()
|
||||||
" console.warn('MapWidget.qml: cannot find a plugin named: ' + name);"
|
" console.warn('MapWidget.qml: cannot find a plugin named: ' + name);"
|
||||||
" }"
|
" }"
|
||||||
" }"
|
" }"
|
||||||
"}").arg(lang, cacheFolder);
|
"}")
|
||||||
|
.arg(lang, cacheFolder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Build the image using the --build-arg option, e.g.:
|
# Build the image using the --build-arg option, e.g.:
|
||||||
# docker build -t boret/myimage:0.1 --build-arg=mxe_sha=123ABC456 .
|
# docker build -t boret/myimage:0.1 --build-arg=mxe_sha=123ABC456 .
|
||||||
|
|
||||||
FROM ubuntu:22.04 as base
|
FROM ubuntu:24.04 as base
|
||||||
|
|
||||||
# update and set up the packages we need for the build
|
# update and set up the packages we need for the build
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
|
@ -48,13 +48,14 @@ RUN apt-get install -y \
|
||||||
libxml-parser-perl \
|
libxml-parser-perl \
|
||||||
python3 \
|
python3 \
|
||||||
python3-mako \
|
python3-mako \
|
||||||
|
python3-setuptools \
|
||||||
python-is-python3 \
|
python-is-python3 \
|
||||||
ruby \
|
ruby \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
scons
|
scons
|
||||||
|
|
||||||
# very often master is broken, so we pass in a known good SHA
|
# very often master is broken, so we pass in a known good SHA
|
||||||
ARG mxe_sha=master
|
ARG mxe_sha=d6377b2f2334694dbb040294fd0d848327e63328
|
||||||
ENV _ver=${mxe_sha}
|
ENV _ver=${mxe_sha}
|
||||||
|
|
||||||
WORKDIR /win
|
WORKDIR /win
|
||||||
|
@ -73,9 +74,6 @@ ADD settings.mk .
|
||||||
# backend is not picked
|
# backend is not picked
|
||||||
ADD qtconnectivity-1.patch src/
|
ADD qtconnectivity-1.patch src/
|
||||||
|
|
||||||
ADD mdbtools_version.patch .
|
|
||||||
RUN patch -p1 < mdbtools_version.patch 2>&1 | tee mxe-patch.log
|
|
||||||
|
|
||||||
# separate download from build so that we can redo the build
|
# separate download from build so that we can redo the build
|
||||||
RUN make -j download 2>&1 | tee mxe-build.log
|
RUN make -j download 2>&1 | tee mxe-build.log
|
||||||
|
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
# Temporary patch to apply to MXE's src/mdbtools.mk file while building docker
|
|
||||||
# image, until it's applied upstream at github's MXE repo.
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/mdbtools.mk b/src/mdbtools.mk
|
|
||||||
index 42d303c2..d9d0f557 100644
|
|
||||||
--- a/src/mdbtools.mk
|
|
||||||
+++ b/src/mdbtools.mk
|
|
||||||
@@ -1,19 +1,17 @@
|
|
||||||
# This file is part of MXE. See LICENSE.md for licensing information.
|
|
||||||
|
|
||||||
PKG := mdbtools
|
|
||||||
-$(PKG)_WEBSITE := https://sourceforge.net/projects/mdbtools/
|
|
||||||
+$(PKG)_WEBSITE := https://github.com/mdbtools/mdbtools
|
|
||||||
$(PKG)_IGNORE :=
|
|
||||||
-$(PKG)_VERSION := 0.7.1
|
|
||||||
-$(PKG)_CHECKSUM := 4eac1bce55066a38d9ea6c52a8e8ecc101b79afe75118ecc16852990472c4721
|
|
||||||
-$(PKG)_SUBDIR := brianb-mdbtools-f8ce1cc
|
|
||||||
-$(PKG)_FILE := $(PKG)-$($(PKG)_VERSION).tar.gz
|
|
||||||
-$(PKG)_URL := https://github.com/brianb/$(PKG)/tarball/$($(PKG)_VERSION)/$($(PKG)_FILE)
|
|
||||||
+$(PKG)_VERSION := 1.0.0
|
|
||||||
+$(PKG)_CHECKSUM := 3446e1d71abdeb98d41e252777e67e1909b186496fda59f98f67032f7fbcd955
|
|
||||||
+$(PKG)_GH_CONF := mdbtools/mdbtools/releases, v
|
|
||||||
$(PKG)_DEPS := cc glib
|
|
||||||
|
|
||||||
define $(PKG)_UPDATE
|
|
||||||
- $(WGET) -q -O- 'https://github.com/brianb/mdbtools/tags' | \
|
|
||||||
- grep '<a href="/brianb/mdbtools/archive/' | \
|
|
||||||
- $(SED) -n 's,.*href="/brianb/mdbtools/archive/\([0-9][^"_]*\)\.tar.*,\1,p' | \
|
|
||||||
+ $(WGET) -q -O- 'https://github.com/mdbtools/mdbtools/tags' | \
|
|
||||||
+ grep 'href="/mdbtools/mdbtools/archive/' | \
|
|
||||||
+ $(SED) -n 's,.*href="/mdbtools/mdbtools/archive/refs/tags/v\([0-9][^"_]*\)\.tar.*,\1,p' | \
|
|
||||||
head -1
|
|
||||||
endef
|
|
||||||
|
|
||||||
@@ -24,10 +22,11 @@ define $(PKG)_BUILD
|
|
||||||
--build="`config.guess`" \
|
|
||||||
--disable-shared \
|
|
||||||
--disable-man \
|
|
||||||
+ --without-bash-completion-dir \
|
|
||||||
--prefix='$(PREFIX)/$(TARGET)' \
|
|
||||||
PKG_CONFIG='$(PREFIX)/bin/$(TARGET)-pkg-config'
|
|
||||||
- $(MAKE) -C '$(1)' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= html_DATA= || \
|
|
||||||
- $(MAKE) -C '$(1)' -j 1 install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= html_DATA=
|
|
||||||
+ $(MAKE) CFLAGS+='-Wno-deprecated-declarations' -C '$(1)' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= html_DATA= || \
|
|
||||||
+ $(MAKE) CFLAGS+='-Wno-deprecated-declarations' -C '$(1)' -j 1 install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= html_DATA=
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(PKG)_BUILD_SHARED =
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
|
@ -169,7 +169,8 @@ for package in "${PACKAGES[@]}" ; do
|
||||||
git_checkout_library breeze-icons $CURRENT_BREEZE_ICONS https://github.com/kde/breeze-icons.git
|
git_checkout_library breeze-icons $CURRENT_BREEZE_ICONS https://github.com/kde/breeze-icons.git
|
||||||
;;
|
;;
|
||||||
googlemaps)
|
googlemaps)
|
||||||
git_checkout_library googlemaps master https://github.com/Subsurface/googlemaps.git
|
#git_checkout_library googlemaps master https://github.com/Subsurface/googlemaps.git
|
||||||
|
git_checkout_library googlemaps master https://github.com/vladest/googlemaps.git
|
||||||
;;
|
;;
|
||||||
hidapi)
|
hidapi)
|
||||||
git_checkout_library hidapi master https://github.com/libusb/hidapi.git
|
git_checkout_library hidapi master https://github.com/libusb/hidapi.git
|
||||||
|
|
Loading…
Reference in a new issue