diff --git a/src/core/player.cpp b/src/core/player.cpp index c231356..1342b92 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -1,105 +1,96 @@ /* - * Copyright 2013 Andreas Cord-Landwehr + * Copyright 2013-2019 Andreas Cord-Landwehr * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License or (at your option) version 3 or any later version * accepted by the membership of KDE e.V. (or its successor approved * by the membership of KDE e.V.), which shall act as a proxy * defined in Section 14 of version 3 of the license. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "player.h" #include "libsound/src/outputdevicecontroller.h" #include #include "artikulate_debug.h" #include #include Player::Player(QObject *parent) : QObject(parent) , m_soundFile(QString()) , m_playbackState(StoppedState) { } -Player::~Player() -{ - // nothing to do -} - void Player::setSoundFile(const QUrl &fileUrl) { - if (!fileUrl.isValid() || fileUrl.isEmpty()) { - qCWarning(ARTIKULATE_LOG) << "Not setting empty sound file path."; - return; - } m_soundFile = fileUrl; emit soundFileChanged(); } void Player::setSoundFile(const QString& fileUrl) { OutputDeviceController::self().stop(); setSoundFile(QUrl::fromLocalFile(fileUrl)); } QString Player::soundFile() const { return m_soundFile.toLocalFile(); } Player::PlaybackState Player::state() const { return m_playbackState; } void Player::playback() { OutputDeviceController::self().disconnect(); - if (m_soundFile.isEmpty()) { + if (!m_soundFile.isValid()) { qCritical() << "Abort playing sound, no file available"; return; } qCDebug(ARTIKULATE_LOG) << this << "Playback sound in file "<< m_soundFile.toLocalFile(); OutputDeviceController::self().play(QUrl::fromLocalFile(m_soundFile.toLocalFile())); m_playbackState = PlayingState; connect(&OutputDeviceController::self(), &OutputDeviceController::started, this, &Player::updateState); connect(&OutputDeviceController::self(), &OutputDeviceController::stopped, this, &Player::updateState); emit stateChanged(); } void Player::stop() { OutputDeviceController::self().stop(); OutputDeviceController::self().disconnect(); m_playbackState = StoppedState; emit stateChanged(); } void Player::updateState() { if (OutputDeviceController::self().state() == OutputDeviceController::StoppedState && state() == PlayingState ) { m_playbackState = StoppedState; emit stateChanged(); } if (OutputDeviceController::self().state() == OutputDeviceController::PlayingState && state() != PlayingState ) { m_playbackState = PlayingState; emit stateChanged(); } } diff --git a/src/core/player.h b/src/core/player.h index 49be2a2..e67a64c 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -1,65 +1,65 @@ /* - * Copyright 2013 Andreas Cord-Landwehr + * Copyright 2013-2019 Andreas Cord-Landwehr * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License or (at your option) version 3 or any later version * accepted by the membership of KDE e.V. (or its successor approved * by the membership of KDE e.V.), which shall act as a proxy * defined in Section 14 of version 3 of the license. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PLAYER_H #define PLAYER_H #include "artikulatecore_export.h" #include #include class ARTIKULATECORE_EXPORT Player : public QObject { Q_OBJECT Q_PROPERTY(QString soundFileUrl READ soundFile WRITE setSoundFile NOTIFY soundFileChanged) Q_PROPERTY(PlaybackState state READ state NOTIFY stateChanged) public: Q_ENUMS(PlaybackState) enum PlaybackState { StoppedState, PlayingState, PausedState }; - explicit Player(QObject *parent = 0); - ~Player(); + explicit Player(QObject *parent = nullptr); + ~Player() = default; Q_INVOKABLE void playback(); Q_INVOKABLE void stop(); PlaybackState state() const; void setSoundFile(const QUrl &fileUrl); void setSoundFile(const QString &fileUrl); QString soundFile() const; Q_SIGNALS: void stateChanged(); void soundFileChanged(); private Q_SLOTS: void updateState(); private: Q_DISABLE_COPY(Player) QUrl m_soundFile; PlaybackState m_playbackState; }; #endif // PLAYER_H