File indexing completed on 2024-04-21 03:40:43

0001 /*
0002     SPDX-FileCopyrightText: 2005 Albert Astals Cid <aacid@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "soundsplayer.h"
0008 
0009 #include "settings.h"
0010 
0011 #include <QStandardPaths>
0012 
0013 soundsPlayer::soundsPlayer()
0014     : m_audioOutput(Phonon::GameCategory)
0015 {
0016     m_audioOutput.setVolume( 0.8f );
0017     Phonon::createPath(&m_mediaObject, &m_audioOutput);
0018     connect(&m_mediaObject, &Phonon::MediaObject::finished, this, &soundsPlayer::playEnded);
0019 
0020     m_allSound = QStandardPaths::locate(QStandardPaths::AppLocalDataLocation, QStringLiteral("sounds/lose.wav"));
0021     m_greenSound = QStandardPaths::locate(QStandardPaths::AppLocalDataLocation, QStringLiteral("sounds/1.wav"));
0022     m_redSound = QStandardPaths::locate(QStandardPaths::AppLocalDataLocation, QStringLiteral("sounds/2.wav"));
0023     m_blueSound = QStandardPaths::locate(QStandardPaths::AppLocalDataLocation, QStringLiteral("sounds/3.wav"));
0024     m_yellowSound = QStandardPaths::locate(QStandardPaths::AppLocalDataLocation, QStringLiteral("sounds/4.wav"));
0025 
0026     connect(&m_warnTimer, &QTimer::timeout, this, &soundsPlayer::ended);
0027     m_warnTimer.setSingleShot(true);
0028 }
0029 
0030 soundsPlayer::~soundsPlayer()
0031 {
0032 }
0033 
0034 void soundsPlayer::play(blinkenGame::color c)
0035 {
0036     if (blinkenSettings::playSounds())
0037     {
0038         QString soundFile;
0039         switch (c)
0040         {
0041             case blinkenGame::red:
0042                 soundFile = m_redSound;
0043             break;
0044             
0045             case blinkenGame::green:
0046                 soundFile = m_greenSound;
0047             break;
0048             
0049             case blinkenGame::blue:
0050                 soundFile = m_blueSound;
0051             break;
0052             
0053             case blinkenGame::yellow:
0054                 soundFile = m_yellowSound;
0055             break;
0056             
0057             case blinkenGame::all:
0058                 soundFile = m_allSound;
0059             break;
0060             
0061             default:
0062             break;
0063         }
0064         if (!soundFile.isEmpty())
0065         {
0066             m_mediaObject.setCurrentSource(QUrl::fromLocalFile(soundFile));
0067             m_mediaObject.play();
0068         }
0069     }
0070     else
0071     {
0072         m_warnTimer.start(250);
0073     }
0074 }
0075 
0076 void soundsPlayer::playEnded()
0077 {
0078     if (blinkenSettings::playSounds())
0079     {
0080         m_warnTimer.start(250);
0081     }
0082 }
0083 
0084 #include "moc_soundsplayer.cpp"