Warning, file /utilities/kclock/src/kclockd/alarmplayer.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * Copyright 2020 Han Young <hanyoung@protonmail.com>
0003  * Copyright 2020 Devin Lin <devin@kde.org>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #pragma once
0009 
0010 #include <QMediaPlayer>
0011 #include <QObject>
0012 
0013 #include <QAudioOutput>
0014 
0015 class AlarmPlayer : public QObject
0016 {
0017     Q_OBJECT
0018     Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged)
0019 
0020 public:
0021     static AlarmPlayer &instance();
0022 
0023     int volume();
0024     Q_INVOKABLE void setVolume(int volume);
0025     Q_INVOKABLE void setSource(const QUrl &path);
0026     Q_INVOKABLE void play();
0027     Q_INVOKABLE void stop();
0028 
0029 Q_SIGNALS:
0030     void volumeChanged();
0031 
0032 protected:
0033     explicit AlarmPlayer(QObject *parent = nullptr);
0034 
0035 private:
0036     QMediaPlayer *m_player;
0037     QAudioOutput *m_audio;
0038     quint64 startPlayingTime = 0;
0039 
0040     bool userStop = false; // indicate if user asks to stop
0041 
0042 private Q_SLOTS:
0043     void loopAudio(QMediaPlayer::PlaybackState state);
0044 };