diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-04-30 14:36:49 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-04-30 14:36:49 +0000 |
| commit | 4fa75cf5e6e7f0abe43d68342d1f7ff993c0c3f6 (patch) | |
| tree | 729e22ba18e78ac024237308de3e82f09b3218c5 | |
| parent | ad55f26545292e0dc2ffc66a43f8bd3b74eb32bc (diff) | |
| download | qmmp-4fa75cf5e6e7f0abe43d68342d1f7ff993c0c3f6.tar.gz qmmp-4fa75cf5e6e7f0abe43d68342d1f7ff993c0c3f6.tar.bz2 qmmp-4fa75cf5e6e7f0abe43d68342d1f7ff993c0c3f6.zip | |
added SoundCore::trackInfo method
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7939 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/qmmp/qmmpevents.cpp | 14 | ||||
| -rw-r--r-- | src/qmmp/qmmpevents_p.h | 16 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 10 | ||||
| -rw-r--r-- | src/qmmp/soundcore.h | 4 | ||||
| -rw-r--r-- | src/qmmp/statehandler.cpp | 11 | ||||
| -rw-r--r-- | src/qmmp/statehandler.h | 1 | ||||
| -rw-r--r-- | src/qmmp/trackinfo.cpp | 13 | ||||
| -rw-r--r-- | src/qmmp/trackinfo.h | 2 |
8 files changed, 68 insertions, 3 deletions
diff --git a/src/qmmp/qmmpevents.cpp b/src/qmmp/qmmpevents.cpp index 6ccf738b3..5f49629a1 100644 --- a/src/qmmp/qmmpevents.cpp +++ b/src/qmmp/qmmpevents.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2011 by Ilya Kotov * + * Copyright (C) 2011-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -69,3 +69,15 @@ QHash<QString, QString>StreamInfoChangedEvent::streamInfo() const { return m_streamInfo; } + +TrackInfoEvent::TrackInfoEvent(const TrackInfo &info) : QEvent(EVENT_TRACK_INFO_CHANGED) +{ + m_info = info; +} + +TrackInfoEvent::~TrackInfoEvent(){} + +const TrackInfo &TrackInfoEvent::trackInfo() const +{ + return m_info; +} diff --git a/src/qmmp/qmmpevents_p.h b/src/qmmp/qmmpevents_p.h index 39c866bbb..8fd316f70 100644 --- a/src/qmmp/qmmpevents_p.h +++ b/src/qmmp/qmmpevents_p.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2011-2012 by Ilya Kotov * + * Copyright (C) 2011-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,6 +24,7 @@ #include <QMap> #include <QHash> #include <QEvent> +#include "trackinfo.h" #include "qmmp.h" #define EVENT_STATE_CHANGED (QEvent::Type(QEvent::User)) /*!< @internal */ @@ -31,6 +32,7 @@ #define EVENT_FINISHED (QEvent::Type(QEvent::User + 2)) /*!< @internal */ #define EVENT_METADATA_CHANGED (QEvent::Type(QEvent::User + 3)) /*!< @internal */ #define EVENT_STREAM_INFO_CHANGED (QEvent::Type(QEvent::User + 4)) /*!< @internal */ +#define EVENT_TRACK_INFO_CHANGED (QEvent::Type(QEvent::User + 5)) /*!< @internal */ /*! @internal * @author Ilya Kotov <forkotov02@ya.ru> @@ -88,4 +90,16 @@ private: QHash<QString, QString> m_streamInfo; }; +class TrackInfoEvent : QEvent +{ +public: + TrackInfoEvent(const TrackInfo &info); + virtual ~TrackInfoEvent(); + + const TrackInfo &trackInfo() const; + +private: + TrackInfo m_info; +}; + #endif // QMMPEVENTS_P_H diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 90a28966a..bcf7369c5 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -255,6 +255,11 @@ QHash<QString, QString> SoundCore::streamInfo() const return m_streamInfo; } +const TrackInfo &SoundCore::trackInfo() const +{ + return m_info; +} + void SoundCore::startNextSource() { if(m_sources.isEmpty()) @@ -371,6 +376,11 @@ bool SoundCore::event(QEvent *e) m_streamInfo = ((StreamInfoChangedEvent *) e)->streamInfo(); emit streamInfoChanged(); } + else if(e->type() == EVENT_TRACK_INFO_CHANGED) + { + m_info = ((TrackInfoEvent *) e)->trackInfo(); + emit trackInfoChanged(); + } else if(e->type() == EVENT_NEXT_TRACK_REQUEST) emit nextTrackRequest(); else if(e->type() == EVENT_FINISHED) diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h index 5084fafe6..1b567aa16 100644 --- a/src/qmmp/soundcore.h +++ b/src/qmmp/soundcore.h @@ -31,6 +31,7 @@ #include "qmmpsettings.h" #include "audioparameters.h" #include "eqsettings.h" +#include "trackinfo.h" class VolumeControl; class AbstractEngine; @@ -113,6 +114,7 @@ public: * Returns a hash of stream information if available */ QHash<QString, QString> streamInfo() const; + const TrackInfo &trackInfo() const; /*! * Indicates that the current active engine will be used for the next queued track. * May be useful for some effect plugins. @@ -209,6 +211,7 @@ signals: * Emitted when new stream information is available. */ void streamInfoChanged(); + void trackInfoChanged(); /*! * This signal is emitted when the state of the SoundCore has changed. */ @@ -262,6 +265,7 @@ private: }; QMap <Qmmp::MetaData, QString> m_metaData; QHash <QString, QString> m_streamInfo; + TrackInfo m_info; QString m_url; static SoundCore* m_instance; StateHandler *m_handler; diff --git a/src/qmmp/statehandler.cpp b/src/qmmp/statehandler.cpp index 4abc4669a..181e07435 100644 --- a/src/qmmp/statehandler.cpp +++ b/src/qmmp/statehandler.cpp @@ -122,6 +122,15 @@ void StateHandler::dispatch(const QMap<Qmmp::MetaData, QString> &metaData) qApp->postEvent(parent(), new MetaDataChangedEvent(m_metaData)); } } + if(m_info.isEmpty() || m_info.path() == metaData.value(Qmmp::URL)) + { + if(m_info.metaData() != tmp) + { + m_info.setValues(tmp); + m_info.setPath(metaData.value(Qmmp::URL)); + } + } + m_mutex.unlock(); } @@ -152,7 +161,7 @@ void StateHandler::dispatch(Qmmp::State state) { m_elapsed = -1; m_bitrate = 0; - m_metaData.clear(); + m_info.clear(); m_streamInfo.clear(); m_audioParameters = AudioParameters(); m_sendAboutToFinish = true; diff --git a/src/qmmp/statehandler.h b/src/qmmp/statehandler.h index 56692a517..a98be51f7 100644 --- a/src/qmmp/statehandler.h +++ b/src/qmmp/statehandler.h @@ -140,6 +140,7 @@ private: int m_bitrate; static StateHandler* m_instance; QMap <Qmmp::MetaData, QString> m_metaData; + TrackInfo m_info; QHash <QString, QString> m_streamInfo; Qmmp::State m_state; AudioParameters m_audioParameters; diff --git a/src/qmmp/trackinfo.cpp b/src/qmmp/trackinfo.cpp index b2170357e..6561bfb3b 100644 --- a/src/qmmp/trackinfo.cpp +++ b/src/qmmp/trackinfo.cpp @@ -21,6 +21,12 @@ #include <QRegExp> #include "trackinfo.h" +TrackInfo::TrackInfo() +{ + m_duration = 0; + m_parts = NoParts; +} + TrackInfo::TrackInfo(const QString &path) { m_path = path; @@ -213,3 +219,10 @@ void TrackInfo::clear(Parts parts) m_replayGainInfo.clear(); m_parts &= ~parts; } + +void TrackInfo::clear() +{ + clear(AllParts); + m_path.clear(); + m_duration = 0; +} diff --git a/src/qmmp/trackinfo.h b/src/qmmp/trackinfo.h index 6bde5ce50..ed8538eeb 100644 --- a/src/qmmp/trackinfo.h +++ b/src/qmmp/trackinfo.h @@ -28,6 +28,7 @@ class QMMP_EXPORT TrackInfo { public: + TrackInfo(); TrackInfo(const QString &path); TrackInfo(const TrackInfo &other); ~TrackInfo(); @@ -70,6 +71,7 @@ public: void setPath(const QString &path); void setParts(Parts parts); void clear(Parts parts); + void clear(); private: QMap<Qmmp::MetaData, QString> m_metaData; |
