File indexing completed on 2025-02-09 05:31:46
0001 /* This file is part of the KDE project 0002 Copyright (C) 2006 Matthias Kretz <kretz@kde.org> 0003 0004 This library is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU Lesser General Public 0006 License as published by the Free Software Foundation; either 0007 version 2.1 of the License, or (at your option) version 3, or any 0008 later version accepted by the membership of KDE e.V. (or its 0009 successor approved by the membership of KDE e.V.), Nokia Corporation 0010 (or its successors, if any) and the KDE Free Qt Foundation, which shall 0011 act as a proxy defined in Section 6 of version 3 of the license. 0012 0013 This library is distributed in the hope that it will be useful, 0014 but WITHOUT ANY WARRANTY; without even the implied warranty of 0015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0016 Lesser General Public License for more details. 0017 0018 You should have received a copy of the GNU Lesser General Public 0019 License along with this library. If not, see <http://www.gnu.org/licenses/>. 0020 0021 */ 0022 0023 #ifndef AUDIOOUTPUT_P_H 0024 #define AUDIOOUTPUT_P_H 0025 0026 #include "audiooutput.h" 0027 #include "abstractaudiooutput_p.h" 0028 #include "phononconfig_p.h" 0029 #include "platform_p.h" 0030 0031 namespace Phonon 0032 { 0033 class AudioOutputAdaptor; 0034 0035 class AudioOutputPrivate : public AbstractAudioOutputPrivate 0036 { 0037 P_DECLARE_PUBLIC(AudioOutput) 0038 PHONON_PRIVATECLASS 0039 public: 0040 inline static AudioOutputPrivate *cast(MediaNodePrivate *x) 0041 { 0042 if (x && x->castId == MediaNodePrivate::AudioOutputType) { 0043 return static_cast<AudioOutputPrivate *>(x); 0044 } 0045 return nullptr; 0046 } 0047 void init(Phonon::Category c); 0048 QString getStreamUuid(); 0049 0050 0051 protected: 0052 AudioOutputPrivate(CastId castId = MediaNodePrivate::AudioOutputType) 0053 : AbstractAudioOutputPrivate(castId), 0054 name(Platform::applicationName()), 0055 volume(Platform::loadVolume(name)), 0056 deviceBeforeFallback(-1), 0057 outputDeviceOverridden(false), 0058 forceMove(false), 0059 muted(false) 0060 { 0061 } 0062 0063 ~AudioOutputPrivate() override; 0064 0065 enum DeviceChangeType { 0066 FallbackChange, 0067 HigherPreferenceChange, 0068 SoundSystemChange 0069 }; 0070 void handleAutomaticDeviceChange(const AudioOutputDevice &newDev, DeviceChangeType type); 0071 0072 void _k_volumeChanged(qreal); 0073 void _k_mutedChanged(bool); 0074 void _k_revertFallback(); 0075 void _k_audioDeviceFailed(); 0076 void _k_deviceListChanged(); 0077 void _k_deviceChanged(int deviceIndex); 0078 0079 private: 0080 QString name; 0081 Phonon::AudioOutputDevice device; 0082 qreal volume; 0083 QString streamUuid; 0084 Category category; 0085 int deviceBeforeFallback; 0086 bool outputDeviceOverridden; 0087 bool forceMove; 0088 bool muted; 0089 }; 0090 } //namespace Phonon 0091 0092 #endif // AUDIOOUTPUT_P_H 0093 // vim: sw=4 ts=4 tw=80