1
by Philip Muškovac
Import upstream version 4.6.90 |
1 |
/*
|
2 |
Copyright (C) 2005-2006 by Olivier Goffart <ogoffart at kde.org>
|
|
3 |
||
4 |
||
5 |
This program is free software; you can redistribute it and/or modify
|
|
6 |
it under the terms of the GNU General Public License as published by
|
|
7 |
the Free Software Foundation; either version 2, or (at your option)
|
|
8 |
any later version.
|
|
9 |
||
10 |
This program is distributed in the hope that it will be useful,
|
|
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13 |
GNU General Public License for more details.
|
|
14 |
||
15 |
You should have received a copy of the GNU General Public License
|
|
16 |
along with this program; if not, write to the Free Software
|
|
17 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
18 |
||
19 |
*/
|
|
20 |
||
21 |
#include "notifybyexecute.h" |
|
22 |
||
23 |
#include <QHash> |
|
24 |
#include <KProcess> |
|
25 |
#include <knotifyconfig.h> |
|
26 |
||
27 |
#include <kdebug.h> |
|
28 |
#include <kmacroexpander.h> |
|
29 |
||
30 |
||
31 |
||
32 |
||
33 |
NotifyByExecute::NotifyByExecute(QObject *parent) : KNotifyPlugin(parent) |
|
34 |
{
|
|
35 |
}
|
|
36 |
||
37 |
||
38 |
NotifyByExecute::~NotifyByExecute() |
|
39 |
{
|
|
40 |
}
|
|
41 |
||
42 |
||
43 |
||
44 |
void NotifyByExecute::notify( int id, KNotifyConfig * config ) |
|
45 |
{
|
|
46 |
QString command=config->readEntry( "Execute" ); |
|
47 |
||
48 |
kDebug() << command; |
|
49 |
||
50 |
if (!command.isEmpty()) { |
|
51 |
// kDebug() << "executing command '" << command << "'";
|
|
52 |
QHash<QChar,QString> subst; |
|
53 |
subst.insert( 'e', config->eventid ); |
|
54 |
subst.insert( 'a', config->appname ); |
|
55 |
subst.insert( 's', config->text ); |
|
56 |
subst.insert( 'w', QString::number( (quintptr)config->winId )); |
|
57 |
subst.insert( 'i', QString::number( id )); |
|
58 |
QString execLine = KMacroExpander::expandMacrosShellQuote( command, subst ); |
|
59 |
if ( execLine.isEmpty() ) |
|
60 |
execLine = command; // fallback |
|
61 |
KProcess proc; |
|
62 |
proc.setShellCommand(execLine.trimmed()); |
|
63 |
if(!proc.startDetached()) |
|
64 |
kDebug()<<"KNotify: Could not start process!"; |
|
65 |
}
|
|
66 |
||
67 |
finish( id ); |
|
68 |
}
|
|
69 |
||
70 |
#include "notifybyexecute.moc" |