1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-17 02:52:12 +01:00

New map user context menu added.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@832 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
pip 2010-06-20 16:27:18 +00:00 committed by pip
parent 9e6087df9b
commit 5d9fef8aaa
3 changed files with 939 additions and 1193 deletions

View File

@ -6,12 +6,12 @@
<rect>
<x>0</x>
<y>0</y>
<width>404</width>
<height>449</height>
<width>606</width>
<height>83</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -33,757 +33,245 @@
<pointsize>7</pointsize>
</font>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="windowTitle">
<string>OPMap Control Panel</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(64, 64, 64, 255), stop:1 rgba(78, 78, 78, 255));
</string>
</property>
<widget class="QWidget" name="layoutWidget">
<widget class="QWidget" name="horizontalLayoutWidget_2">
<property name="geometry">
<rect>
<x>0</x>
<x>29</x>
<y>10</y>
<width>386</width>
<height>381</height>
<width>561</width>
<height>25</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>5</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<layout class="QHBoxLayout" name="layoutWidget">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="QLabel" name="labelStatus">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
<kerning>true</kerning>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(110, 110, 110, 255), stop:1 rgba(80, 80, 80, 255));
color: rgb(85, 255, 127);</string>
</property>
<property name="text">
<string>labelStatus</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>15</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="leftMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255, 200);</string>
</property>
<property name="text">
<string>Find Place </string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 64);
color: rgb(255, 255, 255);</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGO">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/find.png</normaloff>:/core/images/find.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>7</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);
</string>
</property>
<property name="text">
<string>GeoCoderStatusCode</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255, 200);</string>
</property>
<property name="text">
<string>Home Geo Fence Distance</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBoxGeoFenceDistance">
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>2000</number>
</property>
<property name="singleStep">
<number>50</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Meters</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGeoFenceM">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/minus.png</normaloff>:/core/images/minus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGeoFenceP">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
border-color: rgba(0, 0, 0, 0);
}
QPushButton:hover {
background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.1, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:0.479904 rgba(255, 0, 0, 255), stop:0.522685 rgba(255, 255, 255, 255), stop:1 rgba(255, 255, 255, 0));
}
</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/plus.png</normaloff>:/core/images/plus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>false</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255, 200);</string>
</property>
<property name="text">
<string>Rotate</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelRotate">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Rotate</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonRL">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="toolTip">
<string>Rotate Anticlockwise</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/undo.png</normaloff>:/core/images/undo.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonRC">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="toolTip">
<string>Reset Rotation</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/clear.png</normaloff>:/core/images/clear.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonRR">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="toolTip">
<string>Rotate Clockwise</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/redo.png</normaloff>:/core/images/redo.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
<property name="autoRepeatInterval">
<number>100</number>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255, 200);</string>
</property>
<property name="text">
<string>Zoom</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelZoom">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Zoom</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonZoomM">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/minus.png</normaloff>:/core/images/minus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonZoomP">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/plus.png</normaloff>:/core/images/plus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="leftMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Grid Lines</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_2">
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>OpenGL</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>15</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_2">
<widget class="QPushButton" name="pushButtonReload">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="mouseTracking">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
</string>
</property>
<property name="text">
<string>Reload</string>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonZoomM">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/minus.png</normaloff>:/core/images/minus.png</iconset>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonZoomP">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/plus.png</normaloff>:/core/images/plus.png</iconset>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelZoom">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Zoom</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonRL">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/undo.png</normaloff>:/core/images/undo.png</iconset>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonRC">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/clear.png</normaloff>:/core/images/clear.png</iconset>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonRR">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/redo.png</normaloff>:/core/images/redo.png</iconset>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelRotate">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Rotate</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonFindPlace">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/find.png</normaloff>:/core/images/find.png</iconset>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="labelStatus">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
<kerning>true</kerning>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(110, 110, 110, 255), stop:1 rgba(80, 80, 80, 255));
color: rgb(85, 255, 127);</string>
</property>
<property name="text">
<string>Way Points</string>
<string>labelStatus</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@ -791,269 +279,30 @@ color: rgb(85, 255, 127);</string>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="leftMargin">
<number>5</number>
<widget class="QProgressBar" name="progressBarMap">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="rightMargin">
<number>5</number>
<property name="minimumSize">
<size>
<width>100</width>
<height>14</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>10</height>
</size>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButtonDeleteWayPoint">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="toolTip">
<string>Delete a Way Point</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/minus.png</normaloff>:/core/images/minus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonAddWayPoint">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="toolTip">
<string>Add a new Way Point</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/plus.png</normaloff>:/core/images/plus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTableWidget" name="tableWidgetWayPoints">
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(0, 0, 0);
</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="showGrid">
<bool>false</bool>
</property>
<property name="gridStyle">
<enum>Qt::DotLine</enum>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="cornerButtonEnabled">
<bool>false</bool>
</property>
<property name="rowCount">
<number>0</number>
</property>
<property name="columnCount">
<number>4</number>
</property>
<attribute name="horizontalHeaderVisible">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderVisible">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Num</string>
</property>
<property name="textAlignment">
<set>AlignLeft|AlignVCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Latitude</string>
</property>
</column>
<column>
<property name="text">
<string>Longitude</string>
</property>
</column>
<column>
<property name="text">
<string>Height</string>
</property>
</column>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>15</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_18">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item>
<widget class="QLabel" name="labelNumTilesToLoad">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Tiles</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBarMap">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>10</height>
</size>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">QProgressBar {
<string notr="true">QProgressBar {
/*border: 1px solid black;*/
border: none;
padding: 1px;
@ -1067,80 +316,211 @@ QProgressBar::chunk {
background-color: rgb(85, 85, 255);
border: none;
}</string>
</property>
<property name="value">
<number>50</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="textVisible">
<bool>true</bool>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="format">
<string>%v</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButtonReload">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="mouseTracking">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
</property>
<property name="value">
<number>50</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="textVisible">
<bool>true</bool>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="format">
<string>%v</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>20</x>
<y>40</y>
<width>579</width>
<height>25</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255, 200);</string>
</property>
<property name="text">
<string>Home Geo Fence Distance</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBoxGeoFenceDistance">
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Reload</string>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>2000</number>
</property>
<property name="singleStep">
<number>50</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255, 0);
color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>Meters</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGeoFenceM">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/minus.png</normaloff>:/core/images/minus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGeoFenceP">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="cursor">
<cursorShape>OpenHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
border-color: rgba(0, 0, 0, 0);
}
QPushButton:hover {
background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.1, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:0.479904 rgba(255, 0, 0, 255), stop:0.522685 rgba(255, 255, 255, 255), stop:1 rgba(255, 255, 255, 0));
}
</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/plus.png</normaloff>:/core/images/plus.png</iconset>
</property>
<property name="iconSize">
<size>
<width>12</width>
<height>12</height>
</size>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>false</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>

View File

@ -41,9 +41,7 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
// **************
controlpanel_ui = NULL;
map = NULL;
m_follow_uav = false;
m_map = NULL;
setMouseTracking(true);
@ -57,8 +55,8 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
// **************
// create the user control panel
controlpanel_ui = new Ui::OPMapControlPanel();
controlpanel_ui->setupUi(this);
// controlpanel_ui = new Ui::OPMapControlPanel();
// controlpanel_ui->setupUi(this);
@ -82,52 +80,58 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
// **************
// create the map display
map = new mapcontrol::OPMapWidget();
map->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
map->setMinimumSize(64, 64);
m_map = new mapcontrol::OPMapWidget();
m_map->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
m_map->setMinimumSize(64, 64);
// **************
// set the user control options
controlpanel_ui->labelZoom->setText(" " + QString::number(map->Zoom()));
controlpanel_ui->labelRotate->setText(" " + QString::number(map->Rotate()));
if (controlpanel_ui)
{
controlpanel_ui->labelZoom->setText(" " + QString::number(m_map->Zoom()));
controlpanel_ui->labelRotate->setText(" " + QString::number(m_map->Rotate()));
// controlpanel_ui->labelNumTilesToLoad->setText(" 0");
controlpanel_ui->labelNumTilesToLoad->setText("");
controlpanel_ui->labelStatus->setText("");
controlpanel_ui->progressBarMap->setMaximum(1);
controlpanel_ui->labelStatus->setText("");
controlpanel_ui->progressBarMap->setMaximum(1);
}
// **************
createActions();
// **************
// map stuff
// get current UAV data
PositionActual::DataFields data = m_positionActual->getData();
connect(map, SIGNAL(zoomChanged(double)), this, SLOT(zoomChanged(double))); // map zoom change signals
connect(map, SIGNAL(OnCurrentPositionChanged(internals::PointLatLng)), this, SLOT(OnCurrentPositionChanged(internals::PointLatLng))); // map poisition change signals
connect(map, SIGNAL(OnTileLoadComplete()), this, SLOT(OnTileLoadComplete())); // tile loading stop signals
connect(map, SIGNAL(OnTileLoadStart()), this, SLOT(OnTileLoadStart())); // tile loading start signals
connect(map, SIGNAL(OnMapDrag()), this, SLOT(OnMapDrag())); // map drag signals
connect(map, SIGNAL(OnMapZoomChanged()), this, SLOT(OnMapZoomChanged())); // map zoom changed
connect(map, SIGNAL(OnMapTypeChanged(MapType::Types)), this, SLOT(OnMapTypeChanged(MapType::Types))); // map type changed
connect(map, SIGNAL(OnEmptyTileError(int, core::Point)), this, SLOT(OnEmptyTileError(int, core::Point))); // tile error
connect(map, SIGNAL(OnTilesStillToLoad(int)), this, SLOT(OnTilesStillToLoad(int))); // tile loading signals
connect(m_map, SIGNAL(zoomChanged(double)), this, SLOT(zoomChanged(double))); // map zoom change signals
connect(m_map, SIGNAL(OnCurrentPositionChanged(internals::PointLatLng)), this, SLOT(OnCurrentPositionChanged(internals::PointLatLng))); // map poisition change signals
connect(m_map, SIGNAL(OnTileLoadComplete()), this, SLOT(OnTileLoadComplete())); // tile loading stop signals
connect(m_map, SIGNAL(OnTileLoadStart()), this, SLOT(OnTileLoadStart())); // tile loading start signals
connect(m_map, SIGNAL(OnMapDrag()), this, SLOT(OnMapDrag())); // map drag signals
connect(m_map, SIGNAL(OnMapZoomChanged()), this, SLOT(OnMapZoomChanged())); // map zoom changed
connect(m_map, SIGNAL(OnMapTypeChanged(MapType::Types)), this, SLOT(OnMapTypeChanged(MapType::Types))); // map type changed
connect(m_map, SIGNAL(OnEmptyTileError(int, core::Point)), this, SLOT(OnEmptyTileError(int, core::Point))); // tile error
connect(m_map, SIGNAL(OnTilesStillToLoad(int)), this, SLOT(OnTilesStillToLoad(int))); // tile loading signals
map->SetMaxZoom(20); // increase the maximum zoom level
map->SetMouseWheelZoomType(internals::MouseWheelZoomType::MousePositionWithoutCenter); // set how the mouse wheel zoom functions
map->SetFollowMouse(true); // we want a contiuous mouse position reading
map->SetUseOpenGL(controlpanel_ui->checkBox_2->isChecked()); // enable/disable openGL
map->SetShowTileGridLines(controlpanel_ui->checkBox->isChecked()); // map grid lines on/off
map->SetCurrentPosition(internals::PointLatLng(data.Latitude, data.Longitude)); // set the default map position
m_map->SetMaxZoom(20); // increase the maximum zoom level
m_map->SetMouseWheelZoomType(internals::MouseWheelZoomType::MousePositionWithoutCenter); // set how the mouse wheel zoom functions
m_map->SetFollowMouse(true); // we want a contiuous mouse position reading
m_map->SetUseOpenGL(openGLAct->isChecked()); // enable/disable openGL
m_map->SetShowTileGridLines(gridLinesAct->isChecked()); // map grid lines on/off
m_map->SetCurrentPosition(internals::PointLatLng(data.Latitude, data.Longitude)); // set the default map position
// **************
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
QHBoxLayout *layout = new QHBoxLayout;
QVBoxLayout *layout = new QVBoxLayout;
layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(controlpanel_ui->layoutWidget);
// layout->addWidget(dialog);
layout->addWidget(map);
//if (controlpanel_ui) layout->addWidget(controlpanel_ui->layoutWidget);
layout->addWidget(m_map);
setLayout(layout);
// **************
@ -156,7 +160,7 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
OPMapGadgetWidget::~OPMapGadgetWidget()
{
if (map) delete map;
if (m_map) delete m_map;
if (controlpanel_ui) delete controlpanel_ui;
}
@ -172,9 +176,9 @@ void OPMapGadgetWidget::resizeEvent(QResizeEvent *event)
void OPMapGadgetWidget::mouseMoveEvent(QMouseEvent *event)
{
if (map)
if (m_map)
{
// mouse_lat_lon = map->currentMousePosition(); // fetch the current mouse lat/longitude position
// mouse_lat_lon = m_map->currentMousePosition(); // fetch the current mouse lat/longitude position
// if (mouse_lat_lon != lat_lon)
// { // the mouse has moved
// mouse_lat_lon = lat_lon;
@ -192,6 +196,71 @@ void OPMapGadgetWidget::mouseMoveEvent(QMouseEvent *event)
}
}
void OPMapGadgetWidget::contextMenuEvent(QContextMenuEvent *event)
{
// ****************
QMenu zoomMenu(tr("&Zoom ") + "(" + QString::number(m_map->Zoom()) + ")", this);
zoomMenu.addAction(zoom2Act);
zoomMenu.addAction(zoom3Act);
zoomMenu.addAction(zoom4Act);
zoomMenu.addAction(zoom5Act);
zoomMenu.addAction(zoom6Act);
zoomMenu.addAction(zoom7Act);
zoomMenu.addAction(zoom8Act);
zoomMenu.addAction(zoom9Act);
zoomMenu.addAction(zoom10Act);
zoomMenu.addAction(zoom11Act);
zoomMenu.addAction(zoom12Act);
zoomMenu.addAction(zoom13Act);
zoomMenu.addAction(zoom14Act);
zoomMenu.addAction(zoom15Act);
zoomMenu.addAction(zoom16Act);
zoomMenu.addAction(zoom17Act);
// ****************
QMenu menu(this);
menu.addAction(closeAct);
menu.addSeparator();
menu.addAction(reloadAct);
menu.addSeparator();
menu.addAction(findPlaceAct);
menu.addSeparator()->setText(tr("Zoom"));
menu.addAction(zoomInAct);
menu.addAction(zoomOutAct);
menu.addMenu(&zoomMenu);
menu.addSeparator()->setText(tr("Position"));
menu.addAction(goHomeAct);
menu.addAction(goUAVAct);
menu.addAction(followUAVAct);
menu.addSeparator()->setText(tr("Waypoints"));
menu.addAction(wayPointEditorAct);
menu.addAction(addWayPointAct);
menu.addAction(deleteWayPointAct);
menu.addAction(clearWayPointsAct);
menu.addSeparator();
menu.addAction(gridLinesAct);
menu.addAction(openGLAct);
menu.exec(event->globalPos());
// ****************
}
void OPMapGadgetWidget::keyPressEvent(QKeyEvent* event)
{
if (event->key() == Qt::Key_Escape) // ESC
@ -240,19 +309,22 @@ void OPMapGadgetWidget::keyPressEvent(QKeyEvent* event)
void OPMapGadgetWidget::updatePosition()
{
PositionActual::DataFields data = m_positionActual->getData(); // get current UAV data
PositionActual::DataFields data = m_positionActual->getData(); // get current UAV data
if (map && m_follow_uav)
if (m_map && followUAVAct)
{
internals::PointLatLng uav_pos = internals::PointLatLng(data.Latitude, data.Longitude); // current UAV position
internals::PointLatLng map_pos = map->CurrentPosition(); // current MAP position
if (map_pos != uav_pos) map->SetCurrentPosition(uav_pos); // center the map onto the UAV
if (followUAVAct->isChecked())
{
internals::PointLatLng uav_pos = internals::PointLatLng(data.Latitude, data.Longitude); // current UAV position
internals::PointLatLng map_pos = m_map->CurrentPosition(); // current MAP position
if (map_pos != uav_pos) m_map->SetCurrentPosition(uav_pos); // center the map onto the UAV
}
}
}
void OPMapGadgetWidget::statusUpdate()
{
internals::PointLatLng lat_lon = map->currentMousePosition(); // fetch the current lat/lon mouse position
internals::PointLatLng lat_lon = m_map->currentMousePosition(); // fetch the current lat/lon mouse position
if (mouse_lat_lon != lat_lon)
{ // the mouse has moved
@ -261,7 +333,7 @@ void OPMapGadgetWidget::statusUpdate()
QString coord_str = " " + QString::number(mouse_lat_lon.Lat(), 'f', 6) + " " + QString::number(mouse_lat_lon.Lng(), 'f', 6);
statusLabel.setText(coord_str);
controlpanel_ui->labelStatus->setText(coord_str);
if (controlpanel_ui) controlpanel_ui->labelStatus->setText(coord_str);
}
}
@ -270,11 +342,38 @@ void OPMapGadgetWidget::statusUpdate()
void OPMapGadgetWidget::zoomChanged(double zoom)
{
controlpanel_ui->labelZoom->setText(" " + QString::number(zoom));
int i_zoom = (int)(zoom + 0.5);
if (controlpanel_ui)
controlpanel_ui->labelZoom->setText(" " + QString::number(zoom));
switch (i_zoom)
{
case 2: if (zoom2Act) zoom2Act->setChecked(true); break;
case 3: if (zoom3Act) zoom3Act->setChecked(true); break;
case 4: if (zoom4Act) zoom4Act->setChecked(true); break;
case 5: if (zoom4Act) zoom5Act->setChecked(true); break;
case 6: if (zoom4Act) zoom6Act->setChecked(true); break;
case 7: if (zoom4Act) zoom7Act->setChecked(true); break;
case 8: if (zoom4Act) zoom8Act->setChecked(true); break;
case 9: if (zoom4Act) zoom9Act->setChecked(true); break;
case 10: if (zoom4Act) zoom10Act->setChecked(true); break;
case 11: if (zoom4Act) zoom11Act->setChecked(true); break;
case 12: if (zoom4Act) zoom12Act->setChecked(true); break;
case 13: if (zoom4Act) zoom13Act->setChecked(true); break;
case 14: if (zoom4Act) zoom14Act->setChecked(true); break;
case 15: if (zoom4Act) zoom15Act->setChecked(true); break;
case 16: if (zoom4Act) zoom16Act->setChecked(true); break;
case 17: if (zoom4Act) zoom17Act->setChecked(true); break;
default:
break;
}
}
void OPMapGadgetWidget::OnMapDrag()
{
if (followUAVAct->isChecked())
followUAVAct->setChecked(false); // disable follow UAV mode
}
void OPMapGadgetWidget::OnCurrentPositionChanged(internals::PointLatLng point)
@ -283,21 +382,24 @@ void OPMapGadgetWidget::OnCurrentPositionChanged(internals::PointLatLng point)
void OPMapGadgetWidget::OnTilesStillToLoad(int number)
{
if (controlpanel_ui->progressBarMap->maximum() < number)
controlpanel_ui->progressBarMap->setMaximum(number); // update the maximum number of tiles used
controlpanel_ui->progressBarMap->setValue(controlpanel_ui->progressBarMap->maximum() - number); // update the progress bar
if (controlpanel_ui)
{
if (controlpanel_ui->progressBarMap->maximum() < number)
controlpanel_ui->progressBarMap->setMaximum(number); // update the maximum number of tiles used
controlpanel_ui->progressBarMap->setValue(controlpanel_ui->progressBarMap->maximum() - number); // update the progress bar
// controlpanel_ui->labelNumTilesToLoad->setText(" " + QString::number(number));
// controlpanel_ui->labelNumTilesToLoad->setText(" " + QString::number(number));
}
}
void OPMapGadgetWidget::OnTileLoadStart()
{
controlpanel_ui->progressBarMap->setVisible(true);
if (controlpanel_ui) controlpanel_ui->progressBarMap->setVisible(true);
}
void OPMapGadgetWidget::OnTileLoadComplete()
{
controlpanel_ui->progressBarMap->setVisible(false);
if (controlpanel_ui) controlpanel_ui->progressBarMap->setVisible(false);
}
void OPMapGadgetWidget::OnMapZoomChanged()
@ -315,77 +417,53 @@ void OPMapGadgetWidget::OnEmptyTileError(int zoom, core::Point pos)
// *************************************************************************************
// user control panel signals
void OPMapGadgetWidget::on_checkBox_clicked(bool checked)
void OPMapGadgetWidget::on_toolButtonRL_clicked()
{
if (map)
map->SetShowTileGridLines(checked);
}
void OPMapGadgetWidget::on_checkBox_2_clicked(bool checked)
{
if (map)
map->SetUseOpenGL(checked);
}
void OPMapGadgetWidget::on_pushButtonGO_clicked()
{
if (map)
if (m_map)
{
core::GeoCoderStatusCode::Types x = map->SetCurrentPositionByKeywords(controlpanel_ui->lineEdit->text());
controlpanel_ui->label->setText(mapcontrol::Helper::StrFromGeoCoderStatusCode(x));
m_map->SetRotate(m_map->Rotate() - 1);
if (controlpanel_ui) controlpanel_ui->labelRotate->setText(" " + QString::number(m_map->Rotate()));
}
}
void OPMapGadgetWidget::on_pushButtonReload_clicked()
void OPMapGadgetWidget::on_toolButtonRC_clicked()
{
if (map)
map->ReloadMap();
}
void OPMapGadgetWidget::on_pushButtonRL_clicked()
{
if (map)
if (m_map)
{
map->SetRotate(map->Rotate() - 1);
controlpanel_ui->labelRotate->setText(" " + QString::number(map->Rotate()));
m_map->SetRotate(0);
if (controlpanel_ui) controlpanel_ui->labelRotate->setText(" " + QString::number(m_map->Rotate()));
}
}
void OPMapGadgetWidget::on_pushButtonRC_clicked()
void OPMapGadgetWidget::on_toolButtonRR_clicked()
{
if (map)
if (m_map)
{
map->SetRotate(0);
controlpanel_ui->labelRotate->setText(" " + QString::number(map->Rotate()));
m_map->SetRotate(m_map->Rotate() + 1);
if (controlpanel_ui) controlpanel_ui->labelRotate->setText(" " + QString::number(m_map->Rotate()));
}
}
void OPMapGadgetWidget::on_pushButtonRR_clicked()
{
if (map)
{
map->SetRotate(map->Rotate() + 1);
controlpanel_ui->labelRotate->setText(" " + QString::number(map->Rotate()));
}
}
void OPMapGadgetWidget::on_pushButtonZoomP_clicked()
void OPMapGadgetWidget::on_toolButtonZoomP_clicked()
{
zoomIn();
}
void OPMapGadgetWidget::on_pushButtonZoomM_clicked()
void OPMapGadgetWidget::on_toolButtonZoomM_clicked()
{
zoomOut();
}
void OPMapGadgetWidget::on_pushButtonGeoFenceM_clicked()
{
int geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
int step = controlpanel_ui->spinBoxGeoFenceDistance->singleStep();
controlpanel_ui->spinBoxGeoFenceDistance->setValue(geo_fence_distance - step);
if (controlpanel_ui)
{
int geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
int step = controlpanel_ui->spinBoxGeoFenceDistance->singleStep();
controlpanel_ui->spinBoxGeoFenceDistance->setValue(geo_fence_distance - step);
geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
}
// to do
@ -396,12 +474,14 @@ void OPMapGadgetWidget::on_pushButtonGeoFenceM_clicked()
void OPMapGadgetWidget::on_pushButtonGeoFenceP_clicked()
{
int geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
int step = controlpanel_ui->spinBoxGeoFenceDistance->singleStep();
controlpanel_ui->spinBoxGeoFenceDistance->setValue(geo_fence_distance + step);
geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
if (controlpanel_ui)
{
int geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
int step = controlpanel_ui->spinBoxGeoFenceDistance->singleStep();
controlpanel_ui->spinBoxGeoFenceDistance->setValue(geo_fence_distance + step);
geo_fence_distance = controlpanel_ui->spinBoxGeoFenceDistance->value();
}
// to do
@ -414,39 +494,39 @@ void OPMapGadgetWidget::on_pushButtonGeoFenceP_clicked()
void OPMapGadgetWidget::zoomIn()
{
if (map)
map->SetZoom(map->Zoom() + 1);
if (m_map)
m_map->SetZoom(m_map->Zoom() + 1);
}
void OPMapGadgetWidget::zoomOut()
{
if (map)
map->SetZoom(map->Zoom() - 1);
if (m_map)
m_map->SetZoom(m_map->Zoom() - 1);
}
void OPMapGadgetWidget::setZoom(int value)
{
if (map)
map->SetZoom(value);
if (m_map)
m_map->SetZoom(value);
}
void OPMapGadgetWidget::setPosition(QPointF pos)
{
if (map)
map->SetCurrentPosition(internals::PointLatLng(pos.y(), pos.x()));
if (m_map)
m_map->SetCurrentPosition(internals::PointLatLng(pos.y(), pos.x()));
}
void OPMapGadgetWidget::setMapProvider(QString provider)
{
if (map)
if (map->isStarted())
map->SetMapType(mapcontrol::Helper::MapTypeFromString(provider));
if (m_map)
if (m_map->isStarted())
m_map->SetMapType(mapcontrol::Helper::MapTypeFromString(provider));
}
void OPMapGadgetWidget::setUseMemoryCache(bool useMemoryCache)
{
if (map)
map->configuration->SetUseMemoryCache(useMemoryCache);
if (m_map)
m_map->configuration->SetUseMemoryCache(useMemoryCache);
}
void OPMapGadgetWidget::setCacheLocation(QString cacheLocation)
@ -470,8 +550,8 @@ void OPMapGadgetWidget::setCacheLocation(QString cacheLocation)
qDebug() << "map cache dir: " << cacheLocation;
if (map)
map->configuration->SetCacheLocation(cacheLocation);
if (m_map)
m_map->configuration->SetCacheLocation(cacheLocation);
}
// *************************************************************************************
@ -551,7 +631,234 @@ void OPMapGadgetWidget::createMapOverlayUserControls()
// overlay_layout_v1->addLayout(overlay_layout_h2);
overlay_layout_v1->addSpacing(10);
map->setLayout(overlay_layout_v1);
m_map->setLayout(overlay_layout_v1);
}
// *************************************************************************************
// Context menu stuff
void OPMapGadgetWidget::createActions()
{
// ***********************
// create the menu actions
closeAct = new QAction(tr("&Close menu"), this);
// closeAct->setShortcuts(QKeySequence::New);
closeAct->setStatusTip(tr("Close the context menu"));
reloadAct = new QAction(tr("&Reload map"), this);
reloadAct->setShortcut(tr("F5"));
reloadAct->setStatusTip(tr("Reload the map tiles"));
connect(reloadAct, SIGNAL(triggered()), this, SLOT(reload()));
findPlaceAct = new QAction(tr("&Find place"), this);
findPlaceAct->setShortcut(tr("Ctrl+F"));
findPlaceAct->setStatusTip(tr("Find a location"));
connect(findPlaceAct, SIGNAL(triggered()), this, SLOT(findPlace()));
zoomInAct = new QAction(tr("Zoom &In"), this);
zoomInAct->setShortcut(tr("PageDown"));
zoomInAct->setStatusTip(tr("Zoom the map in"));
connect(zoomInAct, SIGNAL(triggered()), this, SLOT(zoomIn()));
zoomOutAct = new QAction(tr("Zoom &Out"), this);
zoomOutAct->setShortcut(tr("PageUp"));
zoomOutAct->setStatusTip(tr("Zoom the map out"));
connect(zoomOutAct, SIGNAL(triggered()), this, SLOT(zoomOut()));
goHomeAct = new QAction(tr("Go too &Home location"), this);
goHomeAct->setShortcut(tr("Ctrl+H"));
goHomeAct->setStatusTip(tr("Center the map onto the home location"));
connect(goHomeAct, SIGNAL(triggered()), this, SLOT(goHome()));
goUAVAct = new QAction(tr("Go too &UAV location"), this);
goUAVAct->setShortcut(tr("Ctrl+U"));
goUAVAct->setStatusTip(tr("Center the map onto the UAV location"));
connect(goUAVAct, SIGNAL(triggered()), this, SLOT(goUAV()));
followUAVAct = new QAction(tr("Follow UAV"), this);
followUAVAct->setShortcut(tr("Ctrl+F"));
followUAVAct->setStatusTip(tr("Keep the map centered onto the UAV"));
followUAVAct->setCheckable(true);
followUAVAct->setChecked(false);
connect(followUAVAct, SIGNAL(triggered()), this, SLOT(followUAV()));
wayPointEditorAct = new QAction(tr("&Way point editor"), this);
wayPointEditorAct->setShortcut(tr("Ctrl+W"));
wayPointEditorAct->setStatusTip(tr("Open the way-point editor"));
connect(wayPointEditorAct, SIGNAL(triggered()), this, SLOT(openWayPointEditor()));
addWayPointAct = new QAction(tr("&Add waypoint"), this);
addWayPointAct->setShortcut(tr("Ctrl+A"));
addWayPointAct->setStatusTip(tr("Add waypoint"));
connect(addWayPointAct, SIGNAL(triggered()), this, SLOT(addWayPoint()));
deleteWayPointAct = new QAction(tr("&Delete waypoint"), this);
deleteWayPointAct->setShortcut(tr("Ctrl+D"));
deleteWayPointAct->setStatusTip(tr("Delete waypoint"));
connect(deleteWayPointAct, SIGNAL(triggered()), this, SLOT(deleteWayPoint()));
clearWayPointsAct = new QAction(tr("&Clear waypoints"), this);
clearWayPointsAct->setShortcut(tr("Ctrl+C"));
clearWayPointsAct->setStatusTip(tr("Clear waypoints"));
connect(clearWayPointsAct, SIGNAL(triggered()), this, SLOT(clearWayPoints()));
gridLinesAct = new QAction(tr("Grid lines"), this);
gridLinesAct->setShortcut(tr("Ctrl+G"));
gridLinesAct->setStatusTip(tr("Show/Hide grid lines"));
gridLinesAct->setCheckable(true);
gridLinesAct->setChecked(false);
connect(gridLinesAct, SIGNAL(triggered()), this, SLOT(gridLines()));
openGLAct = new QAction(tr("Use OpenGL"), this);
openGLAct->setShortcut(tr("Ctrl+O"));
openGLAct->setStatusTip(tr("Enable/Disable OpenGL"));
openGLAct->setCheckable(true);
openGLAct->setChecked(false);
connect(openGLAct, SIGNAL(triggered()), this, SLOT(openGL()));
zoom2Act = new QAction(tr("2"), this);
zoom2Act->setCheckable(true);
connect(zoom2Act, SIGNAL(triggered()), this, SLOT(zoom2()));
zoom3Act = new QAction(tr("3"), this);
zoom3Act->setCheckable(true);
connect(zoom3Act, SIGNAL(triggered()), this, SLOT(zoom3()));
zoom4Act = new QAction(tr("4"), this);
zoom4Act->setCheckable(true);
connect(zoom4Act, SIGNAL(triggered()), this, SLOT(zoom4()));
zoom5Act = new QAction(tr("5"), this);
zoom5Act->setCheckable(true);
connect(zoom5Act, SIGNAL(triggered()), this, SLOT(zoom5()));
zoom6Act = new QAction(tr("6"), this);
zoom6Act->setCheckable(true);
connect(zoom6Act, SIGNAL(triggered()), this, SLOT(zoom6()));
zoom7Act = new QAction(tr("7"), this);
zoom7Act->setCheckable(true);
connect(zoom7Act, SIGNAL(triggered()), this, SLOT(zoom7()));
zoom8Act = new QAction(tr("8"), this);
zoom8Act->setCheckable(true);
connect(zoom8Act, SIGNAL(triggered()), this, SLOT(zoom8()));
zoom9Act = new QAction(tr("9"), this);
zoom9Act->setCheckable(true);
connect(zoom9Act, SIGNAL(triggered()), this, SLOT(zoom9()));
zoom10Act = new QAction(tr("10"), this);
zoom10Act->setCheckable(true);
connect(zoom10Act, SIGNAL(triggered()), this, SLOT(zoom10()));
zoom11Act = new QAction(tr("11"), this);
zoom11Act->setCheckable(true);
connect(zoom11Act, SIGNAL(triggered()), this, SLOT(zoom11()));
zoom12Act = new QAction(tr("12"), this);
zoom12Act->setCheckable(true);
connect(zoom12Act, SIGNAL(triggered()), this, SLOT(zoom12()));
zoom13Act = new QAction(tr("13"), this);
zoom13Act->setCheckable(true);
connect(zoom13Act, SIGNAL(triggered()), this, SLOT(zoom13()));
zoom14Act = new QAction(tr("14"), this);
zoom14Act->setCheckable(true);
connect(zoom14Act, SIGNAL(triggered()), this, SLOT(zoom14()));
zoom15Act = new QAction(tr("15"), this);
zoom15Act->setCheckable(true);
connect(zoom15Act, SIGNAL(triggered()), this, SLOT(zoom15()));
zoom16Act = new QAction(tr("16"), this);
zoom16Act->setCheckable(true);
connect(zoom16Act, SIGNAL(triggered()), this, SLOT(zoom16()));
zoom17Act = new QAction(tr("17"), this);
zoom17Act->setCheckable(true);
connect(zoom17Act, SIGNAL(triggered()), this, SLOT(zoom17()));
zoomActGroup = new QActionGroup(this);
zoomActGroup->addAction(zoom2Act);
zoomActGroup->addAction(zoom3Act);
zoomActGroup->addAction(zoom4Act);
zoomActGroup->addAction(zoom5Act);
zoomActGroup->addAction(zoom6Act);
zoomActGroup->addAction(zoom7Act);
zoomActGroup->addAction(zoom8Act);
zoomActGroup->addAction(zoom9Act);
zoomActGroup->addAction(zoom10Act);
zoomActGroup->addAction(zoom11Act);
zoomActGroup->addAction(zoom12Act);
zoomActGroup->addAction(zoom13Act);
zoomActGroup->addAction(zoom14Act);
zoomActGroup->addAction(zoom15Act);
zoomActGroup->addAction(zoom16Act);
zoomActGroup->addAction(zoom17Act);
// ***********************
}
void OPMapGadgetWidget::reload()
{
if (m_map)
m_map->ReloadMap();
}
void OPMapGadgetWidget::findPlace()
{
bool ok;
QString text = QInputDialog::getText(this, tr("GCS"), tr("Find place"), QLineEdit::Normal, QString::null, &ok);
if (ok && !text.isEmpty())
{
if (m_map)
{
core::GeoCoderStatusCode::Types x = m_map->SetCurrentPositionByKeywords(text);
QString returned_text = mapcontrol::Helper::StrFromGeoCoderStatusCode(x);
int ret = QMessageBox::information(this, tr("GCS"), returned_text, QMessageBox::Ok);
}
}
}
void OPMapGadgetWidget::goHome()
{
followUAVAct->setChecked(false);
}
void OPMapGadgetWidget::goUAV()
{
PositionActual::DataFields data = m_positionActual->getData(); // get current UAV data
if (m_map)
{
internals::PointLatLng uav_pos = internals::PointLatLng(data.Latitude, data.Longitude); // current UAV position
internals::PointLatLng map_pos = m_map->CurrentPosition(); // current MAP position
if (map_pos != uav_pos) m_map->SetCurrentPosition(uav_pos); // center the map onto the UAV
}
}
void OPMapGadgetWidget::followUAV()
{
}
void OPMapGadgetWidget::openWayPointEditor()
{
// to do
}
void OPMapGadgetWidget::addWayPoint()
{
// to do
}
void OPMapGadgetWidget::deleteWayPoint()
{
// to do
}
void OPMapGadgetWidget::clearWayPoints()
{
// to do
}
void OPMapGadgetWidget::gridLines()
{
if (m_map)
m_map->SetShowTileGridLines(gridLinesAct->isChecked());
}
void OPMapGadgetWidget::openGL()
{
if (m_map)
m_map->SetUseOpenGL(openGLAct->isChecked());
}
// *************************************************************************************

View File

@ -30,6 +30,7 @@
#include "opmapcontrol/opmapcontrol.h"
#include <QtGui/QWidget>
#include <QtGui/QMenu>
#include "uavobjects/uavobjectmanager.h"
#include "uavobjects/positionactual.h"
@ -56,6 +57,7 @@ public slots:
protected:
void resizeEvent(QResizeEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
void keyPressEvent(QKeyEvent* event);
private slots:
@ -66,18 +68,14 @@ private slots:
void zoomIn();
void zoomOut();
// control panel slots
void on_checkBox_clicked(bool checked);
void on_pushButtonGO_clicked();
void on_pushButtonReload_clicked();
void on_pushButtonRR_clicked();
void on_pushButtonRC_clicked();
void on_pushButtonRL_clicked();
void on_pushButtonZoomM_clicked();
void on_pushButtonZoomP_clicked();
// control panel signals
void on_toolButtonRR_clicked();
void on_toolButtonRC_clicked();
void on_toolButtonRL_clicked();
void on_toolButtonZoomM_clicked();
void on_toolButtonZoomP_clicked();
void on_pushButtonGeoFenceM_clicked();
void on_pushButtonGeoFenceP_clicked();
void on_checkBox_2_clicked(bool checked);
// map signals
void zoomChanged(double zoom);
@ -90,9 +88,36 @@ private slots:
void OnEmptyTileError(int zoom, core::Point pos);
void OnTilesStillToLoad(int number);
private:
bool m_follow_uav; // true if the map is to stay centered on the UAV
// context menu signals
void reload();
void findPlace();
void goHome();
void goUAV();
void followUAV();
void openWayPointEditor();
void addWayPoint();
void deleteWayPoint();
void clearWayPoints();
void gridLines();
void openGL();
void zoom2() { setZoom(2); }
void zoom3() { setZoom(3); }
void zoom4() { setZoom(4); }
void zoom5() { setZoom(5); }
void zoom6() { setZoom(6); }
void zoom7() { setZoom(7); }
void zoom8() { setZoom(8); }
void zoom9() { setZoom(9); }
void zoom10() { setZoom(10); }
void zoom11() { setZoom(11); }
void zoom12() { setZoom(12); }
void zoom13() { setZoom(13); }
void zoom14() { setZoom(14); }
void zoom15() { setZoom(15); }
void zoom16() { setZoom(16); }
void zoom17() { setZoom(17); }
private:
double m_heading; // uav heading
internals::PointLatLng mouse_lat_lon;
@ -106,11 +131,45 @@ private:
Ui::OPMapControlPanel *controlpanel_ui;
mapcontrol::OPMapWidget *map;
mapcontrol::OPMapWidget *m_map;
QPushButton * createTransparentButton(QWidget *parent, QString text, QString icon);
void createMapOverlayUserControls();
void createActions();
QAction *closeAct;
QAction *reloadAct;
QAction *findPlaceAct;
QAction *zoomInAct;
QAction *zoomOutAct;
QAction *goHomeAct;
QAction *goUAVAct;
QAction *followUAVAct;
QAction *wayPointEditorAct;
QAction *addWayPointAct;
QAction *deleteWayPointAct;
QAction *clearWayPointsAct;
QAction *gridLinesAct;
QAction *openGLAct;
QActionGroup *zoomActGroup;
QAction *zoom2Act;
QAction *zoom3Act;
QAction *zoom4Act;
QAction *zoom5Act;
QAction *zoom6Act;
QAction *zoom7Act;
QAction *zoom8Act;
QAction *zoom9Act;
QAction *zoom10Act;
QAction *zoom11Act;
QAction *zoom12Act;
QAction *zoom13Act;
QAction *zoom14Act;
QAction *zoom15Act;
QAction *zoom16Act;
QAction *zoom17Act;
};
#endif /* OPMAP_GADGETWIDGET_H_ */