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
d9e8402f
Commit
d9e8402f
authored
Apr 14, 2015
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove old parameter editor
parent
9e1fef16
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
5 additions
and
1846 deletions
+5
-1846
ParameterEditorWidget.cc
src/ViewWidgets/ParameterEditorWidget.cc
+5
-39
ParameterInterface.cc
src/ui/ParameterInterface.cc
+0
-125
ParameterInterface.ui
src/ui/ParameterInterface.ui
+0
-38
ParameterView.ui
src/ui/ParameterView.ui
+0
-506
QGCBaseParamWidget.cc
src/ui/QGCBaseParamWidget.cc
+0
-138
QGCBaseParamWidget.h
src/ui/QGCBaseParamWidget.h
+0
-62
QGCParamTreeWidget.cpp
src/ui/QGCParamTreeWidget.cpp
+0
-96
QGCParamWidget.cc
src/ui/QGCParamWidget.cc
+0
-567
QGCParamWidget.h
src/ui/QGCParamWidget.h
+0
-112
QGCPendingParamWidget.cc
src/ui/QGCPendingParamWidget.cc
+0
-130
QGCPendingParamWidget.h
src/ui/QGCPendingParamWidget.h
+0
-33
No files found.
src/
ui/ParameterInterface.h
→
src/
ViewWidgets/ParameterEditorWidget.cc
View file @
d9e8402f
...
...
@@ -23,49 +23,15 @@ This file is part of the QGROUNDCONTROL project
/**
* @file
* @brief Definition of class ParameterInterface
*
* @brief Definition of class ParameterEditorWidget
* @author Lorenz Meier <mavteam@student.ethz.ch>
*
*/
#ifndef PARAMETERINTERFACE_H
#define PARAMETERINTERFACE_H
#include <QWidget>
#include "ui_ParameterInterface.h"
#include "UASInterface.h"
#include "QGCParamWidget.h"
#include "ParameterEditorWidget.h"
namespace
Ui
ParameterEditorWidget
::
ParameterEditorWidget
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
{
class
ParameterInterface
;
setSource
(
QUrl
::
fromUserInput
(
"qrc:/qml/ParameterEditorWidget.qml"
))
;
}
/**
* @brief Container class for onboard parameter widgets
*
* @see QGCParamWidget
*/
class
ParameterInterface
:
public
QWidget
{
Q_OBJECT
public:
explicit
ParameterInterface
(
QWidget
*
parent
=
0
);
virtual
~
ParameterInterface
();
public
slots
:
void
addUAS
(
UASInterface
*
uas
);
void
selectUAS
(
int
index
);
protected:
virtual
void
changeEvent
(
QEvent
*
e
);
QMap
<
int
,
QGCParamWidget
*>*
paramWidgets
;
int
curr
;
private:
Ui
::
parameterWidget
*
m_ui
;
};
#endif // PARAMETERINTERFACE_H
src/ui/ParameterInterface.cc
deleted
100644 → 0
View file @
9e1fef16
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/**
* @file
* @brief Definition of class ParameterInterface
* @author Lorenz Meier <mavteam@student.ethz.ch>
*
*/
#include <QTreeWidget>
#include "ParameterInterface.h"
#include "UASManager.h"
#include "ui_ParameterInterface.h"
#include "QGCSensorSettingsWidget.h"
#include <QDebug>
#include <QSettings>
ParameterInterface
::
ParameterInterface
(
QWidget
*
parent
)
:
QWidget
(
parent
),
paramWidgets
(
new
QMap
<
int
,
QGCParamWidget
*>
()),
curr
(
-
1
),
m_ui
(
new
Ui
::
parameterWidget
)
{
m_ui
->
setupUi
(
this
);
QSettings
settings
;
// Get current MAV list
QList
<
UASInterface
*>
systems
=
UASManager
::
instance
()
->
getUASList
();
// Add each of them
foreach
(
UASInterface
*
sys
,
systems
)
{
addUAS
(
sys
);
}
// Setup MAV connections
connect
(
UASManager
::
instance
(),
SIGNAL
(
UASCreated
(
UASInterface
*
)),
this
,
SLOT
(
addUAS
(
UASInterface
*
)));
connect
(
UASManager
::
instance
(),
SIGNAL
(
activeUASSetListIndex
(
int
)),
this
,
SLOT
(
selectUAS
(
int
)));
this
->
setVisible
(
false
);
}
ParameterInterface
::~
ParameterInterface
()
{
delete
paramWidgets
;
delete
m_ui
;
}
void
ParameterInterface
::
selectUAS
(
int
index
)
{
m_ui
->
stackedWidget
->
setCurrentIndex
(
index
);
m_ui
->
sensorSettings
->
setCurrentIndex
(
index
);
curr
=
index
;
}
/**
*
* @param uas System to add to list
*/
void
ParameterInterface
::
addUAS
(
UASInterface
*
uas
)
{
int
uasId
=
uas
->
getUASID
();
qDebug
()
<<
"ParameterInterface::addUAS : "
<<
uasId
;
if
(
paramWidgets
->
contains
(
uasId
)
)
{
return
;
}
QGCParamWidget
*
paramWidget
=
new
QGCParamWidget
(
this
);
paramWidget
=
(
QGCParamWidget
*
)
paramWidget
->
initWithUAS
(
uas
);
QString
ptrStr
;
ptrStr
.
sprintf
(
"QGCParamWidget %8p (parent %8p)"
,
paramWidget
,
this
);
qDebug
()
<<
"Created "
<<
ptrStr
<<
" for UAS id: "
<<
uasId
<<
" count: "
<<
paramWidgets
->
count
();
paramWidgets
->
insert
(
uasId
,
paramWidget
);
m_ui
->
stackedWidget
->
addWidget
(
paramWidget
);
QGCSensorSettingsWidget
*
sensor
=
NULL
;
sensor
=
new
QGCSensorSettingsWidget
(
uas
,
this
);
m_ui
->
sensorSettings
->
addWidget
(
sensor
);
// Set widgets as default
if
(
curr
==
-
1
)
{
// Clear
if
(
m_ui
->
sensorSettings
&&
sensor
)
m_ui
->
sensorSettings
->
setCurrentWidget
(
sensor
);
m_ui
->
stackedWidget
->
setCurrentWidget
(
paramWidget
);
curr
=
0
;
}
}
void
ParameterInterface
::
changeEvent
(
QEvent
*
e
)
{
switch
(
e
->
type
())
{
case
QEvent
:
:
LanguageChange
:
m_ui
->
retranslateUi
(
this
);
break
;
default:
break
;
}
}
src/ui/ParameterInterface.ui
deleted
100644 → 0
View file @
9e1fef16
<?xml version="1.0" encoding="UTF-8"?>
<ui
version=
"4.0"
>
<class>
parameterWidget
</class>
<widget
class=
"QWidget"
name=
"parameterWidget"
>
<property
name=
"geometry"
>
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
707
</width>
<height>
572
</height>
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
</property>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout"
stretch=
"100,1"
>
<property
name=
"margin"
>
<number>
0
</number>
</property>
<item>
<widget
class=
"QStackedWidget"
name=
"stackedWidget"
>
<property
name=
"currentIndex"
>
<number>
-1
</number>
</property>
</widget>
</item>
<item>
<widget
class=
"QStackedWidget"
name=
"sensorSettings"
>
<property
name=
"currentIndex"
>
<number>
-1
</number>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
src/ui/ParameterView.ui
deleted
100644 → 0
View file @
9e1fef16
This diff is collapsed.
Click to expand it.
src/ui/QGCBaseParamWidget.cc
deleted
100644 → 0
View file @
9e1fef16
#include "QGCBaseParamWidget.h"
#include <QFile>
#include <QVariant>
#include <QTextStream>
#include "QGCUASParamManagerInterface.h"
#include "UASInterface.h"
#include "QGCApplication.h"
#include "QGCFileDialog.h"
QGCBaseParamWidget
::
QGCBaseParamWidget
(
QWidget
*
parent
)
:
QWidget
(
parent
),
paramMgr
(
NULL
),
mav
(
NULL
),
updatingParamNameLock
(
""
)
{
}
QGCBaseParamWidget
*
QGCBaseParamWidget
::
initWithUAS
(
UASInterface
*
uas
)
{
setUAS
(
uas
);
return
this
;
}
void
QGCBaseParamWidget
::
setUAS
(
UASInterface
*
uas
)
{
if
(
uas
!=
mav
)
{
if
(
mav
)
{
//TODO disconnect any connections as needed
disconnectViewSignalsAndSlots
();
disconnectFromParamManager
();
clearOnboardParamDisplay
();
clearPendingParamDisplay
();
}
mav
=
uas
;
if
(
mav
)
{
connectToParamManager
();
connectViewSignalsAndSlots
();
layoutWidget
();
}
}
}
void
QGCBaseParamWidget
::
connectToParamManager
()
{
paramMgr
=
mav
->
getParamManager
();
//TODO route via paramManager instead?
// Listen to updated param signals from the data model
connect
(
paramMgr
,
SIGNAL
(
parameterUpdated
(
int
,
QString
,
QVariant
)),
this
,
SLOT
(
handleOnboardParamUpdate
(
int
,
QString
,
QVariant
)));
connect
(
paramMgr
,
SIGNAL
(
pendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)),
this
,
SLOT
(
handlePendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)));
// Listen for param list reload finished
connect
(
paramMgr
,
SIGNAL
(
parameterListUpToDate
()),
this
,
SLOT
(
handleOnboardParameterListUpToDate
()));
if
(
paramMgr
->
parametersReady
())
{
handleOnboardParameterListUpToDate
();
}
// Listen to communications status messages so we can display them
connect
(
paramMgr
,
SIGNAL
(
parameterStatusMsgUpdated
(
QString
,
int
)),
this
,
SLOT
(
handleParamStatusMsgUpdate
(
QString
,
int
)));
}
void
QGCBaseParamWidget
::
disconnectFromParamManager
()
{
disconnect
(
paramMgr
,
SIGNAL
(
parameterUpdated
(
int
,
QString
,
QVariant
)),
this
,
SLOT
(
handleOnboardParamUpdate
(
int
,
QString
,
QVariant
)));
disconnect
(
paramMgr
,
SIGNAL
(
pendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)),
this
,
SLOT
(
handlePendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)));
disconnect
(
paramMgr
,
SIGNAL
(
parameterListUpToDate
()),
this
,
SLOT
(
handleOnboardParameterListUpToDate
()));
// Listen to communications status messages so we can display them
disconnect
(
paramMgr
,
SIGNAL
(
parameterStatusMsgUpdated
(
QString
,
int
)),
this
,
SLOT
(
handleParamStatusMsgUpdate
(
QString
,
int
)));
paramMgr
=
NULL
;
}
void
QGCBaseParamWidget
::
requestOnboardParamsUpdate
()
{
paramMgr
->
requestParameterList
();
}
void
QGCBaseParamWidget
::
requestOnboardParamUpdate
(
QString
parameterName
)
{
paramMgr
->
requestParameterUpdate
(
paramMgr
->
getDefaultComponentId
(),
parameterName
);
}
void
QGCBaseParamWidget
::
saveParametersToFile
()
{
if
(
!
mav
)
return
;
QString
fileName
=
QGCFileDialog
::
getSaveFileName
(
this
,
tr
(
"Save Parameters"
),
qgcApp
()
->
savedParameterFilesLocation
(),
tr
(
"Parameter Files (*.params)"
),
"params"
,
true
);
if
(
!
fileName
.
isEmpty
())
{
QFile
file
(
fileName
);
// TODO Display error message to the user if the file can't be created
if
(
!
file
.
open
(
QIODevice
::
WriteOnly
|
QIODevice
::
Text
))
{
return
;
}
QTextStream
outstream
(
&
file
);
paramMgr
->
writeOnboardParamsToStream
(
outstream
,
mav
->
getUASName
());
file
.
close
();
}
}
void
QGCBaseParamWidget
::
loadParametersFromFile
()
{
if
(
!
mav
)
return
;
QString
fileName
=
QGCFileDialog
::
getOpenFileName
(
this
,
tr
(
"Load Parameters"
),
qgcApp
()
->
savedParameterFilesLocation
(),
tr
(
"Parameter Files (*.params);;All Files (*)"
));
QFile
file
(
fileName
);
// TODO Display error message to the user if the file can't be opened
if
(
!
file
.
open
(
QIODevice
::
ReadOnly
|
QIODevice
::
Text
))
{
return
;
}
QTextStream
in
(
&
file
);
paramMgr
->
readPendingParamsFromStream
(
in
);
file
.
close
();
}
src/ui/QGCBaseParamWidget.h
deleted
100644 → 0
View file @
9e1fef16
#ifndef QGCBASEPARAMWIDGET_H
#define QGCBASEPARAMWIDGET_H
#include <QVariant>
#include <QWidget>
//forward declarations
class
QGCUASParamManagerInterface
;
class
UASInterface
;
class
QGCBaseParamWidget
:
public
QWidget
{
Q_OBJECT
public:
explicit
QGCBaseParamWidget
(
QWidget
*
parent
=
0
);
virtual
QGCBaseParamWidget
*
initWithUAS
(
UASInterface
*
uas
);
///< Two-stage construction: initialize this object
virtual
void
setUAS
(
UASInterface
*
uas
);
///< Allows swapping the underlying UAS
protected:
virtual
void
setParameterStatusMsg
(
const
QString
&
msg
)
=
0
;
virtual
void
layoutWidget
()
=
0
;
///< Layout the appearance of this widget
virtual
void
connectViewSignalsAndSlots
()
=
0
;
///< Connect view signals/slots as needed
virtual
void
disconnectViewSignalsAndSlots
()
=
0
;
///< Disconnect view signals/slots as needed
virtual
void
connectToParamManager
();
///>Connect to any required param manager signals
virtual
void
disconnectFromParamManager
();
///< Disconnect from any connected param manager signals
signals:
public
slots
:
virtual
void
handleOnboardParamUpdate
(
int
component
,
const
QString
&
parameterName
,
QVariant
value
)
=
0
;
virtual
void
handlePendingParamUpdate
(
int
compId
,
const
QString
&
paramName
,
QVariant
value
,
bool
isPending
)
=
0
;
virtual
void
handleOnboardParameterListUpToDate
()
=
0
;
virtual
void
handleParamStatusMsgUpdate
(
QString
msg
,
int
level
)
=
0
;
/** @brief Clear the rendering of onboard parameters */
virtual
void
clearOnboardParamDisplay
()
=
0
;
/** @brief Clear the rendering of pending parameters */
virtual
void
clearPendingParamDisplay
()
=
0
;
/** @brief Request list of parameters from MAV */
virtual
void
requestOnboardParamsUpdate
();
/** @brief Request single parameter from MAV */
virtual
void
requestOnboardParamUpdate
(
QString
parameterName
);
/** @brief Store parameters to a file */
virtual
void
saveParametersToFile
();
/** @brief Load parameters from a file */
virtual
void
loadParametersFromFile
();
protected:
QGCUASParamManagerInterface
*
paramMgr
;
UASInterface
*
mav
;
QString
updatingParamNameLock
;
///< Name of param currently being updated-- used for reducing echo on param change
};
#endif // QGCBASEPARAMWIDGET_H
src/ui/QGCParamTreeWidget.cpp
deleted
100644 → 0
View file @
9e1fef16
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/// @file
/// @author Thomas Gubler <thomasgubler@gmail.com>
#include "QGCParamTreeWidget.h"
#include <QMenu>
#include <QTreeWidgetItem>
#include <QDebug>
QGCParamTreeWidget
::
QGCParamTreeWidget
(
QWidget
*
parent
)
:
QTreeWidget
(
parent
)
{
setContextMenuPolicy
(
Qt
::
CustomContextMenu
);
QObject
::
connect
(
this
,
&
QGCParamTreeWidget
::
customContextMenuRequested
,
this
,
&
QGCParamTreeWidget
::
showContextMenu
);
qDebug
()
<<
"create QGCParamTreeWidget"
;
}
QGCParamTreeWidget
::~
QGCParamTreeWidget
()
{
}
void
QGCParamTreeWidget
::
showContextMenu
(
const
QPoint
&
pos
)
{
QMenu
menu
;
QTreeWidgetItem
*
item
=
itemAt
(
pos
);
// Only show context menu for parameter items and not for group items
// (show for TEST_P but not for TEST)
// If a context menu is needed later for the groups then move this 'if'
// to below where the actions are created and filter out certain actions
// for the outer nodes
if
(
indexOfTopLevelItem
(
item
)
>
-
1
||
indexOfTopLevelItem
(
item
->
parent
())
>
-
1
)
{
return
;
}
QString
param_id
=
item
->
data
(
0
,
Qt
::
DisplayRole
).
toString
();
// Refresh single parameter
QAction
*
act
=
new
QAction
(
tr
(
"Refresh this param"
),
this
);
act
->
setProperty
(
"action"
,
"refresh"
);
act
->
setProperty
(
"param_id"
,
param_id
);
connect
(
act
,
&
QAction
::
triggered
,
this
,
&
QGCParamTreeWidget
::
contextMenuAction
);
menu
.
addAction
(
act
);
// RC to parameter mapping
act
=
new
QAction
(
tr
(
"Map Parameter to RC"
),
this
);
act
->
setProperty
(
"action"
,
"maprc"
);
act
->
setProperty
(
"param_id"
,
param_id
);
connect
(
act
,
&
QAction
::
triggered
,
this
,
&
QGCParamTreeWidget
::
contextMenuAction
);
menu
.
addAction
(
act
);
menu
.
exec
(
mapToGlobal
(
pos
));
}
void
QGCParamTreeWidget
::
contextMenuAction
()
{
QString
action
=
qobject_cast
<
QAction
*>
(
sender
())
->
property
(
"action"
).
toString
();
QString
param_id
=
qobject_cast
<
QAction
*>
(
sender
())
->
property
(
"param_id"
).
toString
();
if
(
action
==
"refresh"
)
{
emit
refreshParamRequest
(
param_id
);
}
else
if
(
action
==
"maprc"
)
{
emit
mapRCToParamRequest
(
param_id
);
}
else
{
qDebug
()
<<
"Undefined context menu action"
;
}
}
src/ui/QGCParamWidget.cc
deleted
100644 → 0
View file @
9e1fef16
This diff is collapsed.
Click to expand it.
src/ui/QGCParamWidget.h
deleted
100644 → 0
View file @
9e1fef16
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/**
* @file
* @brief Declaration of class QGCParamWidget
* @author Lorenz Meier <mail@qgroundcontrol.org>
*/
#ifndef QGCPARAMWIDGET_H
#define QGCPARAMWIDGET_H
#include <QWidget>
#include <QTreeWidget>
#include <QMap>
#include <QLabel>
#include <QTimer>
#include "QGCParamTreeWidget.h"
#include "QGCBaseParamWidget.h"
//forward declarations
class
QGridLayout
;
class
UASInterface
;
/**
* @brief Widget to read/set onboard parameters
*/
class
QGCParamWidget
:
public
QGCBaseParamWidget
{
Q_OBJECT
public:
QGCParamWidget
(
QWidget
*
parent
=
0
);
/// @brief Sets the list of parameters which should be shown by this editor. Parameter names can be
/// wildcarded at the end such as this: "RC*". Which will filter to all parameters which begin
/// with "RC". The wildcard (*) can only be at the end of the string.
void
setFilterList
(
const
QStringList
&
filterList
)
{
_filterList
=
filterList
;
}
protected:
virtual
void
setParameterStatusMsg
(
const
QString
&
msg
);
virtual
void
layoutWidget
();
///< Layout the appearance of this widget
virtual
void
connectViewSignalsAndSlots
();
///< Connect view signals/slots as needed
virtual
void
disconnectViewSignalsAndSlots
();
///< Connect view signals/slots as needed
virtual
QTreeWidgetItem
*
getParentWidgetItemForParam
(
int
compId
,
const
QString
&
paramName
);
virtual
QTreeWidgetItem
*
findChildWidgetItemForParam
(
QTreeWidgetItem
*
parentItem
,
const
QString
&
paramName
);
/** @brief Add a component item as a child of this widget
* @param compId Component id of the component
* @param compName Human friendly name of the component
*/
void
addComponentItem
(
int
compId
,
QString
compName
);
virtual
void
addActionButtonsToLayout
(
QGridLayout
*
layout
);
public
slots
:
virtual
void
handleOnboardParamUpdate
(
int
component
,
const
QString
&
parameterName
,
QVariant
value
);
virtual
void
handlePendingParamUpdate
(
int
compId
,
const
QString
&
paramName
,
QVariant
value
,
bool
isPending
);
virtual
void
handleOnboardParameterListUpToDate
();
virtual
void
handleParamStatusMsgUpdate
(
QString
msg
,
int
level
);
virtual
void
clearOnboardParamDisplay
();
virtual
void
clearPendingParamDisplay
();
/** @brief Adds parameter at the correct location by a alphapetical comparison of the parameter names */
void
insertParamAlphabetical
(
int
indexLowerBound
,
int
indexUpperBound
,
QTreeWidgetItem
*
parentItem
,
QTreeWidgetItem
*
paramItem
);
/** @brief Ensure that view of parameter matches data in the model */
QTreeWidgetItem
*
updateParameterDisplay
(
int
component
,
QString
parameterName
,
QVariant
value
);
/** @brief Update when user changes parameters */
void
parameterItemChanged
(
QTreeWidgetItem
*
prev
,
int
column
);
/** Promt configuration for param map config from user */
void
configureRCToParam
(
QString
param_id
);
protected:
QMap
<
int
,
QTreeWidgetItem
*>*
componentItems
;
///< The tree of component items, stored by component ID
QMap
<
int
,
QMap
<
QString
,
QTreeWidgetItem
*>*
>
paramGroups
;
///< Parameter groups to organize component items
QLabel
*
statusLabel
;
///< User-facing parameter status label
QGCParamTreeWidget
*
tree
;
///< The parameter tree
QStringList
_filterList
;
private:
bool
_fullParamListLoaded
;
};
#endif // QGCPARAMWIDGET_H
src/ui/QGCPendingParamWidget.cc
deleted
100644 → 0
View file @
9e1fef16
#include "QGCPendingParamWidget.h"
#include <QGridLayout>
#include <QPushButton>
#include "UASManager.h"
#include "UASParameterCommsMgr.h"
QGCPendingParamWidget
::
QGCPendingParamWidget
(
QObject
*
parent
)
:
QGCParamWidget
((
QWidget
*
)
parent
)
{
//this subclass doesn't display status updates
statusLabel
->
hide
();
}
void
QGCPendingParamWidget
::
connectToParamManager
()
{
paramMgr
=
mav
->
getParamManager
();
// Listen to updated param signals from the data model
connect
(
paramMgr
,
SIGNAL
(
pendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)),
this
,
SLOT
(
handlePendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)));
}
void
QGCPendingParamWidget
::
disconnectFromParamManager
()
{
// Listen to updated param signals from the data model
disconnect
(
paramMgr
,
SIGNAL
(
pendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)),
this
,
SLOT
(
handlePendingParamUpdate
(
int
,
const
QString
&
,
QVariant
,
bool
)));
paramMgr
=
NULL
;
}
void
QGCPendingParamWidget
::
disconnectViewSignalsAndSlots
()
{
//we ignore edits from the tree view
}
void
QGCPendingParamWidget
::
connectViewSignalsAndSlots
()
{
//we ignore edits from the tree view
}
void
QGCPendingParamWidget
::
handlePendingParamUpdate
(
int
compId
,
const
QString
&
paramName
,
QVariant
value
,
bool
isPending
)
{
// qDebug() << "handlePendingParamUpdate:" << paramName << "with updatingParamNameLock:" << updatingParamNameLock;
if
(
updatingParamNameLock
==
paramName
)
{
//qDebug() << "ignoring bounce from " << paramName;
return
;
}
else
{
updatingParamNameLock
=
paramName
;
}
QTreeWidgetItem
*
paramItem
=
updateParameterDisplay
(
compId
,
paramName
,
value
);
if
(
isPending
)
{
QTreeWidgetItem
*
paramItem
=
updateParameterDisplay
(
compId
,
paramName
,
value
);
paramItem
->
setFlags
(
paramItem
->
flags
()
&
~
Qt
::
ItemIsEditable
);
//disallow editing
paramItem
->
setBackground
(
0
,
QBrush
(
QColor
(
QGC
::
colorOrange
)));
paramItem
->
setBackground
(
1
,
QBrush
(
QColor
(
QGC
::
colorOrange
)));
tree
->
expandAll
();
}
else
{
//we don't display non-pending items
QTreeWidgetItem
*
groupItem
=
paramItem
->
parent
();
if
(
NULL
!=
groupItem
)
{
tree
->
setUpdatesEnabled
(
false
);
QTreeWidgetItem
*
componentItem
=
NULL
;
if
(
1
==
groupItem
->
childCount
())
{
componentItem
=
groupItem
->
parent
();
}
//always remove the actual paramItem from its parent
groupItem
->
removeChild
(
paramItem
);
//now we may need to remove the groupItem if it has no more children
if
(
NULL
!=
componentItem
)
{
//remove the group from our internal data structures
QMap
<
QString
,
QTreeWidgetItem
*>*
compParamGroups
=
paramGroups
.
value
(
compId
);
QString
groupStr
=
paramName
.
section
(
"_"
,
0
,
0
,
QString
::
SectionSkipEmpty
);
compParamGroups
->
remove
(
groupStr
);
//remove the group item from componentItems
componentItems
->
value
(
compId
)
->
removeChild
(
groupItem
);
// remove the group item from the tree widget itself
componentItem
->
removeChild
(
groupItem
);
if
(
0
==
componentItem
->
childCount
())
{
//the component itself no longer has any pending changes: remove it
paramGroups
.
remove
(
compId
);
componentItems
->
remove
(
compId
);
QTreeWidgetItem
*
compTop
=
tree
->
takeTopLevelItem
(
tree
->
indexOfTopLevelItem
(
componentItem
));
delete
compTop
;
//we own it after take
}
}
tree
->
setUpdatesEnabled
(
true
);
tree
->
update
();
}
}
updatingParamNameLock
.
clear
();
}
void
QGCPendingParamWidget
::
addActionButtonsToLayout
(
QGridLayout
*
layout
)
{
QPushButton
*
setButton
=
new
QPushButton
(
tr
(
"Set"
));
setButton
->
setToolTip
(
tr
(
"Send pending parameters to volatile onboard memory"
));
setButton
->
setWhatsThis
(
tr
(
"Send pending parameters to volatile onboard memory"
));
connect
(
setButton
,
SIGNAL
(
clicked
()),
paramMgr
,
SLOT
(
sendPendingParameters
()));
layout
->
addWidget
(
setButton
,
2
,
0
);
QPushButton
*
clearButton
=
new
QPushButton
(
tr
(
"Clear"
));
clearButton
->
setToolTip
(
tr
(
"Clear pending parameters without sending"
));
clearButton
->
setWhatsThis
(
tr
(
"Clear pending parameters without sending"
));
connect
(
clearButton
,
SIGNAL
(
clicked
()),
paramMgr
,
SLOT
(
clearAllPendingParams
()));
layout
->
addWidget
(
clearButton
,
2
,
1
);
}
src/ui/QGCPendingParamWidget.h
deleted
100644 → 0
View file @
9e1fef16
#ifndef QGCPENDINGPARAMWIDGET_H
#define QGCPENDINGPARAMWIDGET_H
#include "QGCParamWidget.h"
class
QGridLayout
;
class
QGCPendingParamWidget
:
public
QGCParamWidget
{
Q_OBJECT
public:
explicit
QGCPendingParamWidget
(
QObject
*
parent
);
protected:
virtual
void
connectToParamManager
();
virtual
void
disconnectFromParamManager
();
virtual
void
connectViewSignalsAndSlots
();
virtual
void
disconnectViewSignalsAndSlots
();
virtual
void
addActionButtonsToLayout
(
QGridLayout
*
layout
);
signals:
public
slots
:
virtual
void
handlePendingParamUpdate
(
int
compId
,
const
QString
&
paramName
,
QVariant
value
,
bool
isPending
);
};
#endif // QGCPENDINGPARAMWIDGET_H
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