Mailcommon

filteractionplaysound.cpp
1/*
2 * SPDX-FileCopyrightText: 1996-1998 Stefan Taferner <taferner@kde.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 *
6 */
7
8#include "filteractionplaysound.h"
9
10#include "filter/dialog/filteractionmissingsoundurldialog.h"
11
12#include <KLocalizedString>
13
14#include <QAudioOutput>
15#include <QFile>
16#include <QMediaPlayer>
17#include <QPointer>
18
19using namespace MailCommon;
20
21FilterActionPlaySound::FilterActionPlaySound()
22 : FilterActionWithTest(QStringLiteral("play sound"), i18n("Play Sound"))
23{
24}
25
26FilterActionPlaySound::~FilterActionPlaySound()
27{
28 delete mPlayer;
29}
30
31FilterAction *FilterActionPlaySound::newAction()
32{
33 return new FilterActionPlaySound();
34}
35
36bool FilterActionPlaySound::isEmpty() const
37{
38 return mParameter.isEmpty();
39}
40
41FilterAction::ReturnCode FilterActionPlaySound::process(ItemContext &, bool) const
42{
43 if (isEmpty()) {
44 return ErrorButGoOn;
45 }
46 if (!mPlayer) {
47 mPlayer = new QMediaPlayer();
48 mPlayer->setAudioOutput(new QAudioOutput(mPlayer));
49 }
50
51 mPlayer->setSource(QUrl::fromLocalFile(mParameter));
52 mPlayer->play();
53 return GoOn;
54}
55
56SearchRule::RequiredPart FilterActionPlaySound::requiredPart() const
57{
59}
60
61bool FilterActionPlaySound::argsFromStringInteractive(const QString &argsStr, const QString &filterName)
62{
63 bool needUpdate = false;
64 argsFromString(argsStr);
65 if (!QFile(mParameter).exists()) {
66 QPointer<MailCommon::FilterActionMissingSoundUrlDialog> dlg = new MailCommon::FilterActionMissingSoundUrlDialog(filterName, argsStr);
67 if (dlg->exec()) {
68 mParameter = dlg->soundUrl();
69 needUpdate = true;
70 }
71 delete dlg;
72 }
73 return needUpdate;
74}
75
76QString FilterActionPlaySound::informationAboutNotValidAction() const
77{
78 return i18n("Sound file was not defined.");
79}
80
81#include "moc_filteractionplaysound.cpp"
Abstract base class for mail filter actions.
virtual void argsFromString(const QString &argsStr)=0
Read extra arguments from given string.
ReturnCode
Describes the possible return codes of filter processing:
@ ErrorButGoOn
A non-critical error occurred.
@ GoOn
Go on with applying filter actions.
A helper class for the filtering process.
Definition itemcontext.h:27
RequiredPart
Possible required parts.
Definition searchrule.h:70
QString i18n(const char *text, const TYPE &arg...)
The filter dialog.
QUrl fromLocalFile(const QString &localFile)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 31 2025 11:58:04 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.