20 #include <QDomElement>
23 #include <QTreeWidgetItem>
24 #include <QXmlStreamWriter>
45 QTreeWidgetItem::setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable );
52 QTreeWidgetItem* __pqTreeWidgetItem = QTreeWidgetItem::takeChild( 0 );
53 while( __pqTreeWidgetItem )
56 __pqTreeWidgetItem = QTreeWidgetItem::takeChild( 0 );
81 int __iCount = QTreeWidgetItem::childCount();
82 for(
int __i = 0; __i < __iCount; __i++ )
98 if( __poTrackContainerEditView->exec() == QDialog::Accepted )
showDetail();
99 delete __poTrackContainerEditView;
110 int __iCount = QTreeWidgetItem::childCount();
111 for(
int __i = __iCount-1 ; __i >= 0; __i-- )
115 if( __poOverlayPoint )
return __poOverlayPoint;
128 int __iCount = QTreeWidgetItem::childCount();
129 for(
int __i = 0; __i < __iCount; __i++ )
136 int __iCount = QTreeWidgetItem::childCount();
137 for(
int __i = 0; __i < __iCount; __i++ )
144 int __iCount = QTreeWidgetItem::childCount();
145 for(
int __i = 0; __i < __iCount; __i++ )
154 int __iCount = QTreeWidgetItem::childCount();
155 for(
int __i = 0; __i < __iCount; __i++ )
175 int __iCount = QTreeWidgetItem::childCount();
183 int __iCount = QTreeWidgetItem::childCount();
184 if( !__iCount || QTreeWidgetItem::child( __iCount-1 )->childCount() )
188 QTreeWidgetItem::addChild( __poTrackSubContainer );
190 else __poTrackSubContainer = (
CTrackSubContainer*)QTreeWidgetItem::child( __iCount-1 );
191 return __poTrackSubContainer;
196 double __fdLength = 0;
197 int __iCount = QTreeWidgetItem::childCount();
198 for(
int __i = 0; __i < __iCount; __i++ )
205 double __fdTimeElapsed = 0;
206 int __iCount = QTreeWidgetItem::childCount();
207 for(
int __i = 0; __i < __iCount; __i++ )
208 __fdTimeElapsed += ((
CTrackSubContainer*)QTreeWidgetItem::child( __i ))->getTimeElapsed();
209 return __fdTimeElapsed;
216 qsType = _rqDomElement.attribute(
"type" );
217 qsUrl = _rqDomElement.attribute(
"url" );
218 qsDescription = _rqDomElement.firstChildElement(
"Description" ).text();
219 qsComment = _rqDomElement.firstChildElement(
"Comment" ).text();
220 int __iCount = 0, __iCountSegment = 0;
221 for( QDomElement __qDomElement = _rqDomElement.firstChildElement(
"Segment" );
222 !__qDomElement.isNull();
223 __qDomElement = __qDomElement.nextSiblingElement(
"Segment" ) )
227 __iCount += __poTrackSubContainer->
parseQVCT( __qDomElement );
228 addChild( __poTrackSubContainer );
236 qsType = _rqDomElement.firstChildElement(
"type" ).text();
237 qsDescription = _rqDomElement.firstChildElement(
"desc" ).text();
238 qsComment = _rqDomElement.firstChildElement(
"cmt" ).text();
239 qsUrl = _rqDomElement.firstChildElement(
"link" ).attribute(
"href" );
240 int __iCount = 0, __iCountSegment = 0;
241 for( QDomElement __qDomElement = _rqDomElement.firstChildElement(
"trkseg" );
242 !__qDomElement.isNull();
243 __qDomElement = __qDomElement.nextSiblingElement(
"trkseg" ) )
247 __iCount += __poTrackSubContainer->
parseGPX( __qDomElement );
248 addChild( __poTrackSubContainer );
256 _rqXmlStreamWriter.writeStartElement(
"Track" );
258 if( !
qsName.isEmpty() ) _rqXmlStreamWriter.writeAttribute(
"name",
qsName );
262 if( !
qsType.isEmpty() ) _rqXmlStreamWriter.writeAttribute(
"type",
qsType );
264 if( !
qsUrl.isEmpty() ) _rqXmlStreamWriter.writeAttribute(
"url",
qsUrl );
268 _rqXmlStreamWriter.writeStartElement(
"Description" );
270 _rqXmlStreamWriter.writeEndElement();
275 _rqXmlStreamWriter.writeStartElement(
"Comment" );
276 _rqXmlStreamWriter.writeCDATA(
qsComment );
277 _rqXmlStreamWriter.writeEndElement();
280 int __iCount = QTreeWidgetItem::childCount();
281 for(
int __i = 0; __i < __iCount; __i++ )
282 ((
CTrackSubContainer*)QTreeWidgetItem::child( __i ))->dumpQVCT( _rqXmlStreamWriter, bOnlySelected );
284 _rqXmlStreamWriter.writeEndElement();
292 _rqXmlStreamWriter.writeStartElement(
"trk" );
296 _rqXmlStreamWriter.writeStartElement(
"name" );
297 _rqXmlStreamWriter.writeCharacters(
qsName );
298 _rqXmlStreamWriter.writeEndElement();
303 _rqXmlStreamWriter.writeStartElement(
"type" );
304 _rqXmlStreamWriter.writeCharacters(
qsType );
305 _rqXmlStreamWriter.writeEndElement();
310 _rqXmlStreamWriter.writeStartElement(
"desc" );
312 _rqXmlStreamWriter.writeEndElement();
317 _rqXmlStreamWriter.writeStartElement(
"cmt" );
318 _rqXmlStreamWriter.writeCDATA(
qsComment );
319 _rqXmlStreamWriter.writeEndElement();
322 if( !
qsUrl.isEmpty() )
324 _rqXmlStreamWriter.writeStartElement(
"link" );
325 _rqXmlStreamWriter.writeAttribute(
"href",
qsUrl );
326 _rqXmlStreamWriter.writeEndElement();
329 int __iCount = QTreeWidgetItem::childCount();
330 for(
int __i = 0; __i < __iCount; __i++ )
331 ((
CTrackSubContainer*)QTreeWidgetItem::child( __i ))->dumpGPX( _rqXmlStreamWriter, bOnlySelected );
332 _rqXmlStreamWriter.writeEndElement();
338 for(
int __i = QTreeWidgetItem::childCount()-1; __i >= 0; __i-- )
void setOverlayObjectSelected(COverlayObject *_poOverlayObject)
Sets the currently selected overlay object.
Generic overlay container.
void switchView(EView eView)
Displays the requested container/item details (switching to the appropriate widget)
@ TRACK_CONTAINER
Track container.
void switchView(EView eView)
Displays the requested overlay (switching to the appropriate tab)
void setOverlayObject(COverlayObject *_poOverlayObject)
Sets the overlay object to be displayed (and refreshes the underlying widget)
virtual void serialize(QDataStream &_rqDataStream) const
Serializes (store) this object's data to binary format.
virtual void unserialize(QDataStream &_rqDataStream)
Unserializes (restore) this object's data from binary format.
QString newChildName(const QString &_rqsName, int _iZeroPrefix=0, bool _bForceSuffix=false) const
Returns a valid (non-duplicate) name for a new sibling of this object.
QString qsName
Object name.
bool bVisibleRouting
Routing's (data) visibility status.
void setVisibility(int _iVisibilityCode)
Sets the global (coded) visibility status.
virtual void toggleVisibility(bool _bIncludeCourse, bool _bIncludeRouting)
Toggle the visibility status.
bool bVisible
Global (marker) visibility status.
bool bVisiblePosition
Position's visibility status.
bool bVisibleName
Name's (tag) visibility status.
int getVisibility() const
Returns the global (coded) visibility status.
virtual void refreshContent()
Refreshes the content of the underlying widget.
[UI] Track container's edit view
int parseGPX(const QDomElement &_rqDomElement)
Retrieves this object's content from the given GPX source (file)
CTrackSubContainer * pickSubContainer()
Returns the last/current sub-container of this container.
QString qsUrl
Track's URL.
CTrackContainer(const QString &_rqsName)
QString qsComment
Track's comment.
QString qsDescription
Track's description.
virtual void draw(const CChart *_poChart, QPainter *_pqPainter)
Draws this object (itself or its content)
virtual void setVisibleName(bool _bVisibleName)
Sets the name's (tag) visibility status.
virtual void setVisibleRouting(bool _bVisibleRouting)
Sets the routing's (data) visibility status.
int deleteSelection()
Deletes selected items within this container.
virtual void setVisiblePosition(bool _bVisiblePosition)
Sets the position's visibility status.
QString qsType
Track's type.
void dumpQVCT(QXmlStreamWriter &_rqXmlStreamWriter, bool bOnlySelected=false) const
Stores this object's content to the given QVCT destination (file)
virtual void serialize(QDataStream &_rqDataStream) const
Serializes (store) this object's data to binary format.
virtual void showDetail()
Displays this object's details (in the appropriate widget/view)
int parseQVCT(const QDomElement &_rqDomElement)
Retrieves this object's content from the given QVCT source (file)
virtual void toggleVisibility()
double getLengthRL()
Returns the track's (rhumb-line) length.
virtual void showEdit()
Displays this object's edit widget/view.
void dumpGPX(QXmlStreamWriter &_rqXmlStreamWriter, bool bOnlySelected=false) const
Stores this object's content to the given GPX destination (file)
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...
virtual ~CTrackContainer()
double getTimeElapsed()
Returns the track's elapsed time.
virtual void unserialize(QDataStream &_rqDataStream)
Unserializes (restore) this object's data from binary format.
CTrackSubContainer * addSubContainer()
Add a new sub-container to this container.
@ VISIBLE
Track visibility status.
[UI] Track overlay sub-container
int parseGPX(const QDomElement &_rqDomElement)
Retrieves this object's content from the given GPX source (file)
virtual void setVisibleRouting(bool _bVisibleRouting)
Sets the routing's (data) visibility status.
virtual void setVisibleName(bool _bVisibleName)
Sets the name's (tag) visibility status.
virtual void setVisiblePosition(bool _bVisiblePosition)
Sets the position's visibility status.
int parseQVCT(const QDomElement &_rqDomElement)
Retrieves this object's content from the given QVCT source (file)
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...
static COverlayDetailView * useOverlayDetailView()
static CTrackContainerDetailView * useTrackContainerDetailView()
static COverlayListView * useOverlayListView()
static CChartTable * useChartTable()