mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-31 16:52:10 +01:00
LP-29 add ability to change vehicle model using up and down arrow key
wip : needs a proper UI to let user change model
This commit is contained in:
parent
e6ada50587
commit
2c7333935d
@ -28,13 +28,18 @@
|
|||||||
#include "pfdqmlcontext.h"
|
#include "pfdqmlcontext.h"
|
||||||
|
|
||||||
#include "extensionsystem/pluginmanager.h"
|
#include "extensionsystem/pluginmanager.h"
|
||||||
#include "uavobjectmanager.h"
|
|
||||||
#include "uavobject.h"
|
#include "uavobject.h"
|
||||||
|
#include "uavobjectmanager.h"
|
||||||
#include "utils/stringutils.h"
|
#include "utils/stringutils.h"
|
||||||
|
#include "utils/pathutils.h"
|
||||||
|
|
||||||
#include "flightbatterysettings.h"
|
#include "flightbatterysettings.h"
|
||||||
|
|
||||||
#include <QQmlContext>
|
#include <QQmlContext>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QDirIterator>
|
||||||
|
|
||||||
|
const QString PfdQmlContext::CONTEXT_PROPERTY_NAME = "pfdContext";
|
||||||
|
|
||||||
PfdQmlContext::PfdQmlContext(QObject *parent) : QObject(parent),
|
PfdQmlContext::PfdQmlContext(QObject *parent) : QObject(parent),
|
||||||
m_speedUnit("m/s"),
|
m_speedUnit("m/s"),
|
||||||
@ -50,8 +55,13 @@ PfdQmlContext::PfdQmlContext(QObject *parent) : QObject(parent),
|
|||||||
m_dateTime(QDateTime()),
|
m_dateTime(QDateTime()),
|
||||||
m_minAmbientLight(0.03),
|
m_minAmbientLight(0.03),
|
||||||
m_modelFile(""),
|
m_modelFile(""),
|
||||||
|
m_modelIndex(0),
|
||||||
m_backgroundImageFile("")
|
m_backgroundImageFile("")
|
||||||
{}
|
{
|
||||||
|
addModelDir("helis");
|
||||||
|
addModelDir("multi");
|
||||||
|
addModelDir("planes");
|
||||||
|
}
|
||||||
|
|
||||||
PfdQmlContext::~PfdQmlContext()
|
PfdQmlContext::~PfdQmlContext()
|
||||||
{}
|
{}
|
||||||
@ -220,11 +230,32 @@ QString PfdQmlContext::modelFile() const
|
|||||||
void PfdQmlContext::setModelFile(const QString &arg)
|
void PfdQmlContext::setModelFile(const QString &arg)
|
||||||
{
|
{
|
||||||
if (m_modelFile != arg) {
|
if (m_modelFile != arg) {
|
||||||
m_modelFile = arg;
|
m_modelFile = arg;
|
||||||
|
m_modelIndex = m_modelFileList.indexOf(m_modelFile);
|
||||||
|
if (m_modelIndex == -1) {
|
||||||
|
m_modelIndex = 0;
|
||||||
|
}
|
||||||
emit modelFileChanged(modelFile());
|
emit modelFileChanged(modelFile());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PfdQmlContext::nextModel()
|
||||||
|
{
|
||||||
|
m_modelIndex = (m_modelIndex + 1) % m_modelFileList.length();
|
||||||
|
setModelFile(m_modelFileList[m_modelIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PfdQmlContext::previousModel()
|
||||||
|
{
|
||||||
|
m_modelIndex = (m_modelFileList.length() + m_modelIndex - 1) % m_modelFileList.length();
|
||||||
|
setModelFile(m_modelFileList[m_modelIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList PfdQmlContext::modelFileList() const
|
||||||
|
{
|
||||||
|
return m_modelFileList;
|
||||||
|
}
|
||||||
|
|
||||||
QString PfdQmlContext::backgroundImageFile() const
|
QString PfdQmlContext::backgroundImageFile() const
|
||||||
{
|
{
|
||||||
return m_backgroundImageFile;
|
return m_backgroundImageFile;
|
||||||
@ -281,12 +312,16 @@ void PfdQmlContext::loadConfiguration(PfdQmlGadgetConfiguration *config)
|
|||||||
|
|
||||||
void PfdQmlContext::saveState(QSettings *settings)
|
void PfdQmlContext::saveState(QSettings *settings)
|
||||||
{
|
{
|
||||||
Q_UNUSED(settings);
|
settings->setValue("modelFile", modelFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PfdQmlContext::restoreState(QSettings *settings)
|
void PfdQmlContext::restoreState(QSettings *settings)
|
||||||
{
|
{
|
||||||
Q_UNUSED(settings);
|
QString file = settings->value("modelFile").toString();
|
||||||
|
|
||||||
|
if (!file.isEmpty()) {
|
||||||
|
setModelFile(file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PfdQmlContext::apply(QQmlContext *context)
|
void PfdQmlContext::apply(QQmlContext *context)
|
||||||
@ -339,6 +374,17 @@ void PfdQmlContext::apply(QQmlContext *context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// to expose settings values
|
// expose this context to Qml
|
||||||
context->setContextProperty("pfdContext", this);
|
context->setContextProperty(CONTEXT_PROPERTY_NAME, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PfdQmlContext::addModelDir(QString dir)
|
||||||
|
{
|
||||||
|
QDirIterator it(Utils::GetDataPath() + "models/" + dir, QStringList("*.3ds"), QDir::NoFilter, QDirIterator::Subdirectories);
|
||||||
|
|
||||||
|
while (it.hasNext()) {
|
||||||
|
QString file = QDir::toNativeSeparators(it.next());
|
||||||
|
// qDebug() << file;
|
||||||
|
m_modelFileList.append(file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,11 @@ class PfdQmlContext : public QObject {
|
|||||||
Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged)
|
Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged)
|
||||||
Q_PROPERTY(double minimumAmbientLight READ minimumAmbientLight WRITE setMinimumAmbientLight NOTIFY minimumAmbientLightChanged)
|
Q_PROPERTY(double minimumAmbientLight READ minimumAmbientLight WRITE setMinimumAmbientLight NOTIFY minimumAmbientLightChanged)
|
||||||
|
|
||||||
Q_PROPERTY(QString modelFile READ modelFile WRITE setModelFile NOTIFY modelFileChanged)
|
// model
|
||||||
|
Q_PROPERTY(QString modelFile READ modelFile NOTIFY modelFileChanged)
|
||||||
|
Q_PROPERTY(QStringList modelFileList READ modelFileList CONSTANT FINAL)
|
||||||
|
|
||||||
|
// background
|
||||||
Q_PROPERTY(QString backgroundImageFile READ backgroundImageFile WRITE setBackgroundImageFile NOTIFY backgroundImageFileChanged)
|
Q_PROPERTY(QString backgroundImageFile READ backgroundImageFile WRITE setBackgroundImageFile NOTIFY backgroundImageFileChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -87,8 +91,14 @@ public:
|
|||||||
double minimumAmbientLight() const;
|
double minimumAmbientLight() const;
|
||||||
void setMinimumAmbientLight(double arg);
|
void setMinimumAmbientLight(double arg);
|
||||||
|
|
||||||
|
// model
|
||||||
QString modelFile() const;
|
QString modelFile() const;
|
||||||
void setModelFile(const QString &arg);
|
void setModelFile(const QString &arg);
|
||||||
|
QStringList modelFileList() const;
|
||||||
|
Q_INVOKABLE void nextModel();
|
||||||
|
Q_INVOKABLE void previousModel();
|
||||||
|
|
||||||
|
// background
|
||||||
QString backgroundImageFile() const;
|
QString backgroundImageFile() const;
|
||||||
void setBackgroundImageFile(const QString &arg);
|
void setBackgroundImageFile(const QString &arg);
|
||||||
|
|
||||||
@ -121,6 +131,9 @@ signals:
|
|||||||
void backgroundImageFileChanged(QString arg);
|
void backgroundImageFileChanged(QString arg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// constants
|
||||||
|
static const QString CONTEXT_PROPERTY_NAME;
|
||||||
|
|
||||||
QString m_speedUnit;
|
QString m_speedUnit;
|
||||||
double m_speedFactor;
|
double m_speedFactor;
|
||||||
QString m_altitudeUnit;
|
QString m_altitudeUnit;
|
||||||
@ -138,7 +151,11 @@ private:
|
|||||||
double m_minAmbientLight;
|
double m_minAmbientLight;
|
||||||
|
|
||||||
QString m_modelFile;
|
QString m_modelFile;
|
||||||
|
int m_modelIndex;
|
||||||
|
QStringList m_modelFileList;
|
||||||
|
|
||||||
QString m_backgroundImageFile;
|
QString m_backgroundImageFile;
|
||||||
|
|
||||||
|
void addModelDir(QString dir);
|
||||||
};
|
};
|
||||||
#endif /* PFDQMLCONTEXT_H_ */
|
#endif /* PFDQMLCONTEXT_H_ */
|
||||||
|
@ -89,4 +89,12 @@ OSGViewport {
|
|||||||
// model will be tracked
|
// model will be tracked
|
||||||
trackNode: modelTransformNode
|
trackNode: modelTransformNode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Keys.onUpPressed: {
|
||||||
|
pfdContext.nextModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onDownPressed: {
|
||||||
|
pfdContext.previousModel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,14 @@ Item {
|
|||||||
fieldOfView: 90
|
fieldOfView: 90
|
||||||
sceneNode: transformNode
|
sceneNode: transformNode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Keys.onUpPressed: {
|
||||||
|
pfdContext.nextModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onDownPressed: {
|
||||||
|
pfdContext.previousModel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user