16 changed files with 340 additions and 7 deletions
@ -0,0 +1,71 @@
@@ -0,0 +1,71 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
/// @file
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
/// @author Jacob Walser <jwalser90@gmail.com>
|
||||
|
||||
#include "APMSubFrameComponent.h" |
||||
#include "QGCQmlWidgetHolder.h" |
||||
#include "APMAutoPilotPlugin.h" |
||||
#include "APMAirframeComponent.h" |
||||
|
||||
APMSubFrameComponent::APMSubFrameComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent) |
||||
: VehicleComponent(vehicle, autopilot, parent) |
||||
, _name(tr("Frame")) |
||||
{ |
||||
} |
||||
|
||||
QString APMSubFrameComponent::name(void) const |
||||
{ |
||||
return _name; |
||||
} |
||||
|
||||
QString APMSubFrameComponent::description(void) const |
||||
{ |
||||
return tr("Frame setup allows you to choose your vehicle's motor configuration. Install clockwise" \
|
||||
"\npropellers on the green thrusters and counter-clockwise propellers on the blue thrusters" \
|
||||
"\n(or vice-versa). The flight controller will need to be rebooted to apply changes."); |
||||
} |
||||
|
||||
QString APMSubFrameComponent::iconResource(void) const |
||||
{ |
||||
return QStringLiteral("/qmlimages/SubFrameComponentIcon.png"); |
||||
} |
||||
|
||||
bool APMSubFrameComponent::requiresSetup(void) const |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
bool APMSubFrameComponent::setupComplete(void) const |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
QStringList APMSubFrameComponent::setupCompleteChangedTriggerList(void) const |
||||
{ |
||||
return QStringList(); |
||||
} |
||||
|
||||
QUrl APMSubFrameComponent::setupSource(void) const |
||||
{ |
||||
return QUrl::fromUserInput(QStringLiteral("qrc:/qml/APMSubFrameComponent.qml")); |
||||
} |
||||
|
||||
QUrl APMSubFrameComponent::summaryQmlSource(void) const |
||||
{ |
||||
return QUrl::fromUserInput(QStringLiteral("qrc:/qml/APMSubFrameComponentSummary.qml")); |
||||
} |
||||
|
||||
QString APMSubFrameComponent::prerequisiteSetup(void) const |
||||
{ |
||||
return QString(); |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
/****************************************************************************
|
||||
* |
||||
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
#ifndef APMSubFrameComponent_H |
||||
#define APMSubFrameComponent_H |
||||
|
||||
#include "VehicleComponent.h" |
||||
|
||||
class APMSubFrameComponent : public VehicleComponent |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
APMSubFrameComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = NULL); |
||||
|
||||
// Virtuals from VehicleComponent
|
||||
QStringList setupCompleteChangedTriggerList(void) const final; |
||||
|
||||
// Virtuals from VehicleComponent
|
||||
QString name(void) const final; |
||||
QString description(void) const final; |
||||
QString iconResource(void) const final; |
||||
bool requiresSetup(void) const final; |
||||
bool setupComplete(void) const final; |
||||
QUrl setupSource(void) const final; |
||||
QUrl summaryQmlSource(void) const final; |
||||
QString prerequisiteSetup(void) const final; |
||||
|
||||
private: |
||||
const QString _name; |
||||
}; |
||||
|
||||
#endif |
@ -0,0 +1,151 @@
@@ -0,0 +1,151 @@
|
||||
/**************************************************************************** |
||||
* |
||||
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
||||
* |
||||
* QGroundControl is licensed according to the terms in the file |
||||
* COPYING.md in the root of the source code directory. |
||||
* |
||||
****************************************************************************/ |
||||
|
||||
|
||||
import QtQuick 2.5 |
||||
import QtQuick.Controls 1.2 |
||||
|
||||
import QGroundControl.FactSystem 1.0 |
||||
import QGroundControl.FactControls 1.0 |
||||
import QGroundControl.Palette 1.0 |
||||
import QGroundControl.Controls 1.0 |
||||
import QGroundControl.ScreenTools 1.0 |
||||
|
||||
SetupPage { |
||||
id: subFramePage |
||||
pageComponent: subFramePageComponent |
||||
|
||||
Component { |
||||
id: subFramePageComponent |
||||
|
||||
Column { |
||||
id: mainColumn |
||||
width: availableWidth |
||||
|
||||
FactPanelController { id: controller; factPanel: subFramePage.viewPanel } |
||||
|
||||
QGCPalette { id: palette; colorGroupEnabled: true } |
||||
|
||||
property Fact _frameConfig: controller.getParameterFact(-1, "FRAME_CONFIG") |
||||
|
||||
function setFrameConfig(frame) { |
||||
_frameConfig.value = frame; |
||||
} |
||||
|
||||
property real _minW: ScreenTools.defaultFontPixelWidth * 30 |
||||
property real _boxWidth: _minW |
||||
property real _boxSpace: ScreenTools.defaultFontPixelWidth |
||||
|
||||
onWidthChanged: { |
||||
computeDimensions() |
||||
} |
||||
|
||||
Component.onCompleted: computeDimensions() |
||||
|
||||
function computeDimensions() { |
||||
var sw = 0 |
||||
var rw = 0 |
||||
var idx = Math.floor(mainColumn.width / (_minW + ScreenTools.defaultFontPixelWidth)) |
||||
if(idx < 1) { |
||||
_boxWidth = mainColumn.width |
||||
_boxSpace = 0 |
||||
} else { |
||||
_boxSpace = 0 |
||||
if(idx > 1) { |
||||
_boxSpace = ScreenTools.defaultFontPixelWidth |
||||
sw = _boxSpace * (idx - 1) |
||||
} |
||||
rw = mainColumn.width - sw |
||||
_boxWidth = rw / idx |
||||
} |
||||
} |
||||
|
||||
ListModel { |
||||
id: subFrameModel |
||||
|
||||
ListElement { |
||||
name: "BlueROV1" |
||||
resource: "qrc:///qmlimages/Frames/BlueROV1.png" |
||||
paramValue: 0 |
||||
} |
||||
|
||||
ListElement { |
||||
name: "BlueROV2/Vectored" |
||||
resource: "qrc:///qmlimages/Frames/Vectored.png" |
||||
paramValue: 1 |
||||
} |
||||
|
||||
ListElement { |
||||
name: "Vectored-6DOF" |
||||
resource: "qrc:///qmlimages/Frames/Vectored6DOF.png" |
||||
paramValue: 2 |
||||
} |
||||
|
||||
ListElement { |
||||
name: "SimpleROV-3" |
||||
resource: "qrc:///qmlimages/Frames/SimpleROV-3.png" |
||||
paramValue: 4 |
||||
} |
||||
|
||||
ListElement { |
||||
name: "SimpleROV-4" |
||||
resource: "qrc:///qmlimages/Frames/SimpleROV-4.png" |
||||
paramValue: 5 |
||||
} |
||||
} |
||||
|
||||
Flow { |
||||
id: flowView |
||||
width: parent.width |
||||
spacing: _boxSpace |
||||
|
||||
Repeater { |
||||
model: subFrameModel |
||||
|
||||
Rectangle { |
||||
width: _boxWidth |
||||
height: ScreenTools.defaultFontPixelHeight * 14 |
||||
color: qgcPal.window |
||||
|
||||
QGCLabel { |
||||
id: title |
||||
text: subFrameModel.get(index).name |
||||
} |
||||
|
||||
Rectangle { |
||||
anchors.topMargin: ScreenTools.defaultFontPixelHeight / 2 |
||||
anchors.top: title.bottom |
||||
anchors.bottom: parent.bottom |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
color: subFrameModel.get(index).paramValue == _frameConfig.value ? qgcPal.buttonHighlight: qgcPal.windowShade |
||||
|
||||
Image { |
||||
anchors.margins: ScreenTools.defaultFontPixelWidth |
||||
anchors.top: parent.top |
||||
anchors.bottom: parent.bottom |
||||
anchors.left: parent.left |
||||
anchors.right: parent.right |
||||
fillMode: Image.PreserveAspectFit |
||||
smooth: true |
||||
mipmap: true |
||||
source: subFrameModel.get(index).resource |
||||
} |
||||
|
||||
MouseArea { |
||||
anchors.fill: parent |
||||
onClicked: setFrameConfig(subFrameModel.get(index).paramValue) |
||||
} |
||||
} |
||||
} |
||||
}// Repeater |
||||
}// Flow |
||||
} // Column |
||||
} // Component |
||||
} // SetupPage |
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
import QtQuick 2.2 |
||||
import QtQuick.Controls 1.2 |
||||
|
||||
import QGroundControl.FactSystem 1.0 |
||||
import QGroundControl.FactControls 1.0 |
||||
import QGroundControl.Controls 1.0 |
||||
import QGroundControl.Controllers 1.0 |
||||
import QGroundControl.Palette 1.0 |
||||
|
||||
FactPanel { |
||||
id: panel |
||||
anchors.fill: parent |
||||
color: qgcPal.windowShadeDark |
||||
|
||||
QGCPalette { id: qgcPal; colorGroupEnabled: enabled } |
||||
|
||||
FactPanelController { id: controller; factPanel: panel } |
||||
|
||||
property Fact frameFact: controller.getParameterFact(-1, "FRAME_CONFIG") |
||||
|
||||
function frameName() { |
||||
switch(frameFact.value) { |
||||
case 0: |
||||
return "BlueROV1" |
||||
case 1: |
||||
return "Vectored/BlueROV2" |
||||
case 2: |
||||
return "Vectored 6DOF" |
||||
case 3: |
||||
return "Vectored 6DOF 90Degree" |
||||
case 4: |
||||
return "SimpleROV-3" |
||||
case 5: |
||||
return "SimpleROV-4" |
||||
case 6: |
||||
return "SimpleROV-5" |
||||
case 7: |
||||
return "Custom" |
||||
default: |
||||
return "Unknown" |
||||
} |
||||
} |
||||
|
||||
Column { |
||||
anchors.fill: parent |
||||
VehicleSummaryRow { |
||||
id: nameRow; |
||||
labelText: qsTr("Frame Type:") |
||||
valueText: frameName() |
||||
} |
||||
|
||||
VehicleSummaryRow { |
||||
labelText: qsTr("Firmware Version:") |
||||
valueText: activeVehicle.firmwareMajorVersion == -1 ? qsTr("Unknown") : activeVehicle.firmwareMajorVersion + "." + activeVehicle.firmwareMinorVersion + "." + activeVehicle.firmwarePatchVersion + "-" + activeVehicle.firmwareVersionTypeString |
||||
} |
||||
} |
||||
} |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 59 KiB |
Loading…
Reference in new issue