summaryrefslogtreecommitdiffstats
path: root/arts/knotify/knotify.h
blob: c98be2e97f0c4aeed124e4789f77699aa14f22a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
   Copyright (c) 1997 Christian Esken ([email protected])

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program 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 General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

*/

#ifndef KNOTIFY_H
#define KNOTIFY_H

#include <qobject.h>
#include <knotifyclient.h>
#include <dcopobject.h>

class KNotifyPrivate;
class KProcess;
class KConfig;

class KNotify : public QObject, public DCOPObject
{
Q_OBJECT
K_DCOP

public:
	KNotify( bool useArts );
	~KNotify();

    enum PlayingFinishedStatus
    {
        PlayedOK = 0,        // success, all following mean failure
        NoSoundFile,
        FileAlreadyPlaying,
        NoSoundSupport,
        PlayerBusy,
        Aborted,
        Unknown = 5000
    };

protected:
k_dcop:
	// deprecated
	void notify(const QString &event, const QString &fromApp,
                         const QString &text, QString sound, QString file,
                         int present, int level);

	// deprecated
	void notify(const QString &event, const QString &fromApp,
                         const QString &text, QString sound, QString file,
                         int present, int level, int winId);

	void notify(const QString &event, const QString &fromApp,
                         const QString &text, QString sound, QString file,
                         int present, int level, int winId, int eventId);


	void reconfigure();
	void setVolume( int volume );
        void sessionReady(); // from ksmserver

private:
	bool notifyBySound(const QString &sound, const QString &appname, int eventId);
	bool notifyByMessagebox(const QString &text, int level, WId winId);
	bool notifyByLogfile(const QString &text, const QString &file);
	bool notifyByStderr(const QString &text);
	bool notifyByPassivePopup(const QString &text, const QString &appName,
                                  KConfig* eventsFile, WId winId );
	bool notifyByExecute(const QString &command, 
                             const QString& event, 
                             const QString& fromApp, 
                             const QString& text,
                             int winId,
                             int eventId );
    bool notifyByTaskbar( WId winId );
	
	bool isPlaying( const QString& soundFile ) const;

    void soundFinished( int eventId, PlayingFinishedStatus reason );
    void abortFirstPlayObject();
	
        WId checkWinId( const QString& appName, WId senderWinId );

	/**
	 * checks if eventname is a global event (exists in config/eventsrc)
	 **/
	bool isGlobal(const QString &eventname);

private slots:
    void playTimeout();
    void slotPlayerProcessExited( KProcess *proc );
    void restartedArtsd();

private:
    KNotifyPrivate* d;
    void loadConfig();
};


#endif