File indexing completed on 2024-11-10 04:50:03

0001 /*
0002  * SPDX-FileCopyrightText: 1996-1998 Stefan Taferner <taferner@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  *
0006  */
0007 
0008 #include "filteractionplaysound.h"
0009 
0010 #include "filter/dialog/filteractionmissingsoundurldialog.h"
0011 
0012 #include <phonon/mediaobject.h>
0013 
0014 #include <KLocalizedString>
0015 
0016 #include <QFile>
0017 #include <QPointer>
0018 
0019 using namespace MailCommon;
0020 
0021 FilterActionPlaySound::FilterActionPlaySound()
0022     : FilterActionWithTest(QStringLiteral("play sound"), i18n("Play Sound"))
0023 {
0024 }
0025 
0026 FilterActionPlaySound::~FilterActionPlaySound()
0027 {
0028     delete mPlayer;
0029 }
0030 
0031 FilterAction *FilterActionPlaySound::newAction()
0032 {
0033     return new FilterActionPlaySound();
0034 }
0035 
0036 bool FilterActionPlaySound::isEmpty() const
0037 {
0038     return mParameter.isEmpty();
0039 }
0040 
0041 FilterAction::ReturnCode FilterActionPlaySound::process(ItemContext &, bool) const
0042 {
0043     if (isEmpty()) {
0044         return ErrorButGoOn;
0045     }
0046     if (!mPlayer) {
0047         mPlayer = Phonon::createPlayer(Phonon::NotificationCategory);
0048     }
0049 
0050     mPlayer->setCurrentSource(mParameter);
0051     mPlayer->play();
0052     return GoOn;
0053 }
0054 
0055 SearchRule::RequiredPart FilterActionPlaySound::requiredPart() const
0056 {
0057     return SearchRule::Envelope;
0058 }
0059 
0060 bool FilterActionPlaySound::argsFromStringInteractive(const QString &argsStr, const QString &filterName)
0061 {
0062     bool needUpdate = false;
0063     argsFromString(argsStr);
0064     if (!QFile(mParameter).exists()) {
0065         QPointer<MailCommon::FilterActionMissingSoundUrlDialog> dlg = new MailCommon::FilterActionMissingSoundUrlDialog(filterName, argsStr);
0066         if (dlg->exec()) {
0067             mParameter = dlg->soundUrl();
0068             needUpdate = true;
0069         }
0070         delete dlg;
0071     }
0072     return needUpdate;
0073 }
0074 
0075 QString FilterActionPlaySound::informationAboutNotValidAction() const
0076 {
0077     return i18n("Sound file was not defined.");
0078 }
0079 
0080 #include "moc_filteractionplaysound.cpp"