summaryrefslogtreecommitdiffstats
path: root/arts/knotify/knotify.h
blob: 8348f3d40e6449ed99b8f734debb8fd42855a179 (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
/*
   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 <tqobject.h>
#include <knotifyclient.h>
#include <dcopobject.h>

class KNotifyPrivate;
class TDEProcess;
class TDEConfig;

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, TDEConfig* 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( TDEProcess *proc );
		void restartedArtsd();
	
	private:
		KNotifyPrivate* d;
		void loadConfig();
};


#endif