• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • lib
  • marble
ParallelTrack.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2014 Sanjiban Bairagya <sanjiban22393@gmail.com>
9 //
10 
11 #include "ParallelTrack.h"
12 
13 #include "PlaybackSoundCueItem.h"
14 #include "PlaybackAnimatedUpdateItem.h"
15 
16 namespace Marble
17 {
18 
19 ParallelTrack::ParallelTrack( PlaybackItem* item )
20 {
21  m_item = item;
22  m_progress = 0;
23  m_delayBeforeTrackStarts = 0;
24  m_paused = true;
25  connect( &m_timer, SIGNAL( timeout() ), this, SLOT( playSlot() ) );
26  connect( m_item, SIGNAL( balloonHidden() ), this, SIGNAL( balloonHidden() ) );
27  connect( m_item, SIGNAL( balloonShown( GeoDataPlacemark* ) ), this, SIGNAL( balloonShown( GeoDataPlacemark* ) ) );
28 }
29 
30 void ParallelTrack::setDelayBeforeTrackStarts( double delay )
31 {
32  m_delayBeforeTrackStarts = delay;
33  m_timer.setSingleShot( true );
34  m_timer.setInterval( m_delayBeforeTrackStarts * 1000 );
35 }
36 
37 double ParallelTrack::delayBeforeTrackStarts() const
38 {
39  return m_delayBeforeTrackStarts;
40 }
41 
42 void ParallelTrack::play()
43 {
44  m_paused = false;
45  m_playTime = QDateTime::currentDateTime();
46  if( m_progress <= m_delayBeforeTrackStarts ){
47  m_timer.start( ( m_delayBeforeTrackStarts - m_progress ) * 1000 );
48  } else {
49  m_item->play();
50  }
51 }
52 
53 void ParallelTrack::playSlot()
54 {
55  m_item->play();
56 }
57 
58 void ParallelTrack::pause()
59 {
60  m_paused = true;
61  m_pauseTime = QDateTime::currentDateTime();
62  m_progress += m_playTime.msecsTo( m_pauseTime );
63  if( m_timer.isActive() ){
64  m_timer.stop();
65  } else {
66  m_item->pause();
67  }
68 }
69 
70 void ParallelTrack::seek( double offset )
71 {
72  m_timer.stop();
73  m_progress = offset;
74  m_playTime = QDateTime::currentDateTime().addMSecs( -offset * 1000 );
75 
76  if( offset <= m_delayBeforeTrackStarts ){
77  if( !m_paused ){
78  m_pauseTime = QDateTime();
79  m_item->stop();
80  m_timer.start( ( m_delayBeforeTrackStarts - m_progress ) * 1000 );
81  } else {
82  m_pauseTime = QDateTime::currentDateTime();
83  }
84  } else {
85  if( !m_paused ){
86  m_pauseTime = QDateTime();
87  m_item->seek( offset - m_delayBeforeTrackStarts );
88  } else {
89  m_pauseTime = QDateTime::currentDateTime();
90  m_item->seek( offset - m_delayBeforeTrackStarts );
91  }
92  }
93 }
94 
95 void ParallelTrack::stop()
96 {
97  m_paused = true;
98  m_item->stop();
99  m_timer.stop();
100  m_playTime = QDateTime();
101  m_pauseTime = QDateTime();
102  m_progress = 0;
103 }
104 
105 void ParallelTrack::setPaused( bool pause )
106 {
107  m_paused = pause;
108 }
109 
110 }
111 
112 #include "ParallelTrack.moc"
QTimer::setInterval
void setInterval(int msec)
Marble::ParallelTrack::setPaused
void setPaused(bool)
Definition: ParallelTrack.cpp:105
Marble::ParallelTrack::playSlot
void playSlot()
Definition: ParallelTrack.cpp:53
Marble::ParallelTrack::ParallelTrack
ParallelTrack(PlaybackItem *item)
Definition: ParallelTrack.cpp:19
Marble::ParallelTrack::balloonHidden
void balloonHidden()
Marble::PlaybackItem::play
virtual void play()=0
PlaybackAnimatedUpdateItem.h
Marble::ParallelTrack::balloonShown
void balloonShown(GeoDataPlacemark *)
Marble::ParallelTrack::stop
void stop()
Definition: ParallelTrack.cpp:95
Marble::PlaybackItem::seek
virtual void seek(double position)=0
Marble::PlaybackItem::stop
virtual void stop()=0
QTimer::stop
void stop()
QDateTime::currentDateTime
QDateTime currentDateTime()
Marble::PlaybackItem
Definition: PlaybackItem.h:20
Marble::ParallelTrack::seek
void seek(double position)
Definition: ParallelTrack.cpp:70
Marble::ParallelTrack::pause
void pause()
Definition: ParallelTrack.cpp:58
Marble::PlaybackItem::pause
virtual void pause()=0
ParallelTrack.h
QTimer::start
void start(int msec)
Marble::ParallelTrack::setDelayBeforeTrackStarts
void setDelayBeforeTrackStarts(double delay)
Definition: ParallelTrack.cpp:30
PlaybackSoundCueItem.h
QTimer::isActive
bool isActive() const
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Marble::ParallelTrack::delayBeforeTrackStarts
double delayBeforeTrackStarts() const
Definition: ParallelTrack.cpp:37
Marble::GeoDataPlacemark
a class representing a point of interest on the map
Definition: GeoDataPlacemark.h:54
Marble::ParallelTrack::play
void play()
Definition: ParallelTrack.cpp:42
QDateTime
QDateTime::msecsTo
qint64 msecsTo(const QDateTime &other) const
QTimer::setSingleShot
void setSingleShot(bool singleShot)
QDateTime::addMSecs
QDateTime addMSecs(qint64 msecs) const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:41 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal