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
c81927fa
Commit
c81927fa
authored
Dec 26, 2014
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rework Connect toolbar button usage
Now works for more than Serial links
parent
cf777949
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
505 additions
and
651 deletions
+505
-651
QGCApplication.cc
src/QGCApplication.cc
+2
-41
LinkManager.cc
src/comm/LinkManager.cc
+24
-2
LinkManager.h
src/comm/LinkManager.h
+6
-0
UDPLink.cc
src/comm/UDPLink.cc
+2
-3
MainWindowTest.cc
src/qgcunittest/MainWindowTest.cc
+1
-1
CommConfigurationWindow.cc
src/ui/CommConfigurationWindow.cc
+0
-1
MainWindow.cc
src/ui/MainWindow.cc
+5
-10
MainWindow.h
src/ui/MainWindow.h
+2
-24
QGCToolBar.cc
src/ui/QGCToolBar.cc
+152
-225
QGCToolBar.h
src/ui/QGCToolBar.h
+22
-37
SettingsDialog.cc
src/ui/SettingsDialog.cc
+0
-14
SettingsDialog.h
src/ui/SettingsDialog.h
+2
-3
SettingsDialog.ui
src/ui/SettingsDialog.ui
+287
-290
No files found.
src/QGCApplication.cc
View file @
c81927fa
...
...
@@ -252,8 +252,6 @@ bool QGCApplication::_initForNormalAppBoot(void)
_createSingletons
();
enum
MainWindow
::
CUSTOM_MODE
mode
=
(
enum
MainWindow
::
CUSTOM_MODE
)
settings
.
value
(
"QGC_CUSTOM_MODE"
,
(
int
)
MainWindow
::
CUSTOM_MODE_PX4
).
toInt
();
// Show splash screen
QPixmap
splashImage
(
":/files/images/splash.png"
);
QSplashScreen
*
splashScreen
=
new
QSplashScreen
(
splashImage
);
...
...
@@ -268,7 +266,7 @@ bool QGCApplication::_initForNormalAppBoot(void)
// Start the user interface
splashScreen
->
showMessage
(
tr
(
"Starting user interface"
),
Qt
::
AlignLeft
|
Qt
::
AlignBottom
,
QColor
(
62
,
93
,
141
));
MainWindow
*
mainWindow
=
MainWindow
::
_create
(
splashScreen
,
mode
);
MainWindow
*
mainWindow
=
MainWindow
::
_create
(
splashScreen
);
Q_CHECK_PTR
(
mainWindow
);
// If we made it this far and we still don't have a location. Either the specfied location was invalid
...
...
@@ -281,47 +279,10 @@ bool QGCApplication::_initForNormalAppBoot(void)
mainWindow
->
showSettings
();
}
UDPLink
*
udpLink
=
NULL
;
if
(
mainWindow
->
getCustomMode
()
==
MainWindow
::
CUSTOM_MODE_WIFI
)
{
// Connect links
// to make sure that all components are initialized when the
// first messages arrive
udpLink
=
new
UDPLink
(
QHostAddress
::
Any
,
14550
);
LinkManager
::
instance
()
->
addLink
(
udpLink
);
}
else
{
// We want to have a default serial link available for "quick" connecting.
SerialLink
*
slink
=
new
SerialLink
();
LinkManager
::
instance
()
->
addLink
(
slink
);
}
#ifdef QGC_RTLAB_ENABLED
// Add OpalRT Link, but do not connect
OpalLink
*
opalLink
=
new
OpalLink
();
_mainWindow
->
addLink
(
opalLink
);
#endif
// Remove splash screen
splashScreen
->
finish
(
mainWindow
);
mainWindow
->
splashScreenFinished
();
// Check if link could be connected
if
(
udpLink
&&
LinkManager
::
instance
()
->
connectLink
(
udpLink
))
{
QMessageBox
::
StandardButton
button
=
QGCMessageBox
::
critical
(
tr
(
"Could not connect UDP port. Is an instance of %1 already running?"
).
arg
(
qAppName
()),
tr
(
"It is recommended to close the application and stop all instances. Click Yes to close."
),
QMessageBox
::
Yes
|
QMessageBox
::
No
,
QMessageBox
::
No
);
// Exit application
if
(
button
==
QMessageBox
::
Yes
)
{
//mainWindow->close();
QTimer
::
singleShot
(
200
,
mainWindow
,
SLOT
(
close
()));
}
}
// Now that main window is upcheck for lost log files
connect
(
this
,
&
QGCApplication
::
checkForLostLogFiles
,
MAVLinkProtocol
::
instance
(),
&
MAVLinkProtocol
::
checkForLostLogFiles
);
emit
checkForLostLogFiles
();
...
...
src/comm/LinkManager.cc
View file @
c81927fa
...
...
@@ -84,6 +84,9 @@ void LinkManager::addLink(LinkInterface* link)
connect
(
link
,
&
LinkInterface
::
connected
,
mavlink
,
&
MAVLinkProtocol
::
linkConnected
);
connect
(
link
,
&
LinkInterface
::
disconnected
,
mavlink
,
&
MAVLinkProtocol
::
linkDisconnected
);
mavlink
->
resetMetadataForLink
(
link
);
connect
(
link
,
&
LinkInterface
::
connected
,
this
,
&
LinkManager
::
_linkConnected
);
connect
(
link
,
&
LinkInterface
::
disconnected
,
this
,
&
LinkManager
::
_linkDisconnected
);
}
bool
LinkManager
::
connectAll
()
...
...
@@ -131,13 +134,22 @@ bool LinkManager::connectLink(LinkInterface* link)
return
false
;
}
return
link
->
_connect
();
if
(
link
->
_connect
())
{
return
true
;
}
else
{
return
false
;
}
}
bool
LinkManager
::
disconnectLink
(
LinkInterface
*
link
)
{
Q_ASSERT
(
link
);
return
link
->
_disconnect
();
if
(
link
->
_disconnect
())
{
return
true
;
}
else
{
return
false
;
}
}
void
LinkManager
::
deleteLink
(
LinkInterface
*
link
)
...
...
@@ -218,3 +230,13 @@ void LinkManager::_shutdown(void)
deleteLink
(
link
);
}
}
void
LinkManager
::
_linkConnected
(
void
)
{
emit
linkConnected
((
LinkInterface
*
)
sender
());
}
void
LinkManager
::
_linkDisconnected
(
void
)
{
emit
linkDisconnected
((
LinkInterface
*
)
sender
());
}
src/comm/LinkManager.h
View file @
c81927fa
...
...
@@ -91,6 +91,12 @@ public:
signals:
void
newLink
(
LinkInterface
*
link
);
void
linkDeleted
(
LinkInterface
*
link
);
void
linkConnected
(
LinkInterface
*
link
);
void
linkDisconnected
(
LinkInterface
*
link
);
private
slots
:
void
_linkConnected
(
void
);
void
_linkDisconnected
(
void
);
private:
/// All access to LinkManager is through LinkManager::instance
...
...
src/comm/UDPLink.cc
View file @
c81927fa
...
...
@@ -277,16 +277,15 @@ bool UDPLink::_disconnect(void)
this
->
quit
();
this
->
wait
();
if
(
socket
)
{
if
(
socket
)
{
// Make sure delete happen on correct thread
socket
->
deleteLater
();
socket
=
NULL
;
emit
disconnected
();
}
connectState
=
false
;
emit
disconnected
();
return
!
connectState
;
}
...
...
src/qgcunittest/MainWindowTest.cc
View file @
c81927fa
...
...
@@ -42,7 +42,7 @@ void MainWindowTest::init(void)
{
UnitTest
::
init
();
_mainWindow
=
MainWindow
::
_create
(
NULL
,
MainWindow
::
CUSTOM_MODE_PX4
);
_mainWindow
=
MainWindow
::
_create
(
NULL
);
Q_CHECK_PTR
(
_mainWindow
);
}
...
...
src/ui/CommConfigurationWindow.cc
View file @
c81927fa
...
...
@@ -368,7 +368,6 @@ void CommConfigurationWindow::remove()
action
=
NULL
;
if
(
link
)
{
LinkManager
::
instance
()
->
disconnectLink
(
link
);
// disconnect connection
link
->
deleteLater
();
}
link
=
NULL
;
...
...
src/ui/MainWindow.cc
View file @
c81927fa
...
...
@@ -80,11 +80,11 @@ This file is part of the QGROUNDCONTROL project
static
MainWindow
*
_instance
=
NULL
;
///< @brief MainWindow singleton
MainWindow
*
MainWindow
::
_create
(
QSplashScreen
*
splashScreen
,
enum
MainWindow
::
CUSTOM_MODE
mode
)
MainWindow
*
MainWindow
::
_create
(
QSplashScreen
*
splashScreen
)
{
Q_ASSERT
(
_instance
==
NULL
);
new
MainWindow
(
splashScreen
,
mode
);
new
MainWindow
(
splashScreen
);
// _instance is set in constructor
Q_ASSERT
(
_instance
);
...
...
@@ -105,13 +105,12 @@ void MainWindow::deleteInstance(void)
/// @brief Private constructor for MainWindow. MainWindow singleton is only ever created
/// by MainWindow::_create method. Hence no other code should have access to
/// constructor.
MainWindow
::
MainWindow
(
QSplashScreen
*
splashScreen
,
enum
MainWindow
::
CUSTOM_MODE
mode
)
:
MainWindow
::
MainWindow
(
QSplashScreen
*
splashScreen
)
:
currentView
(
VIEW_FLIGHT
),
centerStackActionGroup
(
new
QActionGroup
(
this
)),
autoReconnect
(
false
),
simulationLink
(
NULL
),
lowPowerMode
(
false
),
customMode
(
mode
),
menuActionHelper
(
new
MenuActionHelper
()),
_splashScreen
(
splashScreen
)
{
...
...
@@ -405,10 +404,10 @@ QString MainWindow::getWindowStateKey()
{
if
(
UASManager
::
instance
()
->
getActiveUAS
())
{
return
QString
::
number
(
currentView
)
+
"_windowstate_"
+
QString
::
number
(
getCustomMode
())
+
"_"
+
UASManager
::
instance
()
->
getActiveUAS
()
->
getAutopilotTypeName
();
return
QString
::
number
(
currentView
)
+
"_windowstate_"
+
UASManager
::
instance
()
->
getActiveUAS
()
->
getAutopilotTypeName
();
}
else
return
QString
::
number
(
currentView
)
+
"_windowstate_"
+
QString
::
number
(
getCustomMode
())
;
return
QString
::
number
(
currentView
)
+
"_windowstate_"
;
}
QString
MainWindow
::
getWindowGeometryKey
()
...
...
@@ -938,8 +937,6 @@ void MainWindow::loadSettings()
{
QSettings
settings
;
customMode
=
static_cast
<
enum
MainWindow
::
CUSTOM_MODE
>
(
settings
.
value
(
"QGC_CUSTOM_MODE"
,
(
unsigned
int
)
MainWindow
::
CUSTOM_MODE_NONE
).
toInt
());
settings
.
beginGroup
(
"QGC_MAINWINDOW"
);
autoReconnect
=
settings
.
value
(
"AUTO_RECONNECT"
,
autoReconnect
).
toBool
();
lowPowerMode
=
settings
.
value
(
"LOW_POWER_MODE"
,
lowPowerMode
).
toBool
();
...
...
@@ -953,8 +950,6 @@ void MainWindow::storeSettings()
{
QSettings
settings
;
settings
.
setValue
(
"QGC_CUSTOM_MODE"
,
(
int
)
customMode
);
settings
.
beginGroup
(
"QGC_MAINWINDOW"
);
settings
.
setValue
(
"AUTO_RECONNECT"
,
autoReconnect
);
settings
.
setValue
(
"LOW_POWER_MODE"
,
lowPowerMode
);
...
...
src/ui/MainWindow.h
View file @
c81927fa
...
...
@@ -88,14 +88,6 @@ class MainWindow : public QMainWindow
Q_OBJECT
public:
enum
CUSTOM_MODE
{
CUSTOM_MODE_UNCHANGED
=
0
,
CUSTOM_MODE_NONE
,
CUSTOM_MODE_PX4
,
CUSTOM_MODE_WIFI
};
/// @brief Returns the MainWindow singleton. Will not create the MainWindow if it has not already
/// been created.
static
MainWindow
*
instance
(
void
);
...
...
@@ -104,7 +96,7 @@ public:
void
deleteInstance
(
void
);
/// @brief Creates the MainWindow singleton. Should only be called once by QGCApplication.
static
MainWindow
*
_create
(
QSplashScreen
*
splashScreen
,
enum
MainWindow
::
CUSTOM_MODE
mode
);
static
MainWindow
*
_create
(
QSplashScreen
*
splashScreen
);
/// @brief Called to indicate that splash screen is no longer being displayed.
void
splashScreenFinished
(
void
)
{
_splashScreen
=
NULL
;
}
...
...
@@ -127,19 +119,6 @@ public:
return
lowPowerMode
;
}
void
setCustomMode
(
MainWindow
::
CUSTOM_MODE
mode
)
{
if
(
mode
!=
CUSTOM_MODE_UNCHANGED
)
{
customMode
=
mode
;
}
}
MainWindow
::
CUSTOM_MODE
getCustomMode
()
const
{
return
customMode
;
}
QList
<
QAction
*>
listLinkMenuActions
();
void
hideSplashScreen
(
void
);
...
...
@@ -420,14 +399,13 @@ protected:
bool
lowPowerMode
;
///< If enabled, QGC reduces the update rates of all widgets
QGCFlightGearLink
*
fgLink
;
QTimer
windowNameUpdateTimer
;
CUSTOM_MODE
customMode
;
private
slots
:
void
_addLinkMenu
(
LinkInterface
*
link
);
private:
/// Constructor is private since all creation should be through MainWindow::_create
MainWindow
(
QSplashScreen
*
splashScreen
,
enum
MainWindow
::
CUSTOM_MODE
mode
);
MainWindow
(
QSplashScreen
*
splashScreen
);
void
_openUrl
(
const
QString
&
url
,
const
QString
&
errorMessage
);
...
...
src/ui/QGCToolBar.cc
View file @
c81927fa
This diff is collapsed.
Click to expand it.
src/ui/QGCToolBar.h
View file @
c81927fa
...
...
@@ -32,8 +32,10 @@ This file is part of the QGROUNDCONTROL project
#include <QProgressBar>
#include <QComboBox>
#include <QTimer>
#include "UASInterface.h"
#include "SerialLink.h"
#include "LinkManager.h"
class
QGCToolBar
:
public
QToolBar
{
...
...
@@ -43,15 +45,10 @@ public:
explicit
QGCToolBar
(
QWidget
*
parent
=
0
);
void
setPerspectiveChangeActions
(
const
QList
<
QAction
*>
&
action
);
void
setPerspectiveChangeAdvancedActions
(
const
QList
<
QAction
*>
&
action
);
~
QGCToolBar
();
public
slots
:
/** @brief Set the system that is currently displayed by this widget */
void
setActiveUAS
(
UASInterface
*
active
);
/** @brief Set the link which is currently handled with connecting / disconnecting */
void
addLink
(
LinkInterface
*
link
);
/** @brief Remove link which is currently handled */
void
removeLink
(
LinkInterface
*
link
);
/** @brief Set the system state */
void
updateState
(
UASInterface
*
system
,
QString
name
,
QString
description
);
/** @brief Set the system mode */
...
...
@@ -74,31 +71,12 @@ public slots:
void
updateView
();
/** @brief Update connection timeout time */
void
heartbeatTimeout
(
bool
timeout
,
unsigned
int
ms
);
/** @brief Update global position */
void
globalPositionChanged
(
UASInterface
*
uas
,
double
lat
,
double
lon
,
double
altAMSL
,
double
altWGS84
,
quint64
usec
);
/** @brief Create or connect link */
void
connectLink
(
bool
connect
);
/** @brief Clear status string */
void
clearStatusString
();
/** @brief Set an activity action as checked in menu */
void
advancedActivityTriggered
(
QAction
*
action
);
void
updateComboBox
();
/**
* @brief User selected baud rate
* @param index The current index of the combo box
*/
void
baudSelected
(
int
index
);
/**
* @brief User selected port
* @param index The current index of the combo box
*/
void
portSelected
(
int
index
);
protected:
void
storeSettings
();
void
loadSettings
();
void
createUI
();
void
resetToolbarUI
();
UASInterface
*
mav
;
...
...
@@ -107,8 +85,6 @@ protected:
QLabel
*
toolBarTimeoutLabel
;
QAction
*
toolBarTimeoutAction
;
///< Needed to set label (in)visible.
QAction
*
toolBarMessageAction
;
QAction
*
toolBarPortAction
;
QAction
*
toolBarBaudAction
;
QAction
*
toolBarWpAction
;
QAction
*
toolBarBatteryBarAction
;
QAction
*
toolBarBatteryVoltageAction
;
...
...
@@ -117,21 +93,14 @@ protected:
QLabel
*
toolBarStateLabel
;
QLabel
*
toolBarWpLabel
;
QLabel
*
toolBarMessageLabel
;
QPushButton
*
connectButton
;
QProgressBar
*
toolBarBatteryBar
;
QLabel
*
toolBarBatteryVoltageLabel
;
QComboBox
*
portComboBox
;
QComboBox
*
baudcomboBox
;
QTimer
portBoxTimer
;
bool
userBaudChoice
;
bool
userPortChoice
;
bool
changed
;
float
batteryPercent
;
float
batteryVoltage
;
int
wpId
;
double
wpDistance
;
float
altitudeMSL
;
float
altitudeRel
;
QString
state
;
QString
mode
;
...
...
@@ -146,12 +115,28 @@ protected:
QButtonGroup
*
group
;
private
slots
:
void
_linkConnected
(
void
);
void
_linkDisconnected
(
void
);
void
_linkConnected
(
LinkInterface
*
link
);
void
_linkDisconnected
(
LinkInterface
*
link
);
void
_disconnectFromMenu
(
bool
checked
);
void
_connectButtonClicked
(
bool
checked
);
void
_linkComboActivated
(
int
index
);
private:
/** @brief Update the link state */
void
_updateLinkState
(
bool
connected
);
void
_updateConnectButton
(
void
);
void
_updatePortList
(
void
);
LinkManager
*
_linkMgr
;
QComboBox
*
_linkCombo
;
QAction
*
_linkComboAction
;
bool
_linkSelectedOnce
;
QTimer
_portListTimer
;
QComboBox
*
_baudCombo
;
QAction
*
_baudComboAction
;
QPushButton
*
_connectButton
;
bool
_linksConnected
;
};
#endif // QGCTOOLBAR_H
src/ui/SettingsDialog.cc
View file @
c81927fa
...
...
@@ -76,15 +76,6 @@ _ui(new Ui::SettingsDialog)
connect
(
_ui
->
deleteSettings
,
&
QAbstractButton
::
toggled
,
this
,
&
SettingsDialog
::
_deleteSettingsToggled
);
// Custom mode
_ui
->
customModeComboBox
->
addItem
(
tr
(
"Default: Generic MAVLink and serial links"
),
MainWindow
::
CUSTOM_MODE_NONE
);
_ui
->
customModeComboBox
->
addItem
(
tr
(
"Wifi: Generic MAVLink, wifi or serial links"
),
MainWindow
::
CUSTOM_MODE_WIFI
);
_ui
->
customModeComboBox
->
addItem
(
tr
(
"PX4: Optimized for PX4 Autopilot Users"
),
MainWindow
::
CUSTOM_MODE_PX4
);
_ui
->
customModeComboBox
->
setCurrentIndex
(
_ui
->
customModeComboBox
->
findData
(
_mainWindow
->
getCustomMode
()));
connect
(
_ui
->
customModeComboBox
,
SIGNAL
(
currentIndexChanged
(
int
)),
this
,
SLOT
(
selectCustomMode
(
int
)));
// Application color style
_ui
->
styleChooser
->
setCurrentIndex
(
qgcApp
()
->
styleIsDark
()
?
0
:
1
);
...
...
@@ -107,11 +98,6 @@ void SettingsDialog::styleChanged(int index)
qgcApp
()
->
setStyle
(
index
==
0
);
}
void
SettingsDialog
::
selectCustomMode
(
int
mode
)
{
_mainWindow
->
setCustomMode
(
static_cast
<
enum
MainWindow
::
CUSTOM_MODE
>
(
_ui
->
customModeComboBox
->
itemData
(
mode
).
toInt
()));
}
void
SettingsDialog
::
_deleteSettingsToggled
(
bool
checked
)
{
if
(
checked
){
...
...
src/ui/SettingsDialog.h
View file @
c81927fa
...
...
@@ -40,11 +40,10 @@ public:
SettingsDialog
(
JoystickInput
*
joystick
,
QWidget
*
parent
=
0
,
Qt
::
WindowFlags
flags
=
Qt
::
Sheet
);
~
SettingsDialog
();
public
slots
:
public
slots
:
void
styleChanged
(
int
index
);
void
selectCustomMode
(
int
mode
);
private
slots
:
private
slots
:
void
_deleteSettingsToggled
(
bool
checked
);
void
_selectSavedFilesDirectory
(
void
);
void
_validateBeforeClose
(
void
);
...
...
src/ui/SettingsDialog.ui
View file @
c81927fa
This diff is collapsed.
Click to expand it.
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