summaryrefslogtreecommitdiffstats
path: root/arts/knotify/knotify.h
blob: 12e699299ef709239988f27f661892a972fdb9db (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 (esken@kde.org)

   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 <tqobject.h>
#include <knotifyclient.h>
#include <dcopobject.h>

class KNotifyPrivate;
class KProcess;
class KConfig;

class KNotify : public TQObject, 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 TQString &event, const TQString &fromApp,
                         const TQString &text, TQString sound, TQString file,
                         int present, int level);

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

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


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

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

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

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

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

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


#endif