This commit is contained in:
kebab 2023-12-06 13:21:56 -05:00
parent 3f74bdc3c6
commit 94781b40f2
972 changed files with 314003 additions and 27003 deletions

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 17)
set(CMAKE_CXX_STANDARD 14)
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/all
libs/mavlink/include/mavlink/v2.0/ardupilotmega
libs/mavlink/include/mavlink/v2.0/common
libs/shapelib
@ -178,6 +178,8 @@ 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,6 +21,8 @@ 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")
@ -107,21 +109,19 @@ 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
CONFIG += iOSBuild MobileBuild app_bundle NoSerialBuild
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,10 +143,6 @@ 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
@ -199,8 +195,6 @@ 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,8 +54,7 @@ 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 = all
message($$sprintf("Using MAVLink dialect '%1'.", $$MAVLINK_CONF))
MAVLINK_CONF = ardupilotmega
}
}
@ -68,18 +67,32 @@ 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
count(MAVLINK_CONF, 1) {
exists($$MAVLINKPATH/common) {
!isEmpty(MAVLINK_CONF) {
count(MAVLINK_CONF, 1) {
exists($$MAVLINKPATH/$$MAVLINK_CONF) {
INCLUDEPATH += $$MAVLINKPATH/$$MAVLINK_CONF
DEFINES += $$sprintf('QGC_USE_%1_MESSAGES', $$upper($$MAVLINK_CONF))
} else {
error($$sprintf("MAVLink dialect '%1' does not exist at '%2'!", $$MAVLINK_CONF, $$MAVLINKPATH_REL))
}
} else {
} 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))
}
#
@ -92,13 +105,11 @@ 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 += \
@ -213,9 +224,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
@ -264,3 +275,54 @@ 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,12 +25,22 @@ 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}
}
}
}
@ -54,9 +64,7 @@ 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))
@ -122,9 +130,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 -n --dereference $$[QT_INSTALL_LIBS]/$$QT_LIB $$DESTDIR/Qt/libs/
QMAKE_POST_LINK += && $$QMAKE_COPY --dereference $$[QT_INSTALL_LIBS]/$$QT_LIB $$DESTDIR/Qt/libs/
}
# QT_INSTALL_PLUGINS
@ -144,11 +152,16 @@ LinuxBuild {
}
for(QT_PLUGIN, QT_PLUGIN_LIST) {
QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference --recursive $$[QT_INSTALL_PLUGINS]/$$QT_PLUGIN $$DESTDIR/Qt/plugins/
QMAKE_POST_LINK += && $$QMAKE_COPY --dereference --recursive $$[QT_INSTALL_PLUGINS]/$$QT_PLUGIN $$DESTDIR/Qt/plugins/
}
# QT_INSTALL_QML
QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference --recursive $$[QT_INSTALL_QML] $$DESTDIR/Qt/
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/
}
# 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 += && rsync -a --delete /Library/Frameworks/GStreamer.framework $${TARGET}.app/Contents/Frameworks
QMAKE_POST_LINK += && cp -R /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/$${TARGET}
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 += && 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,8 +34,6 @@ 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
@ -51,13 +49,10 @@ installer {
}
AndroidBuild {
_ANDROID_KEYSTORE_PASSWORD = $$(ANDROID_KEYSTORE_PASSWORD)
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
message(Skipping androiddeployqt since keystore password is not available)
} else {
QMAKE_POST_LINK += && mkdir -p package
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,15 @@
# QGroundControl Ground Control Station
# Spiri Ground Control Station
[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://github.com/mavlink/QGroundControl/releases)
[![Releases](https://git.spirirobotics.com/hetongapp/Spiri-App/raw/branch/master/Spiri/resources/images/Spiri-release.svg)](https://git.spirirobotics.com/hetongapp/Spiri-App/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)
*QGroundControl* (QGC) is an intuitive and powerful ground control station (GCS) for UAVs.
The primary goal of QGC is ease of use for both first time and professional users.
It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using QGroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!)
*Spiri GroundControl* (SGC) is an intuitive and powerful ground control station (GCS) for UAVs.
The primary goal of SGC is ease of use for both first time and professional users.
It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using Spiri GroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!)
All the code is open-source, so you can contribute and evolve it as you want.
The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC.
@ -18,3 +22,63 @@ Key Links:
* [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html)
* [Contributing](https://dev.qgroundcontrol.com/en/contribute/)
* [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md)
# Setup Installation (Windows)
*Install QT 5.15.2
* Here is the link and Download: [Website](https://download.qt.io/official_releases/online_installers/) (Windows)
* Setup the environment for QT!
* 1. right click the desktop and click the attribution.
* 2. select the "Advanced System Settings"
* 3. select the "Environment Variables"
* 4. create a new qt system variable(using your own QT install Path) (eg. D:\QT5.15.2\5.15.2\msvc2019_64)
*Install Spiri QGC
* create a folder in your workspace and name it such as "Spiri"
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControl" folder by using the QT creator
* click "build" and "run"
# Setup Installation (MacOS)
* Install the Xcode in Apple Store
* Install Qt Creator for macOS: [Website](https://info.qt.io/zh-cn/download-qt-for-application-development)
* Create or open a Qt project and check the "iphonesimulator-clang-..." environment in the project configuration page
* create a folder in your workspace and name it such as "Spiri"
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
* Click the hammer compile button in the lower left corner, after the compilation is successful, you can close Qt Creator.
* After the compilation is complete, there will be an "Info.plist" file in the output folder, open it with Xcode.
# Setup Installation (Ubuntu20.04)
*Install QT 5.15.2
* Setup the environment for QT!
```bash
sudo chmod u+x ./Ubuntu_QT_install.sh && source ./Ubuntu_QT_install.sh
```
*Install Spiri QGC
* create a folder in your workspace and name it such as "Spiri"
* git clone https://git.spirirobotics.com/Spiri/SpiriGroundControlTest.git
* Then cd to the "Spiri/SpiriGroundControlTest" and update the repo: "git submodule update --init --recursive".
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControlTest" folder by using the QT creator
* click "build" and "run"
# Branch naming rules
* Dev-AndroidAPP-Tong
* Bug-AndroidAPP-Tong
* Rev-AndroidAPP-Tong
Note:
* DevThis branch is for develop
* Bug: This branch is for bug fix
* Rev: This branch is for revision
* TongContributer's name
* AndroidAPPThe general description of this task

69
Spiri/README.md Normal file
View File

@ -0,0 +1,69 @@
# Spiri Ground Control Station
[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://git.spirirobotics.com/hetongapp/SpiriGroundControl/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)
*Spiri GroundControl* (SGC) is an intuitive and powerful ground control station (GCS) for UAVs.
The primary goal of SGC is ease of use for both first time and professional users.
It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using Spiri GroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!)
All the code is open-source, so you can contribute and evolve it as you want.
The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC.
Key Links:
* [Website](http://qgroundcontrol.com) (qgroundcontrol.com)
* [User Manual](https://docs.qgroundcontrol.com/en/)
* [Developer Guide](https://dev.qgroundcontrol.com/en/)
* [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html)
* [Contributing](https://dev.qgroundcontrol.com/en/contribute/)
* [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md)
# Setup Installation (Windows)
*Install QT 5.15.2
* Here is the link and Download: [Website](https://download.qt.io/official_releases/online_installers/) (Windows)
* Setup the environment for QT!
* 1. right click the desktop and click the attribution.
* 2. select the "Advanced System Settings"
* 3. select the "Environment Variables"
* 4. create a new qt system variable(using your own QT install Path) (eg. D:\QT5.15.2\5.15.2\msvc2019_64)
*Install Spiri QGC
* create a folder in your workspace and name it such as "Spiri"
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControl" folder by using the QT creator
* click "build" and "run"
# Setup Installation (MacOS)
* Install the Xcode in Apple Store
* Install Qt Creator for macOS: [Website](https://info.qt.io/zh-cn/download-qt-for-application-development)
* Create or open a Qt project and check the "iphonesimulator-clang-..." environment in the project configuration page
* create a folder in your workspace and name it such as "Spiri"
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
* Click the hammer compile button in the lower left corner, after the compilation is successful, you can close Qt Creator.
* After the compilation is complete, there will be an "Info.plist" file in the output folder, open it with Xcode.
# Setup Installation (Ubuntu20.04)
*Install QT 5.15.2
* Setup the environment for QT!
```bash
sudo chmod u+x ./Ubuntu_QT_install.sh && source ./Ubuntu_QT_install.sh
```
*Install Spiri QGC
* create a folder in your workspace and name it such as "Spiri"
* git clone https://git.spirirobotics.com/Spiri/SpiriGroundControlTest.git
* Then cd to the "Spiri/SpiriGroundControlTest" and update the repo: "git submodule update --init --recursive".
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControlTest" folder by using the QT creator
* click "build" and "run"

0
Spiri/config/.gitkeep Normal file
View File

0
Spiri/data/.gitkeep Normal file
View File

BIN
Spiri/model/spiri.mesh Normal file

Binary file not shown.

0
Spiri/qml/.gitkeep Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="94" height="20" role="img" aria-label="release: v4.2.9"><title>release: v4.2.9</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="94" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="49" height="20" fill="#555"/><rect x="49" width="45" height="20" fill="#007ec6"/><rect width="94" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="255" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">release</text><text x="255" y="140" transform="scale(.1)" fill="#fff" textLength="390">release</text><text aria-hidden="true" x="705" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">v4.2.9</text><text x="705" y="140" transform="scale(.1)" fill="#fff" textLength="350">v1.0.0</text></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

0
Spiri/src/.gitkeep Normal file
View File

View File

@ -15,10 +15,5 @@
<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,38 +1,21 @@
# -*- 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/jammy64"
config.vm.box = "ubuntu/bionic64"
config.vm.provider :docker do |docker, override|
override.vm.box = "tknerr/baseimage-ubuntu-16.04"
end
@ -81,8 +64,6 @@ 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"
@ -92,8 +73,6 @@ 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
@ -122,10 +101,6 @@ 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
@ -137,8 +112,8 @@ echo '* soft nofile 2048' >/etc/security/limits.d/file
:qt_deps_tarball => yaml_config['qt_deps_tarball'],
:pro => yaml_config['pro'],
:spec => yaml_config['spec'],
:apt_pkgs => (packages).join(' '),
:build_env => env_global.select { |item| item.is_a?(String) }.join(' '),
: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(' '),
:project_root_dir => yaml_config['project_root_dir'],
:qt_deps_unpack_parent_dir => yaml_config['qt_deps_unpack_parent_dir'],

View File

@ -1,71 +1,24 @@
include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri)
message("Adding Serial Java Classes")
QT += androidextras
include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri)
ANDROID_PACKAGE_SOURCE_DIR = $$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
exists($$PWD/custom/android) {
message("Merging $$PWD/custom/android/ -> $$PWD/android/")
# We always move the package files to the ANDROID_PACKAGE_SOURCE_DIR build dir so we can modify the manifest as needed
ANDROID_PACKAGE_SOURCE_DIR = $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR
android_source_dir_target.target = android_source_dir
PRE_TARGETDEPS += $$android_source_dir_target.target
QMAKE_EXTRA_TARGETS += android_source_dir_target
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
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
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.spiri\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
android_source_dir_target.depends = FORCE
}
# 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
@ -92,6 +45,7 @@ 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 \
@ -99,12 +53,3 @@ 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="%%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">
<?xml version="1.0"?>
<manifest package="org.mavlink.spiri" 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,12 +14,15 @@
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<!-- %%QGC_INSERT_ACTIVITY_INTENT_FILTER -->
<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"/>
</intent-filter>
<!-- %%QGC_INSERT_ACTIVITY_META_DATA -->
<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"/>
<!-- Application arguments -->
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
<!-- Application arguments -->
@ -95,10 +98,9 @@
<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" android:required="false"/>
<uses-feature android:name="android.hardware.usb.accessory"/>
<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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 990 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -1,36 +0,0 @@
/****************************************************************************
*
* 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

@ -38,7 +38,6 @@ 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;
@ -59,8 +58,6 @@ 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;
@ -765,34 +762,5 @@ 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 "";
}
}

345
backup-Jenkinsfile Normal file
View File

@ -0,0 +1,345 @@
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')
}
}

20
build_ios.sh Executable file
View File

@ -0,0 +1,20 @@
#!/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="stethoscope.svg">../resources/InstrumentValueIcons/stethoscope.svg</file>
<file alias="inbox-check.svg">../resources/InstrumentValueIcons/inbox-check.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>
<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="location-shopping.svg">../resources/InstrumentValueIcons/location-shopping.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,6 +23,7 @@ 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
@ -34,19 +35,19 @@ CONFIG += QGC_DISABLE_PX4_PLUGIN_FACTORY
DEFINES += CUSTOMHEADER=\"\\\"CustomPlugin.h\\\"\"
DEFINES += CUSTOMCLASS=CustomPlugin
TARGET = CustomQGroundControl
DEFINES += QGC_APPLICATION_NAME='"\\\"Custom QGroundControl\\\""'
TARGET = Spiri
DEFINES += QGC_APPLICATION_NAME='"\\\"Spiri\\\""'
DEFINES += QGC_ORG_NAME=\"\\\"qgroundcontrol.org\\\"\"
DEFINES += QGC_ORG_DOMAIN=\"\\\"org.qgroundcontrol\\\"\"
DEFINES += QGC_ORG_NAME=\"\\\"spiri.org\\\"\"
DEFINES += QGC_ORG_DOMAIN=\"\\\"org.spiri\\\"\"
QGC_APP_NAME = "Custom QGroundControl"
QGC_BINARY_NAME = "CustomQGroundControl"
QGC_ORG_NAME = "Custom"
QGC_ORG_DOMAIN = "org.custom"
QGC_ANDROID_PACKAGE = "org.custom.qgroundcontrol"
QGC_APP_DESCRIPTION = "Custom QGroundControl"
QGC_APP_COPYRIGHT = "Copyright (C) 2020 QGroundControl Development Team. All rights reserved."
QGC_APP_NAME = "Spiri"
QGC_BINARY_NAME = "Spiri"
QGC_ORG_NAME = "Spiri"
QGC_ORG_DOMAIN = "org.spiri"
QGC_ANDROID_PACKAGE = "org.spiri.spiri"
QGC_APP_DESCRIPTION = "Spiri"
QGC_APP_COPYRIGHT = "Copyright (C) 2023 Spiri Development Team. All rights reserved."
# Our own, custom resources
RESOURCES += \

View File

@ -31,7 +31,6 @@
<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>
@ -55,9 +54,6 @@
<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,11 +14,9 @@
<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>
@ -40,7 +38,6 @@
<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>
@ -111,7 +108,6 @@
<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>
@ -133,7 +129,6 @@
<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>
@ -156,10 +151,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>
@ -167,6 +162,9 @@
<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>
@ -206,6 +204,7 @@
<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>
@ -221,11 +220,9 @@
<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/GuidedValueSlider.qml">../src/FlightDisplay/GuidedValueSlider.qml</file>
<file alias="QGroundControl/FlightDisplay/GuidedAltitudeSlider.qml">../src/FlightDisplay/GuidedAltitudeSlider.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>
@ -286,8 +283,6 @@
<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>
@ -304,7 +299,6 @@
<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>
@ -346,8 +340,6 @@
<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>
@ -358,6 +350,5 @@
<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="Arduplane.params.ftp.bin">../src/comm/Mocklink.Arduplane.params.ftp.bin</file>
</qresource>
</RCC>

View File

@ -55,38 +55,8 @@ Item {
QGCToolInsets {
id: _totalToolInsets
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
rightEdgeBottomInset: parent.width - compassBackground.x
}
//-------------------------------------------------------------------------
@ -239,7 +209,7 @@ Item {
Rectangle {
id: attitudeIndicator
anchors.bottomMargin: _toolsMargin + parentToolInsets.bottomEdgeRightInset
anchors.bottomMargin: _toolsMargin
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

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-get update && apt-get -y --quiet --no-install-recommends install \
RUN apt update && apt -y --quiet --no-install-recommends install \
apt-utils \
binutils \
build-essential \

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-get update
apt-get install python3 python3-pip -y
apt update
apt install python3 python3-pip -y
pip3 install aqtinstall
aqt install-qt ${QT_HOST} ${QT_TARGET} ${QT_VERSION} -O ${QT_PATH} -m ${QT_MODULES}
aqt install --outputdir ${QT_PATH} ${QT_VERSION} ${QT_HOST} ${QT_TARGET} -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"

View File

@ -47,10 +47,6 @@ 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]
@ -87,7 +83,4 @@ while IFS='' read -r library; do
# patch the library's rpath
patchelf --set-rpath "${new_rpath}" "${library}"
touch "$library.stamp"
fi
done

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 3
!define QGCCURRENTDRIVERVERSION 2
; 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,11 +142,15 @@ FILE_PATTERNS = *.c \
*.py \
*.qml
RECURSIVE = YES
EXCLUDE = ../src/PairingManager/NfcLibrary \
EXCLUDE = ../src/Airmap/QJsonWebToken \
../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.*

View File

@ -11,7 +11,3 @@ 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)

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