This commit is contained in:
kebab 2023-12-08 11:08:42 -05:00
parent e33d3e9560
commit 842be9d2f9
1190 changed files with 35520 additions and 322372 deletions

3
.gitignore vendored
View File

@ -58,7 +58,6 @@ thirdParty/qserialport/lib/
libs/thirdParty/libxbee/lib/
GeneratedFiles/
gstreamer-1.0-android*
src/Airmap/Airmap_api_key.h
localization/qgroundcontrol/
*.autosave
@ -87,5 +86,3 @@ src/latex/
Qt*-linux*.tar.*
.vs/
libs/airmapd/include/boost

38
.gitmodules vendored
View File

@ -1,24 +1,30 @@
[submodule "src/GPS/Drivers"]
path = src/GPS/Drivers
url = https://github.com/PX4/GpsDrivers.git
[submodule "libs/mavlink/include/mavlink/v2.0"]
path = libs/mavlink/include/mavlink/v2.0
url = https://github.com/mavlink/c_library_v2.git
[submodule "libs/OpenSSL/android_openssl"]
path = libs/OpenSSL/android_openssl
url = https://github.com/Auterion/android_openssl
[submodule "libs/qmlglsink/gst-plugins-good"]
path = libs/qmlglsink/gst-plugins-good
url = https://github.com/mavlink/gst-plugins-good.git
[submodule "libs/xz-embedded"]
path = libs/xz-embedded
url = https://github.com/Auterion/xz-embedded.git
[submodule "libs/libevents/libevents"]
path = libs/libevents/libevents
url = https://github.com/mavlink/libevents.git
url = https://github.com/KDAB/android_openssl
[submodule "libs/eigen"]
path = libs/eigen
url = https://gitlab.com/libeigen/eigen.git
[submodule "libs/libevents/libevents"]
path = libs/libevents/libevents
url = https://github.com/mavlink/libevents.git
[submodule "libs/mavlink/include/mavlink/v2.0"]
path = libs/mavlink/include/mavlink/v2.0
url = https://github.com/mavlink/c_library_v2.git
[submodule "libs/qmdnsengine"]
path = libs/qmdnsengine
url = https://github.com/patrickelectric/qmdnsengine
[submodule "libs/qmlglsink/gst-plugins-good"]
path = libs/qmlglsink/gst-plugins-good
url = https://github.com/mavlink/gst-plugins-good.git
[submodule "libs/shapelib"]
path = libs/shapelib
url = https://github.com/OSGeo/shapelib.git
[submodule "libs/xz-embedded"]
path = libs/xz-embedded
url = https://github.com/Auterion/xz-embedded.git
[submodule "src/FirmwarePlugin/APM/ArduPilot-Parameter-Repository"]
path = src/FirmwarePlugin/APM/ArduPilot-Parameter-Repository
url = https://github.com/ArduPilot/ArduPilot-Parameter-Repository
[submodule "src/GPS/Drivers"]
path = src/GPS/Drivers
url = https://github.com/PX4/GpsDrivers.git

View File

@ -6,7 +6,7 @@ include(GNUInstallDirs)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel;Coverage")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
@ -164,7 +164,7 @@ include_directories(
libs/libevents
libs/mavlink/include/mavlink/v2.0
libs/mavlink/include/mavlink/v2.0/ardupilotmega
libs/mavlink/include/mavlink/v2.0/all
libs/mavlink/include/mavlink/v2.0/common
libs/shapelib
@ -178,8 +178,6 @@ set(QGC_RESOURCES
${CMAKE_CURRENT_SOURCE_DIR}/qgcresources.qrc
${CMAKE_CURRENT_SOURCE_DIR}/qgroundcontrol.qrc
${CMAKE_CURRENT_SOURCE_DIR}/resources/InstrumentValueIcons/InstrumentValueIcons.qrc
${CMAKE_CURRENT_SOURCE_DIR}/src/Airmap/airmap.qrc
${CMAKE_CURRENT_SOURCE_DIR}/src/Airmap/dummy/airmap_dummy.qrc
${CMAKE_CURRENT_SOURCE_DIR}/src/FirmwarePlugin/APM/APMResources.qrc
${CMAKE_CURRENT_SOURCE_DIR}/src/FirmwarePlugin/PX4/PX4Resources.qrc
${CMAKE_CURRENT_SOURCE_DIR}/VideoReceiverApp/qml.qrc

View File

@ -21,8 +21,6 @@ CONFIG += warn_on
CONFIG += resources_big
CONFIG += c++17
DEFINES += DISABLE_AIRMAP # AIRMAP SDK does not exist anymore
linux {
linux-g++ | linux-g++-64 | linux-g++-32 | linux-clang {
message("Linux build")
@ -109,19 +107,21 @@ linux {
QMAKE_CXXFLAGS += -fvisibility=hidden
QMAKE_CXXFLAGS_WARN_ON += -Werror \
-Wno-unused-parameter \ # gst-plugins-good
-Wno-unused-but-set-variable \ # eigen & QGCTileCacheWorker.cpp
-Wno-deprecated-declarations # eigen
} else {
error("Unsupported Mac toolchain, only 64-bit LLVM+clang is supported")
}
} else : ios {
message("iOS build")
CONFIG += iOSBuild MobileBuild app_bundle NoSerialBuild
CONFIG += iOSBuild MobileBuild app_bundle
CONFIG -= bitcode
DEFINES += __ios__
DEFINES += QGC_NO_GOOGLE_MAPS
DEFINES += NO_SERIAL_LINK
DEFINES += QGC_DISABLE_UVC
DEFINES += QGC_GST_TAISYNC_ENABLED
DEFINES += NO_SERIAL_LINK
QMAKE_IOS_DEPLOYMENT_TARGET = 11.0
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1,2 # Universal
QMAKE_LFLAGS += -Wl,-no_pie
@ -143,6 +143,10 @@ linux|macx|ios {
}
}
contains(DEFINES, NO_SERIAL_LINK) {
message("Serial port support disabled")
}
!MacBuild:!AndroidBuild {
# See QGCPostLinkCommon.pri for details on why MacBuild doesn't use DESTDIR
DESTDIR = staging
@ -195,6 +199,8 @@ exists ($$PWD/.git) {
DEFINES += APP_VERSION_STR=\"\\\"$$APP_VERSION_STR\\\"\"
AndroidBuild {
QGC_ANDROID_PACKAGE = org.mavlink.qgroundcontrol
message(VERSION $${VERSION})
MAJOR_VERSION = $$section(VERSION, ".", 0, 0)
MINOR_VERSION = $$section(VERSION, ".", 1, 1)

View File

@ -54,7 +54,8 @@ isEmpty(MAVLINK_CONF) {
MAVLINK_CONF = $$fromfile(user_config.pri, MAVLINK_CONF)
message($$sprintf("Using user-supplied mavlink dialect '%1' specified in user_config.pri", $$MAVLINK_CONF))
} else {
MAVLINK_CONF = ardupilotmega
MAVLINK_CONF = all
message($$sprintf("Using MAVLink dialect '%1'.", $$MAVLINK_CONF))
}
}
@ -67,17 +68,9 @@ contains (CONFIG, QGC_DISABLE_APM_MAVLINK) {
CONFIG += ArdupilotEnabled
}
# First we select the dialect, checking for valid user selection
# Users can override all other settings by specifying MAVLINK_CONF as an argument to qmake
!isEmpty(MAVLINK_CONF) {
message($$sprintf("Using MAVLink dialect '%1'.", $$MAVLINK_CONF))
}
# Then we add the proper include paths dependent on the dialect.
INCLUDEPATH += $$MAVLINKPATH
exists($$MAVLINKPATH/common) {
!isEmpty(MAVLINK_CONF) {
count(MAVLINK_CONF, 1) {
exists($$MAVLINKPATH/$$MAVLINK_CONF) {
INCLUDEPATH += $$MAVLINKPATH/$$MAVLINK_CONF
@ -88,12 +81,6 @@ exists($$MAVLINKPATH/common) {
} else {
error(Only a single mavlink dialect can be specified in MAVLINK_CONF)
}
} else {
INCLUDEPATH += $$MAVLINKPATH/common
}
} else {
error($$sprintf("MAVLink folder does not exist at '%1'! Run 'git submodule init && git submodule update' on the command line.",$$MAVLINKPATH_REL))
}
#
# [REQUIRED] EIGEN matrix library
@ -105,11 +92,13 @@ DEFINES += NOMINMAX
# [REQUIRED] Events submodule
HEADERS+= \
libs/libevents/libevents/libs/cpp/protocol/receive.h \
libs/libevents/libevents/libs/cpp/parse/health_and_arming_checks.h \
libs/libevents/libevents/libs/cpp/parse/parser.h \
libs/libevents/libevents/libs/cpp/generated/events_generated.h \
libs/libevents/libevents_definitions.h
SOURCES += \
libs/libevents/libevents/libs/cpp/protocol/receive.cpp \
libs/libevents/libevents/libs/cpp/parse/health_and_arming_checks.cpp \
libs/libevents/libevents/libs/cpp/parse/parser.cpp \
libs/libevents/definitions.cpp
INCLUDEPATH += \
@ -224,9 +213,9 @@ MacBuild {
# Include Android OpenSSL libs
AndroidBuild {
include($$SOURCE_DIR/libs/OpenSSL/android_openssl/openssl.pri)
message("ANDROID_EXTRA_LIBS")
message($$ANDROID_TARGET_ARCH)
message($$ANDROID_EXTRA_LIBS)
#message("ANDROID_EXTRA_LIBS")
#message($$ANDROID_TARGET_ARCH)
#message($$ANDROID_EXTRA_LIBS)
}
# Pairing
@ -275,54 +264,3 @@ contains (DEFINES, DISABLE_ZEROCONF) {
} else {
message("Skipping support for Zeroconf (unsupported platform)")
}
#
# [OPTIONAL] AirMap Support
#
contains (DEFINES, DISABLE_AIRMAP) {
message("Skipping support for AirMap (manual override from command line)")
# Otherwise the user can still disable this feature in the user_config.pri file.
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, DISABLE_AIRMAP) {
message("Skipping support for AirMap (manual override from user_config.pri)")
} else {
AIRMAP_PLATFORM_SDK_PATH = $${OUT_PWD}/libs/airmap-platform-sdk
AIRMAP_QT_PATH = Qt.$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}
message("Including support for AirMap")
MacBuild {
exists("$${AIRMAPD_PATH}/macOS/$$AIRMAP_QT_PATH") {
message("Including support for AirMap for macOS")
LIBS += -L$${AIRMAPD_PATH}/macOS/$$AIRMAP_QT_PATH -lairmap-qt
DEFINES += QGC_AIRMAP_ENABLED
}
} else:LinuxBuild {
#-- Download and install platform-sdk libs and headers iff they're not already in the build directory
AIRMAP_PLATFORM_SDK_URL = "https://github.com/airmap/platform-sdk/releases/download/2.0/airmap-platform-sdk-2.0.0-Linux.deb"
AIRMAP_PLATFORM_SDK_FILEPATH = "$${OUT_PWD}/airmap-platform-sdk.deb"
AIRMAP_PLATFORM_SDK_INSTALL_DIR = "tmp"
airmap_platform_sdk_install.target = $${AIRMAP_PLATFORM_SDK_PATH}/include/airmap
airmap_platform_sdk_install.commands = \
rm -rf $${AIRMAP_PLATFORM_SDK_PATH} && \
mkdir -p "$${AIRMAP_PLATFORM_SDK_PATH}/linux/$${AIRMAP_QT_PATH}" && \
mkdir -p "$${AIRMAP_PLATFORM_SDK_PATH}/include/airmap" && \
mkdir -p "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}" && \
curl --location --output "$${AIRMAP_PLATFORM_SDK_FILEPATH}" "$${AIRMAP_PLATFORM_SDK_URL}" && \
ar p "$${AIRMAP_PLATFORM_SDK_FILEPATH}" data.tar.gz | tar xvz -C "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}/" --strip-components=1 && \
mv -u "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}/usr/lib/x86_64-linux-gnu/*" "$${AIRMAP_PLATFORM_SDK_PATH}/linux/$${AIRMAP_QT_PATH}/" && \
mv -u "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}/usr/include/airmap/*" "$${AIRMAP_PLATFORM_SDK_PATH}/include/airmap/" && \
rm -rf "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}" && \
rm "$${AIRMAP_PLATFORM_SDK_FILEPATH}"
airmap_platform_sdk_install.depends =
QMAKE_EXTRA_TARGETS += airmap_platform_sdk_install
PRE_TARGETDEPS += $$airmap_platform_sdk_install.target
LIBS += -L$${AIRMAP_PLATFORM_SDK_PATH}/linux/$${AIRMAP_QT_PATH} -lairmap-cpp
DEFINES += QGC_AIRMAP_ENABLED
} else {
message("Skipping support for Airmap (unsupported platform)")
}
contains (DEFINES, QGC_AIRMAP_ENABLED) {
INCLUDEPATH += \
$${AIRMAP_PLATFORM_SDK_PATH}/include
}
}

View File

@ -25,22 +25,12 @@ MacBuild {
# with the differences between post list command running in a shell script (XCode) versus a makefile (Qt Creator)
macx-xcode {
# SDL2 Framework
QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.Framework $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.framework $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET}
# AirMap
contains (DEFINES, QGC_AIRMAP_ENABLED) {
QMAKE_POST_LINK += && rsync -a $$SOURCE_DIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks/
QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET}
}
} else {
# SDL2 Framework
QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.Framework $${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.framework $${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $${TARGET}.app/Contents/MacOS/$${TARGET}
# AirMap
contains (DEFINES, QGC_AIRMAP_ENABLED) {
QMAKE_POST_LINK += && rsync -a $$SOURCE_DIR/libs/airmap-platform-sdk/macOS/$$AIRMAP_QT_PATH/* $${TARGET}.app/Contents/Frameworks/
QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $${TARGET}.app/Contents/MacOS/$${TARGET}
}
}
}
@ -64,7 +54,9 @@ WindowsBuild {
# Copy Visual Studio DLLs
# Note that this is only done for release because the debugging versions of these DLLs cannot be redistributed.
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\msvcp140.dll\" \"$$DESTDIR\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\msvcp140_1.dll\" \"$$DESTDIR\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\vcruntime140.dll\" \"$$DESTDIR\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\vcruntime140_1.dll\" \"$$DESTDIR\"
}
DEPLOY_TARGET = $$shell_quote($$shell_path($$DESTDIR\\$${TARGET}.exe))
@ -130,9 +122,9 @@ LinuxBuild {
libicui18n.so \
libicuuc.so
}
# Copy only if non-existing to avoid file timestamp updates
for(QT_LIB, QT_LIB_LIST) {
QMAKE_POST_LINK += && $$QMAKE_COPY --dereference $$[QT_INSTALL_LIBS]/$$QT_LIB $$DESTDIR/Qt/libs/
QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference $$[QT_INSTALL_LIBS]/$$QT_LIB $$DESTDIR/Qt/libs/
}
# QT_INSTALL_PLUGINS
@ -152,16 +144,11 @@ LinuxBuild {
}
for(QT_PLUGIN, QT_PLUGIN_LIST) {
QMAKE_POST_LINK += && $$QMAKE_COPY --dereference --recursive $$[QT_INSTALL_PLUGINS]/$$QT_PLUGIN $$DESTDIR/Qt/plugins/
QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference --recursive $$[QT_INSTALL_PLUGINS]/$$QT_PLUGIN $$DESTDIR/Qt/plugins/
}
# QT_INSTALL_QML
QMAKE_POST_LINK += && $$QMAKE_COPY --dereference --recursive $$[QT_INSTALL_QML] $$DESTDIR/Qt/
# Airmap
contains (DEFINES, QGC_AIRMAP_ENABLED) {
QMAKE_POST_LINK += && $$QMAKE_COPY $$OUT_PWD/libs/airmap-platform-sdk/linux/$$AIRMAP_QT_PATH/libairmap-cpp.so.2.0.0 $$DESTDIR/Qt/libs/
}
QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference --recursive $$[QT_INSTALL_QML] $$DESTDIR/Qt/
# QGroundControl start script
contains (CONFIG, QGC_DISABLE_CUSTOM_BUILD) | !exists($$PWD/custom/custom.pri) {

View File

@ -16,10 +16,10 @@ installer {
QMAKE_POST_LINK += && $$dirname(QMAKE_QMAKE)/macdeployqt $${TARGET}.app -appstore-compliant -verbose=1 -qmldir=$${SOURCE_DIR}/src
# macdeployqt is missing some relocations once in a while. "Fix" it:
QMAKE_POST_LINK += && cp -R /Library/Frameworks/GStreamer.framework $${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && rsync -a --delete /Library/Frameworks/GStreamer.framework $${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && echo libexec
QMAKE_POST_LINK += && ln -sf $${TARGET}.app/Contents/Frameworks $${TARGET}.app/Contents/Frameworks/GStreamer.framework/Versions/1.0/libexec/Frameworks
QMAKE_POST_LINK += && install_name_tool -change /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer @executable_path/../Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer $${TARGET}.app/Contents/MacOS/QGroundControl
QMAKE_POST_LINK += && install_name_tool -change /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer @executable_path/../Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer $${TARGET}.app/Contents/MacOS/$${TARGET}
QMAKE_POST_LINK += && rm -rf $${TARGET}.app/Contents/Frameworks/GStreamer.framework/Versions/1.0/{bin,etc,share,Headers,include,Commands}
QMAKE_POST_LINK += && rm -rf $${TARGET}.app/Contents/Frameworks/GStreamer.framework/Versions/1.0/lib/{*.a,*.la,glib-2.0,gst-validate-launcher,pkgconfig}
@ -34,6 +34,8 @@ installer {
QMAKE_POST_LINK += && mkdir -p package
QMAKE_POST_LINK += && mkdir -p staging
QMAKE_POST_LINK += && rsync -a --delete $${TARGET}.app staging
QMAKE_POST_LINK += && rm -rf /tmp/tmp.dmg
QMAKE_POST_LINK += && rm -rf package/$${TARGET}.dmg
QMAKE_POST_LINK += && hdiutil create /tmp/tmp.dmg -ov -volname "$${TARGET}-$${MAC_VERSION}" -fs HFS+ -srcfolder "staging"
QMAKE_POST_LINK += && hdiutil convert /tmp/tmp.dmg -format UDBZ -o package/$${TARGET}.dmg
QMAKE_POST_LINK += && rm /tmp/tmp.dmg
@ -49,10 +51,13 @@ installer {
}
AndroidBuild {
_ANDROID_KEYSTORE_PASSWORD = $$(ANDROID_KEYSTORE_PASSWORD)
isEmpty(_ANDROID_KEYSTORE_PASSWORD) {
message(Skipping androiddeployqt since keystore password is not available)
} else {
QMAKE_POST_LINK += && mkdir -p package
isEmpty(_ANDROID_KEYSTORE_PASSWORD) {
message(Keystore password not available - not signing package)
# This is for builds in forks and PR where the Android keystore password is not available
QMAKE_POST_LINK += && make apk
QMAKE_POST_LINK += && cp android-build/build/outputs/apk/debug/android-build-debug.apk package/QGroundControl$${ANDROID_TRUE_BITNESS}.apk
} else {
QMAKE_POST_LINK += && make apk_install_target INSTALL_ROOT=android-build
QMAKE_POST_LINK += && androiddeployqt --verbose --input android-QGroundControl-deployment-settings.json --output android-build --release --sign $${SOURCE_DIR}/android/android_release.keystore QGCAndroidKeyStore --storepass $$(ANDROID_KEYSTORE_PASSWORD)
QMAKE_POST_LINK += && cp android-build/build/outputs/apk/release/android-build-release-signed.apk package/QGroundControl$${ANDROID_TRUE_BITNESS}.apk

View File

@ -1,11 +1,6 @@
# QGroundControl Ground Control Station
[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://github.com/mavlink/QGroundControl/releases)
[![Travis Build Status](https://travis-ci.org/mavlink/qgroundcontrol.svg?branch=master)](https://travis-ci.org/mavlink/qgroundcontrol)
[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/crxcm4qayejuvh6c/branch/master?svg=true)](https://ci.appveyor.com/project/mavlink/qgroundcontrol)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mavlink/qgroundcontrol?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
*QGroundControl* (QGC) is an intuitive and powerful ground control station (GCS) for UAVs.

View File

@ -15,5 +15,10 @@
<file alias="PolygonBadXml.kml">src/MissionManager/UnitTest/PolygonBadXml.kml</file>
<file alias="PolygonBadCoordinatesNode.kml">src/MissionManager/UnitTest/PolygonBadCoordinatesNode.kml</file>
<file alias="MockLinkOptionsDlg.qml">src/comm/MockLinkOptionsDlg.qml</file>
<file alias="TranslationTest.json">src/qgcunittest/TranslationTest.json</file>
<file alias="TranslationTest_de_DE.ts">src/qgcunittest/TranslationTest_de_DE.ts</file>
</qresource>
<qresource prefix="/qml">
<file alias="QGroundControl/Controls/MockLinkOptionsDlg.qml">src/comm/MockLinkOptionsDlg.qml</file>
</qresource>
</RCC>

37
Vagrantfile vendored
View File

@ -1,21 +1,38 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# if you update this file, please consider updating .travis.yml too
require 'yaml'
current_dir = File.dirname(File.expand_path(__FILE__))
configfile = YAML.load_file("#{current_dir}/.vagrantconfig.yml")
travisfile = YAML.load_file("#{current_dir}/.travis.yml")
yaml_config = configfile['configs']['dev']
env_global = [
'JOBS=4',
'SHADOW_BUILD_DIR=/tmp/shadow_build_dir',
'CODESIGN=nocodesign',
]
packages = [
'build-essential',
'fuse',
'git',
'libgstreamer-plugins-base1.0-dev',
'libgstreamer1.0-0:amd64',
'libgstreamer1.0-dev',
'libsdl2-dev',
'libudev-dev',
'speech-dispatcher',
'wget'
]
Vagrant.configure(2) do |config|
# This trick is used to prefer a VM box over docker
config.vm.provider "virtualbox"
config.vm.provider "vmware_fusion"
config.vm.box = "ubuntu/bionic64"
config.vm.box = "ubuntu/jammy64"
config.vm.provider :docker do |docker, override|
override.vm.box = "tknerr/baseimage-ubuntu-16.04"
end
@ -64,6 +81,8 @@ Vagrant.configure(2) do |config|
apt-get install -y python3-pip
su - vagrant -c "pip3 install --user aqtinstall"
apt-get install -y patchelf
dir="%{qt_deps_unpack_dir}"
version="5.15.2"
host="linux"
@ -73,6 +92,8 @@ Vagrant.configure(2) do |config|
su - vagrant -c "mkdir -p ${dir}"
su - vagrant -c "python3 -m aqt install-qt -O ${dir} ${host} ${target} ${version} -m ${modules}"
mkdir -p /vagrant/shadow-build
# write out a pair of scripts to make rebuilding on the VM easy:
su - vagrant -c "cat <<QMAKE >do-qmake.sh
#!/bin/bash
@ -101,6 +122,10 @@ MAKE
"
su - vagrant -c "chmod +x do-qmake.sh do-make.sh"
# increase the allowed number of open files (the link step takes a
# lot of open filehandles!):
echo '* soft nofile 2048' >/etc/security/limits.d/fileno.conf
# now run the scripts:
su - vagrant -c ./do-qmake.sh
su - vagrant -c ./do-make.sh
@ -112,8 +137,8 @@ MAKE
:qt_deps_tarball => yaml_config['qt_deps_tarball'],
:pro => yaml_config['pro'],
:spec => yaml_config['spec'],
:apt_pkgs => (travisfile['addons']['apt']['packages']+['git', 'build-essential', 'fuse', 'libsdl2-dev']).join(' '),
:build_env => travisfile['env']['global'].select { |item| item.is_a?(String) }.join(' '),
:apt_pkgs => (packages).join(' '),
:build_env => env_global.select { |item| item.is_a?(String) }.join(' '),
:project_root_dir => yaml_config['project_root_dir'],
:qt_deps_unpack_parent_dir => yaml_config['qt_deps_unpack_parent_dir'],

0
VideoReceiverApp/android/GooglePlayScreenShot1.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

0
VideoReceiverApp/android/GooglePlayScreenShot2.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

0
VideoReceiverApp/android/gradlew vendored Executable file → Normal file
View File

View File

@ -1,24 +1,71 @@
include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri)
message("Adding Serial Java Classes")
QT += androidextras
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri)
exists($$PWD/custom/android) {
message("Merging $$PWD/custom/android/ -> $$PWD/android/")
ANDROID_PACKAGE_SOURCE_DIR = $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR # Tells Qt location of package files for build
ANDROID_PACKAGE_QGC_SOURCE_DIR = $$PWD/android # Original location of QGC package files
ANDROID_PACKAGE_CUSTOM_SOURCE_DIR = $$PWD/custom/android # Original location for custom build override package files
ANDROID_PACKAGE_SOURCE_DIR = $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR
android_source_dir_target.target = android_source_dir
# We always move the package files to the ANDROID_PACKAGE_SOURCE_DIR build dir so we can modify the manifest as needed
android_source_dir_target.target = $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
android_source_dir_target.commands = \
$$QMAKE_MKDIR $$ANDROID_PACKAGE_SOURCE_DIR && \
$$QMAKE_COPY_DIR $$ANDROID_PACKAGE_QGC_SOURCE_DIR/* $$ANDROID_PACKAGE_SOURCE_DIR
PRE_TARGETDEPS += $$android_source_dir_target.target
QMAKE_EXTRA_TARGETS += android_source_dir_target
android_source_dir_target.commands = $$QMAKE_MKDIR $$ANDROID_PACKAGE_SOURCE_DIR && \
$$QMAKE_COPY_DIR $$PWD/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \
$$QMAKE_COPY_DIR $$PWD/custom/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \
$$QMAKE_STREAM_EDITOR -i \"s/package=\\\"org.mavlink.qgroundcontrol\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
android_source_dir_target.depends = FORCE
exists($$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR/AndroidManifest.xml) {
android_source_dir_target.depends = $$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR/AndroidManifest.xml
} else {
android_source_dir_target.depends = $$ANDROID_PACKAGE_QGC_SOURCE_DIR/AndroidManifest.xml
}
# Custom builds can override android package file
exists($$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR) {
message("Merging$$ $$ANDROID_PACKAGE_QGC_SOURCE_DIR and $$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR to $$ANDROID_PACKAGE_SOURCE_DIR")
android_source_dir_target.commands = $$android_source_dir_target.commands && \
$$QMAKE_COPY_DIR $$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR/* $$ANDROID_PACKAGE_SOURCE_DIR && \
$$QMAKE_STREAM_EDITOR -i \"s/package=\\\"org.mavlink.qgroundcontrol\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
}
# Insert package name into manifest file
android_source_dir_target.commands = $$android_source_dir_target.commands && \
$$QMAKE_STREAM_EDITOR -i \"s/%%QGC_INSERT_PACKAGE_NAME%%/$$QGC_ANDROID_PACKAGE/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
# Update manifest activity intent filter as needed
QGC_INSERT_ACTIVITY_INTENT_FILTER = ""
AndroidHomeApp {
# QGC is the android home application
QGC_INSERT_ACTIVITY_INTENT_FILTER = $$QGC_INSERT_ACTIVITY_INTENT_FILTER "\r\n<category android:name=\\\"android.intent.category.HOME\\\"\\\/>\r\n<category android:name=\\\"android.intent.category.DEFAULT\\\"\\\/>"
}
!contains(DEFINES, NO_SERIAL_LINK) {
# Add usb device support
QGC_INSERT_ACTIVITY_INTENT_FILTER = $$QGC_INSERT_ACTIVITY_INTENT_FILTER "\r\n<action android:name=\\\"android.hardware.usb.action.USB_DEVICE_ATTACHED\\\"\\\/>\r\n<action android:name=\\\"android.hardware.usb.action.USB_DEVICE_DETACHED\\\"\\\/>\r\n<action android:name=\\\"android.hardware.usb.action.USB_ACCESSORY_ATTACHED\\\"\\\/>"
}
contains(DEFINES, QGC_ENABLE_BLUETOOTH) {
QGC_INSERT_ACTIVITY_INTENT_FILTER = $$QGC_INSERT_ACTIVITY_INTENT_FILTER "\r\n<action android:name=\\\"android.bluetooth.device.action.ACL_CONNECTED\\\"\\\/>\r\n<action android:name=\\\"android.bluetooth.device.action.ACL_DISCONNECTED\\\"\\\/>"
}
android_source_dir_target.commands = $$android_source_dir_target.commands && \
$$QMAKE_STREAM_EDITOR -i \"s/<!-- %%QGC_INSERT_ACTIVITY_INTENT_FILTER -->/$$QGC_INSERT_ACTIVITY_INTENT_FILTER/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
# Update manifest activity meta data as needed
contains(DEFINES, NO_SERIAL_LINK) {
# No need to add anything to manifest
android_source_dir_target.commands = $$android_source_dir_target.commands && \
$$QMAKE_STREAM_EDITOR -i \"s/<!-- %%QGC_INSERT_ACTIVITY_META_DATA -->//\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
} else {
# Updates the manifest for usb device support
android_source_dir_target.commands = $$android_source_dir_target.commands && \
$$QMAKE_STREAM_EDITOR -i \"s/<!-- %%QGC_INSERT_ACTIVITY_META_DATA -->/<meta-data android:resource=\\\"@xml\\\/device_filter\\\" android:name=\\\"android.hardware.usb.action.USB_DEVICE_ATTACHED\\\"\\\/>\r\n<meta-data android:resource=\\\"@xml\\\/device_filter\\\" android:name=\\\"android.hardware.usb.action.USB_DEVICE_DETACHED\\\"\\\/>\r\n<meta-data android:resource=\\\"@xml\\\/device_filter\\\" android:name=\\\"android.hardware.usb.action.USB_ACCESSORY_ATTACHED\\\"\\\/>/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
}
# OTHER_FILES makes the specified files be visible in Qt Creator for editing
exists($$PWD/custom/android/AndroidManifest.xml) {
OTHER_FILES += \
$$PWD/custom/android/AndroidManifest.xml
@ -45,7 +92,6 @@ OTHER_FILES += \
$$PWD/android/src/org/freedesktop/gstreamer/androidmedia/GstAhsCallback.java \
$$PWD/android/src/org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
DISTFILES += \
$$PWD/android/gradle/wrapper/gradle-wrapper.jar \
$$PWD/android/gradlew \
@ -53,3 +99,12 @@ DISTFILES += \
$$PWD/android/build.gradle \
$$PWD/android/gradle/wrapper/gradle-wrapper.properties \
$$PWD/android/gradlew.bat
SOURCES += \
$$PWD/android/src/AndroidInterface.cc
HEADERS += \
$$PWD/android/src/AndroidInterface.h
INCLUDEPATH += \
$$PWD/android/src

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<manifest package="org.mavlink.qgroundcontrol" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto">
<manifest package="%%QGC_INSERT_PACKAGE_NAME%%" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto">
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
Remove the comment if you do not require these default permissions. -->
<!-- %%INSERT_PERMISSIONS -->
@ -14,15 +14,12 @@
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"/>
<action android:name="android.bluetooth.device.action.ACL_CONNECTED"/>
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED"/>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"/>
<!-- %%QGC_INSERT_ACTIVITY_INTENT_FILTER -->
</intent-filter>
<meta-data android:resource="@xml/device_filter" android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
<meta-data android:resource="@xml/device_filter" android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"/>
<meta-data android:resource="@xml/device_filter" android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"/>
<!-- %%QGC_INSERT_ACTIVITY_META_DATA -->
<!-- Application arguments -->
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
<!-- Application arguments -->
@ -98,9 +95,10 @@
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false"/>
<uses-feature android:name="android.hardware.location" android:required="false"/>
<uses-feature android:name="android.hardware.usb.accessory"/>
<uses-feature android:name="android.hardware.usb.accessory" android:required="false"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

0
android/GooglePlayScreenShot1.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

0
android/GooglePlayScreenShot2.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

0
android/libs/d2xx.jar Executable file → Normal file
View File

View File

@ -0,0 +1,36 @@
/****************************************************************************
*
* Copyright (C) 2018 Pinecone Inc. All rights reserved.
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#include <QtAndroidExtras/QtAndroidExtras>
#include <QtAndroidExtras/QAndroidJniObject>
#include "QGCApplication.h"
#include "AndroidInterface.h"
#include <QAndroidJniObject>
#include <QtAndroid>
QString AndroidInterface::getSDCardPath()
{
QAndroidJniObject value = QAndroidJniObject::callStaticObjectMethod("org/mavlink/qgroundcontrol/QGCActivity", "getSDCardPath",
"()Ljava/lang/String;");
QString sdCardPath = value.toString();
QString readPermission("android.permission.READ_EXTERNAL_STORAGE");
QString writePermission("android.permission.WRITE_EXTERNAL_STORAGE");
if (QtAndroid::checkPermission(readPermission) == QtAndroid::PermissionResult::Denied ||
QtAndroid::checkPermission(writePermission) == QtAndroid::PermissionResult::Denied) {
QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync(QStringList({ readPermission, writePermission }));
if (resultHash[readPermission] == QtAndroid::PermissionResult::Denied ||
resultHash[writePermission] == QtAndroid::PermissionResult::Denied) {
return QString();
}
}
return sdCardPath;
}

View File

@ -1,15 +1,21 @@
/****************************************************************************
*
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* Copyright (C) 2018 Pinecone Inc. All rights reserved.
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#include "AirspaceRestrictionProvider.h"
#pragma once
AirspaceRestrictionProvider::AirspaceRestrictionProvider(QObject *parent)
: QObject(parent)
#include <QObject>
#include <jni.h>
#include <QtCore/private/qjni_p.h>
#include <QtCore/private/qjnihelpers_p.h>
class AndroidInterface
{
}
public:
static QString getSDCardPath();
};

View File

@ -38,6 +38,7 @@ import java.util.concurrent.Executors;
import java.util.Timer;
import java.util.TimerTask;
import java.io.IOException;
import java.lang.reflect.Method;
import android.app.Activity;
import android.app.PendingIntent;
@ -58,6 +59,8 @@ import android.app.PendingIntent;
import android.view.WindowManager;
import android.os.Bundle;
import android.bluetooth.BluetoothDevice;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import com.hoho.android.usbserial.driver.*;
import org.qtproject.qt5.android.bindings.QtActivity;
@ -762,5 +765,34 @@ public class QGCActivity extends QtActivity
}
}).start();
}
public static String getSDCardPath() {
StorageManager storageManager = (StorageManager)_instance.getSystemService(Activity.STORAGE_SERVICE);
List<StorageVolume> volumes = storageManager.getStorageVolumes();
Method mMethodGetPath;
String path = "";
for (StorageVolume vol : volumes) {
try {
mMethodGetPath = vol.getClass().getMethod("getPath");
} catch (NoSuchMethodException e) {
e.printStackTrace();
continue;
}
try {
path = (String) mMethodGetPath.invoke(vol);
} catch (Exception e) {
e.printStackTrace();
continue;
}
if (vol.isRemovable() == true) {
Log.i(TAG, "removable sd card mounted " + path);
return path;
} else {
Log.i(TAG, "storage mounted " + path);
}
}
return "";
}
}

View File

@ -1,345 +0,0 @@
pipeline {
agent none
stages {
stage('build') {
parallel {
stage('Android 32 bit Release') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CCACHE_CPP2 = '1'
QGC_CONFIG = 'release'
QMAKE_VER = "5.12.5/android_armv7/bin/qmake"
QT_MKSPEC = "android-clang"
BITNESS=32
}
agent {
docker {
image 'mavlink/qgc-build-android:2019-11-12'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`nproc --all`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Android 64 bit Release') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CCACHE_CPP2 = '1'
QGC_CONFIG = 'release'
QMAKE_VER = "5.12.5/android_arm64_v8a/bin/qmake"
QT_MKSPEC = "android-clang"
BITNESS=64
}
agent {
docker {
image 'mavlink/qgc-build-android_arm64_v8a:2019-11-12'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
//sh 'cd build; make -j`nproc --all`' // FIXME
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Debug') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'debug'
QMAKE_VER = "5.12.5/gcc_64/bin/qmake"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-11-12'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`nproc --all`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Debug (cmake)') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CMAKE_BUILD_TYPE = 'Debug'
QT_VERSION = "5.12.5"
QT_MKSPEC = "gcc_64"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-11-12'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make linux'
//sh 'make linux check' // TODO: needs Xvfb or similar
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Release') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'release'
QMAKE_VER = "5.12.5/gcc_64/bin/qmake"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-11-12'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) {
sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h'
}
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
//sh 'cd build; make -j`nproc --all`' // TODO: increase slave memory
sh 'cd build; make'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Release (cmake)') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CMAKE_BUILD_TYPE = 'Release'
QT_VERSION = "5.12.5"
QT_MKSPEC = "gcc_64"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-11-12'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make linux'
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Debug') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'debug'
QMAKE_VER = "5.11.0/clang_64/bin/qmake"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`sysctl -n hw.ncpu`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Debug (cmake)') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CCACHE_CPP2 = '1'
CMAKE_BUILD_TYPE = 'Debug'
QT_VERSION = "5.11.0"
QT_MKSPEC = "clang_64"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make mac'
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Release') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CCACHE_CPP2 = '1'
QGC_CONFIG = 'installer'
QMAKE_VER = "5.11.0/clang_64/bin/qmake"
}
stages {
stage('Clean Checkout') {
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
}
}
stage('Add Airmap API key') {
steps {
withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) {
sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h'
}
}
when {
anyOf {
branch 'master';
branch 'Stable_*'
}
}
}
stage('Build OSX Release') {
steps {
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`sysctl -n hw.ncpu`'
archiveArtifacts(artifacts: 'build/**/*.dmg', fingerprint: true)
sh 'ccache -s'
}
}
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Release (cmake)') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CCACHE_CPP2 = '1'
CMAKE_BUILD_TYPE = 'Release'
QT_VERSION = "5.11.0"
QT_MKSPEC = "clang_64"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make mac'
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
} // parallel
} // stage('build')
} // stages
environment {
CCACHE_DIR = '/tmp/ccache'
QT_FATAL_WARNINGS = '1'
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30'))
timeout(time: 60, unit: 'MINUTES')
}
}

View File

@ -1,20 +0,0 @@
#!/bin/bash
if [ ! -d /Volumes/RAMDisk ] ; then
echo 'RAM Disk not found'
echo 'Only used for App Store builds. It will not work on your computer.'
exit 1
fi
#-- Set to my local installation
QMAKE=/Users/gus/Applications/Qt/5.12.2/ios/bin/qmake
#-- Using Travis variables as this will eventually live there
SHADOW_BUILD_DIR=/Volumes/RAMDisk/build-qgroundcontrol-iOS-Release
TRAVIS_BUILD_DIR=/Users/gus/github/work/UpstreamQGC
#-- Build it
mkdir -p ${SHADOW_BUILD_DIR} &&
cd ${SHADOW_BUILD_DIR} &&
#-- Create project only (build using Xcode)
${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore
sed -i .bak 's/com.yourcompany.${PRODUCT_NAME:rfc1034identifier}/org.QGroundControl.qgc/' ${SHADOW_BUILD_DIR}/QGroundControl.xcodeproj/project.pbxproj
#-- Create and build
#${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore &&
#xcodebuild -configuration Release -xcconfig ${TRAVIS_BUILD_DIR}/ios/qgroundcontrol_appstore.xcconfig

View File

@ -1,301 +1,301 @@
<RCC>
<qresource prefix="/InstrumentValueIcons">
<file alias="directions.svg">../resources/InstrumentValueIcons/directions.svg</file>
<file alias="announcement.svg">../resources/InstrumentValueIcons/announcement.svg</file>
<file alias="user-solid-square.svg">../resources/InstrumentValueIcons/user-solid-square.svg</file>
<file alias="shield.svg">../resources/InstrumentValueIcons/shield.svg</file>
<file alias="watch.svg">../resources/InstrumentValueIcons/watch.svg</file>
<file alias="share.svg">../resources/InstrumentValueIcons/share.svg</file>
<file alias="bookmark-outline-add.svg">../resources/InstrumentValueIcons/bookmark-outline-add.svg</file>
<file alias="arrow-thick-left.svg">../resources/InstrumentValueIcons/arrow-thick-left.svg</file>
<file alias="reload.svg">../resources/InstrumentValueIcons/reload.svg</file>
<file alias="badge.svg">../resources/InstrumentValueIcons/badge.svg</file>
<file alias="travel-walk.svg">../resources/InstrumentValueIcons/travel-walk.svg</file>
<file alias="cog.svg">../resources/InstrumentValueIcons/cog.svg</file>
<file alias="folder-outline.svg">../resources/InstrumentValueIcons/folder-outline.svg</file>
<file alias="queue.svg">../resources/InstrumentValueIcons/queue.svg</file>
<file alias="indent-decrease.svg">../resources/InstrumentValueIcons/indent-decrease.svg</file>
<file alias="menu.svg">../resources/InstrumentValueIcons/menu.svg</file>
<file alias="computer-laptop.svg">../resources/InstrumentValueIcons/computer-laptop.svg</file>
<file alias="view-column.svg">../resources/InstrumentValueIcons/view-column.svg</file>
<file alias="list.svg">../resources/InstrumentValueIcons/list.svg</file>
<file alias="question.svg">../resources/InstrumentValueIcons/question.svg</file>
<file alias="music-artist.svg">../resources/InstrumentValueIcons/music-artist.svg</file>
<file alias="playlist.svg">../resources/InstrumentValueIcons/playlist.svg</file>
<file alias="wallet.svg">../resources/InstrumentValueIcons/wallet.svg</file>
<file alias="bluetooth.svg">../resources/InstrumentValueIcons/bluetooth.svg</file>
<file alias="radar copy 2.svg">../resources/InstrumentValueIcons/radar copy 2.svg</file>
<file alias="tuning.svg">../resources/InstrumentValueIcons/tuning.svg</file>
<file alias="book-reference.svg">../resources/InstrumentValueIcons/book-reference.svg</file>
<file alias="information-solid.svg">../resources/InstrumentValueIcons/information-solid.svg</file>
<file alias="user-group.svg">../resources/InstrumentValueIcons/user-group.svg</file>
<file alias="view-hide.svg">../resources/InstrumentValueIcons/view-hide.svg</file>
<file alias="gift.svg">../resources/InstrumentValueIcons/gift.svg</file>
<file alias="pylon.svg">../resources/InstrumentValueIcons/pylon.svg</file>
<file alias="arrow-thin-left.svg">../resources/InstrumentValueIcons/arrow-thin-left.svg</file>
<file alias="pause.svg">../resources/InstrumentValueIcons/pause.svg</file>
<file alias="layers.svg">../resources/InstrumentValueIcons/layers.svg</file>
<file alias="repost.svg">../resources/InstrumentValueIcons/repost.svg</file>
<file alias="hand-stop.svg">../resources/InstrumentValueIcons/hand-stop.svg</file>
<file alias="border-horizontal.svg">../resources/InstrumentValueIcons/border-horizontal.svg</file>
<file alias="send.svg">../resources/InstrumentValueIcons/send.svg</file>
<file alias="beverage.svg">../resources/InstrumentValueIcons/beverage.svg</file>
<file alias="align-center.svg">../resources/InstrumentValueIcons/align-center.svg</file>
<file alias="travel-bus.svg">../resources/InstrumentValueIcons/travel-bus.svg</file>
<file alias="artist.svg">../resources/InstrumentValueIcons/artist.svg</file>
<file alias="color-palette.svg">../resources/InstrumentValueIcons/color-palette.svg</file>
<file alias="compose.svg">../resources/InstrumentValueIcons/compose.svg</file>
<file alias="news-paper.svg">../resources/InstrumentValueIcons/news-paper.svg</file>
<file alias="printer.svg">../resources/InstrumentValueIcons/printer.svg</file>
<file alias="border-all.svg">../resources/InstrumentValueIcons/border-all.svg</file>
<file alias="edit-copy.svg">../resources/InstrumentValueIcons/edit-copy.svg</file>
<file alias="dots-horizontal-triple.svg">../resources/InstrumentValueIcons/dots-horizontal-triple.svg</file>
<file alias="border-left.svg">../resources/InstrumentValueIcons/border-left.svg</file>
<file alias="view-show.svg">../resources/InstrumentValueIcons/view-show.svg</file>
<file alias="globe.svg">../resources/InstrumentValueIcons/globe.svg</file>
<file alias="subdirectory-right.svg">../resources/InstrumentValueIcons/subdirectory-right.svg</file>
<file alias="chart.svg">../resources/InstrumentValueIcons/chart.svg</file>
<file alias="arrow-outline-down.svg">../resources/InstrumentValueIcons/arrow-outline-down.svg</file>
<file alias="browser-window.svg">../resources/InstrumentValueIcons/browser-window.svg</file>
<file alias="inbox.svg">../resources/InstrumentValueIcons/inbox.svg</file>
<file alias="music-album.svg">../resources/InstrumentValueIcons/music-album.svg</file>
<file alias="currency-dollar.svg">../resources/InstrumentValueIcons/currency-dollar.svg</file>
<file alias="chart-bar.svg">../resources/InstrumentValueIcons/chart-bar.svg</file>
<file alias="text-box.svg">../resources/InstrumentValueIcons/text-box.svg</file>
<file alias="border-outer.svg">../resources/InstrumentValueIcons/border-outer.svg</file>
<file alias="stethoscope.svg">../resources/InstrumentValueIcons/stethoscope.svg</file>
<file alias="coffee.svg">../resources/InstrumentValueIcons/coffee.svg</file>
<file alias="timer.svg">../resources/InstrumentValueIcons/timer.svg</file>
<file alias="mood-sad-outline.svg">../resources/InstrumentValueIcons/mood-sad-outline.svg</file>
<file alias="show-sidebar.svg">../resources/InstrumentValueIcons/show-sidebar.svg</file>
<file alias="border-vertical.svg">../resources/InstrumentValueIcons/border-vertical.svg</file>
<file alias="thumbs-up.svg">../resources/InstrumentValueIcons/thumbs-up.svg</file>
<file alias="step-forward.svg">../resources/InstrumentValueIcons/step-forward.svg</file>
<file alias="location-marina.svg">../resources/InstrumentValueIcons/location-marina.svg</file>
<file alias="inbox-download.svg">../resources/InstrumentValueIcons/inbox-download.svg</file>
<file alias="cheveron-outline-down.svg">../resources/InstrumentValueIcons/cheveron-outline-down.svg</file>
<file alias="volume-down.svg">../resources/InstrumentValueIcons/volume-down.svg</file>
<file alias="browser-window-new.svg">../resources/InstrumentValueIcons/browser-window-new.svg</file>
<file alias="add-solid.svg">../resources/InstrumentValueIcons/add-solid.svg</file>
<file alias="credit-card.svg">../resources/InstrumentValueIcons/credit-card.svg</file>
<file alias="cheveron-outline-up.svg">../resources/InstrumentValueIcons/cheveron-outline-up.svg</file>
<file alias="edit-pencil.svg">../resources/InstrumentValueIcons/edit-pencil.svg</file>
<file alias="format-bold.svg">../resources/InstrumentValueIcons/format-bold.svg</file>
<file alias="paste.svg">../resources/InstrumentValueIcons/paste.svg</file>
<file alias="radio.svg">../resources/InstrumentValueIcons/radio.svg</file>
<file alias="album.svg">../resources/InstrumentValueIcons/album.svg</file>
<file alias="at-symbol.svg">../resources/InstrumentValueIcons/at-symbol.svg</file>
<file alias="education.svg">../resources/InstrumentValueIcons/education.svg</file>
<file alias="radar.svg">../resources/InstrumentValueIcons/radar.svg</file>
<file alias="headphones.svg">../resources/InstrumentValueIcons/headphones.svg</file>
<file alias="load-balancer.svg">../resources/InstrumentValueIcons/load-balancer.svg</file>
<file alias="home.svg">../resources/InstrumentValueIcons/home.svg</file>
<file alias="backward.svg">../resources/InstrumentValueIcons/backward.svg</file>
<file alias="tablet.svg">../resources/InstrumentValueIcons/tablet.svg</file>
<file alias="mood-happy-solid.svg">../resources/InstrumentValueIcons/mood-happy-solid.svg</file>
<file alias="align-right.svg">../resources/InstrumentValueIcons/align-right.svg</file>
<file alias="folder.svg">../resources/InstrumentValueIcons/folder.svg</file>
<file alias="duplicate.svg">../resources/InstrumentValueIcons/duplicate.svg</file>
<file alias="envelope.svg">../resources/InstrumentValueIcons/envelope.svg</file>
<file alias="bookmark copy 3.svg">../resources/InstrumentValueIcons/bookmark copy 3.svg</file>
<file alias="lock-closed.svg">../resources/InstrumentValueIcons/lock-closed.svg</file>
<file alias="clipboard.svg">../resources/InstrumentValueIcons/clipboard.svg</file>
<file alias="border-bottom.svg">../resources/InstrumentValueIcons/border-bottom.svg</file>
<file alias="shuffle.svg">../resources/InstrumentValueIcons/shuffle.svg</file>
<file alias="save-disk.svg">../resources/InstrumentValueIcons/save-disk.svg</file>
<file alias="refresh.svg">../resources/InstrumentValueIcons/refresh.svg</file>
<file alias="lock-open.svg">../resources/InstrumentValueIcons/lock-open.svg</file>
<file alias="link.svg">../resources/InstrumentValueIcons/link.svg</file>
<file alias="view-carousel.svg">../resources/InstrumentValueIcons/view-carousel.svg</file>
<file alias="share-01.svg">../resources/InstrumentValueIcons/share-01.svg</file>
<file alias="arrow-thick-down.svg">../resources/InstrumentValueIcons/arrow-thick-down.svg</file>
<file alias="ticket.svg">../resources/InstrumentValueIcons/ticket.svg</file>
<file alias="portfolio.svg">../resources/InstrumentValueIcons/portfolio.svg</file>
<file alias="arrow-simple-down.svg">../resources/InstrumentValueIcons/arrow-simple-down.svg</file>
<file alias="location-restroom.svg">../resources/InstrumentValueIcons/location-restroom.svg</file>
<file alias="yin-yang.svg">../resources/InstrumentValueIcons/yin-yang.svg</file>
<file alias="buoy.svg">../resources/InstrumentValueIcons/buoy.svg</file>
<file alias="play-outline.svg">../resources/InstrumentValueIcons/play-outline.svg</file>
<file alias="box.svg">../resources/InstrumentValueIcons/box.svg</file>
<file alias="align-left.svg">../resources/InstrumentValueIcons/align-left.svg</file>
<file alias="minus-solid.svg">../resources/InstrumentValueIcons/minus-solid.svg</file>
<file alias="play.svg">../resources/InstrumentValueIcons/play.svg</file>
<file alias="format-italic.svg">../resources/InstrumentValueIcons/format-italic.svg</file>
<file alias="close.svg">../resources/InstrumentValueIcons/close.svg</file>
<file alias="screen-full.svg">../resources/InstrumentValueIcons/screen-full.svg</file>
<file alias="airplane.svg">../resources/InstrumentValueIcons/airplane.svg</file>
<file alias="forward.svg">../resources/InstrumentValueIcons/forward.svg</file>
<file alias="document.svg">../resources/InstrumentValueIcons/document.svg</file>
<file alias="cheveron-outline-left.svg">../resources/InstrumentValueIcons/cheveron-outline-left.svg</file>
<file alias="travel-car.svg">../resources/InstrumentValueIcons/travel-car.svg</file>
<file alias="library.svg">../resources/InstrumentValueIcons/library.svg</file>
<file alias="heart.svg">../resources/InstrumentValueIcons/heart.svg</file>
<file alias="zoom-out.svg">../resources/InstrumentValueIcons/zoom-out.svg</file>
<file alias="travel-taxi-cab.svg">../resources/InstrumentValueIcons/travel-taxi-cab.svg</file>
<file alias="chat-bubble-dots.svg">../resources/InstrumentValueIcons/chat-bubble-dots.svg</file>
<file alias="vector.svg">../resources/InstrumentValueIcons/vector.svg</file>
<file alias="notifications-outline.svg">../resources/InstrumentValueIcons/notifications-outline.svg</file>
<file alias="swap.svg">../resources/InstrumentValueIcons/swap.svg</file>
<file alias="mic.svg">../resources/InstrumentValueIcons/mic.svg</file>
<file alias="folder-outline-add.svg">../resources/InstrumentValueIcons/folder-outline-add.svg</file>
<file alias="forward-step.svg">../resources/InstrumentValueIcons/forward-step.svg</file>
<file alias="minus-outline.svg">../resources/InstrumentValueIcons/minus-outline.svg</file>
<file alias="translate.svg">../resources/InstrumentValueIcons/translate.svg</file>
<file alias="navigation-more.svg">../resources/InstrumentValueIcons/navigation-more.svg</file>
<file alias="battery-full.svg">../resources/InstrumentValueIcons/battery-full.svg</file>
<file alias="pause-solid.svg">../resources/InstrumentValueIcons/pause-solid.svg</file>
<file alias="explore.svg">../resources/InstrumentValueIcons/explore.svg</file>
<file alias="format-text-size.svg">../resources/InstrumentValueIcons/format-text-size.svg</file>
<file alias="reply.svg">../resources/InstrumentValueIcons/reply.svg</file>
<file alias="volume-off.svg">../resources/InstrumentValueIcons/volume-off.svg</file>
<file alias="list-add.svg">../resources/InstrumentValueIcons/list-add.svg</file>
<file alias="pin.svg">../resources/InstrumentValueIcons/pin.svg</file>
<file alias="zoom-in.svg">../resources/InstrumentValueIcons/zoom-in.svg</file>
<file alias="photo.svg">../resources/InstrumentValueIcons/photo.svg</file>
<file alias="mobile-devices.svg">../resources/InstrumentValueIcons/mobile-devices.svg</file>
<file alias="text-decoration.svg">../resources/InstrumentValueIcons/text-decoration.svg</file>
<file alias="music-playlist.svg">../resources/InstrumentValueIcons/music-playlist.svg</file>
<file alias="step-backward.svg">../resources/InstrumentValueIcons/step-backward.svg</file>
<file alias="information-outline.svg">../resources/InstrumentValueIcons/information-outline.svg</file>
<file alias="share-alt.svg">../resources/InstrumentValueIcons/share-alt.svg</file>
<file alias="exclamation-outline.svg">../resources/InstrumentValueIcons/exclamation-outline.svg</file>
<file alias="notification.svg">../resources/InstrumentValueIcons/notification.svg</file>
<file alias="window.svg">../resources/InstrumentValueIcons/window.svg</file>
<file alias="map.svg">../resources/InstrumentValueIcons/map.svg</file>
<file alias="thermometer.svg">../resources/InstrumentValueIcons/thermometer.svg</file>
<file alias="calendar.svg">../resources/InstrumentValueIcons/calendar.svg</file>
<file alias="stand-by.svg">../resources/InstrumentValueIcons/stand-by.svg</file>
<file alias="thumbs-down.svg">../resources/InstrumentValueIcons/thumbs-down.svg</file>
<file alias="cheveron-down.svg">../resources/InstrumentValueIcons/cheveron-down.svg</file>
<file alias="factory.svg">../resources/InstrumentValueIcons/factory.svg</file>
<file alias="stroke-width.svg">../resources/InstrumentValueIcons/stroke-width.svg</file>
<file alias="indent-increase.svg">../resources/InstrumentValueIcons/indent-increase.svg</file>
<file alias="search.svg">../resources/InstrumentValueIcons/search.svg</file>
<file alias="add-outline.svg">../resources/InstrumentValueIcons/add-outline.svg</file>
<file alias="mood-neutral-outline.svg">../resources/InstrumentValueIcons/mood-neutral-outline.svg</file>
<file alias="cheveron-outline-right.svg">../resources/InstrumentValueIcons/cheveron-outline-right.svg</file>
<file alias="arrow-thick-right.svg">../resources/InstrumentValueIcons/arrow-thick-right.svg</file>
<file alias="key.svg">../resources/InstrumentValueIcons/key.svg</file>
<file alias="cloud.svg">../resources/InstrumentValueIcons/cloud.svg</file>
<file alias="mood-happy-outline.svg">../resources/InstrumentValueIcons/mood-happy-outline.svg</file>
<file alias="dots-horizontal-double.svg">../resources/InstrumentValueIcons/dots-horizontal-double.svg</file>
<file alias="format-font-size.svg">../resources/InstrumentValueIcons/format-font-size.svg</file>
<file alias="arrow-outline-up.svg">../resources/InstrumentValueIcons/arrow-outline-up.svg</file>
<file alias="arrow-thin-up.svg">../resources/InstrumentValueIcons/arrow-thin-up.svg</file>
<file alias="network.svg">../resources/InstrumentValueIcons/network.svg</file>
<file alias="mouse.svg">../resources/InstrumentValueIcons/mouse.svg</file>
<file alias="checkmark-outline.svg">../resources/InstrumentValueIcons/checkmark-outline.svg</file>
<file alias="mood-sad-solid.svg">../resources/InstrumentValueIcons/mood-sad-solid.svg</file>
<file alias="store-front.svg">../resources/InstrumentValueIcons/store-front.svg</file>
<file alias="battery-half.svg">../resources/InstrumentValueIcons/battery-half.svg</file>
<file alias="tools copy.svg">../resources/InstrumentValueIcons/tools copy.svg</file>
<file alias="time.svg">../resources/InstrumentValueIcons/time.svg</file>
<file alias="block.svg">../resources/InstrumentValueIcons/block.svg</file>
<file alias="camera.svg">../resources/InstrumentValueIcons/camera.svg</file>
<file alias="user-add.svg">../resources/InstrumentValueIcons/user-add.svg</file>
<file alias="cheveron-up.svg">../resources/InstrumentValueIcons/cheveron-up.svg</file>
<file alias="window-new.svg">../resources/InstrumentValueIcons/window-new.svg</file>
<file alias="battery-low.svg">../resources/InstrumentValueIcons/battery-low.svg</file>
<file alias="volume-up.svg">../resources/InstrumentValueIcons/volume-up.svg</file>
<file alias="volume-mute.svg">../resources/InstrumentValueIcons/volume-mute.svg</file>
<file alias="arrow-simple-up.svg">../resources/InstrumentValueIcons/arrow-simple-up.svg</file>
<file alias="travel.svg">../resources/InstrumentValueIcons/travel.svg</file>
<file alias="location.svg">../resources/InstrumentValueIcons/location.svg</file>
<file alias="dashboard.svg">../resources/InstrumentValueIcons/dashboard.svg</file>
<file alias="light-bulb.svg">../resources/InstrumentValueIcons/light-bulb.svg</file>
<file alias="travel-case.svg">../resources/InstrumentValueIcons/travel-case.svg</file>
<file alias="edit-crop.svg">../resources/InstrumentValueIcons/edit-crop.svg</file>
<file alias="close-solid.svg">../resources/InstrumentValueIcons/close-solid.svg</file>
<file alias="notifications.svg">../resources/InstrumentValueIcons/notifications.svg</file>
<file alias="video-camera.svg">../resources/InstrumentValueIcons/video-camera.svg</file>
<file alias="film.svg">../resources/InstrumentValueIcons/film.svg</file>
<file alias="border-right.svg">../resources/InstrumentValueIcons/border-right.svg</file>
<file alias="bolt.svg">../resources/InstrumentValueIcons/bolt.svg</file>
<file alias="keyboard.svg">../resources/InstrumentValueIcons/keyboard.svg</file>
<file alias="shopping-cart.svg">../resources/InstrumentValueIcons/shopping-cart.svg</file>
<file alias="cheveron-left.svg">../resources/InstrumentValueIcons/cheveron-left.svg</file>
<file alias="flag.svg">../resources/InstrumentValueIcons/flag.svg</file>
<file alias="adjust.svg">../resources/InstrumentValueIcons/adjust.svg</file>
<file alias="wrench.svg">../resources/InstrumentValueIcons/wrench.svg</file>
<file alias="station.svg">../resources/InstrumentValueIcons/station.svg</file>
<file alias="target.svg">../resources/InstrumentValueIcons/target.svg</file>
<file alias="location-food.svg">../resources/InstrumentValueIcons/location-food.svg</file>
<file alias="hour-glass.svg">../resources/InstrumentValueIcons/hour-glass.svg</file>
<file alias="date-add.svg">../resources/InstrumentValueIcons/date-add.svg</file>
<file alias="location-gas-station.svg">../resources/InstrumentValueIcons/location-gas-station.svg</file>
<file alias="cheveron-right.svg">../resources/InstrumentValueIcons/cheveron-right.svg</file>
<file alias="checkmark.svg">../resources/InstrumentValueIcons/checkmark.svg</file>
<file alias="format-underline.svg">../resources/InstrumentValueIcons/format-underline.svg</file>
<file alias="border-none.svg">../resources/InstrumentValueIcons/border-none.svg</file>
<file alias="inbox-full.svg">../resources/InstrumentValueIcons/inbox-full.svg</file>
<file alias="window-open.svg">../resources/InstrumentValueIcons/window-open.svg</file>
<file alias="travel-train.svg">../resources/InstrumentValueIcons/travel-train.svg</file>
<file alias="location-current.svg">../resources/InstrumentValueIcons/location-current.svg</file>
<file alias="computer-desktop.svg">../resources/InstrumentValueIcons/computer-desktop.svg</file>
<file alias="servers.svg">../resources/InstrumentValueIcons/servers.svg</file>
<file alias="close-outline.svg">../resources/InstrumentValueIcons/close-outline.svg</file>
<file alias="apparel.svg">../resources/InstrumentValueIcons/apparel.svg</file>
<file alias="arrow-thick-up.svg">../resources/InstrumentValueIcons/arrow-thick-up.svg</file>
<file alias="border-top.svg">../resources/InstrumentValueIcons/border-top.svg</file>
<file alias="bookmark copy 2.svg">../resources/InstrumentValueIcons/bookmark copy 2.svg</file>
<file alias="trophy.svg">../resources/InstrumentValueIcons/trophy.svg</file>
<file alias="view-list.svg">../resources/InstrumentValueIcons/view-list.svg</file>
<file alias="arrow-thin-right.svg">../resources/InstrumentValueIcons/arrow-thin-right.svg</file>
<file alias="arrow-outline-left.svg">../resources/InstrumentValueIcons/arrow-outline-left.svg</file>
<file alias="edit-cut.svg">../resources/InstrumentValueIcons/edit-cut.svg</file>
<file alias="brightness-up.svg">../resources/InstrumentValueIcons/brightness-up.svg</file>
<file alias="phone.svg">../resources/InstrumentValueIcons/phone.svg</file>
<file alias="arrow-outline-right.svg">../resources/InstrumentValueIcons/arrow-outline-right.svg</file>
<file alias="mood-neutral-solid.svg">../resources/InstrumentValueIcons/mood-neutral-solid.svg</file>
<file alias="arrow-base-down.svg">../resources/InstrumentValueIcons/arrow-base-down.svg</file>
<file alias="arrow-simple-left.svg">../resources/InstrumentValueIcons/arrow-simple-left.svg</file>
<file alias="browser-window-open.svg">../resources/InstrumentValueIcons/browser-window-open.svg</file>
<file alias="document-add.svg">../resources/InstrumentValueIcons/document-add.svg</file>
<file alias="inbox-check.svg">../resources/InstrumentValueIcons/inbox-check.svg</file>
<file alias="star-full.svg">../resources/InstrumentValueIcons/star-full.svg</file>
<file alias="fast-forward.svg">../resources/InstrumentValueIcons/fast-forward.svg</file>
<file alias="fast-rewind.svg">../resources/InstrumentValueIcons/fast-rewind.svg</file>
<file alias="hot.svg">../resources/InstrumentValueIcons/hot.svg</file>
<file alias="brightness-down.svg">../resources/InstrumentValueIcons/brightness-down.svg</file>
<file alias="backward-step.svg">../resources/InstrumentValueIcons/backward-step.svg</file>
<file alias="user.svg">../resources/InstrumentValueIcons/user.svg</file>
<file alias="backspace.svg">../resources/InstrumentValueIcons/backspace.svg</file>
<file alias="border-inner.svg">../resources/InstrumentValueIcons/border-inner.svg</file>
<file alias="chart-pie.svg">../resources/InstrumentValueIcons/chart-pie.svg</file>
<file alias="arrow-base-up.svg">../resources/InstrumentValueIcons/arrow-base-up.svg</file>
<file alias="music-notes.svg">../resources/InstrumentValueIcons/music-notes.svg</file>
<file alias="filter.svg">../resources/InstrumentValueIcons/filter.svg</file>
<file alias="code.svg">../resources/InstrumentValueIcons/code.svg</file>
<file alias="dial-pad.svg">../resources/InstrumentValueIcons/dial-pad.svg</file>
<file alias="reply-all.svg">../resources/InstrumentValueIcons/reply-all.svg</file>
<file alias="arrow-thin-down.svg">../resources/InstrumentValueIcons/arrow-thin-down.svg</file>
<file alias="usb.svg">../resources/InstrumentValueIcons/usb.svg</file>
<file alias="anchor.svg">../resources/InstrumentValueIcons/anchor.svg</file>
<file alias="align-justified.svg">../resources/InstrumentValueIcons/align-justified.svg</file>
<file alias="conversation.svg">../resources/InstrumentValueIcons/conversation.svg</file>
<file alias="bug.svg">../resources/InstrumentValueIcons/bug.svg</file>
<file alias="arrow-simple-right.svg">../resources/InstrumentValueIcons/arrow-simple-right.svg</file>
<file alias="location-park.svg">../resources/InstrumentValueIcons/location-park.svg</file>
<file alias="flashlight.svg">../resources/InstrumentValueIcons/flashlight.svg</file>
<file alias="pen-tool.svg">../resources/InstrumentValueIcons/pen-tool.svg</file>
<file alias="subdirectory-left.svg">../resources/InstrumentValueIcons/subdirectory-left.svg</file>
<file alias="exclamation-solid.svg">../resources/InstrumentValueIcons/exclamation-solid.svg</file>
<file alias="php-elephant.svg">../resources/InstrumentValueIcons/php-elephant.svg</file>
<file alias="bookmark.svg">../resources/InstrumentValueIcons/bookmark.svg</file>
<file alias="location-hotel.svg">../resources/InstrumentValueIcons/location-hotel.svg</file>
<file alias="calculator.svg">../resources/InstrumentValueIcons/calculator.svg</file>
<file alias="view-tile.svg">../resources/InstrumentValueIcons/view-tile.svg</file>
<file alias="plugin.svg">../resources/InstrumentValueIcons/plugin.svg</file>
<file alias="tag.svg">../resources/InstrumentValueIcons/tag.svg</file>
<file alias="pause-outline.svg">../resources/InstrumentValueIcons/pause-outline.svg</file>
<file alias="copy.svg">../resources/InstrumentValueIcons/copy.svg</file>
<file alias="hard-drive.svg">../resources/InstrumentValueIcons/hard-drive.svg</file>
<file alias="attachment.svg">../resources/InstrumentValueIcons/attachment.svg</file>
<file alias="cloud-upload.svg">../resources/InstrumentValueIcons/cloud-upload.svg</file>
<file alias="list-bullet.svg">../resources/InstrumentValueIcons/list-bullet.svg</file>
<file alias="user-solid-circle.svg">../resources/InstrumentValueIcons/user-solid-circle.svg</file>
<file alias="trash.svg">../resources/InstrumentValueIcons/trash.svg</file>
<file alias="bookmark-outline.svg">../resources/InstrumentValueIcons/bookmark-outline.svg</file>
<file alias="cheveron-up.svg">../resources/InstrumentValueIcons/cheveron-up.svg</file>
<file alias="location-shopping.svg">../resources/InstrumentValueIcons/location-shopping.svg</file>
<file alias="cheveron-right.svg">../resources/InstrumentValueIcons/cheveron-right.svg</file>
<file alias="bookmark.svg">../resources/InstrumentValueIcons/bookmark.svg</file>
<file alias="travel-case.svg">../resources/InstrumentValueIcons/travel-case.svg</file>
<file alias="user-solid-square.svg">../resources/InstrumentValueIcons/user-solid-square.svg</file>
<file alias="arrow-simple-up.svg">../resources/InstrumentValueIcons/arrow-simple-up.svg</file>
<file alias="list.svg">../resources/InstrumentValueIcons/list.svg</file>
<file alias="shuffle.svg">../resources/InstrumentValueIcons/shuffle.svg</file>
<file alias="travel-walk.svg">../resources/InstrumentValueIcons/travel-walk.svg</file>
<file alias="checkmark.svg">../resources/InstrumentValueIcons/checkmark.svg</file>
<file alias="trophy.svg">../resources/InstrumentValueIcons/trophy.svg</file>
<file alias="mood-happy-solid.svg">../resources/InstrumentValueIcons/mood-happy-solid.svg</file>
<file alias="cog.svg">../resources/InstrumentValueIcons/cog.svg</file>
<file alias="text-box.svg">../resources/InstrumentValueIcons/text-box.svg</file>
<file alias="video-camera.svg">../resources/InstrumentValueIcons/video-camera.svg</file>
<file alias="backward-step.svg">../resources/InstrumentValueIcons/backward-step.svg</file>
<file alias="view-column.svg">../resources/InstrumentValueIcons/view-column.svg</file>
<file alias="add-outline.svg">../resources/InstrumentValueIcons/add-outline.svg</file>
<file alias="battery-low.svg">../resources/InstrumentValueIcons/battery-low.svg</file>
<file alias="bookmark copy 2.svg">../resources/InstrumentValueIcons/bookmark copy 2.svg</file>
<file alias="volume-down.svg">../resources/InstrumentValueIcons/volume-down.svg</file>
<file alias="travel-taxi-cab.svg">../resources/InstrumentValueIcons/travel-taxi-cab.svg</file>
<file alias="camera.svg">../resources/InstrumentValueIcons/camera.svg</file>
<file alias="apparel.svg">../resources/InstrumentValueIcons/apparel.svg</file>
<file alias="checkmark-outline.svg">../resources/InstrumentValueIcons/checkmark-outline.svg</file>
<file alias="envelope.svg">../resources/InstrumentValueIcons/envelope.svg</file>
<file alias="flag.svg">../resources/InstrumentValueIcons/flag.svg</file>
<file alias="window-new.svg">../resources/InstrumentValueIcons/window-new.svg</file>
<file alias="arrow-simple-right.svg">../resources/InstrumentValueIcons/arrow-simple-right.svg</file>
<file alias="filter.svg">../resources/InstrumentValueIcons/filter.svg</file>
<file alias="minus-outline.svg">../resources/InstrumentValueIcons/minus-outline.svg</file>
<file alias="edit-cut.svg">../resources/InstrumentValueIcons/edit-cut.svg</file>
<file alias="volume-off.svg">../resources/InstrumentValueIcons/volume-off.svg</file>
<file alias="zoom-in.svg">../resources/InstrumentValueIcons/zoom-in.svg</file>
<file alias="pin.svg">../resources/InstrumentValueIcons/pin.svg</file>
<file alias="layers.svg">../resources/InstrumentValueIcons/layers.svg</file>
<file alias="airplane.svg">../resources/InstrumentValueIcons/airplane.svg</file>
<file alias="view-tile.svg">../resources/InstrumentValueIcons/view-tile.svg</file>
<file alias="location-marina.svg">../resources/InstrumentValueIcons/location-marina.svg</file>
<file alias="border-top.svg">../resources/InstrumentValueIcons/border-top.svg</file>
<file alias="refresh.svg">../resources/InstrumentValueIcons/refresh.svg</file>
<file alias="travel-bus.svg">../resources/InstrumentValueIcons/travel-bus.svg</file>
<file alias="add-solid.svg">../resources/InstrumentValueIcons/add-solid.svg</file>
<file alias="notifications.svg">../resources/InstrumentValueIcons/notifications.svg</file>
<file alias="indent-decrease.svg">../resources/InstrumentValueIcons/indent-decrease.svg</file>
<file alias="badge.svg">../resources/InstrumentValueIcons/badge.svg</file>
<file alias="align-center.svg">../resources/InstrumentValueIcons/align-center.svg</file>
<file alias="queue.svg">../resources/InstrumentValueIcons/queue.svg</file>
<file alias="conversation.svg">../resources/InstrumentValueIcons/conversation.svg</file>
<file alias="inbox-download.svg">../resources/InstrumentValueIcons/inbox-download.svg</file>
<file alias="cloud.svg">../resources/InstrumentValueIcons/cloud.svg</file>
<file alias="text-decoration.svg">../resources/InstrumentValueIcons/text-decoration.svg</file>
<file alias="date-add.svg">../resources/InstrumentValueIcons/date-add.svg</file>
<file alias="network.svg">../resources/InstrumentValueIcons/network.svg</file>
<file alias="list-add.svg">../resources/InstrumentValueIcons/list-add.svg</file>
<file alias="film.svg">../resources/InstrumentValueIcons/film.svg</file>
<file alias="book-reference.svg">../resources/InstrumentValueIcons/book-reference.svg</file>
<file alias="star-full.svg">../resources/InstrumentValueIcons/star-full.svg</file>
<file alias="information-outline.svg">../resources/InstrumentValueIcons/information-outline.svg</file>
<file alias="user-group.svg">../resources/InstrumentValueIcons/user-group.svg</file>
<file alias="hard-drive.svg">../resources/InstrumentValueIcons/hard-drive.svg</file>
<file alias="chart-bar.svg">../resources/InstrumentValueIcons/chart-bar.svg</file>
<file alias="box.svg">../resources/InstrumentValueIcons/box.svg</file>
<file alias="music-notes.svg">../resources/InstrumentValueIcons/music-notes.svg</file>
<file alias="bookmark copy 3.svg">../resources/InstrumentValueIcons/bookmark copy 3.svg</file>
<file alias="anchor.svg">../resources/InstrumentValueIcons/anchor.svg</file>
<file alias="mood-sad-solid.svg">../resources/InstrumentValueIcons/mood-sad-solid.svg</file>
<file alias="coffee.svg">../resources/InstrumentValueIcons/coffee.svg</file>
<file alias="mood-neutral-outline.svg">../resources/InstrumentValueIcons/mood-neutral-outline.svg</file>
<file alias="menu.svg">../resources/InstrumentValueIcons/menu.svg</file>
<file alias="fast-rewind.svg">../resources/InstrumentValueIcons/fast-rewind.svg</file>
<file alias="user-add.svg">../resources/InstrumentValueIcons/user-add.svg</file>
<file alias="mobile-devices.svg">../resources/InstrumentValueIcons/mobile-devices.svg</file>
<file alias="time.svg">../resources/InstrumentValueIcons/time.svg</file>
<file alias="subdirectory-left.svg">../resources/InstrumentValueIcons/subdirectory-left.svg</file>
<file alias="window.svg">../resources/InstrumentValueIcons/window.svg</file>
<file alias="hand-stop.svg">../resources/InstrumentValueIcons/hand-stop.svg</file>
<file alias="beverage.svg">../resources/InstrumentValueIcons/beverage.svg</file>
<file alias="volume-mute.svg">../resources/InstrumentValueIcons/volume-mute.svg</file>
<file alias="reply-all.svg">../resources/InstrumentValueIcons/reply-all.svg</file>
<file alias="location-food.svg">../resources/InstrumentValueIcons/location-food.svg</file>
<file alias="arrow-thin-left.svg">../resources/InstrumentValueIcons/arrow-thin-left.svg</file>
<file alias="folder-outline.svg">../resources/InstrumentValueIcons/folder-outline.svg</file>
<file alias="dial-pad.svg">../resources/InstrumentValueIcons/dial-pad.svg</file>
<file alias="battery-half.svg">../resources/InstrumentValueIcons/battery-half.svg</file>
<file alias="trash.svg">../resources/InstrumentValueIcons/trash.svg</file>
<file alias="notification.svg">../resources/InstrumentValueIcons/notification.svg</file>
<file alias="send.svg">../resources/InstrumentValueIcons/send.svg</file>
<file alias="station.svg">../resources/InstrumentValueIcons/station.svg</file>
<file alias="pen-tool.svg">../resources/InstrumentValueIcons/pen-tool.svg</file>
<file alias="gift.svg">../resources/InstrumentValueIcons/gift.svg</file>
<file alias="arrow-outline-down.svg">../resources/InstrumentValueIcons/arrow-outline-down.svg</file>
<file alias="ticket.svg">../resources/InstrumentValueIcons/ticket.svg</file>
<file alias="border-none.svg">../resources/InstrumentValueIcons/border-none.svg</file>
<file alias="format-italic.svg">../resources/InstrumentValueIcons/format-italic.svg</file>
<file alias="user-solid-circle.svg">../resources/InstrumentValueIcons/user-solid-circle.svg</file>
<file alias="edit-pencil.svg">../resources/InstrumentValueIcons/edit-pencil.svg</file>
<file alias="step-forward.svg">../resources/InstrumentValueIcons/step-forward.svg</file>
<file alias="edit-copy.svg">../resources/InstrumentValueIcons/edit-copy.svg</file>
<file alias="globe.svg">../resources/InstrumentValueIcons/globe.svg</file>
<file alias="arrow-thin-right.svg">../resources/InstrumentValueIcons/arrow-thin-right.svg</file>
<file alias="inbox-full.svg">../resources/InstrumentValueIcons/inbox-full.svg</file>
<file alias="mood-sad-outline.svg">../resources/InstrumentValueIcons/mood-sad-outline.svg</file>
<file alias="bug.svg">../resources/InstrumentValueIcons/bug.svg</file>
<file alias="question.svg">../resources/InstrumentValueIcons/question.svg</file>
<file alias="dots-horizontal-double.svg">../resources/InstrumentValueIcons/dots-horizontal-double.svg</file>
<file alias="format-bold.svg">../resources/InstrumentValueIcons/format-bold.svg</file>
<file alias="close-outline.svg">../resources/InstrumentValueIcons/close-outline.svg</file>
<file alias="dots-horizontal-triple.svg">../resources/InstrumentValueIcons/dots-horizontal-triple.svg</file>
<file alias="format-text-size.svg">../resources/InstrumentValueIcons/format-text-size.svg</file>
<file alias="computer-laptop.svg">../resources/InstrumentValueIcons/computer-laptop.svg</file>
<file alias="arrow-thick-down.svg">../resources/InstrumentValueIcons/arrow-thick-down.svg</file>
<file alias="cheveron-outline-down.svg">../resources/InstrumentValueIcons/cheveron-outline-down.svg</file>
<file alias="travel.svg">../resources/InstrumentValueIcons/travel.svg</file>
<file alias="usb.svg">../resources/InstrumentValueIcons/usb.svg</file>
<file alias="cheveron-down.svg">../resources/InstrumentValueIcons/cheveron-down.svg</file>
<file alias="key.svg">../resources/InstrumentValueIcons/key.svg</file>
<file alias="tools copy.svg">../resources/InstrumentValueIcons/tools copy.svg</file>
<file alias="album.svg">../resources/InstrumentValueIcons/album.svg</file>
<file alias="arrow-base-down.svg">../resources/InstrumentValueIcons/arrow-base-down.svg</file>
<file alias="copy.svg">../resources/InstrumentValueIcons/copy.svg</file>
<file alias="align-left.svg">../resources/InstrumentValueIcons/align-left.svg</file>
<file alias="explore.svg">../resources/InstrumentValueIcons/explore.svg</file>
<file alias="watch.svg">../resources/InstrumentValueIcons/watch.svg</file>
<file alias="playlist.svg">../resources/InstrumentValueIcons/playlist.svg</file>
<file alias="pause-outline.svg">../resources/InstrumentValueIcons/pause-outline.svg</file>
<file alias="location-current.svg">../resources/InstrumentValueIcons/location-current.svg</file>
<file alias="home.svg">../resources/InstrumentValueIcons/home.svg</file>
<file alias="battery-full.svg">../resources/InstrumentValueIcons/battery-full.svg</file>
<file alias="format-font-size.svg">../resources/InstrumentValueIcons/format-font-size.svg</file>
<file alias="exclamation-solid.svg">../resources/InstrumentValueIcons/exclamation-solid.svg</file>
<file alias="music-artist.svg">../resources/InstrumentValueIcons/music-artist.svg</file>
<file alias="music-album.svg">../resources/InstrumentValueIcons/music-album.svg</file>
<file alias="chart-pie.svg">../resources/InstrumentValueIcons/chart-pie.svg</file>
<file alias="photo.svg">../resources/InstrumentValueIcons/photo.svg</file>
<file alias="lock-open.svg">../resources/InstrumentValueIcons/lock-open.svg</file>
<file alias="inbox.svg">../resources/InstrumentValueIcons/inbox.svg</file>
<file alias="hot.svg">../resources/InstrumentValueIcons/hot.svg</file>
<file alias="browser-window-new.svg">../resources/InstrumentValueIcons/browser-window-new.svg</file>
<file alias="zoom-out.svg">../resources/InstrumentValueIcons/zoom-out.svg</file>
<file alias="search.svg">../resources/InstrumentValueIcons/search.svg</file>
<file alias="backward.svg">../resources/InstrumentValueIcons/backward.svg</file>
<file alias="store-front.svg">../resources/InstrumentValueIcons/store-front.svg</file>
<file alias="user.svg">../resources/InstrumentValueIcons/user.svg</file>
<file alias="lock-closed.svg">../resources/InstrumentValueIcons/lock-closed.svg</file>
<file alias="load-balancer.svg">../resources/InstrumentValueIcons/load-balancer.svg</file>
<file alias="border-all.svg">../resources/InstrumentValueIcons/border-all.svg</file>
<file alias="location-gas-station.svg">../resources/InstrumentValueIcons/location-gas-station.svg</file>
<file alias="news-paper.svg">../resources/InstrumentValueIcons/news-paper.svg</file>
<file alias="align-justified.svg">../resources/InstrumentValueIcons/align-justified.svg</file>
<file alias="color-palette.svg">../resources/InstrumentValueIcons/color-palette.svg</file>
<file alias="radio.svg">../resources/InstrumentValueIcons/radio.svg</file>
<file alias="reply.svg">../resources/InstrumentValueIcons/reply.svg</file>
<file alias="target.svg">../resources/InstrumentValueIcons/target.svg</file>
<file alias="border-vertical.svg">../resources/InstrumentValueIcons/border-vertical.svg</file>
<file alias="duplicate.svg">../resources/InstrumentValueIcons/duplicate.svg</file>
<file alias="arrow-thick-right.svg">../resources/InstrumentValueIcons/arrow-thick-right.svg</file>
<file alias="exclamation-outline.svg">../resources/InstrumentValueIcons/exclamation-outline.svg</file>
<file alias="bolt.svg">../resources/InstrumentValueIcons/bolt.svg</file>
<file alias="shopping-cart.svg">../resources/InstrumentValueIcons/shopping-cart.svg</file>
<file alias="calendar.svg">../resources/InstrumentValueIcons/calendar.svg</file>
<file alias="travel-train.svg">../resources/InstrumentValueIcons/travel-train.svg</file>
<file alias="save-disk.svg">../resources/InstrumentValueIcons/save-disk.svg</file>
<file alias="cloud-upload.svg">../resources/InstrumentValueIcons/cloud-upload.svg</file>
<file alias="dashboard.svg">../resources/InstrumentValueIcons/dashboard.svg</file>
<file alias="arrow-simple-down.svg">../resources/InstrumentValueIcons/arrow-simple-down.svg</file>
<file alias="computer-desktop.svg">../resources/InstrumentValueIcons/computer-desktop.svg</file>
<file alias="music-playlist.svg">../resources/InstrumentValueIcons/music-playlist.svg</file>
<file alias="share-01.svg">../resources/InstrumentValueIcons/share-01.svg</file>
<file alias="travel-car.svg">../resources/InstrumentValueIcons/travel-car.svg</file>
<file alias="border-horizontal.svg">../resources/InstrumentValueIcons/border-horizontal.svg</file>
<file alias="fast-forward.svg">../resources/InstrumentValueIcons/fast-forward.svg</file>
<file alias="keyboard.svg">../resources/InstrumentValueIcons/keyboard.svg</file>
<file alias="chat-bubble-dots.svg">../resources/InstrumentValueIcons/chat-bubble-dots.svg</file>
<file alias="folder.svg">../resources/InstrumentValueIcons/folder.svg</file>
<file alias="document.svg">../resources/InstrumentValueIcons/document.svg</file>
<file alias="format-underline.svg">../resources/InstrumentValueIcons/format-underline.svg</file>
<file alias="arrow-thin-down.svg">../resources/InstrumentValueIcons/arrow-thin-down.svg</file>
<file alias="cheveron-outline-left.svg">../resources/InstrumentValueIcons/cheveron-outline-left.svg</file>
<file alias="thumbs-down.svg">../resources/InstrumentValueIcons/thumbs-down.svg</file>
<file alias="stroke-width.svg">../resources/InstrumentValueIcons/stroke-width.svg</file>
<file alias="yin-yang.svg">../resources/InstrumentValueIcons/yin-yang.svg</file>
<file alias="thumbs-up.svg">../resources/InstrumentValueIcons/thumbs-up.svg</file>
<file alias="cheveron-left.svg">../resources/InstrumentValueIcons/cheveron-left.svg</file>
<file alias="radar.svg">../resources/InstrumentValueIcons/radar.svg</file>
<file alias="play.svg">../resources/InstrumentValueIcons/play.svg</file>
<file alias="bluetooth.svg">../resources/InstrumentValueIcons/bluetooth.svg</file>
<file alias="clipboard.svg">../resources/InstrumentValueIcons/clipboard.svg</file>
<file alias="mood-happy-outline.svg">../resources/InstrumentValueIcons/mood-happy-outline.svg</file>
<file alias="reload.svg">../resources/InstrumentValueIcons/reload.svg</file>
<file alias="information-solid.svg">../resources/InstrumentValueIcons/information-solid.svg</file>
<file alias="php-elephant.svg">../resources/InstrumentValueIcons/php-elephant.svg</file>
<file alias="bookmark-outline-add.svg">../resources/InstrumentValueIcons/bookmark-outline-add.svg</file>
<file alias="border-inner.svg">../resources/InstrumentValueIcons/border-inner.svg</file>
<file alias="brightness-up.svg">../resources/InstrumentValueIcons/brightness-up.svg</file>
<file alias="view-hide.svg">../resources/InstrumentValueIcons/view-hide.svg</file>
<file alias="forward-step.svg">../resources/InstrumentValueIcons/forward-step.svg</file>
<file alias="cheveron-outline-up.svg">../resources/InstrumentValueIcons/cheveron-outline-up.svg</file>
<file alias="cheveron-outline-right.svg">../resources/InstrumentValueIcons/cheveron-outline-right.svg</file>
<file alias="share.svg">../resources/InstrumentValueIcons/share.svg</file>
<file alias="border-right.svg">../resources/InstrumentValueIcons/border-right.svg</file>
<file alias="location-hotel.svg">../resources/InstrumentValueIcons/location-hotel.svg</file>
<file alias="brightness-down.svg">../resources/InstrumentValueIcons/brightness-down.svg</file>
<file alias="light-bulb.svg">../resources/InstrumentValueIcons/light-bulb.svg</file>
<file alias="location-park.svg">../resources/InstrumentValueIcons/location-park.svg</file>
<file alias="factory.svg">../resources/InstrumentValueIcons/factory.svg</file>
<file alias="stand-by.svg">../resources/InstrumentValueIcons/stand-by.svg</file>
<file alias="swap.svg">../resources/InstrumentValueIcons/swap.svg</file>
<file alias="portfolio.svg">../resources/InstrumentValueIcons/portfolio.svg</file>
<file alias="arrow-outline-right.svg">../resources/InstrumentValueIcons/arrow-outline-right.svg</file>
<file alias="tuning.svg">../resources/InstrumentValueIcons/tuning.svg</file>
<file alias="view-carousel.svg">../resources/InstrumentValueIcons/view-carousel.svg</file>
<file alias="calculator.svg">../resources/InstrumentValueIcons/calculator.svg</file>
<file alias="show-sidebar.svg">../resources/InstrumentValueIcons/show-sidebar.svg</file>
<file alias="step-backward.svg">../resources/InstrumentValueIcons/step-backward.svg</file>
<file alias="tablet.svg">../resources/InstrumentValueIcons/tablet.svg</file>
<file alias="backspace.svg">../resources/InstrumentValueIcons/backspace.svg</file>
<file alias="map.svg">../resources/InstrumentValueIcons/map.svg</file>
<file alias="arrow-simple-left.svg">../resources/InstrumentValueIcons/arrow-simple-left.svg</file>
<file alias="view-show.svg">../resources/InstrumentValueIcons/view-show.svg</file>
<file alias="adjust.svg">../resources/InstrumentValueIcons/adjust.svg</file>
<file alias="border-bottom.svg">../resources/InstrumentValueIcons/border-bottom.svg</file>
<file alias="document-add.svg">../resources/InstrumentValueIcons/document-add.svg</file>
<file alias="plugin.svg">../resources/InstrumentValueIcons/plugin.svg</file>
<file alias="navigation-more.svg">../resources/InstrumentValueIcons/navigation-more.svg</file>
<file alias="browser-window-open.svg">../resources/InstrumentValueIcons/browser-window-open.svg</file>
<file alias="flashlight.svg">../resources/InstrumentValueIcons/flashlight.svg</file>
<file alias="currency-dollar.svg">../resources/InstrumentValueIcons/currency-dollar.svg</file>
<file alias="close-solid.svg">../resources/InstrumentValueIcons/close-solid.svg</file>
<file alias="vector.svg">../resources/InstrumentValueIcons/vector.svg</file>
<file alias="paste.svg">../resources/InstrumentValueIcons/paste.svg</file>
<file alias="arrow-outline-up.svg">../resources/InstrumentValueIcons/arrow-outline-up.svg</file>
<file alias="pause.svg">../resources/InstrumentValueIcons/pause.svg</file>
<file alias="artist.svg">../resources/InstrumentValueIcons/artist.svg</file>
<file alias="hour-glass.svg">../resources/InstrumentValueIcons/hour-glass.svg</file>
<file alias="browser-window.svg">../resources/InstrumentValueIcons/browser-window.svg</file>
<file alias="border-left.svg">../resources/InstrumentValueIcons/border-left.svg</file>
<file alias="tag.svg">../resources/InstrumentValueIcons/tag.svg</file>
<file alias="translate.svg">../resources/InstrumentValueIcons/translate.svg</file>
<file alias="mood-neutral-solid.svg">../resources/InstrumentValueIcons/mood-neutral-solid.svg</file>
<file alias="pause-solid.svg">../resources/InstrumentValueIcons/pause-solid.svg</file>
<file alias="phone.svg">../resources/InstrumentValueIcons/phone.svg</file>
<file alias="heart.svg">../resources/InstrumentValueIcons/heart.svg</file>
<file alias="headphones.svg">../resources/InstrumentValueIcons/headphones.svg</file>
<file alias="servers.svg">../resources/InstrumentValueIcons/servers.svg</file>
<file alias="close.svg">../resources/InstrumentValueIcons/close.svg</file>
<file alias="directions.svg">../resources/InstrumentValueIcons/directions.svg</file>
<file alias="arrow-thick-left.svg">../resources/InstrumentValueIcons/arrow-thick-left.svg</file>
<file alias="play-outline.svg">../resources/InstrumentValueIcons/play-outline.svg</file>
<file alias="arrow-thick-up.svg">../resources/InstrumentValueIcons/arrow-thick-up.svg</file>
<file alias="code.svg">../resources/InstrumentValueIcons/code.svg</file>
<file alias="thermometer.svg">../resources/InstrumentValueIcons/thermometer.svg</file>
<file alias="location-restroom.svg">../resources/InstrumentValueIcons/location-restroom.svg</file>
<file alias="list-bullet.svg">../resources/InstrumentValueIcons/list-bullet.svg</file>
<file alias="wrench.svg">../resources/InstrumentValueIcons/wrench.svg</file>
<file alias="compose.svg">../resources/InstrumentValueIcons/compose.svg</file>
<file alias="at-symbol.svg">../resources/InstrumentValueIcons/at-symbol.svg</file>
<file alias="library.svg">../resources/InstrumentValueIcons/library.svg</file>
<file alias="view-list.svg">../resources/InstrumentValueIcons/view-list.svg</file>
<file alias="timer.svg">../resources/InstrumentValueIcons/timer.svg</file>
<file alias="window-open.svg">../resources/InstrumentValueIcons/window-open.svg</file>
<file alias="mouse.svg">../resources/InstrumentValueIcons/mouse.svg</file>
<file alias="buoy.svg">../resources/InstrumentValueIcons/buoy.svg</file>
<file alias="subdirectory-right.svg">../resources/InstrumentValueIcons/subdirectory-right.svg</file>
<file alias="volume-up.svg">../resources/InstrumentValueIcons/volume-up.svg</file>
<file alias="edit-crop.svg">../resources/InstrumentValueIcons/edit-crop.svg</file>
<file alias="screen-full.svg">../resources/InstrumentValueIcons/screen-full.svg</file>
<file alias="forward.svg">../resources/InstrumentValueIcons/forward.svg</file>
<file alias="pylon.svg">../resources/InstrumentValueIcons/pylon.svg</file>
<file alias="align-right.svg">../resources/InstrumentValueIcons/align-right.svg</file>
<file alias="border-outer.svg">../resources/InstrumentValueIcons/border-outer.svg</file>
<file alias="arrow-thin-up.svg">../resources/InstrumentValueIcons/arrow-thin-up.svg</file>
<file alias="printer.svg">../resources/InstrumentValueIcons/printer.svg</file>
<file alias="wallet.svg">../resources/InstrumentValueIcons/wallet.svg</file>
<file alias="arrow-outline-left.svg">../resources/InstrumentValueIcons/arrow-outline-left.svg</file>
<file alias="credit-card.svg">../resources/InstrumentValueIcons/credit-card.svg</file>
<file alias="repost.svg">../resources/InstrumentValueIcons/repost.svg</file>
<file alias="notifications-outline.svg">../resources/InstrumentValueIcons/notifications-outline.svg</file>
<file alias="bookmark-outline.svg">../resources/InstrumentValueIcons/bookmark-outline.svg</file>
<file alias="radar copy 2.svg">../resources/InstrumentValueIcons/radar copy 2.svg</file>
<file alias="share-alt.svg">../resources/InstrumentValueIcons/share-alt.svg</file>
<file alias="link.svg">../resources/InstrumentValueIcons/link.svg</file>
<file alias="attachment.svg">../resources/InstrumentValueIcons/attachment.svg</file>
<file alias="chart.svg">../resources/InstrumentValueIcons/chart.svg</file>
<file alias="shield.svg">../resources/InstrumentValueIcons/shield.svg</file>
<file alias="block.svg">../resources/InstrumentValueIcons/block.svg</file>
<file alias="indent-increase.svg">../resources/InstrumentValueIcons/indent-increase.svg</file>
<file alias="arrow-base-up.svg">../resources/InstrumentValueIcons/arrow-base-up.svg</file>
<file alias="minus-solid.svg">../resources/InstrumentValueIcons/minus-solid.svg</file>
<file alias="folder-outline-add.svg">../resources/InstrumentValueIcons/folder-outline-add.svg</file>
<file alias="location.svg">../resources/InstrumentValueIcons/location.svg</file>
<file alias="mic.svg">../resources/InstrumentValueIcons/mic.svg</file>
<file alias="education.svg">../resources/InstrumentValueIcons/education.svg</file>
<file alias="announcement.svg">../resources/InstrumentValueIcons/announcement.svg</file>
</qresource>
</RCC>

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -23,7 +23,6 @@ DEFINES += APP_VERSION_STR=\"\\\"$$CUSTOM_QGC_VERSION\\\"\"
message(Custom QGC Version: $${CUSTOM_QGC_VERSION})
# Build a single flight stack by disabling APM support
MAVLINK_CONF = common
CONFIG += QGC_DISABLE_APM_MAVLINK
CONFIG += QGC_DISABLE_APM_PLUGIN QGC_DISABLE_APM_PLUGIN_FACTORY

View File

@ -26,11 +26,15 @@
<file alias="JoystickBezel.png">../resources/JoystickBezel.png</file>
<file alias="JoystickBezelLight.png">../resources/JoystickBezelLight.png</file>
<file alias="land.svg">../resources/land.svg</file>
<file alias="layout-bottom.svg">../resources/layout-bottom.svg</file>
<file alias="layout-right.svg">../resources/layout-right.svg</file>
<file alias="LockClosed.svg">../resources/LockClosed.svg</file>
<file alias="LockOpen.svg">../resources/LockOpen.svg</file>
<file alias="notile.png">../resources/notile.png</file>
<file alias="NoVideoBackground.jpg">../resources/NoVideoBackground.jpg</file>
<file alias="Pause.svg">../resources/Pause.svg</file>
<file alias="pause-mission.svg">../resources/pause-mission.svg</file>
<file alias="pencil.svg">../resources/pencil.svg</file>
<file alias="Play">../resources/Play.svg</file>
<file alias="PowerButton">../resources/PowerButton.svg</file>
<file alias="QGCLogoBlack">../resources/QGCLogoBlack.svg</file>
@ -51,6 +55,9 @@
<file alias="XDelete.svg">../resources/XDelete.svg</file>
<file alias="XDeleteBlack.svg">../resources/XDeleteBlack.svg</file>
<file alias="waypoint.svg">../resources/waypoint.svg</file>
<file alias="Gripper.svg">../resources/Gripper.svg</file>
<file alias="GripperRelease.svg">../resources/GripperRelease.svg</file>
<file alias="GripperGrab.svg">../resources/GripperGrab.svg</file>
<file>../resources/icons/qgroundcontrol.ico</file>
</qresource>
<qresource prefix="/res/firmware">

View File

@ -14,9 +14,11 @@
<file alias="ModeIndicator.qml">../src/ui/toolbar/ModeIndicator.qml</file>
<file alias="MultiVehicleSelector.qml">../src/ui/toolbar/MultiVehicleSelector.qml</file>
<file alias="RCRSSIIndicator.qml">../src/ui/toolbar/RCRSSIIndicator.qml</file>
<file alias="RemoteIDIndicator.qml">../src/ui/toolbar/RemoteIDIndicator.qml</file>
<file alias="ROIIndicator.qml">../src/ui/toolbar/ROIIndicator.qml</file>
<file alias="TelemetryRSSIIndicator.qml">../src/ui/toolbar/TelemetryRSSIIndicator.qml</file>
<file alias="VTOLModeIndicator.qml">../src/ui/toolbar/VTOLModeIndicator.qml</file>
<file alias="APMSupportForwardingIndicator.qml">../src/ui/toolbar/APMSupportForwardingIndicator.qml</file>
</qresource>
<qresource prefix="/checklists">
<file alias="DefaultChecklist.qml">../src/FlightDisplay/DefaultChecklist.qml</file>
@ -38,6 +40,7 @@
<file alias="BluetoothSettings.qml">../src/ui/preferences/BluetoothSettings.qml</file>
<file alias="CorridorScanEditor.qml">../src/PlanView/CorridorScanEditor.qml</file>
<file alias="DebugWindow.qml">../src/ui/preferences/DebugWindow.qml</file>
<file alias="RemoteIDSettings.qml">../src/ui/preferences/RemoteIDSettings.qml</file>
<file alias="ESP8266Component.qml">../src/AutoPilotPlugins/Common/ESP8266Component.qml</file>
<file alias="ESP8266ComponentSummary.qml">../src/AutoPilotPlugins/Common/ESP8266ComponentSummary.qml</file>
<file alias="ExitWithErrorWindow.qml">../src/ui/ExitWithErrorWindow.qml</file>
@ -66,6 +69,9 @@
<file alias="MockLink.qml">../src/ui/preferences/MockLink.qml</file>
<file alias="MockLinkSettings.qml">../src/ui/preferences/MockLinkSettings.qml</file>
<file alias="MotorComponent.qml">../src/AutoPilotPlugins/Common/MotorComponent.qml</file>
<file alias="ActuatorComponent.qml">../src/AutoPilotPlugins/PX4/ActuatorComponent.qml</file>
<file alias="ActuatorFact.qml">../src/AutoPilotPlugins/PX4/ActuatorFact.qml</file>
<file alias="ActuatorSlider.qml">../src/AutoPilotPlugins/PX4/ActuatorSlider.qml</file>
<file alias="OfflineMap.qml">../src/QtLocationPlugin/QMLControl/OfflineMap.qml</file>
<file alias="PlanToolBar.qml">../src/PlanView/PlanToolBar.qml</file>
<file alias="PlanToolBarIndicators.qml">../src/PlanView/PlanToolBarIndicators.qml</file>
@ -76,6 +82,7 @@
<file alias="QGCInstrumentWidgetAlternate.qml">../src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml</file>
<file alias="QGroundControl/Controls/AnalyzePage.qml">../src/AnalyzeView/AnalyzePage.qml</file>
<file alias="QGroundControl/Controls/AppMessages.qml">../src/QmlControls/AppMessages.qml</file>
<file alias="QGroundControl/Controls/AltModeDialog.qml">../src/QmlControls/AltModeDialog.qml</file>
<file alias="QGroundControl/Controls/AxisMonitor.qml">../src/QmlControls/AxisMonitor.qml</file>
<file alias="QGroundControl/Controls/CameraCalcCamera.qml">../src/PlanView/CameraCalcCamera.qml</file>
<file alias="QGroundControl/Controls/CameraCalcGrid.qml">../src/PlanView/CameraCalcGrid.qml</file>
@ -104,6 +111,7 @@
<file alias="QGroundControl/Controls/KMLOrSHPFileDialog.qml">../src/QmlControls/KMLOrSHPFileDialog.qml</file>
<file alias="QGroundControl/Controls/LogReplayStatusBar.qml">../src/QmlControls/LogReplayStatusBar.qml</file>
<file alias="QGroundControl/Controls/MainStatusIndicator.qml">../src/ui/toolbar/MainStatusIndicator.qml</file>
<file alias="QGroundControl/Controls/FlightModeMenuIndicator.qml">../src/ui/toolbar/FlightModeMenuIndicator.qml</file>
<file alias="QGroundControl/Controls/MainToolBar.qml">../src/ui/toolbar/MainToolBar.qml</file>
<file alias="QGroundControl/Controls/MainWindowSavedState.qml">../src/QmlControls/MainWindowSavedState.qml</file>
<file alias="QGroundControl/Controls/MAVLinkChart.qml">../src/QmlControls/MAVLinkChart.qml</file>
@ -125,6 +133,7 @@
<file alias="QGroundControl/Controls/PreFlightCheckGroup.qml">../src/QmlControls/PreFlightCheckGroup.qml</file>
<file alias="QGroundControl/Controls/PreFlightCheckModel.qml">../src/QmlControls/PreFlightCheckModel.qml</file>
<file alias="QGroundControl/Controls/QGCButton.qml">../src/QmlControls/QGCButton.qml</file>
<file alias="QGroundControl/Controls/QGCColumnButton.qml">../src/QmlControls/QGCColumnButton.qml</file>
<file alias="QGroundControl/Controls/AutotuneUI.qml">../src/QmlControls/AutotuneUI.qml</file>
<file alias="QGroundControl/Controls/QGCCheckBox.qml">../src/QmlControls/QGCCheckBox.qml</file>
<file alias="QGroundControl/Controls/QGCColoredImage.qml">../src/QmlControls/QGCColoredImage.qml</file>
@ -147,10 +156,10 @@
<file alias="QGroundControl/Controls/QGCMouseArea.qml">../src/QmlControls/QGCMouseArea.qml</file>
<file alias="QGroundControl/Controls/QGCMovableItem.qml">../src/QmlControls/QGCMovableItem.qml</file>
<file alias="QGroundControl/Controls/QGCPopupDialog.qml">../src/QmlControls/QGCPopupDialog.qml</file>
<file alias="QGroundControl/Controls/QGCPopupDialogContainer.qml">../src/QmlControls/QGCPopupDialogContainer.qml</file>
<file alias="QGroundControl/Controls/QGCPipOverlay.qml">../src/QmlControls/QGCPipOverlay.qml</file>
<file alias="QGroundControl/Controls/QGCPipState.qml">../src/QmlControls/QGCPipState.qml</file>
<file alias="QGroundControl/Controls/QGCRadioButton.qml">../src/QmlControls/QGCRadioButton.qml</file>
<file alias="QGroundControl/Controls/QGCSimpleMessageDialog.qml">../src/QmlControls/QGCSimpleMessageDialog.qml</file>
<file alias="QGroundControl/Controls/QGCSlider.qml">../src/QmlControls/QGCSlider.qml</file>
<file alias="QGroundControl/Controls/QGCSwitch.qml">../src/QmlControls/QGCSwitch.qml</file>
<file alias="QGroundControl/Controls/QGCTabBar.qml">../src/QmlControls/QGCTabBar.qml</file>
@ -158,9 +167,6 @@
<file alias="QGroundControl/Controls/QGCTextField.qml">../src/QmlControls/QGCTextField.qml</file>
<file alias="QGroundControl/Controls/QGCToolBarButton.qml">../src/QmlControls/QGCToolBarButton.qml</file>
<file alias="QGroundControl/Controls/QGCToolInsets.qml">../src/QmlControls/QGCToolInsets.qml</file>
<file alias="QGroundControl/Controls/QGCViewDialog.qml">../src/QmlControls/QGCViewDialog.qml</file>
<file alias="QGroundControl/Controls/QGCViewDialogContainer.qml">../src/QmlControls/QGCViewDialogContainer.qml</file>
<file alias="QGroundControl/Controls/QGCViewMessage.qml">../src/QmlControls/QGCViewMessage.qml</file>
<file alias="QGroundControl/Controls/qmldir">../src/QmlControls/QGroundControl/Controls/qmldir</file>
<file alias="QGroundControl/Controls/RallyPointEditorHeader.qml">../src/PlanView/RallyPointEditorHeader.qml</file>
<file alias="QGroundControl/Controls/RallyPointItemEditor.qml">../src/PlanView/RallyPointItemEditor.qml</file>
@ -180,6 +186,7 @@
<file alias="QGroundControl/Controls/TakeoffItemMapVisual.qml">../src/PlanView/TakeoffItemMapVisual.qml</file>
<file alias="QGroundControl/Controls/ToolStrip.qml">../src/QmlControls/ToolStrip.qml</file>
<file alias="QGroundControl/Controls/ToolStripHoverButton.qml">../src/QmlControls/ToolStripHoverButton.qml</file>
<file alias="QGroundControl/Controls/TransectStyleComplexItemEditor.qml">../src/PlanView/TransectStyleComplexItemEditor.qml</file>
<file alias="QGroundControl/Controls/TransectStyleComplexItemStats.qml">../src/PlanView/TransectStyleComplexItemStats.qml</file>
<file alias="QGroundControl/Controls/TransectStyleComplexItemTabBar.qml">../src/PlanView/TransectStyleComplexItemTabBar.qml</file>
<file alias="QGroundControl/Controls/TransectStyleComplexItemTerrainFollow.qml">../src/PlanView/TransectStyleComplexItemTerrainFollow.qml</file>
@ -199,7 +206,6 @@
<file alias="QGroundControl/FactControls/qmldir">../src/QmlControls/QGroundControl/FactControls/qmldir</file>
<file alias="QGroundControl/FlightDisplay/FlightDisplayViewVideo.qml">../src/FlightDisplay/FlightDisplayViewVideo.qml</file>
<file alias="QGroundControl/FlightDisplay/FlightDisplayViewWidgets.qml">../src/FlightDisplay/FlightDisplayViewWidgets.qml</file>
<file alias="QGroundControl/FlightDisplay/FlyViewAirspaceIndicator.qml">../src/FlightDisplay/FlyViewAirspaceIndicator.qml</file>
<file alias="QGroundControl/FlightDisplay/FlyView.qml">../src/FlightDisplay/FlyView.qml</file>
<file alias="QGroundControl/FlightDisplay/FlyViewInstrumentPanel.qml">../src/FlightDisplay/FlyViewInstrumentPanel.qml</file>
<file alias="QGroundControl/FlightDisplay/FlyViewMap.qml">../src/FlightDisplay/FlyViewMap.qml</file>
@ -215,9 +221,11 @@
<file alias="QGroundControl/FlightDisplay/GuidedActionLand.qml">../src/FlightDisplay/GuidedActionLand.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedActionList.qml">../src/FlightDisplay/GuidedActionList.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedActionTakeoff.qml">../src/FlightDisplay/GuidedActionTakeoff.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedActionGripper.qml">../src/FlightDisplay/GuidedActionGripper.qml</file>
<file alias="QGroundControl/FlightDisplay/GripperMenu.qml">../src/FlightDisplay/GripperMenu.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedActionPause.qml">../src/FlightDisplay/GuidedActionPause.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedActionRTL.qml">../src/FlightDisplay/GuidedActionRTL.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedAltitudeSlider.qml">../src/FlightDisplay/GuidedAltitudeSlider.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedValueSlider.qml">../src/FlightDisplay/GuidedValueSlider.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedToolStripAction.qml">../src/FlightDisplay/GuidedToolStripAction.qml</file>
<file alias="QGroundControl/FlightDisplay/MultiVehicleList.qml">../src/FlightDisplay/MultiVehicleList.qml</file>
<file alias="QGroundControl/FlightDisplay/PreFlightBatteryCheck.qml">../src/FlightDisplay/PreFlightBatteryCheck.qml</file>
@ -231,6 +239,9 @@
<file alias="QGroundControl/FlightDisplay/TerrainProgress.qml">../src/FlightDisplay/TerrainProgress.qml</file>
<file alias="QGroundControl/FlightDisplay/TelemetryValuesBar.qml">../src/FlightDisplay/TelemetryValuesBar.qml</file>
<file alias="QGroundControl/FlightDisplay/VehicleWarnings.qml">../src/FlightDisplay/VehicleWarnings.qml</file>
<file alias="QGroundControl/FlightDisplay/ObstacleDistanceOverlay.qml">../src/FlightDisplay/ObstacleDistanceOverlay.qml</file>
<file alias="QGroundControl/FlightDisplay/ObstacleDistanceOverlayMap.qml">../src/FlightDisplay/ObstacleDistanceOverlayMap.qml</file>
<file alias="QGroundControl/FlightDisplay/ObstacleDistanceOverlayVideo.qml">../src/FlightDisplay/ObstacleDistanceOverlayVideo.qml</file>
<file alias="QGroundControl/FlightDisplay/qmldir">../src/QmlControls/QGroundControl/FlightDisplay/qmldir</file>
<file alias="QGroundControl/FlightMap/CameraTriggerIndicator.qml">../src/FlightMap/MapItems/CameraTriggerIndicator.qml</file>
<file alias="QGroundControl/FlightMap/CenterMapDropButton.qml">../src/FlightMap/Widgets/CenterMapDropButton.qml</file>
@ -275,6 +286,8 @@
<file alias="VibrationPage.qml">../src/AnalyzeView/VibrationPage.qml</file>
<file alias="VirtualJoystick.qml">../src/FlightDisplay/VirtualJoystick.qml</file>
<file alias="VTOLLandingPatternEditor.qml">../src/PlanView/VTOLLandingPatternEditor.qml</file>
<file alias="QGroundControl/Controls/MockLinkOptionsDlg.qml">../src/comm/MockLinkOptionsDlg.qml</file>
<file alias="QGroundControl/FlightDisplay/FlyViewInsetViewer.qml">../src/FlightDisplay/FlyViewInsetViewer.qml</file>
</qresource>
<qresource prefix="/FirstRunPromptDialogs">
<file alias="UnitsFirstRunPrompt.qml">../src/FirstRunPromptDialogs/UnitsFirstRunPrompt.qml</file>
@ -291,6 +304,7 @@
<file alias="CameraSection.FactMetaData.json">../src/MissionManager/CameraSection.FactMetaData.json</file>
<file alias="CameraSpec.FactMetaData.json">../src/MissionManager/CameraSpec.FactMetaData.json</file>
<file alias="CorridorScan.SettingsGroup.json">../src/MissionManager/CorridorScan.SettingsGroup.json</file>
<file alias="RemoteID.SettingsGroup.json">../src/Settings/RemoteID.SettingsGroup.json</file>
<file alias="EditPositionDialog.FactMetaData.json">../src/QmlControls/EditPositionDialog.FactMetaData.json</file>
<file alias="FirmwareUpgrade.SettingsGroup.json">../src/Settings/FirmwareUpgrade.SettingsGroup.json</file>
<file alias="FlightMap.SettingsGroup.json">../src/Settings/FlightMap.SettingsGroup.json</file>
@ -323,6 +337,8 @@
<file alias="Vehicle/GPSFact.json">../src/Vehicle/GPSFact.json</file>
<file alias="Vehicle/GPSRTKFact.json">../src/Vehicle/GPSRTKFact.json</file>
<file alias="Vehicle/SetpointFact.json">../src/Vehicle/SetpointFact.json</file>
<file alias="Vehicle/LocalPositionFact.json">../src/Vehicle/LocalPositionFact.json</file>
<file alias="Vehicle/LocalPositionSetpointFact.json">../src/Vehicle/LocalPositionFact.json</file>
<file alias="Vehicle/SubmarineFact.json">../src/Vehicle/SubmarineFact.json</file>
<file alias="Vehicle/TemperatureFact.json">../src/Vehicle/TemperatureFact.json</file>
<file alias="Vehicle/TerrainFactGroup.json">../src/Vehicle/TerrainFactGroup.json</file>
@ -330,6 +346,8 @@
<file alias="Vehicle/VibrationFact.json">../src/Vehicle/VibrationFact.json</file>
<file alias="Vehicle/WindFact.json">../src/Vehicle/WindFact.json</file>
<file alias="Vehicle/HygrometerFact.json">../src/Vehicle/HygrometerFact.json</file>
<file alias="Vehicle/GeneratorFact.json">../src/Vehicle/GeneratorFact.json</file>
<file alias="Vehicle/EFIFact.json">../src/Vehicle/EFIFact.json</file>
<file alias="Video.SettingsGroup.json">../src/Settings/Video.SettingsGroup.json</file>
<file alias="VTOLLandingPattern.FactMetaData.json">../src/MissionManager/VTOLLandingPattern.FactMetaData.json</file>
</qresource>
@ -337,8 +355,9 @@
<file alias="APMArduSubMockLink.params">../src/comm/APMArduSubMockLink.params</file>
<file alias="PX4MockLink.params">../src/comm/PX4MockLink.params</file>
<file alias="General.MetaData.json">../src/comm/MockLink.General.MetaData.json</file>
<file alias="General.MetaData.json.xz">src/comm/MockLink.General.MetaData.json.xz</file>
<file alias="General.MetaData.json.xz">../src/comm/MockLink.General.MetaData.json.xz</file>
<file alias="Parameter.MetaData.json.xz">../src/comm/MockLink.Parameter.MetaData.json.xz</file>
<file alias="Parameter.MetaData.json">../src/comm/MockLink.Parameter.MetaData.json</file>
<file alias="Parameter.MetaData.json.xz">src/comm/MockLink.Parameter.MetaData.json.xz</file>
<file alias="Arduplane.params.ftp.bin">../src/comm/Mocklink.Arduplane.params.ftp.bin</file>
</qresource>
</RCC>

View File

@ -55,8 +55,38 @@ Item {
QGCToolInsets {
id: _totalToolInsets
topEdgeCenterInset: compassArrowIndicator.y + compassArrowIndicator.height
leftEdgeTopInset: parentToolInsets.leftEdgeTopInset
leftEdgeCenterInset: exampleRectangle.leftEdgeCenterInset
leftEdgeBottomInset: parentToolInsets.leftEdgeBottomInset
rightEdgeTopInset: parentToolInsets.rightEdgeTopInset
rightEdgeCenterInset: parentToolInsets.rightEdgeCenterInset
rightEdgeBottomInset: parent.width - compassBackground.x
topEdgeLeftInset: parentToolInsets.topEdgeLeftInset
topEdgeCenterInset: compassArrowIndicator.y + compassArrowIndicator.height
topEdgeRightInset: parentToolInsets.topEdgeRightInset
bottomEdgeLeftInset: parentToolInsets.bottomEdgeLeftInset
bottomEdgeCenterInset: parentToolInsets.bottomEdgeCenterInset
bottomEdgeRightInset: parent.height - attitudeIndicator.y
}
// This is an example of how you can use parent tool insets to position an element on the custom fly view layer
// - we use parent topEdgeLeftInset to position the widget below the toolstrip
// - we use parent bottomEdgeLeftInset to dodge the virtual joystick if enabled
// - we use the parent leftEdgeTopInset to size our element to the same width as the ToolStripAction
// - we export the width of this element as the leftEdgeCenterInset so that the map will recenter if the vehicle flys behind this element
Rectangle {
id: exampleRectangle
visible: false // to see this example, set this to true. To view insets, enable the insets viewer FlyView.qml
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.topMargin: parentToolInsets.topEdgeLeftInset + _toolsMargin
anchors.bottomMargin: parentToolInsets.bottomEdgeLeftInset + _toolsMargin
anchors.leftMargin: _toolsMargin
width: parentToolInsets.leftEdgeTopInset - _toolsMargin
color: 'red'
property real leftEdgeCenterInset: visible ? x + width : 0
}
//-------------------------------------------------------------------------
@ -209,7 +239,7 @@ Item {
Rectangle {
id: attitudeIndicator
anchors.bottomMargin: _toolsMargin
anchors.bottomMargin: _toolsMargin + parentToolInsets.bottomEdgeRightInset
anchors.rightMargin: _toolsMargin
anchors.bottom: parent.bottom
anchors.right: parent.right

View File

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 187 B

After

Width:  |  Height:  |  Size: 187 B

View File

Before

Width:  |  Height:  |  Size: 775 B

After

Width:  |  Height:  |  Size: 775 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 510 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 660 B

After

Width:  |  Height:  |  Size: 660 B

View File

Before

Width:  |  Height:  |  Size: 558 B

After

Width:  |  Height:  |  Size: 558 B

View File

Before

Width:  |  Height:  |  Size: 915 B

After

Width:  |  Height:  |  Size: 915 B

View File

Before

Width:  |  Height:  |  Size: 688 B

After

Width:  |  Height:  |  Size: 688 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 692 B

After

Width:  |  Height:  |  Size: 692 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
custom-example/updateqrc.py → custom/updateqrc.py Executable file → Normal file
View File

0
debian/rules vendored Executable file → Normal file
View File

0
deploy/GooglePlayUpload.py Executable file → Normal file
View File

0
deploy/MakeQtTravisTarball.sh Executable file → Normal file
View File

0
deploy/create_linux_appimage.sh Executable file → Normal file
View File

View File

@ -18,7 +18,7 @@ ENV QT_DESKTOP $QT_PATH/${QT_VERSION}/gcc_64
ENV PATH /usr/lib/ccache:$QT_DESKTOP/bin:$PATH
RUN apt update && apt -y --quiet --no-install-recommends install \
RUN apt-get update && apt-get -y --quiet --no-install-recommends install \
apt-utils \
binutils \
build-essential \

6
deploy/docker/install-qt-linux.sh Executable file → Normal file
View File

@ -10,9 +10,9 @@ QT_MODULES="${QT_MODULES:-qtcharts}"
# Exit immediately if a command exits with a non-zero status
set -e
apt update
apt install python3 python3-pip -y
apt-get update
apt-get install python3 python3-pip -y
pip3 install aqtinstall
aqt install --outputdir ${QT_PATH} ${QT_VERSION} ${QT_HOST} ${QT_TARGET} -m ${QT_MODULES}
aqt install-qt ${QT_HOST} ${QT_TARGET} ${QT_VERSION} -O ${QT_PATH} -m ${QT_MODULES}
echo "Remember to export the following to your PATH: ${QT_PATH}/${QT_VERSION}/*/bin"
echo "export PATH=$(readlink -e ${QT_PATH}/${QT_VERSION}/*/bin/):PATH"

7
deploy/linux-fixup-rpaths.bash Executable file → Normal file
View File

@ -47,6 +47,10 @@ find "${SEARCHDIR}" \
-executable \
2>/dev/null |
while IFS='' read -r library; do
# readelf is expensive, so keep track of updates with a timestamp file
if [ ! -e "$library.stamp" ] || [ "$library" -nt "$library.stamp" ]; then
# Get the library's current RPATH (RUNPATH)
# Example output of `readelf -d ./build/build-qgroundcontrol-Desktop_Qt_5_15_2_GCC_64bit-Debug/staging/QGroundControl`:
# 0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN/Qt/libs:/home/kbennett/storage/Qt/5.15.2/gcc_64/lib]
@ -83,4 +87,7 @@ while IFS='' read -r library; do
# patch the library's rpath
patchelf --set-rpath "${new_rpath}" "${library}"
touch "$library.stamp"
fi
done

0
deploy/qgroundcontrol-start.sh Executable file → Normal file
View File

0
deploy/ubuntu_ppa Executable file → Normal file
View File

Binary file not shown.

View File

@ -97,7 +97,7 @@ doInstall:
; QGC stores its own driver version key to prevent installation if already up to date
; This prevents running the driver install a second time which will start up in repair mode which is confusing
!define QGCDRIVERVERSIONKEY "SOFTWARE\QGroundControlUAVDrivers"
!define QGCCURRENTDRIVERVERSION 2
!define QGCCURRENTDRIVERVERSION 3
; If the drivers are already installed the key "HKCU/SOFTWARE\MichaelOborne\driver\installed" will be present and set to 1
SetRegView 64

View File

@ -142,15 +142,11 @@ FILE_PATTERNS = *.c \
*.py \
*.qml
RECURSIVE = YES
EXCLUDE = ../src/Airmap/QJsonWebToken \
../src/PairingManager/NfcLibrary \
EXCLUDE = ../src/PairingManager/NfcLibrary \
../src/PairingManager/NfcTask \
../src/PairingManager/TML \
../src/GPS/Drivers \
../src/GPS/RTCM \
../src/Airmap/QJsonWebToken \
../src/Airmap/README.md \
../src/QtLocationPlugin/qtlocation/README.md \
../src/VideoStreaming/README.md
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = *Test.*

0
doc/dot Executable file → Normal file
View File

View File

@ -0,0 +1 @@
Versions/Current/Headers

View File

@ -0,0 +1 @@
Versions/Current/Resources

View File

@ -0,0 +1 @@
Versions/Current/SDL2

View File

@ -0,0 +1 @@
A

View File

@ -11,3 +11,7 @@ add_library(libevents_parser
target_include_directories(libevents_parser PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(libevents_parser PUBLIC Qt5::Core)
target_link_libraries(libevents_parser PUBLIC comm)
add_library(libevents_health_and_arming_checks
libevents/libs/cpp/parse/health_and_arming_checks.cpp)
target_link_libraries(libevents_health_and_arming_checks PRIVATE comm)

0
libs/sdl2/msvc/include/SDL.h Executable file → Normal file
View File

0
libs/sdl2/msvc/include/SDL_assert.h Executable file → Normal file
View File

0
libs/sdl2/msvc/include/SDL_atomic.h Executable file → Normal file
View File

0
libs/sdl2/msvc/include/SDL_audio.h Executable file → Normal file
View File

Some files were not shown because too many files have changed in this diff Show More