Compare commits

...

6 commits

Author SHA1 Message Date
Egbert de Pauw
70da714897
Merge 9bd1631103 into 46c439c443 2024-11-26 22:35:57 +13:00
rmultan
46c439c443 Bluetooth: Add Mares Sirius to known devices
The app already supports Mares Sirius,
but user has to allow scanning for
unknown devices in app settings.
This adds Mares Sirius to known devices.

Signed-off-by: rmultan <multan.rafal.k@gmail.com>
2024-11-26 22:29:13 +13:00
Michael Keller
015ac0e459 CICD: Build Release Versions on Push.
Change the builds on push (i.e. pull request merges) to build release
versions. This seems to be the correct way to build these, as they are
now distributed as the official builds on
https://subsurface-divelog.org/.
For users wanting to help with debugging, build artifacts on pull
requests are available, and these are debug builds.
Also adding the option to manually trigger builds, so if needed debug
builds can be run on `master`.

Signed-off-by: Michael Keller <github@ike.ch>
2024-11-26 19:37:45 +13:00
Egbert de Pauw
9bd1631103
Merge branch 'subsurface:master' into qt6devel 2024-08-28 15:40:29 +02:00
Egbertdepauw
7201a40c5f Removed some testing code.
There was an unneeded line in the code, just for my own testing
purposes.

Signed-off-by: Egbertdepauw <egbert@despaankamer.nl>
2024-08-27 14:51:39 +02:00
Egbertdepauw
c5e5535f51 qt6: Make subsurface buildable with Qt6 on Macos
Building on macos with the Qt6 framework.

made changes to several files to make it possible to build subsurface
desktop with the Qt 6.5.x and higher framework.

Tested versions: 6.5.2, 6.6.3, 6.7.2

code builds and googlemaps works, made some adjustments to get panning
and zooming with mouse or trackpad working.

See issue #3577 "Build Fails, macOS" for build details.

Signed-off-by: Egbertdepauw <egbert@despaankamer.nl>
2024-08-27 13:51:37 +02:00
18 changed files with 140 additions and 48 deletions

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
build:
@ -49,6 +50,12 @@ jobs:
VERSION: ${{ steps.version_number.outputs.version }}
VERSION_4: ${{ steps.version_number.outputs.version_4 }}
run: |
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} release"
fi
# this is rather awkward, but it allows us to use the preinstalled
# Android and Qt versions with relative paths
cd ..
@ -65,7 +72,7 @@ jobs:
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
# get the build number via curl so this works both for a pull request as well as a push
export OUTPUT_DIR="$GITHUB_WORKSPACE"
bash -x ./subsurface/packaging/android/qmake-build.sh -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4
bash -x ./subsurface/packaging/android/qmake-build.sh ${BUILD_EXTRA_ARGS} -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4
- name: delete the keystore
if: github.event_name == 'push'

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
build:
@ -45,12 +46,18 @@ jobs:
env:
VERSION: ${{ steps.version_number.outputs.version }}
run: |
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
cd ..
git config --global --add safe.directory $GITHUB_WORKSPACE
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
export IOS_QT=$GITHUB_WORKSPACE/qt-ios
echo "build for simulator"
bash -x $GITHUB_WORKSPACE/packaging/ios/build.sh -simulator
bash -x $GITHUB_WORKSPACE/packaging/ios/build.sh -simulator ${BUILD_EXTRA_ARGS}
# We need this in order to be able to access the file and publish it
mv build-Subsurface-mobile-Qt_5_14_1_for_iOS-Release/Release-iphonesimulator/Subsurface-mobile.app $GITHUB_WORKSPACE/Subsurface-mobile-$VERSION.app

View file

@ -71,9 +71,15 @@ jobs:
echo "--------------------------------------------------------------"
echo "building desktop"
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
# now build for the desktop version (including WebKit)
cd ..
bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit
bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit ${BUILD_EXTRA_ARGS}
- name: test desktop build
run: |

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
do-build-test:

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
build:
@ -52,12 +53,18 @@ jobs:
echo "--------------------------------------------------------------"
echo "building desktop"
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
# now build for the desktop version (without WebKit)
cd ..
git config --global --add safe.directory $GITHUB_WORKSPACE
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
git config --global --get-all safe.directory
bash -e -x subsurface/scripts/build.sh -desktop -build-with-qt6
bash -e -x subsurface/scripts/build.sh -desktop -build-with-qt6 ${BUILD_EXTRA_ARGS}
- name: test desktop build
run: |

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
build:
@ -60,9 +61,15 @@ jobs:
echo "--------------------------------------------------------------"
echo "building desktop"
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
# now build the appimage
cd ..
bash -e -x subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit
bash -e -x subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit ${BUILD_EXTRA_ARGS}
- name: test desktop build
run: |

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
do-build-test:

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
do-build-test:

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/**
branches:
- master
workflow_dispatch:
jobs:
do-build-test:

View file

@ -44,6 +44,12 @@ jobs:
env:
CANONICALVERSION: ${{ steps.version_number.outputs.version }}
run: |
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
cd ${GITHUB_WORKSPACE}/..
export QT_ROOT=${GITHUB_WORKSPACE}/qt-mac/Qt5.15.15
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
@ -51,7 +57,7 @@ jobs:
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
# now setup Subsurface with WebKit and build the dependencies, using the generic build script
bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -release -build-deps -ftdi -prep-only
bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -build-deps -ftdi -prep-only ${BUILD_EXTRA_ARGS}
echo "finished initial cmake setup of Subsurface - next build the package"
cd subsurface/build

View file

@ -47,9 +47,15 @@ jobs:
CANONICALVERSION: ${{ steps.version_number.outputs.version }}
CANONICALVERSION_4: ${{ steps.version_number.outputs.version_4 }}
run: |
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
export OUTPUT_DIR="$GITHUB_WORKSPACE"
cd /win
bash -x subsurface/packaging/windows/in-container-build.sh 2>&1 | tee build.log
bash -x subsurface/packaging/windows/in-container-build.sh ${BUILD_EXTRA_ARGS} 2>&1 | tee build.log
grep "Built target installer" build.log
- name: publish pull request artifacts

View file

@ -78,6 +78,7 @@ static struct namePattern name[] = {
{ "Luna 2.0", "Scubapro", "Luna 2.0" },
// Mares dive computers
{ "Mares Genius", "Mares", "Genius" },
{ "Sirius", "Mares", "Sirius" },
{ "Mares", "Mares", "Quad" }, // we actually don't know and just pick a common one - user needs to fix in UI
// Cress dive computers
{ "CARESIO_", "Cressi", "Cartesio" },

View file

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
import QtQuick 2.5
import QtLocation 5.3
import QtPositioning 5.3
import QtQuick
import QtLocation
import QtPositioning
import org.subsurfacedivelog.mobile 1.0
Item {
@ -15,7 +15,7 @@ Item {
id: mapHelper
map: map
editMode: false
onSelectedDivesChanged: rootItem.selectedDivesChanged(list)
onSelectedDivesChanged: (list) => { rootItem.selectedDivesChanged(list) }
onEditModeChanged: editMessage.isVisible = editMode === true ? 1 : 0
onCoordinatesChanged: {}
Component.onCompleted: {
@ -29,7 +29,6 @@ Item {
id: map
anchors.fill: parent
zoomLevel: defaultZoomIn
property var mapType
readonly property var defaultCenter: QtPositioning.coordinate(0, 0)
readonly property real defaultZoomIn: 12.0
@ -41,12 +40,46 @@ Item {
property real newZoomOut: 1.0
property var clickCoord: QtPositioning.coordinate(0, 0)
property bool isReady: false
Component.onCompleted: isReady = true
onZoomLevelChanged: {
if (isReady)
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 {
id: mapItemView
@ -68,6 +101,8 @@ Item {
MouseArea {
drag.target: (mapHelper.editMode && model.isSelected) ? mapItem : undefined
anchors.fill: parent
hoverEnabled: true
onClicked: {
if (!mapHelper.editMode && model.divesite)
mapHelper.selectedLocationChanged(model.divesite)
@ -122,8 +157,8 @@ Item {
MouseArea {
anchors.fill: parent
onPressed: { map.stopZoomAnimations(); mouse.accepted = false }
onWheel: { map.stopZoomAnimations(); wheel.accepted = false }
onPressed: (mouse) => { map.stopZoomAnimations(); mouse.accepted = false }
onWheel: (wheel) => { map.stopZoomAnimations(); wheel.accepted = false }
onDoubleClicked: map.doubleClickHandler(map.toCoordinate(Qt.point(mouseX, mouseY)))
}

View file

@ -4,15 +4,15 @@
#include <QDebug>
#include <QVector>
#include "qmlmapwidgethelper.h"
#include "core/divefilter.h"
#include "core/divelist.h"
#include "core/divelog.h"
#include "core/divesite.h"
#include "core/qthelper.h"
#include "core/range.h"
#include "qt-models/maplocationmodel.h"
#include "qmlmapwidgethelper.h"
#include "qt-models/divelocationmodel.h"
#include "qt-models/maplocationmodel.h"
#ifndef SUBSURFACE_MOBILE
#include "desktop-widgets/mapwidget.h"
#endif
@ -44,7 +44,7 @@ void MapWidgetHelper::centerOnDiveSite(struct dive_site *ds)
} else {
// dive site with GPS
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)));
}
}
@ -69,7 +69,7 @@ void MapWidgetHelper::centerOnSelectedDiveSite()
// 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;
int count = 0;
for(struct dive_site *dss: selDS) {
for (struct dive_site *dss : selDS) {
if (!has_location(&dss->location))
continue;
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.
// If we didn't find any coordinates, do nothing.
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)));
} else if (count > 1) {
QGeoCoordinate coordTopLeft(minLat, minLon);
@ -134,7 +134,7 @@ void MapWidgetHelper::selectedLocationChanged(struct dive_site *ds_in)
return;
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;
if (!ds || !ds->has_gps_location())
continue;
@ -162,7 +162,7 @@ void MapWidgetHelper::selectedLocationChanged(struct dive_site *ds_in)
void MapWidgetHelper::selectVisibleLocations()
{
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;
if (!ds || ds->has_gps_location())
continue;
@ -251,8 +251,8 @@ QString MapWidgetHelper::pluginObject()
{
QString lang = getUiLanguage().replace('_', '-');
QString cacheFolder = QString::fromStdString(system_default_directory() + "/googlemaps").replace("\\", "/");
return QStringLiteral("import QtQuick 2.0;"
"import QtLocation 5.3;"
return QStringLiteral("import QtQuick;"
"import QtLocation;"
"Plugin {"
" id: mapPlugin;"
" name: 'googlemaps';"
@ -263,5 +263,6 @@ QString MapWidgetHelper::pluginObject()
" console.warn('MapWidget.qml: cannot find a plugin named: ' + name);"
" }"
" }"
"}").arg(lang, cacheFolder);
"}")
.arg(lang, cacheFolder);
}

View file

@ -13,9 +13,17 @@ set -e
mkdir -p win32
cd win32
BUILD_EXTRA_ARGS="debug"
SMTK2SSRF_EXTRA_ARGS="-b debug"
if [[ "$1" == "-release" ]]; then
BUILD_EXTRA_ARGS=""
SMTK2SSRF_BUILD_EXTRA_ARGS="-b release"
shift
fi
# build Subsurface
export MXEBUILDTYPE=x86_64-w64-mingw32.shared
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh installer
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh ${BUILD_EXTRA_ARGS} installer
# the strange two step move is in order to get predictable names to use
# in the publish step of the GitHub Action
@ -27,7 +35,7 @@ mv subsurface/"$fullname" ${OUTPUT_DIR}/"${fullname%.exe}-installer.exe"
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh -noftdi -nolibraw subsurface
bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh -a -i
bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh ${SMTK2SSRF_BUILD_EXTRA_ARGS} -a -i
# the strange two step move is in order to get predictable names to use
# in the publish step of the GitHub Action

View file

@ -131,7 +131,6 @@ if [[ "$1" == "debug" ]] ; then
RELEASE="Debug"
RELEASE_MAIN="Debug"
RELEASE_GM="debug"
DLL_SUFFIX="d"
shift
if [[ -f Release ]] ; then
rm -rf *
@ -141,7 +140,6 @@ else
RELEASE="Release"
RELEASE_MAIN="RelWithDebInfo"
RELEASE_GM="release"
DLL_SUFFIX=""
if [[ -f Debug ]] ; then
rm -rf *
fi
@ -281,9 +279,9 @@ done
# for some reason we aren't installing Qt5Xml.dll and Qt5Location.dll
# I need to figure out why and fix that, but for now just manually copy that as well
EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml$DLL_SUFFIX.dll \
$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location$DLL_SUFFIX.dll \
$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript$DLL_SUFFIX.dll"
EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml.dll \
$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location.dll \
$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript.dll"
for f in $EXTRA_MANUAL_DEPENDENCIES
do

View file

@ -124,12 +124,10 @@ else
fi
case "$RELEASE" in
debug|Debug) RELEASE=Debug
DLL_SUFFIX="d"
[[ -f Release ]] && rm -rf ./*
touch Debug
;;
release|Release) RELEASE=Release
DLL_SUFFIX=""
[[ -f Debug ]] && rm -rf ./*
touch Release
;;
@ -175,7 +173,7 @@ $BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/platforms"
# This comes from subsurface's mxe-based-build.sh. I'm not sure it is necessary
# but, well, it doesn't hurt.
EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/Qt5Xml$DLL_SUFFIX.dll"
EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/Qt5Xml.dll"
STAGING_DIR=$BUILDDIR/smtk-import/staging

View file

@ -169,7 +169,8 @@ for package in "${PACKAGES[@]}" ; do
git_checkout_library breeze-icons $CURRENT_BREEZE_ICONS https://github.com/kde/breeze-icons.git
;;
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)
git_checkout_library hidapi master https://github.com/libusb/hidapi.git