@@ -22,6 +22,9 @@ Audio::Audio(QObject* parent):
22 QObject(parent),
22 QObject(parent),
23 m_playbackState(StoppedState)
23 m_playbackState(StoppedState)
26+ m_timer.setInterval(1000);
27+ connect(&m_timer, SIGNAL(timeout()), SLOT(timerEvent()));
27QUrl Audio::source() const
30QUrl Audio::source() const
@@ -34,6 +37,12 @@ void Audio::setSource(const QUrl &source)
34 if (m_source != source) {
37 if (m_source != source) {
35 m_source = source;
38 m_source = source;
36 Q_EMIT sourceChanged(source);
39 Q_EMIT sourceChanged(source);
42+ Q_EMIT positionChanged(m_position);
44+ m_duration = (qrand() % 20000) + 10000;
45+ Q_EMIT durationChanged(m_duration);
@@ -42,6 +51,16 @@ Audio::PlaybackState Audio::playbackState() const
42 return m_playbackState;
51 return m_playbackState;
54+int Audio::position() const
59+int Audio::duration() const
45QString Audio::errorString() const
64QString Audio::errorString() const
47 return QString();
66 return QString();
@@ -51,7 +70,8 @@ void Audio::pause()
52 if (m_playbackState == PlayingState) {
71 if (m_playbackState == PlayingState) {
53 m_playbackState = PausedState;
72 m_playbackState = PausedState;
54− Q_EMIT playbackStateChanged();
73+ Q_EMIT playbackStateChanged(m_playbackState);
@@ -59,7 +79,9 @@ void Audio::play()
60 if (m_playbackState != PlayingState && m_source.isValid()) {
80 if (m_playbackState != PlayingState && m_source.isValid()) {
61 m_playbackState = PlayingState;
81 m_playbackState = PlayingState;
62− Q_EMIT playbackStateChanged();
82+ Q_EMIT playbackStateChanged(m_playbackState);
@@ -67,6 +89,19 @@ void Audio::stop()
68 if (m_playbackState != StoppedState) {
90 if (m_playbackState != StoppedState) {
69 m_playbackState = StoppedState;
91 m_playbackState = StoppedState;
70− Q_EMIT playbackStateChanged();
92+ Q_EMIT playbackStateChanged(m_playbackState);
95+ Q_EMIT positionChanged(m_position);
99+void Audio::timerEvent()
101+ if (m_position + 1000 < m_duration) {
103+ Q_EMIT positionChanged(m_position);