Qt Virtual Chart Table (QVCT)
CVesselContainer.hpp
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 #ifndef QVCT_CVESSELCONTAINER_HPP
20 #define QVCT_CVESSELCONTAINER_HPP
21 
22 // QT
23 #include <QDomElement> // QtXml module
24 #include <QPainter>
25 #include <QPointF>
26 #include <QTimer>
27 #include <QXmlStreamWriter>
28 
29 // QVCT
30 #include "data/CDataPosition.hpp"
34 class CChart;
35 class CDevice;
37 class CVesselOverlay;
38 class CVesselPoint;
39 
40 
42 
47 {
48  Q_OBJECT
49 
50  //------------------------------------------------------------------------------
51  // FIELDS
52  //------------------------------------------------------------------------------
53 
54 private:
56 
61  bool bDynamic;
63 
65 
67  QString qsType;
69  QString qsDescription;
71  QString qsComment;
73  QString qsUrl;
74 
75 
76  //------------------------------------------------------------------------------
77  // CONSTRUCTORS / DESTRUCTOR
78  //------------------------------------------------------------------------------
79 
80 public:
81  CVesselContainer( const QString& _rqsName );
82  virtual ~CVesselContainer();
83 
84 
85  //------------------------------------------------------------------------------
86  // METHODS: COverlayObject (implement/override)
87  //------------------------------------------------------------------------------
88 
89 public:
90  virtual void serialize( QDataStream& _rqDataStream ) const;
91  virtual void unserialize( QDataStream& _rqDataStream );
92 
93 public:
94  virtual COverlay* useOverlay() { return (COverlay*)QTreeWidgetItem::parent(); };
95 
96 public:
97  virtual void draw( const CChart* _poChart, QPainter* _pqPainter );
98  virtual void showDetail();
99  virtual void showEdit();
100 
101 
102  //------------------------------------------------------------------------------
103  // METHODS: COverlayContainer (implement/override)
104  //------------------------------------------------------------------------------
105 
106 public:
107  virtual COverlayPoint* matchScrPosition( const CChart* _poChart, const QPointF& _rqPointFScrPosition ) const;
108 
109 
110  //------------------------------------------------------------------------------
111  // METHODS: COverlayVisibility (override)
112  //------------------------------------------------------------------------------
113 
114 public:
115  virtual void setVisibleName( bool _bVisibleName );
116  virtual void setVisiblePosition( bool _bVisiblePosition );
117  virtual void setVisibleCourse( bool _bVisibleCourse );
118  virtual void toggleVisibility();
119 
120 
121  //------------------------------------------------------------------------------
122  // METHODS
123  //------------------------------------------------------------------------------
124 
125  // SLOTS
126 private slots:
129 
130  // SETTERS
131 public:
133  void setType( const QString& _rqsType ) { qsType = _rqsType; };
135  void setDescription( const QString& _rqsDescription ) { qsDescription = _rqsDescription; };
137  void setComment( const QString& _rqsComment ) { qsComment = _rqsComment; };
139  void setUrl( const QString& _rqsUrl ) { qsUrl = _rqsUrl; };
140 
141  // GETTERS
142 public:
144  bool isDynamic() { return bDynamic; };
146  bool isDeviceConnected() const;
147 
149  QString getType() const { return qsType; };
151  QString getDescription() const { return qsDescription; };
153  QString getComment() const { return qsComment; };
155  QString getUrl() const { return qsUrl; };
156 
157  // OTHER
158 public:
160  void setDevice( CVesselContainerDevice* _poVesselContainerDevice );
162  void connectDevice();
164  void disconnectDevice();
166  void clearDevice();
167 
168 public:
170  CVesselPoint* addPoint( const QString& _rqsName, const CDataPosition& _roDataPosition = CDataPosition::UNDEFINED );
172 
173  void addPointDynamic( const CDeviceDataFix& _roDeviceDataFix, const QString& _rqsDeviceName );
175  int cleanPointDynamic( int _iTTL );
176 
177 public:
179  int parseQVCT( const QDomElement& _rqDomElement );
181  void dumpQVCT( QXmlStreamWriter & _rqXmlStreamWriter, bool bOnlySelected = false ) const;
183  int deleteSelection();
184 
185 protected:
187 
188 private:
190  void clear();
191 
192 };
193 
194 #endif // QVCT_CVESSELCONTAINER_HPP
[UI] Chart (view)
Definition: CChart.hpp:44
(Geographical) Position data [long,lat,elev]
static const CDataPosition UNDEFINED
Specific value for an undefined position.
Fix data [source,time,position,course,DOPs,...].
Generic navigation device (GPS, speedometer, compass, etc.)
Definition: CDevice.hpp:43
Generic overlay container.
Generic overlay point.
Generic overlay visibility.
virtual void toggleVisibility(bool _bIncludeCourse, bool _bIncludeRouting)
Toggle the visibility status.
Generic overlay.
Definition: COverlay.hpp:45
[UI] Vessel overlay container / flotilla
virtual void setVisibleName(bool _bVisibleName)
Sets the name's (tag) visibility status.
virtual COverlay * useOverlay()
Returns this object's (base) overlay.
bool isDynamic()
Returns this flotilla's dynamic status.
bool bDynamic
Dynamic status.
QTimer * pqTimerDynamicCleanup
Dynamic flotilla clean-up timer.
void clearDevice()
Clears the device set to dynamically generate this flotilla.
QString getUrl() const
Returns this flotilla's URL.
QString getComment() const
Returns this flotilla's comment.
QString qsComment
Vessel's comment.
void setType(const QString &_rqsType)
Sets this flotilla's type.
CVesselContainer(const QString &_rqsName)
QString getType() const
Returns this flotilla's type.
void addPointDynamic(const CDeviceDataFix &_roDeviceDataFix, const QString &_rqsDeviceName)
Add a new dynamic vessel (item/point) with the given data fix to this container.
virtual ~CVesselContainer()
virtual void setVisibleCourse(bool _bVisibleCourse)
Sets the course's visibility status.
virtual void showDetail()
Displays this object's details (in the appropriate widget/view)
bool isDeviceConnected() const
Returns whether this flotilla's vessels devices are all connected.
virtual void unserialize(QDataStream &_rqDataStream)
Unserializes (restore) this object's data from binary format.
virtual void draw(const CChart *_poChart, QPainter *_pqPainter)
Draws this object (itself or its content)
virtual void showEdit()
Displays this object's edit widget/view.
QString qsType
Vessel's type.
int cleanPointDynamic(int _iTTL)
Deletes dynamic vessels (items/points) that have not been updated for the given "time-to-live" second...
void setComment(const QString &_rqsComment)
Sets this flotilla's comment.
int deleteSelection()
Deletes selected items within this container.
CVesselPoint * addPoint(const QString &_rqsName, const CDataPosition &_roDataPosition=CDataPosition::UNDEFINED)
Add a new vessel (item/point) to this container.
virtual COverlayPoint * matchScrPosition(const CChart *_poChart, const QPointF &_rqPointFScrPosition) const
Returns the overlay container's point that (first) matches the given screen position (0 if none is fo...
void setDescription(const QString &_rqsDescription)
Sets this flotilla's description.
QString qsDescription
Vessel's description.
QString qsUrl
Vessel's URL.
void dumpQVCT(QXmlStreamWriter &_rqXmlStreamWriter, bool bOnlySelected=false) const
Stores this object's content to the given QVCT destination (file)
void setDevice(CVesselContainerDevice *_poVesselContainerDevice)
Sets a device to dynamically generate this flotilla.
void disconnectDevice()
Disconnects all children vessels devices.
int parseQVCT(const QDomElement &_rqDomElement)
Retrieves this object's content from the given QVCT source (file)
virtual void serialize(QDataStream &_rqDataStream) const
Serializes (store) this object's data to binary format.
void clear()
Clear the entire content of this container.
virtual void toggleVisibility()
void connectDevice()
Connects all children vessels devices.
void slotTimerDynamicCleanup()
[Slot] Slot to handle activity signal emitted by device
void setUrl(const QString &_rqsUrl)
Sets this flotilla's URL.
QString getDescription() const
Returns this flotilla's description.
virtual void setVisiblePosition(bool _bVisiblePosition)
Sets the position's visibility status.
[UI] Vessel overlay container
[UI] Vessel overlay point (item) / vessel