1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

The Analog dial widget now fully works! Testers with actual needed.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@671 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
edouard 2010-05-27 09:47:42 +00:00 committed by edouard
parent 5aa8da0be3
commit eedb81de9d
2 changed files with 31 additions and 14 deletions

View File

@ -54,9 +54,11 @@ AirspeedGadgetWidget::AirspeedGadgetWidget(QWidget *parent) : QGraphicsView(pare
dialTimer.start(30);
// Test code for timer to rotate the needle
#if 0
testSpeed=0;
connect(&m_testTimer, SIGNAL(timeout()), this, SLOT(testRotate()));
m_testTimer.start(4000);
#endif
}
AirspeedGadgetWidget::~AirspeedGadgetWidget()
@ -67,26 +69,31 @@ AirspeedGadgetWidget::~AirspeedGadgetWidget()
/*!
\brief Connects the widget to the relevant UAVObjects
*/
void AirspeedGadgetWidget::connectNeedles(QString object1, QString field1, QString object2, QString field2 ) {
void AirspeedGadgetWidget::connectNeedles(QString object1, QString nfield1, QString object2, QString nfield2 ) {
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
std::cout << "Connect needles." << std::endl;
// Check validity of arguments first, reject empty args and unknown fields.
if (!(object1.isEmpty() || field1.isEmpty())) {
if (!(object1.isEmpty() || nfield1.isEmpty())) {
UAVDataObject* obj = dynamic_cast<UAVDataObject*>( objManager->getObject(object1) );
if (obj != NULL ) {
connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateNeedles(UAVObject*)));
std::cout << "Connected Object 1 (" << object1.toStdString() << ")." << std::endl;
connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateNeedle1(UAVObject*)));
field1 = nfield1;
} else {
std::cout << "Error: Object is unknown (" << object1.toStdString() << ")." << std::endl;
}
}
// And do the same for the second needle.
if (!(object2.isEmpty() || field2.isEmpty())) {
if (!(object2.isEmpty() || nfield2.isEmpty())) {
UAVDataObject* obj = dynamic_cast<UAVDataObject*>( objManager->getObject(object2) );
if (obj != NULL ) {
connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateNeedles(UAVObject*)));
std::cout << "Connected Object 2 (" << object2.toStdString() << ")." << std::endl;
connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updateNeedle2(UAVObject*)));
field2 = nfield2;
} else {
std::cout << "Error: Object is unknown (" << object2.toStdString() << ")." << std::endl;
}
@ -95,15 +102,20 @@ void AirspeedGadgetWidget::connectNeedles(QString object1, QString field1, QStri
/*!
\brief Called by the systemalarms UAVObject
\brief Called by the UAVObject which got updated
*/
void AirspeedGadgetWidget::updateNeedles(UAVObject *systemObject) {
// UAVObjectField* field = obj->getField(QString("Field1"));
void AirspeedGadgetWidget::updateNeedle1(UAVObject *object1) {
UAVObjectField* field = object1->getField(field1);
setNeedle1(field->getDouble());
}
/*!
\brief Called by the UAVObject which got updated
*/
void AirspeedGadgetWidget::updateNeedle2(UAVObject *object2) {
UAVObjectField* field = object2->getField(field2);
setNeedle2(field->getDouble());
}
void AirspeedGadgetWidget::setDialFile(QString dfn, QString bg, QString fg, QString n1, QString n2)
{

View File

@ -62,12 +62,11 @@ protected:
void paintEvent(QPaintEvent *event);
void resizeEvent(QResizeEvent *event);
private:
private slots:
// Test function
void testRotate();
void updateNeedles(UAVObject *systemAlarm); // Called by the systemalarms UAVObject
void updateNeedle1(UAVObject *object1); // Called by the UAVObject
void updateNeedle2(UAVObject *object2); // Called by the UAVObject
void rotateNeedles();
private:
@ -92,12 +91,18 @@ private:
double needle2Target;
double needle2Value;
// Name of the fields to read when an update is received:
QString field1;
QString field2;
// Rotation timer
QTimer dialTimer;
// Test variables
#if 0
int testSpeed;
QTimer m_testTimer;
// End test variables
#endif
};
#endif /* AIRSPEEDGADGETWIDGET_H_ */