/* This file is part of the KDE project. Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 or 3 of the License. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include "audioequalizer.h" #include "bassboost.h" #include "effectfactory.h" QT_BEGIN_NAMESPACE using namespace Phonon; using namespace Phonon::MMF; QHash EffectFactory::constructEffectDescription(const QString &name, const QString &description) { QHash retval; retval.insert("name", name); retval.insert("description", description); retval.insert("available", true); return retval; } QHash EffectFactory::audioEffectDescriptions(AbstractAudioEffect::Type type) { switch (type) { case AbstractAudioEffect::EffectAudioEqualizer: return constructEffectDescription(QObject::tr("audio equalizer"), "Audio equalizer."); case AbstractAudioEffect::EffectBassBoost: return constructEffectDescription(QObject::tr("Bass boost"), "Bass boost."); case AbstractAudioEffect::EffectDistanceAttenuation: return constructEffectDescription(QObject::tr("Distance Attenuation"), "Distance Attenuation."); case AbstractAudioEffect::EffectEnvironmentalReverb: return constructEffectDescription(QObject::tr("Environmental Reverb"), "Environmental Reverb."); case AbstractAudioEffect::EffectListenerOrientation: return constructEffectDescription(QObject::tr("Environmental Reverb"), "Environmental Reverb."); case AbstractAudioEffect::EffectLoudness: return constructEffectDescription(QObject::tr("Loudness"), "Loudness."); //case EffectRoomLevel: case AbstractAudioEffect::EffectSourceOrientation: return constructEffectDescription(QObject::tr("Source Orientation"), "Source Orientation."); case AbstractAudioEffect::EffectStereoWidening: return constructEffectDescription(QObject::tr("Stereo Widening"), "Stereo Widening."); } Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown effect type."); return QHash(); } AbstractAudioEffect *EffectFactory::createAudioEffect(AbstractAudioEffect::Type type, QObject *parent) { Q_ASSERT(parent); switch (type) { case AbstractAudioEffect::EffectBassBoost: return new BassBoost(parent); case AbstractAudioEffect::EffectAudioEqualizer: return new AudioEqualizer(parent); case AbstractAudioEffect::EffectDistanceAttenuation: case AbstractAudioEffect::EffectEnvironmentalReverb: case AbstractAudioEffect::EffectListenerOrientation: case AbstractAudioEffect::EffectLoudness: //AbstractAudioEffect::EffectRoomLevel, case AbstractAudioEffect::EffectSourceOrientation: case AbstractAudioEffect::EffectStereoWidening: ; } Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown effect."); return 0; } template bool isEffectSupported() { AudioPlayer audioPlayer; QScopedPointer eff; TRAPD(errorCode, eff.reset(TEffect::NewL(*audioPlayer.player()))); return errorCode != KErrNone; } QList EffectFactory::effectIndexes() { QList retval; if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectAudioEqualizer); if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectBassBoost); if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectDistanceAttenuation); if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectEnvironmentalReverb); if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectLoudness); if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectListenerOrientation); if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectSourceOrientation); /* if (isEffectSupported()) retval.append(EffectRoomLevel); */ if (isEffectSupported()) retval.append(AbstractAudioEffect::EffectStereoWidening); return retval; } QT_END_NAMESPACE