Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
6716ff47
Unverified
Commit
6716ff47
authored
Sep 26, 2018
by
Don Gagne
Committed by
GitHub
Sep 26, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6891 from DonLakeFlyer/VersionCheck
Stable desktop version check
parents
a070fb9c
76d21b92
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
116 additions
and
11 deletions
+116
-11
ChangeLog.md
ChangeLog.md
+2
-1
QGCApplication.cc
src/QGCApplication.cc
+83
-10
QGCApplication.h
src/QGCApplication.h
+9
-0
QGCCorePlugin.cc
src/api/QGCCorePlugin.cc
+10
-0
QGCCorePlugin.h
src/api/QGCCorePlugin.h
+12
-0
No files found.
ChangeLog.md
View file @
6716ff47
...
...
@@ -4,7 +4,8 @@ Note: This file only contains high level features or important fixes.
## 3.4
### 3.4.4 - Not yet released
### 3.4.4
*
Stable desktop versions now inform user at boot if newer version is available.
*
Multi-Vehicle Start Mission and Pause now work correctly. Issue #6864.
### 3.4.3
...
...
src/QGCApplication.cc
View file @
6716ff47
...
...
@@ -24,6 +24,7 @@
#include <QStyleFactory>
#include <QAction>
#include <QStringListModel>
#include <QRegularExpression>
#ifdef QGC_ENABLE_BLUETOOTH
#include <QBluetoothLocalDevice>
...
...
@@ -86,6 +87,7 @@
#include "EditPositionDialogController.h"
#include "FactValueSliderListModel.h"
#include "KMLFileHelper.h"
#include "QGCFileDownload.h"
#ifndef NO_SERIAL_LINK
#include "SerialLink.h"
...
...
@@ -148,20 +150,24 @@ static QObject* kmlFileHelperSingletonFactory(QQmlEngine*, QJSEngine*)
QGCApplication
::
QGCApplication
(
int
&
argc
,
char
*
argv
[],
bool
unitTesting
)
#ifdef __mobile__
:
QGuiApplication
(
argc
,
argv
)
,
_qmlAppEngine
(
NULL
)
:
QGuiApplication
(
argc
,
argv
)
,
_qmlAppEngine
(
nullptr
)
#else
:
QApplication
(
argc
,
argv
)
:
QApplication
(
argc
,
argv
)
#endif
,
_runningUnitTests
(
unitTesting
)
,
_logOutput
(
false
)
,
_fakeMobile
(
false
)
,
_settingsUpgraded
(
false
)
,
_runningUnitTests
(
unitTesting
)
,
_logOutput
(
false
)
,
_fakeMobile
(
false
)
,
_settingsUpgraded
(
false
)
,
_majorVersion
(
0
)
,
_minorVersion
(
0
)
,
_buildVersion
(
0
)
,
_currentVersionDownload
(
nullptr
)
#ifdef QT_DEBUG
,
_testHighDPI
(
false
)
,
_testHighDPI
(
false
)
#endif
,
_toolbox
(
NULL
)
,
_bluetoothAvailable
(
false
)
,
_toolbox
(
nullptr
)
,
_bluetoothAvailable
(
false
)
{
_app
=
this
;
...
...
@@ -322,6 +328,8 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
_toolbox
=
new
QGCToolbox
(
this
);
_toolbox
->
setChildToolboxes
();
_checkForNewVersion
();
}
void
QGCApplication
::
_shutdown
(
void
)
...
...
@@ -692,3 +700,68 @@ bool QGCApplication::isInternetAvailable()
{
return
getQGCMapEngine
()
->
isInternetActive
();
}
void
QGCApplication
::
_checkForNewVersion
(
void
)
{
#ifndef __mobile__
if
(
!
_runningUnitTests
)
{
if
(
_parseVersionText
(
applicationVersion
(),
_majorVersion
,
_minorVersion
,
_buildVersion
))
{
QString
versionCheckFile
=
toolbox
()
->
corePlugin
()
->
stableVersionCheckFileUrl
();
if
(
!
versionCheckFile
.
isEmpty
())
{
_currentVersionDownload
=
new
QGCFileDownload
(
this
);
connect
(
_currentVersionDownload
,
&
QGCFileDownload
::
downloadFinished
,
this
,
&
QGCApplication
::
_currentVersionDownloadFinished
);
connect
(
_currentVersionDownload
,
&
QGCFileDownload
::
error
,
this
,
&
QGCApplication
::
_currentVersionDownloadError
);
_currentVersionDownload
->
download
(
versionCheckFile
);
}
}
}
#endif
}
void
QGCApplication
::
_currentVersionDownloadFinished
(
QString
remoteFile
,
QString
localFile
)
{
Q_UNUSED
(
remoteFile
);
#ifdef __mobile__
Q_UNUSED
(
localFile
);
#else
QFile
versionFile
(
localFile
);
if
(
versionFile
.
open
(
QIODevice
::
ReadOnly
))
{
QTextStream
textStream
(
&
versionFile
);
QString
version
=
textStream
.
readLine
();
qDebug
()
<<
version
;
int
majorVersion
,
minorVersion
,
buildVersion
;
if
(
_parseVersionText
(
version
,
majorVersion
,
minorVersion
,
buildVersion
))
{
if
(
_majorVersion
<
majorVersion
||
(
_majorVersion
==
majorVersion
&&
_minorVersion
<
minorVersion
)
||
(
_majorVersion
==
majorVersion
&&
_minorVersion
==
minorVersion
&&
_buildVersion
<
buildVersion
))
{
QGCMessageBox
::
information
(
tr
(
"New Version Available"
),
tr
(
"There is a newer version of %1 available. You can download it from %2."
).
arg
(
applicationName
()).
arg
(
toolbox
()
->
corePlugin
()
->
stableDownloadLocation
()));
}
}
}
_currentVersionDownload
->
deleteLater
();
#endif
}
void
QGCApplication
::
_currentVersionDownloadError
(
QString
errorMsg
)
{
Q_UNUSED
(
errorMsg
);
_currentVersionDownload
->
deleteLater
();
}
bool
QGCApplication
::
_parseVersionText
(
const
QString
&
versionString
,
int
&
majorVersion
,
int
&
minorVersion
,
int
&
buildVersion
)
{
QRegularExpression
regExp
(
"v(
\\
d+)
\\
.(
\\
d+)
\\
.(
\\
d+)"
);
QRegularExpressionMatch
match
=
regExp
.
match
(
versionString
);
if
(
match
.
hasMatch
()
&&
match
.
lastCapturedIndex
()
==
3
)
{
majorVersion
=
match
.
captured
(
1
).
toInt
();
minorVersion
=
match
.
captured
(
2
).
toInt
();
buildVersion
=
match
.
captured
(
3
).
toInt
();
return
true
;
}
return
false
;
}
src/QGCApplication.h
View file @
6716ff47
...
...
@@ -42,6 +42,7 @@
class
QGCSingleton
;
class
MainWindow
;
class
QGCToolbox
;
class
QGCFileDownload
;
/**
* @brief The main application and management class.
...
...
@@ -152,9 +153,13 @@ public:
private
slots
:
void
_missingParamsDisplay
(
void
);
void
_currentVersionDownloadFinished
(
QString
remoteFile
,
QString
localFile
);
void
_currentVersionDownloadError
(
QString
errorMsg
);
bool
_parseVersionText
(
const
QString
&
versionString
,
int
&
majorVersion
,
int
&
minorVersion
,
int
&
buildVersion
);
private:
QObject
*
_rootQmlObject
(
void
);
void
_checkForNewVersion
(
void
);
#ifdef __mobile__
QQmlApplicationEngine
*
_qmlAppEngine
;
...
...
@@ -170,6 +175,10 @@ private:
QStringList
_missingParams
;
///< List of missing facts to be displayed
bool
_fakeMobile
;
///< true: Fake ui into displaying mobile interface
bool
_settingsUpgraded
;
///< true: Settings format has been upgrade to new version
int
_majorVersion
;
int
_minorVersion
;
int
_buildVersion
;
QGCFileDownload
*
_currentVersionDownload
;
#ifdef QT_DEBUG
bool
_testHighDPI
;
///< true: double fonts sizes for simulating high dpi devices
...
...
src/api/QGCCorePlugin.cc
View file @
6716ff47
...
...
@@ -303,3 +303,13 @@ bool QGCCorePlugin::guidedActionsControllerLogging(void) const
{
return
GuidedActionsControllerLog
().
isDebugEnabled
();
}
QString
QGCCorePlugin
::
stableVersionCheckFileUrl
(
void
)
const
{
#ifdef QGC_CUSTOM_BUILD
// Custom builds must override to turn on and provide their own location
return
QString
();
#else
return
QString
(
"https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGC.version.txt"
);
#endif
}
src/api/QGCCorePlugin.h
View file @
6716ff47
...
...
@@ -112,6 +112,18 @@ public:
/// should derive from QmlComponentInfo and set the url property.
virtual
QmlObjectListModel
*
customMapItems
(
void
);
/// Returns the url to download the stable version check file. Return QString() to indicate no version check should be performed.
/// Default QGC mainline implemenentation returns QGC Stable file location. Default QGC custom build code returns QString().
/// Custom builds can override to turn on and provide their own location.
/// The contents of this file should be a single line in the form:
/// v3.4.4
/// This indicates the latest stable version number.
virtual
QString
stableVersionCheckFileUrl
(
void
)
const
;
/// Returns the user visible url to show user where to download new stable builds from.
/// Custom builds must override to provide their own location.
virtual
QString
stableDownloadLocation
(
void
)
const
{
return
QString
(
"qgroundcontrol.com"
);
}
bool
showTouchAreas
(
void
)
const
{
return
_showTouchAreas
;
}
bool
showAdvancedUI
(
void
)
const
{
return
_showAdvancedUI
;
}
void
setShowTouchAreas
(
bool
show
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment