After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 918 B |
After Width: | Height: | Size: 1.0 KiB |
@ -0,0 +1,118 @@
@@ -0,0 +1,118 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2015 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 Gus Grubba <mavlink@grubba.com>
|
||||
|
||||
#include "PowerComponent.h" |
||||
#include "PX4RCCalibration.h" |
||||
#include "QGCQmlWidgetHolder.h" |
||||
#include "PX4AutoPilotPlugin.h" |
||||
|
||||
PowerComponent::PowerComponent(UASInterface* uas, AutoPilotPlugin* autopilot, QObject* parent) : |
||||
PX4Component(uas, autopilot, parent), |
||||
_name(tr("Power")) |
||||
{ |
||||
} |
||||
|
||||
QString PowerComponent::name(void) const |
||||
{ |
||||
return _name; |
||||
} |
||||
|
||||
QString PowerComponent::description(void) const |
||||
{ |
||||
return tr("The Power Component is used to setup battery parameters as well as advanced settings for propellers and magnetometer."); |
||||
} |
||||
|
||||
QString PowerComponent::iconResource(void) const |
||||
{ |
||||
return "PowerComponentIcon.png"; |
||||
} |
||||
|
||||
bool PowerComponent::requiresSetup(void) const |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
bool PowerComponent::setupComplete(void) const |
||||
{ |
||||
QVariant cvalue, evalue, nvalue; |
||||
if (_paramMgr->getParameterValue(_paramMgr->getDefaultComponentId(), "BAT_V_CHARGED", cvalue)) { |
||||
if (_paramMgr->getParameterValue(_paramMgr->getDefaultComponentId(), "BAT_V_EMPTY", evalue)) { |
||||
if (_paramMgr->getParameterValue(_paramMgr->getDefaultComponentId(), "BAT_N_CELLS", nvalue)) { |
||||
return (cvalue.toFloat() > 0.1f) && (evalue.toFloat() > 0.1f) && (nvalue.toInt() > 0); |
||||
} |
||||
} |
||||
} |
||||
Q_ASSERT(false); |
||||
return false; |
||||
} |
||||
|
||||
QString PowerComponent::setupStateDescription(void) const |
||||
{ |
||||
const char* stateDescription; |
||||
|
||||
if (requiresSetup()) { |
||||
stateDescription = "Requires setup"; |
||||
} else { |
||||
stateDescription = "Setup complete"; |
||||
} |
||||
return QString(stateDescription); |
||||
} |
||||
|
||||
QStringList PowerComponent::setupCompleteChangedTriggerList(void) const |
||||
{ |
||||
return QStringList(); |
||||
} |
||||
|
||||
QStringList PowerComponent::paramFilterList(void) const |
||||
{ |
||||
QStringList list; |
||||
|
||||
return list; |
||||
} |
||||
|
||||
QWidget* PowerComponent::setupWidget(void) const |
||||
{ |
||||
QGCQmlWidgetHolder* holder = new QGCQmlWidgetHolder(); |
||||
Q_CHECK_PTR(holder); |
||||
holder->setAutoPilot(_autopilot); |
||||
holder->setSource(QUrl::fromUserInput("qrc:/qml/PowerComponent.qml")); |
||||
return holder; |
||||
} |
||||
|
||||
QUrl PowerComponent::summaryQmlSource(void) const |
||||
{ |
||||
return QUrl::fromUserInput("qrc:/qml/PowerComponentSummary.qml"); |
||||
} |
||||
|
||||
QString PowerComponent::prerequisiteSetup(void) const |
||||
{ |
||||
PX4AutoPilotPlugin* plugin = dynamic_cast<PX4AutoPilotPlugin*>(_autopilot); |
||||
Q_ASSERT(plugin); |
||||
if (!plugin->airframeComponent()->setupComplete()) { |
||||
return plugin->airframeComponent()->name(); |
||||
} |
||||
return QString(); |
||||
} |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2015 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/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
#ifndef PowerComponent_H |
||||
#define PowerComponent_H |
||||
|
||||
#include "PX4Component.h" |
||||
|
||||
/// @file
|
||||
/// @brief Battery, propeller and magnetometer settings
|
||||
/// @author Gus Grubba <mavlink@grubba.com>
|
||||
|
||||
class PowerComponent : public PX4Component |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
PowerComponent(UASInterface* uas, AutoPilotPlugin* autopilot, QObject* parent = NULL); |
||||
|
||||
// Virtuals from PX4Component
|
||||
virtual QStringList setupCompleteChangedTriggerList(void) const; |
||||
|
||||
// Virtuals from VehicleComponent
|
||||
virtual QString name (void) const; |
||||
virtual QString description (void) const; |
||||
virtual QString iconResource (void) const; |
||||
virtual bool requiresSetup (void) const; |
||||
virtual bool setupComplete (void) const; |
||||
virtual QString setupStateDescription (void) const; |
||||
virtual QWidget* setupWidget (void) const; |
||||
virtual QStringList paramFilterList (void) const; |
||||
virtual QUrl summaryQmlSource (void) const; |
||||
virtual QString prerequisiteSetup (void) const; |
||||
|
||||
private: |
||||
const QString _name; |
||||
QVariantList _summaryItems; |
||||
}; |
||||
|
||||
#endif |
@ -0,0 +1,278 @@
@@ -0,0 +1,278 @@
|
||||
/*===================================================================== |
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2015 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 Battery, propeller and magnetometer settings |
||||
/// @author Gus Grubba <mavlink@grubba.com> |
||||
|
||||
import QtQuick 2.2 |
||||
import QtQuick.Controls 1.2 |
||||
import QtQuick.Controls.Styles 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 |
||||
|
||||
Rectangle { |
||||
QGCPalette { id: palette; colorGroupEnabled: true } |
||||
|
||||
id: powerSettings |
||||
width: 600 |
||||
height: 600 |
||||
color: palette.window |
||||
|
||||
property int firstColumnWidth: 220 |
||||
property int textEditWidth: 60 |
||||
property ScreenTools screenTools: ScreenTools { } |
||||
|
||||
property Fact battNumCells: Fact { name: "BAT_N_CELLS" } |
||||
property Fact battHighVolt: Fact { name: "BAT_V_CHARGED" } |
||||
property Fact battLowVolt: Fact { name: "BAT_V_EMPTY" } |
||||
|
||||
property alias battHigh: battHighRow |
||||
property alias battLow: battLowRow |
||||
|
||||
function getBatteryImage() |
||||
{ |
||||
switch(battNumCells.value) { |
||||
case 1: return "/qml/PowerComponentBattery_01cell.svg"; |
||||
case 2: return "/qml/PowerComponentBattery_02cell.svg" |
||||
case 3: return "/qml/PowerComponentBattery_03cell.svg" |
||||
case 4: return "/qml/PowerComponentBattery_04cell.svg" |
||||
case 5: return "/qml/PowerComponentBattery_05cell.svg" |
||||
case 6: return "/qml/PowerComponentBattery_06cell.svg" |
||||
default: return "/qml/PowerComponentBattery_01cell.svg"; |
||||
} |
||||
} |
||||
|
||||
function drawArrowhead(ctx, x, y, radians) |
||||
{ |
||||
ctx.save(); |
||||
ctx.beginPath(); |
||||
ctx.translate(x,y); |
||||
ctx.rotate(radians); |
||||
ctx.moveTo(0,0); |
||||
ctx.lineTo(5,10); |
||||
ctx.lineTo(-5,10); |
||||
ctx.closePath(); |
||||
ctx.restore(); |
||||
ctx.fill(); |
||||
} |
||||
|
||||
function drawLineWithArrow(ctx, x1, y1, x2, y2) |
||||
{ |
||||
ctx.beginPath(); |
||||
ctx.moveTo(x1, y1); |
||||
ctx.lineTo(x2, y2); |
||||
ctx.stroke(); |
||||
var rd = Math.atan((y2 - y1) / (x2 - x1)); |
||||
rd += ((x2 > x1) ? 90 : -90) * Math.PI/180; |
||||
drawArrowhead(ctx, x2, y2, rd); |
||||
} |
||||
|
||||
Column { |
||||
anchors.fill: parent |
||||
spacing: 10 |
||||
|
||||
QGCLabel { |
||||
text: "POWER CONFIG" |
||||
font.pointSize: 20 * screenTools.dpiFactor; |
||||
} |
||||
|
||||
QGCLabel { |
||||
text: "Battery" |
||||
color: palette.text |
||||
font.pointSize: 20 * screenTools.dpiFactor; |
||||
} |
||||
|
||||
Rectangle { |
||||
width: parent.width |
||||
height: 160 |
||||
color: palette.windowShade |
||||
|
||||
Column { |
||||
id: batteryColumn |
||||
spacing: 10 |
||||
anchors.verticalCenter: parent.verticalCenter |
||||
x: (parent.x + 20) |
||||
|
||||
Row { |
||||
spacing: 10 |
||||
Column { |
||||
id: voltageCol |
||||
spacing: 10 |
||||
Row { |
||||
spacing: 10 |
||||
QGCLabel { text: "Number of Cells (in Series)"; width: firstColumnWidth; anchors.baseline: cellsField.baseline} |
||||
FactTextField { |
||||
id: cellsField |
||||
width: textEditWidth |
||||
fact: Fact { name: "BAT_N_CELLS" } |
||||
showUnits: true |
||||
} |
||||
} |
||||
Row { |
||||
id: battHighRow |
||||
spacing: 10 |
||||
QGCLabel { text: "Full Voltage (per cell)"; width: firstColumnWidth; anchors.baseline: battHighField.baseline} |
||||
FactTextField { |
||||
id: battHighField |
||||
width: textEditWidth |
||||
fact: Fact { name: "BAT_V_CHARGED" } |
||||
showUnits: true |
||||
} |
||||
} |
||||
Row { |
||||
id: battLowRow |
||||
spacing: 10 |
||||
QGCLabel { text: "Empty Voltage (per cell)"; width: firstColumnWidth; anchors.baseline: battLowField.baseline} |
||||
FactTextField { |
||||
id: battLowField |
||||
width: textEditWidth |
||||
fact: Fact { name: "BAT_V_EMPTY" } |
||||
showUnits: true |
||||
} |
||||
} |
||||
Row { |
||||
spacing: 10 |
||||
visible: showAdvanced.checked |
||||
QGCLabel { text: "Voltage Drop on Full Load (per cell)"; width: firstColumnWidth; anchors.baseline: battDropField.baseline} |
||||
FactTextField { |
||||
id: battDropField |
||||
width: textEditWidth |
||||
fact: Fact { name: "BAT_V_LOAD_DROP" } |
||||
showUnits: true |
||||
} |
||||
} |
||||
} |
||||
Canvas { |
||||
id: arrows |
||||
height: voltageCol.height |
||||
width: 40 |
||||
antialiasing: true |
||||
Connections { |
||||
target: screenTools |
||||
onRepaintRequestedChanged: { |
||||
arrows.requestPaint(); |
||||
} |
||||
} |
||||
onPaint: { |
||||
var y0 = voltageCol.mapFromItem(battHigh, 0, battHigh.height / 2).y; |
||||
var y1 = voltageCol.mapFromItem(battLow, 0, battLow.height / 2).y; |
||||
var context = getContext("2d"); |
||||
context.reset(); |
||||
context.strokeStyle = palette.button; |
||||
context.fillStyle = palette.button; |
||||
drawLineWithArrow(context, 0, y0, width, height * 0.25); |
||||
drawLineWithArrow(context, 0, y1, width, height * 0.85); |
||||
} |
||||
} |
||||
QGCColoredImage { |
||||
height: voltageCol.height |
||||
width: voltageCol.height * 0.75 |
||||
source: getBatteryImage(); |
||||
fillMode: Image.PreserveAspectFit |
||||
smooth: true |
||||
color: palette.button |
||||
cache: false |
||||
} |
||||
Item { width: 20; height: 1; } |
||||
Column { |
||||
spacing: 10 |
||||
anchors.verticalCenter: parent.verticalCenter |
||||
Row { |
||||
spacing: 10 |
||||
QGCLabel { |
||||
text: "Battery Max:" |
||||
color: palette.text |
||||
width: 80 |
||||
font.pointSize: 12 * screenTools.dpiFactor; |
||||
} |
||||
QGCLabel { |
||||
text: (battNumCells.value * battHighVolt.value).toFixed(1) + ' V' |
||||
color: palette.text |
||||
font.pointSize: 12 * screenTools.dpiFactor; |
||||
} |
||||
} |
||||
Row { |
||||
spacing: 10 |
||||
QGCLabel { |
||||
text: "Battery Min:" |
||||
color: palette.text |
||||
width: 80 |
||||
font.pointSize: 12 * screenTools.dpiFactor; |
||||
} |
||||
QGCLabel { |
||||
text: (battNumCells.value * battLowVolt.value).toFixed(1) + ' V' |
||||
color: palette.text |
||||
font.pointSize: 12 * screenTools.dpiFactor; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
Row { |
||||
width: parent.width |
||||
spacing: 30 |
||||
visible: showAdvanced.checked |
||||
Column { |
||||
spacing: 10 |
||||
width: (parent.width / 2) - 5 |
||||
QGCLabel { |
||||
text: "Propeller Function" |
||||
color: palette.text |
||||
font.pointSize: 20 * screenTools.dpiFactor; |
||||
} |
||||
Rectangle { |
||||
width: parent.width |
||||
height: 160 |
||||
color: palette.windowShade |
||||
} |
||||
} |
||||
Column { |
||||
spacing: 10 |
||||
width: (parent.width / 2) - 5 |
||||
QGCLabel { |
||||
text: "Magnetometer Distortion" |
||||
color: palette.text |
||||
font.pointSize: 20 * screenTools.dpiFactor; |
||||
} |
||||
Rectangle { |
||||
width: parent.width |
||||
height: 160 |
||||
color: palette.windowShade |
||||
} |
||||
|
||||
} |
||||
} |
||||
//-- Advanced Settings |
||||
QGCCheckBox { |
||||
id: showAdvanced |
||||
text: "Show Advanced Settings" |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,80 @@
@@ -0,0 +1,80 @@
|
||||
/*===================================================================== |
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2015 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 Battery, propeller and magnetometer summary |
||||
/// @author Gus Grubba <mavlink@grubba.com> |
||||
|
||||
import QtQuick 2.2 |
||||
import QtQuick.Controls 1.2 |
||||
import QtQuick.Controls.Styles 1.2 |
||||
|
||||
import QGroundControl.FactSystem 1.0 |
||||
import QGroundControl.FactControls 1.0 |
||||
import QGroundControl.Controls 1.0 |
||||
|
||||
Column { |
||||
anchors.fill: parent |
||||
anchors.margins: 8 |
||||
|
||||
Row { |
||||
width: parent.width |
||||
QGCLabel { id: battFull; text: "Battery Full:" } |
||||
FactLabel { |
||||
fact: Fact { name: "BAT_V_CHARGED" } |
||||
horizontalAlignment: Text.AlignRight; |
||||
width: parent.width - battFull.contentWidth; |
||||
} |
||||
} |
||||
|
||||
Row { |
||||
width: parent.width |
||||
QGCLabel { id: battEmpty; text: "Battery Empty:" } |
||||
FactLabel { |
||||
fact: Fact { name: "BAT_V_EMPTY" } |
||||
horizontalAlignment: Text.AlignRight; |
||||
width: parent.width - battEmpty.contentWidth; |
||||
} |
||||
} |
||||
|
||||
Row { |
||||
width: parent.width |
||||
QGCLabel { id: battCells; text: "Number of Cells:" } |
||||
FactLabel { |
||||
fact: Fact { name: "BAT_N_CELLS" } |
||||
horizontalAlignment: Text.AlignRight; |
||||
width: parent.width - battCells.contentWidth; |
||||
} |
||||
} |
||||
|
||||
Row { |
||||
width: parent.width |
||||
QGCLabel { id: battDrop; text: "Voltage Drop:" } |
||||
FactLabel { |
||||
fact: Fact { name: "BAT_V_LOAD_DROP" } |
||||
horizontalAlignment: Text.AlignRight; |
||||
width: parent.width - battDrop.contentWidth; |
||||
} |
||||
} |
||||
|
||||
} |
@ -1,32 +0,0 @@
@@ -1,32 +0,0 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009, 2015 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 Don Gagne <don@thegagnes.com>
|
||||
|
||||
#include "MousePosition.h" |
||||
|
||||
MousePosition::MousePosition(void) |
||||
{ |
||||
|
||||
} |
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009, 2015 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 Gus Grubba <mavlink@grubba.com>
|
||||
|
||||
#include "ScreenTools.h" |
||||
#include "MainWindow.h" |
||||
|
||||
ScreenTools::ScreenTools() |
||||
: _dotsPerInch(96.0) |
||||
, _dpiFactor( 72.0 / 96.0) |
||||
{ |
||||
// Get screen DPI to manage font sizes on different platforms
|
||||
QScreen *srn = QGuiApplication::screens().at(0); // TODO: Find current monitor as opposed to picking first one
|
||||
if(srn && srn->logicalDotsPerInch() > 50.0) { |
||||
_dotsPerInch = (double)srn->logicalDotsPerInch(); // Font point sizes are based on Mac 72dpi
|
||||
_dpiFactor = 72.0 / _dotsPerInch; |
||||
} else { |
||||
qWarning() << "System not reporting logical DPI, which is used to compute the appropriate font size. The default being used is 96dpi. If the text within buttons and UI elements are too big or too small, that's the reason."; |
||||
} |
||||
connect(MainWindow::instance(), &MainWindow::repaintCanvas, this, &ScreenTools::_updateCanvas); |
||||
} |
||||
|
||||
void ScreenTools::_updateCanvas() |
||||
{ |
||||
emit repaintRequestedChanged(); |
||||
} |
@ -1,50 +1,64 @@
@@ -1,50 +1,64 @@
|
||||
/*=====================================================================
|
||||
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
|
||||
(c) 2009, 2015 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 Don Gagne <don@thegagnes.com>
|
||||
/// @author Gus Grubba <mavlink@grubba.com>
|
||||
|
||||
#ifndef MOUSEPOSITION_H |
||||
#define MOUSEPOSITION_H |
||||
#ifndef SCREENTOOLS_H |
||||
#define SCREENTOOLS_H |
||||
|
||||
#include <QObject> |
||||
#include <QCursor> |
||||
|
||||
/// This Qml control is used to return global mouse positions. It is needed to fix
|
||||
/// a problem with hover state of buttons not being updated correctly if the mouse
|
||||
/// moves out of a QQuickWidget control.
|
||||
class MousePosition : public QObject |
||||
/// This Qml control is used to return screen parameters
|
||||
class ScreenTools : public QObject |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
MousePosition(void); |
||||
|
||||
Q_PROPERTY(int mouseX READ mouseX) |
||||
Q_PROPERTY(int mouseY READ mouseY) |
||||
|
||||
int mouseX(void) { return QCursor::pos().x(); } |
||||
int mouseY(void) { return QCursor::pos().y(); } |
||||
ScreenTools(); |
||||
|
||||
Q_PROPERTY(double screenDPI READ screenDPI CONSTANT) |
||||
Q_PROPERTY(double dpiFactor READ dpiFactor CONSTANT) |
||||
Q_PROPERTY(int mouseX READ mouseX) |
||||
Q_PROPERTY(int mouseY READ mouseY) |
||||
Q_PROPERTY(bool repaintRequested READ repaintRequested NOTIFY repaintRequestedChanged) |
||||
|
||||
double screenDPI () { return _dotsPerInch; } |
||||
double dpiFactor () { return _dpiFactor; } |
||||
int mouseX () { return QCursor::pos().x(); } |
||||
int mouseY () { return QCursor::pos().y(); } |
||||
bool repaintRequested () { return true; } |
||||
|
||||
signals: |
||||
void repaintRequestedChanged(); |
||||
|
||||
private slots: |
||||
void _updateCanvas(); |
||||
|
||||
private: |
||||
double _dotsPerInch; |
||||
double _dpiFactor; |
||||
|
||||
}; |
||||
|
||||
#endif |