6#include "PlaybackAnimatedUpdateItem.h"
8#include "GeoDataAnimatedUpdate.h"
9#include "GeoDataDocument.h"
10#include "GeoDataPlacemark.h"
11#include "GeoDataCreate.h"
12#include "GeoDataUpdate.h"
13#include "GeoDataDelete.h"
14#include "GeoDataChange.h"
15#include "GeoDataFolder.h"
16#include "GeoDataGroundOverlay.h"
17#include "GeoDataPhotoOverlay.h"
18#include "GeoDataScreenOverlay.h"
24PlaybackAnimatedUpdateItem::PlaybackAnimatedUpdateItem( GeoDataAnimatedUpdate* animatedUpdate )
26 m_animatedUpdate = animatedUpdate;
27 m_rootDocument = rootDocument( m_animatedUpdate );
31const GeoDataAnimatedUpdate* PlaybackAnimatedUpdateItem::animatedUpdate()
const
33 return m_animatedUpdate;
36double PlaybackAnimatedUpdateItem::duration()
const
38 return m_animatedUpdate->duration();
41void PlaybackAnimatedUpdateItem::play()
48 if ( !m_rootDocument || !m_animatedUpdate->update() ) {
53 if ( m_animatedUpdate->update()->change() ) {
55 for(
int i = 0;
i < placemarkList.
size();
i++ ){
56 GeoDataPlacemark* placemark = placemarkList.
at(
i );
57 QString targetId = placemark->targetId();
61 if( placemark->isBalloonVisible() ){
62 GeoDataFeature* feature = findFeature( m_rootDocument, targetId );
64 emit balloonShown(placemark);
73 if( m_animatedUpdate->update()->create() ){
74 for(
int index = 0; index < m_animatedUpdate->update()->
create()->size(); ++index ) {
75 GeoDataFeature* child = m_animatedUpdate->update()->create()->
child( index );
79 GeoDataContainer *
addContainer =
static_cast<GeoDataContainer*
>( child );
81 GeoDataFeature* feature = findFeature( m_rootDocument, targetId );
85 GeoDataContainer* container =
static_cast<GeoDataContainer*
>( feature );
90 if( placemark->isBalloonVisible() ) {
91 emit balloonShown( placemark );
102 if( m_animatedUpdate->update()->getDelete() ){
103 for(
int index = 0; index < m_animatedUpdate->update()->getDelete()->size(); ++index ) {
104 GeoDataFeature* child = m_animatedUpdate->update()->getDelete()->
child( index );
105 QString targetId = child->targetId();
109 GeoDataFeature* feature = findFeature( m_rootDocument, targetId );
110 if (feature && canDelete(*feature)) {
111 m_deletedObjects.append( feature );
112 emit removed( feature );
115 if( placemark->isBalloonVisible() ) {
116 emit balloonHidden();
124GeoDataFeature* PlaybackAnimatedUpdateItem::findFeature(GeoDataFeature* feature,
const QString&
id )
const
126 if ( feature && feature->id() ==
id ){
130 GeoDataContainer *container =
dynamic_cast<GeoDataContainer*
>( feature );
144GeoDataDocument *PlaybackAnimatedUpdateItem::rootDocument( GeoDataObject*
object )
const
146 if( !
object || !object->parent() ){
147 GeoDataDocument* document =
dynamic_cast<GeoDataDocument*
>( object );
150 return rootDocument( object->parent() );
155void PlaybackAnimatedUpdateItem::pause()
160void PlaybackAnimatedUpdateItem::seek(
double position )
166void PlaybackAnimatedUpdateItem::stop()
173 if ( m_animatedUpdate->update()->change() ) {
175 for(
int i = 0;
i < placemarkList.
size();
i++ ){
176 GeoDataPlacemark* placemark = placemarkList.
at(
i );
177 QString targetId = placemark->targetId();
181 GeoDataFeature* feature = findFeature( m_rootDocument, targetId );
182 if( placemark->isBalloonVisible() ){
184 emit balloonHidden();
187 emit balloonShown(
static_cast<GeoDataPlacemark*
>( feature ) );
192 if( m_animatedUpdate->update()->create() ){
193 for(
int index = 0; index < m_animatedUpdate->update()->
create()->size(); ++index ) {
194 GeoDataFeature* feature = m_animatedUpdate->update()->create()->
child( index );
198 GeoDataContainer* container =
static_cast<GeoDataContainer*
>( feature );
199 for(
int i = 0;
i < container->size(); ++
i ) {
201 emit removed( container->child(
i ) );
204 if( placemark->isBalloonVisible() ) {
205 emit balloonHidden();
213 for( GeoDataFeature* feature: m_deletedObjects ) {
214 if( feature->targetId().isEmpty() ) {
217 GeoDataFeature* target = findFeature( m_rootDocument, feature->targetId() );
220 Q_ASSERT(
dynamic_cast<GeoDataContainer*
>( target ) );
221 emit added(
static_cast<GeoDataContainer*
>( target ), feature, -1 );
224 if( placemark->isBalloonVisible() ) {
225 emit balloonShown( placemark );
230 m_deletedObjects.clear();
233bool PlaybackAnimatedUpdateItem::isApplied()
const
238bool PlaybackAnimatedUpdateItem::canDelete(
const GeoDataFeature &feature)
250#include "moc_PlaybackAnimatedUpdateItem.cpp"
GeoDataFeature * child(int)
returns the requested child item
QVector< GeoDataPlacemark * > placemarkList() const
A convenience function that returns all placemarks in this container.
QAction * create(GameStandardAction id, const QObject *recvr, const char *slot, QObject *parent)
const QList< QKeySequence > & end()
Binds a QML item to a specific geodetic location in screen coordinates.
const_reference at(qsizetype i) const const
qsizetype size() const const
T qobject_cast(QObject *object)
bool isEmpty() const const