Qt Virtual Chart Table (QVCT)
CVesselPointDeviceDetailView.cpp
Go to the documentation of this file.
1 // INDENTING (emacs/vi): -*- mode:c++; tab-width:2; c-basic-offset:2; intent-tabs-mode:nil; -*- ex: set tabstop=2 expandtab:
2 
3 /*
4  * Qt Virtual Chart Table (QVCT)
5  * Copyright (C) 2012 Cedric Dufour <http://cedric.dufour.name>
6  * Author: Cedric Dufour <http://cedric.dufour.name>
7  *
8  * The Qt Virtual Chart Table (QVCT) is free software:
9  * you can redistribute it and/or modify it under the terms of the GNU General
10  * Public License as published by the Free Software Foundation, Version 3.
11  *
12  * The Qt Virtual Chart Table (QVCT) is distributed in the hope
13  * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
14  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *
16  * See the GNU General Public License for more details.
17  */
18 
19 // QT
20 #include <QHBoxLayout>
21 #include <QLabel>
22 #include <QPushButton>
23 #include <QScrollArea>
24 #include <QStackedWidget>
25 #include <QVBoxLayout>
26 #include <QWidget>
27 
28 // QVCT
29 #include "QVCTRuntime.hpp"
33 
34 
35 //------------------------------------------------------------------------------
36 // CONSTRUCTORS / DESTRUCTOR
37 //------------------------------------------------------------------------------
38 
40  : COverlayObjectDetailView( _pqParent )
41  , bIgnoreUpdate( true )
42 {
44 }
45 
47 {
48  // Create the buttons
49  // ... edit
50  pqPushButtonEdit = new QPushButton( QIcon( ":icons/32x32/edit.png" ), "" );
51  pqPushButtonEdit->setToolTip( tr("Edit this device") );
52  pqPushButtonEdit->setMaximumSize( 36, 34 );
53  pqPushButtonEdit->setEnabled( false );
54  QWidget::connect( pqPushButtonEdit, SIGNAL( clicked() ), this, SLOT( slotEdit() ) );
55  // ... delete
56  pqPushButtonDelete = new QPushButton( QIcon( ":icons/32x32/delete.png" ), "" );
57  pqPushButtonDelete->setToolTip( tr("Delete this device") );
58  pqPushButtonDelete->setMaximumSize( 36, 34 );
59  pqPushButtonDelete->setEnabled( false );
60  QWidget::connect( pqPushButtonDelete, SIGNAL( clicked() ), this, SLOT( slotDelete() ) );
61  // ... connect (device)
62  pqPushButtonConnect = new QPushButton( QIcon( ":icons/32x32/device_disconnect.png" ), "" );
63  pqPushButtonConnect->setToolTip( tr("Connect to the actual device/source") );
64  pqPushButtonConnect->setMaximumSize( 36, 34 );
65  pqPushButtonConnect->setEnabled( false );
66  pqPushButtonConnect->setCheckable( true );
67  QWidget::connect( pqPushButtonConnect, SIGNAL( toggled(bool) ), this, SLOT( slotConnect(bool) ) );
68 
69  // Create layout
70  QVBoxLayout* __pqVBoxLayout = new QVBoxLayout();
71 
72  // Add header
73  QFont __qFontHeader;
74  __qFontHeader.setPixelSize( 16 );
75  __qFontHeader.setBold( true );
76  QHBoxLayout* __pqHBoxLayoutHeader = new QHBoxLayout();
77  QLabel* __pqLabelIcon = new QLabel();
78  __pqLabelIcon->setPixmap( QPixmap( ":icons/32x32/vessel_device.png" ) );
79  __pqLabelIcon->setToolTip( tr("Device") );
80  __pqHBoxLayoutHeader->addWidget( __pqLabelIcon, 0, Qt::AlignTop );
81  poTextName = new COverlayText();
82  poTextName->setToolTip( tr("Name/Source") );
83  poTextName->setFont( __qFontHeader );
84  poTextName->setWordWrap( true );
85  __pqHBoxLayoutHeader->addWidget( poTextName, 1 );
86  __pqVBoxLayout->addLayout( __pqHBoxLayoutHeader );
87 
88  // Add data
89  QFont __qFontData;
90  QTabWidget* __poTabWidget = new QTabWidget();
91  __poTabWidget->setTabPosition( QTabWidget::South );
92 
93  // ... position
94  QWidget* __poWidgetPosition = new QWidget();
95  QVBoxLayout* __pqVBoxLayoutPosition = new QVBoxLayout();
96  __qFontData.setPixelSize( 20 );
98  poTextLongitude->setToolTip( tr("Longitude & Error[m]") );
99  poTextLongitude->setFont( __qFontData );
100  poTextLongitude->setIndent( 10 );
101  poTextLongitude->setAlignment( Qt::AlignHCenter );
103  __pqVBoxLayoutPosition->addWidget( poTextLongitude );
105  poTextLatitude->setToolTip( tr("Latitude & Error[m]") );
106  poTextLatitude->setFont( __qFontData );
107  poTextLatitude->setIndent( 10 );
108  poTextLatitude->setAlignment( Qt::AlignHCenter );
110  __pqVBoxLayoutPosition->addWidget( poTextLatitude );
112  poTextElevation->setToolTip( tr("Elevation & Error[m]") );
113  poTextElevation->setFont( __qFontData );
114  poTextElevation->setIndent( 10 );
115  poTextElevation->setAlignment( Qt::AlignHCenter );
117  __pqVBoxLayoutPosition->addWidget( poTextElevation, 1 );
118  __poWidgetPosition->setLayout( __pqVBoxLayoutPosition );
119  __poTabWidget->addTab( __poWidgetPosition, tr("Position") );
120 
121  // ... course
122  QWidget* __poWidgetCourse = new QWidget();
123  QVBoxLayout* __pqVBoxLayoutCourse = new QVBoxLayout();
124  __qFontData.setPixelSize( 20 );
125  poTextBearing = new COverlayText();
126  poTextBearing->setToolTip( tr("Bearing & Error[deg]") );
127  poTextBearing->setFont( __qFontData );
128  poTextBearing->setIndent( 10 );
129  poTextBearing->setAlignment( Qt::AlignHCenter );
131  __pqVBoxLayoutCourse->addWidget( poTextBearing );
132  poTextSpeed = new COverlayText();
133  poTextSpeed->setToolTip( tr("Speed (horizontal) & Error[m/s]") );
134  poTextSpeed->setFont( __qFontData );
135  poTextSpeed->setIndent( 10 );
136  poTextSpeed->setAlignment( Qt::AlignHCenter );
138  __pqVBoxLayoutCourse->addWidget( poTextSpeed );
140  poTextSpeedVertical->setToolTip( tr("Speed (vertical) & Error[m/s]") );
141  poTextSpeedVertical->setFont( __qFontData );
142  poTextSpeedVertical->setIndent( 10 );
143  poTextSpeedVertical->setAlignment( Qt::AlignHCenter );
145  __pqVBoxLayoutCourse->addWidget( poTextSpeedVertical, 1 );
146  __poWidgetCourse->setLayout( __pqVBoxLayoutCourse );
147  __poTabWidget->addTab( __poWidgetCourse, tr("Course") );
148 
149  // ... date/time
150  QWidget* __poWidgetTime = new QWidget();
151  QVBoxLayout* __pqVBoxLayoutTime = new QVBoxLayout();
152  poTextDate = new COverlayText();
153  poTextDate->setToolTip( tr("Date") );
154  poTextDate->setFont( __qFontData );
155  poTextDate->setIndent( 10 );
156  poTextDate->setAlignment( Qt::AlignHCenter );
158  __pqVBoxLayoutTime->addWidget( poTextDate );
159  poTextTime = new COverlayText();
160  poTextTime->setToolTip( tr("Time & Error[s]") );
161  poTextTime->setFont( __qFontData );
162  poTextTime->setIndent( 10 );
163  poTextTime->setAlignment( Qt::AlignHCenter );
165  __pqVBoxLayoutTime->addWidget( poTextTime );
166  poTextTime2 = new COverlayText();
167  poTextTime2->setToolTip( tr("Time (alternate timezone)") );
168  poTextTime2->setFont( __qFontData );
169  poTextTime2->setIndent( 10 );
170  poTextTime2->setAlignment( Qt::AlignHCenter );
172  __pqVBoxLayoutTime->addWidget( poTextTime2, 1 );
173  __poWidgetTime->setLayout( __pqVBoxLayoutTime );
174  __poTabWidget->addTab( __poWidgetTime, tr("Time") );
175 
176  // ... precision
177  QWidget* __poWidgetPrecision = new QWidget();
178  QVBoxLayout* __pqVBoxLayoutPrecision = new QVBoxLayout();
179  poTextFixType = new COverlayText();
180  poTextFixType->setToolTip( tr("Fix Type") );
181  poTextFixType->setFont( __qFontData );
182  poTextFixType->setIndent( 10 );
183  poTextFixType->setAlignment( Qt::AlignHCenter );
185  __pqVBoxLayoutPrecision->addWidget( poTextFixType );
186  poTextSources = new COverlayText();
187  poTextSources->setToolTip( tr("Sources Used / Visible") );
188  poTextSources->setFont( __qFontData );
189  poTextSources->setIndent( 10 );
190  poTextSources->setAlignment( Qt::AlignHCenter );
192  __pqVBoxLayoutPrecision->addWidget( poTextSources );
193  poTextDop = new COverlayText();
194  poTextDop->setToolTip( tr("HDOP / VDOP / TDOP") );
195  poTextDop->setFont( __qFontData );
196  poTextDop->setIndent( 10 );
197  poTextDop->setAlignment( Qt::AlignHCenter );
198  poTextDop->resetText();
199  __pqVBoxLayoutPrecision->addWidget( poTextDop, 1 );
200  __poWidgetPrecision->setLayout( __pqVBoxLayoutPrecision );
201  __poTabWidget->addTab( __poWidgetPrecision, tr("Precision") );
202 
203  // ... text
204  QScrollArea* __poScrollAreaText = new QScrollArea();
205  __poScrollAreaText->setStyleSheet( ".QScrollArea, .QWidget { BACKGROUND-COLOR: rgba(0, 0, 0, 0); BORDER: none; }" );
206  __poScrollAreaText->setWidgetResizable( true );
207  QWidget* __poWidgetText = new QWidget();
208  QVBoxLayout* __pqVBoxLayoutText = new QVBoxLayout();
209  __qFontData.setPixelSize( 12 );
210  poText = new COverlayText();
211  poText->setToolTip( tr("Additional Textual Data") );
212  poText->setFont( __qFontData );
213  poText->setIndent( 10 );
214  poText->setWordWrap( true );
215  poText->resetText();
216  __pqVBoxLayoutText->addWidget( poText, 1 );
217  __poWidgetText->setLayout( __pqVBoxLayoutText );
218  __poScrollAreaText->setWidget( __poWidgetText );
219  __poTabWidget->addTab( __poScrollAreaText, tr("Text") );
220 
221  // ... [end]
222  __pqVBoxLayout->addWidget( __poTabWidget, 1 );
223 
224  // Add separator
225  QFrame* __pqFrameSeparator = new QFrame();
226  __pqFrameSeparator->setFrameStyle( QFrame::HLine | QFrame::Sunken );
227  __pqVBoxLayout->addWidget( __pqFrameSeparator );
228 
229  // Add buttons
230  QHBoxLayout* __pqHBoxLayoutButtons = new QHBoxLayout();
231  __pqHBoxLayoutButtons->addWidget( pqPushButtonEdit, 0, Qt::AlignLeft );
232  __pqHBoxLayoutButtons->addWidget( pqPushButtonDelete, 1, Qt::AlignLeft );
233  __pqHBoxLayoutButtons->addWidget( pqPushButtonConnect, 1, Qt::AlignRight );
234  __pqVBoxLayout->addLayout( __pqHBoxLayoutButtons );
235 
236  // Set the layout
237  COverlayObjectDetailView::setLayout( __pqVBoxLayout );
238 
239 }
240 
241 
242 //------------------------------------------------------------------------------
243 // METHODS: COverlayObjectDetailView (implement/override)
244 //------------------------------------------------------------------------------
245 
247 {
248  if( !poOverlayObject ) return;
249  CVesselPointDevice* __poVesselPointDevice = (CVesselPointDevice*)poOverlayObject;
250 
251  // ... name
252  poTextName->setText( __poVesselPointDevice->getName()+":"+__poVesselPointDevice->getSourceName() );
253 
254  // ... position
255  if( __poVesselPointDevice->getLongitude() != CDataPosition::UNDEFINED_LONGITUDE
256  && __poVesselPointDevice->getLatitude() != CDataPosition::UNDEFINED_LATITUDE )
257  {
258  QString __qsError = __poVesselPointDevice->getErrorHorizontal() != CDataValidity::UNDEFINED_VALUE
259  ? "("+QString::number( __poVesselPointDevice->getErrorHorizontal(), 'f', 1 )+")" : "(n/a)";
260  poTextLongitude->setText( CUnitPosition::toString( __poVesselPointDevice->getLongitude(), CUnitPosition::LONGITUDE )+" "+__qsError );
261  poTextLatitude->setText( CUnitPosition::toString( __poVesselPointDevice->getLatitude(), CUnitPosition::LATITUDE )+" "+__qsError );
262  }
263  else
264  {
267  }
268 
269  // ... elevation
270  if( __poVesselPointDevice->getElevation() != CDataPosition::UNDEFINED_ELEVATION )
271  {
272  QString __qsError = __poVesselPointDevice->getErrorVertical() != CDataValidity::UNDEFINED_VALUE
273  ? "("+QString::number( __poVesselPointDevice->getErrorVertical(), 'f', 1 )+")" : "(n/a)";
274  poTextElevation->setText( CUnitElevation::toString( __poVesselPointDevice->getElevation() )+" "+__qsError );
275  }
276  else
278 
279  // ... course
280  if( __poVesselPointDevice->getBearing() != CDataCourse::UNDEFINED_BEARING )
281  {
282  QString __qsError = __poVesselPointDevice->getErrorBearing() != CDataValidity::UNDEFINED_VALUE
283  ? "("+QString::number( __poVesselPointDevice->getErrorBearing(), 'f', 1 )+")" : "(n/a)";
284  poTextBearing->setText( CUnitBearing::toString( __poVesselPointDevice->getBearing() )+" "+__qsError );
285  }
286  else poTextBearing->resetText();
287  if( __poVesselPointDevice->getSpeed() != CDataCourse::UNDEFINED_SPEED )
288  {
289  QString __qsError = __poVesselPointDevice->getErrorSpeed() != CDataValidity::UNDEFINED_VALUE
290  ? "("+QString::number( __poVesselPointDevice->getErrorSpeed(), 'f', 1 )+")" : "(n/a)";
291  poTextSpeed->setText( CUnitSpeed::toString( __poVesselPointDevice->getSpeed() )+" "+__qsError );
292  }
293  else poTextSpeed->resetText();
294  if( __poVesselPointDevice->getSpeedVertical() != CDataCourse::UNDEFINED_SPEED )
295  {
296  QString __qsError = __poVesselPointDevice->getErrorSpeedVertical() != CDataValidity::UNDEFINED_VALUE
297  ? "("+QString::number( __poVesselPointDevice->getErrorSpeedVertical(), 'f', 1 )+")" : "(n/a)";
298  poTextSpeedVertical->setText( CUnitSpeed::toString( __poVesselPointDevice->getSpeedVertical() )+" "+__qsError );
299  }
301 
302  // ... time
303  if( __poVesselPointDevice->getTime() != CDataTime::UNDEFINED_TIME )
304  {
305  double __fdTime = __poVesselPointDevice->getTime();
306  QString __qsError = __poVesselPointDevice->getErrorTime() != CDataValidity::UNDEFINED_VALUE
307  ? "("+QString::number( __poVesselPointDevice->getErrorTime(), 'f', 3 )+")" : "(n/a)";
308  poTextDate->setText( CUnitDate::toString( __fdTime ) );
309  poTextTime->setText( CUnitTime::toString( __fdTime )+" "+__qsError );
310  poTextTime2->setText( "("+CUnitTime::toString( __fdTime, true )+")" );
311  }
312  else
313  {
317  }
318 
319  // ... precision
320  poTextFixType->setText( __poVesselPointDevice->getTypeString() );
321  if( __poVesselPointDevice->getSourcesUsed() || __poVesselPointDevice->getSourcesSeen() )
322  poTextSources->setText( QString::number( __poVesselPointDevice->getSourcesUsed() )+" / "+QString::number( __poVesselPointDevice->getSourcesSeen() ) );
323  else
325  {
326  double __fdDopHorizontal = __poVesselPointDevice->getDopHorizontal();
327  double __fdDopVertical = __poVesselPointDevice->getDopVertical();
328  double __fdDopTime = __poVesselPointDevice->getDopTime();
329  if( __fdDopHorizontal != CDeviceDataDop::UNDEFINED_VALUE
330  || __fdDopVertical != CDeviceDataDop::UNDEFINED_VALUE
331  || __fdDopTime != CDeviceDataDop::UNDEFINED_VALUE )
332  poTextDop->setText( ( __fdDopHorizontal != CDeviceDataDop::UNDEFINED_VALUE ? QString::number( __fdDopHorizontal, 'f', 1 ) : poTextDop->emptyString() )
333  +" / "+( __fdDopVertical != CDeviceDataDop::UNDEFINED_VALUE ? QString::number( __fdDopVertical, 'f', 1 ) : poTextDop->emptyString() )
334  +" / "+( __fdDopTime != CDeviceDataDop::UNDEFINED_VALUE ? QString::number( __fdDopTime, 'f', 1 ) : poTextDop->emptyString() ) );
335  else
336  poTextDop->resetText();
337  }
338 
339  // ... text
340  poText->setText( __poVesselPointDevice->getText() );
341 
342  // ... buttons
343  bIgnoreUpdate = true;
344  bool __bDynamic = __poVesselPointDevice->isDynamic();
345  pqPushButtonEdit->setEnabled( !__bDynamic );
346  pqPushButtonDelete->setEnabled( !__bDynamic );
347  bool __bConnected = __poVesselPointDevice->isDeviceConnected();
348  pqPushButtonConnect->setChecked( __bConnected );
349  pqPushButtonConnect->setIcon( QIcon( __bConnected ? ":icons/32x32/device_connect.png" : ":icons/32x32/device_disconnect.png" ) );
350  bIgnoreUpdate = false;
351 }
352 
354 {
367  poTextDop->resetText();
368  poText->resetText();
369 }
370 
372 {
373  if( poOverlayObject )
374  {
375  pqPushButtonConnect->setEnabled( true );
376  QObject::connect( (CVesselPointDevice*)poOverlayObject, SIGNAL( signalRefreshContent() ), this, SLOT( slotRefreshContent() ) );
377  bIgnoreUpdate = false;
378  }
379 }
380 
382 {
383  if( poOverlayObject ) QObject::disconnect( (CVesselPointDevice*)poOverlayObject, 0, this, 0 );
384  pqPushButtonEdit->setEnabled( false );
385  pqPushButtonDelete->setEnabled( false );
386  pqPushButtonConnect->setEnabled( false );
387  bIgnoreUpdate = true;
388 }
389 
390 
391 //------------------------------------------------------------------------------
392 // METHODS
393 //------------------------------------------------------------------------------
394 
395 //
396 // SLOTS
397 //
398 
400 {
401  refreshContent();
402 }
403 
405 {
406  if( !poOverlayObject ) return;
407  ((CVesselPointDevice*)poOverlayObject)->showEdit();
408 }
409 
411 {
412  if( !poOverlayObject ) return;
413  if( !QVCTRuntime::useMainWindow()->deleteConfirm( poOverlayObject->getName() ) ) return;
414  QMutex* __pqMutexDataChange = QVCTRuntime::useMutexDataChange();
415  __pqMutexDataChange->lock();
416  CVesselOverlay* __poVesselOverlay = QVCTRuntime::useVesselOverlay();
417  CVesselPoint* __poVesselPoint = (CVesselPoint*)((QTreeWidgetItem*)poOverlayObject)->parent();
418  CVesselPointDevice* __poVesselPointDevice = (CVesselPointDevice*)poOverlayObject;
419  __poVesselPoint->removeChild( __poVesselPointDevice );
420  delete __poVesselPointDevice;
421  QTreeWidgetItem* __pqTreeWidgetItem = __poVesselOverlay->currentItem();
422  if( __pqTreeWidgetItem ) __poVesselOverlay->showDetail( __pqTreeWidgetItem );
423  __poVesselOverlay->forceRedraw();
425  __pqMutexDataChange->unlock();
426 }
427 
429 {
430  if( !poOverlayObject || bIgnoreUpdate ) return;
431  CVesselPointDevice* __poVesselPointDevice = (CVesselPointDevice*)poOverlayObject;
432  if( _bConnect ) __poVesselPointDevice->connectDevice();
433  else __poVesselPointDevice->disconnectDevice();
434  refreshContent();
435 }
void updateChart()
Update the (current) chart content (on screen)
double getSpeedVertical() const
Returns this course's vertical speed, in meters per second.
static constexpr double UNDEFINED_BEARING
Specific value for an undefined bearing.
Definition: CDataCourse.hpp:42
static constexpr double UNDEFINED_SPEED
Specific value for an undefined speed.
Definition: CDataCourse.hpp:44
double getBearing() const
Returns this course's bearing, in degrees.
double getSpeed() const
Returns this course's horizontal speed, in meters per second.
double getLongitude() const
Returns this position's longitude, in degrees.
static constexpr double UNDEFINED_LATITUDE
Specific value for an undefined latitude.
double getElevation() const
Returns this position's elevation, in meters.
double getLatitude() const
Returns this position's latitude, in degrees.
static constexpr double UNDEFINED_LONGITUDE
Specific value for an undefined longitude.
static constexpr double UNDEFINED_ELEVATION
Specific value for an undefined elevation.
double getTime() const
Returns this time's time, in seconds from Unix epoch.
Definition: CDataTime.hpp:89
static constexpr double UNDEFINED_TIME
Specific value for an undefined time.
Definition: CDataTime.hpp:44
static constexpr double UNDEFINED_VALUE
static const double UNDEFINED_VALUE
Specific value for an undefined component.
double getDopTime() const
Returns the time Dilution-of-Precision (TDOP)
double getDopHorizontal() const
Returns the horizontal position Dilution-of-Precision (HDOP)
double getDopVertical() const
Returns the vertical position Dilution-of-Precision (VDOP)
static QString getTypeString(int _eType)
int getSourcesSeen() const
Returns the seen sources count (most likely satellites)
double getErrorTime() const
Returns the time error, in seconds.
double getErrorVertical() const
Returns the vertical position error, in meters.
QString getText() const
Returns the additional textual data string.
double getErrorSpeed() const
Returns the horizontal speed error, in meters per second.
double getErrorHorizontal() const
Returns the horizontal position error, in meters.
double getErrorBearing() const
Returns the bearing error, in degrees.
double getErrorSpeedVertical() const
Returns the vertical speed error, in meters per second.
int getSourcesUsed() const
Returns the used sources count (most likely satellites)
QString getSourceName() const
Returns the source name.
[UI] Generic overlay object's detail view
COverlayObject * poOverlayObject
Overlay object being displayed.
QString getName() const
Returns this object's name.
[UI] Overlay-specific text label
void setText(const QString &_rqsText)
[override] QLabel::setText( const QString& )
const QString & emptyString()
Returns the string corresponding to undefined (empty) content ("n/a" in English)
void resetText()
Resets (clears) the underlying QLabel's text.
void forceRedraw()
Forces this overlay's rendering (not matter its cache content)
Definition: COverlay.hpp:115
static QString toString(double _fdValue, EUnit _eUnit, int _iPrecision=0)
Returns the formatted represention of the given value, using the specified format/unit and decimal pr...
static QString toString(double _fdValue, CUnitTimeZone::EUnit _eUnitTimeZone, EUnit _eUnit)
Returns the formatted represention of the given value, using the specified format/unit and decimal pr...
Definition: CUnitDate.cpp:71
static QString toString(double _fdValue, EUnit _eUnit, int _iPrecision=0)
Returns the formatted represention of the given value, using the specified format/unit and decimal pr...
static QString toString(double _fdValue, EType _eType, EUnit _eUnit, int _iPrecision=0)
Returns the formatted represention of the given value, using the specified format/unit and decimal pr...
static QString toString(double _fdValue, EUnit _eUnit, int _iPrecision=0)
Returns the formatted represention of the given value, using the specified format/unit and decimal pr...
Definition: CUnitSpeed.cpp:78
static QString toString(double _fdValue, CUnitTimeZone::EUnit _eUnitTimeZone, EUnit _eUnit, int _iPrecision=0)
Returns the formatted represention of the given value, using the specified format/unit and decimal pr...
Definition: CUnitTime.cpp:79
[UI] Vessel overlay container
virtual void showDetail(const QTreeWidgetItem *_pqTreeWidgetItem) const
Displays the given overlay object's details (in the appropriate widget/view)
COverlayText * poTextSources
[UI:Label] Sources (used/seen)
virtual void resetContent()
Resets (clears) the content of the underlying widget.
COverlayText * poTextDop
[UI:Label] DOP
void constructLayout()
Constructs the layout of the user-interface.
void slotRefreshContent()
[UI:Slot] Slot to refresh the view content
COverlayText * poTextTime
[UI:Label] Time
QPushButton * pqPushButtonDelete
[UI:Button] Delete
void slotConnect(bool)
[UI:Slot] Slot to connect (to the actual device)
COverlayText * poTextLongitude
[UI:Label] Longitude
bool bIgnoreUpdate
Flag that disables checkable buttons update.
CVesselPointDeviceDetailView(QWidget *_pqParent=0)
COverlayText * poTextDate
[UI:Label] Date
QPushButton * pqPushButtonConnect
[UI:Button] Connect (device)
virtual void enableContent()
Enables the content (controls) of the underlying widget.
COverlayText * poTextElevation
[UI:Label] Elevation
void slotDelete()
[UI:Slot] Slot to delete (this point/point)
COverlayText * poTextBearing
[UI:Label] Bearing
COverlayText * poText
[UI:Label] Additional textual data string
COverlayText * poTextName
[UI:Label] Name
QPushButton * pqPushButtonEdit
[UI:Button] Edit
virtual void refreshContent()
Refreshes the content of the underlying widget.
virtual void disableContent()
Disables the content (controls) of the underlying widget.
COverlayText * poTextSpeedVertical
[UI:Label] Vertical speed
COverlayText * poTextFixType
[UI:Label] Fix type
COverlayText * poTextSpeed
[UI:Label] Horizontal speed
COverlayText * poTextLatitude
[UI:Label] Latitude
void slotEdit()
[UI:Slot] Slot to display edit view
COverlayText * poTextTime2
[UI:Label] Time (alternate timezone)
[UI] Vessel device
bool isDynamic()
Returns whether the device is dynamically generated.
bool isDeviceConnected() const
Returns whether the actual device is connected.
void disconnectDevice()
Disconnects from the actual device.
bool connectDevice()
Connects to the actual device.
[UI] Vessel overlay point (item) / vessel
static CVesselOverlay * useVesselOverlay()
static QMutex * useMutexDataChange()
static CMainWindow * useMainWindow()
static CChartTable * useChartTable()