summaryrefslogtreecommitdiffstats
path: root/khotkeys/shared/conditions.h
diff options
context:
space:
mode:
Diffstat (limited to 'khotkeys/shared/conditions.h')
-rw-r--r--khotkeys/shared/conditions.h296
1 files changed, 296 insertions, 0 deletions
diff --git a/khotkeys/shared/conditions.h b/khotkeys/shared/conditions.h
new file mode 100644
index 000000000..59133f4d3
--- /dev/null
+++ b/khotkeys/shared/conditions.h
@@ -0,0 +1,296 @@
+/****************************************************************************
+
+ KHotKeys
+
+ Copyright (C) 1999-2001 Lubos Lunak <[email protected]>
+
+ Distributed under the terms of the GNU General Public License version 2.
+
+****************************************************************************/
+
+#ifndef _CONDITIONS_H_
+#define _CONDITIONS_H_
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qstring.h>
+
+#include "khotkeysglobal.h"
+#include "windows.h"
+
+#include <X11/Xlib.h>
+#include <fixx11h.h>
+
+class KConfig;
+
+namespace KHotKeys
+{
+
+class Action_data_base;
+class Action_data;
+class Condition_list_base;
+
+class KDE_EXPORT Condition
+ {
+ public:
+ Condition( Condition_list_base* parent_P );
+ Condition( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual ~Condition();
+ virtual bool match() const = 0;
+ virtual void updated() const; // called when the condition changes
+ virtual void cfg_write( KConfig& cfg_P ) const = 0;
+ virtual const QString description() const = 0;
+ virtual Condition* copy( Condition_list_base* parent_P ) const = 0;
+ const Condition_list_base* parent() const;
+ Condition_list_base* parent();
+ static Condition* create_cfg_read( KConfig& cfg_P, Condition_list_base* parent_P );
+ protected:
+ Condition_list_base* const _parent;
+ KHOTKEYS_DISABLE_COPY( Condition );
+ };
+
+class KDE_EXPORT Condition_list_base
+ : public Condition, public QPtrList< Condition > // inheritance ?
+ {
+ typedef Condition base;
+ public:
+ Condition_list_base( Condition_list_base* parent_P );
+ Condition_list_base( const QPtrList< Condition >& children_P,
+ Condition_list_base* parent_P );
+ Condition_list_base( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual ~Condition_list_base();
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual bool accepts_children() const;
+ typedef QPtrListIterator< Condition > Iterator;
+ };
+
+class KDE_EXPORT Condition_list
+ : public Condition_list_base
+ {
+ typedef Condition_list_base base;
+ public:
+ Condition_list( const QString& comment_P, Action_data_base* data_P );
+ Condition_list( KConfig& cfg_P, Action_data_base* data_P );
+ void cfg_write( KConfig& cfg_P ) const;
+ Condition_list* copy( Action_data_base* data_P ) const;
+ virtual bool match() const;
+ const QString& comment() const;
+ void set_data( Action_data_base* data_P );
+ virtual void updated() const;
+ virtual Condition_list* copy( Condition_list_base* parent_P ) const;
+ virtual const QString description() const;
+ private:
+ QString _comment;
+ Action_data_base* data;
+ };
+
+class KDE_EXPORT Active_window_condition
+ : public QObject, public Condition
+ {
+ Q_OBJECT
+ typedef Condition base;
+ public:
+ Active_window_condition( Windowdef_list* window_P, Condition_list_base* parent_P );
+ Active_window_condition( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual ~Active_window_condition();
+ virtual bool match() const;
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ const Windowdef_list* window() const;
+#ifndef COVARIANT_RETURN_BROKEN
+ virtual Active_window_condition* copy( Condition_list_base* parent_P ) const;
+#else
+ virtual Condition* copy( Condition_list_base* parent_P ) const;
+#endif
+ virtual const QString description() const;
+ public slots:
+ void active_window_changed( WId );
+ private:
+ void init();
+ void set_match();
+ Windowdef_list* _window;
+ bool is_match;
+ };
+
+class KDE_EXPORT Existing_window_condition
+ : public QObject, public Condition
+ {
+ Q_OBJECT
+ typedef Condition base;
+ public:
+ Existing_window_condition( Windowdef_list* window_P, Condition_list_base* parent_P );
+ Existing_window_condition( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual ~Existing_window_condition();
+ virtual bool match() const;
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ const Windowdef_list* window() const;
+#ifndef COVARIANT_RETURN_BROKEN
+ virtual Existing_window_condition* copy( Condition_list_base* parent_P ) const;
+#else
+ virtual Condition* copy( Condition_list_base* parent_P ) const;
+#endif
+ virtual const QString description() const;
+ public slots:
+ void window_added( WId w_P );
+ void window_removed( WId w_P );
+ private:
+ void init();
+ void set_match( WId w_P = None );
+ Windowdef_list* _window;
+ bool is_match;
+ };
+
+class KDE_EXPORT Not_condition
+ : public Condition_list_base
+ {
+ typedef Condition_list_base base;
+ public:
+ Not_condition( Condition_list_base* parent_P );
+ Not_condition( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual bool match() const;
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual Not_condition* copy( Condition_list_base* parent_P ) const;
+ virtual const QString description() const;
+ const Condition* condition() const;
+ virtual bool accepts_children() const;
+ };
+
+class KDE_EXPORT And_condition
+ : public Condition_list_base
+ {
+ typedef Condition_list_base base;
+ public:
+ And_condition( Condition_list_base* parent_P );
+ And_condition( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual bool match() const;
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual And_condition* copy( Condition_list_base* parent_P ) const;
+ virtual const QString description() const;
+ };
+
+class KDE_EXPORT Or_condition
+ : public Condition_list_base
+ {
+ typedef Condition_list_base base;
+ public:
+ Or_condition( Condition_list_base* parent_P );
+ Or_condition( KConfig& cfg_P, Condition_list_base* parent_P );
+ virtual bool match() const;
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual Or_condition* copy( Condition_list_base* parent_P ) const;
+ virtual const QString description() const;
+ };
+
+//***************************************************************************
+// Inline
+//***************************************************************************
+
+// Condition
+
+inline
+const Condition_list_base* Condition::parent() const
+ {
+ return _parent;
+ }
+
+inline
+Condition_list_base* Condition::parent()
+ {
+ return _parent;
+ }
+
+// Condition_list_base
+
+inline
+Condition_list_base::Condition_list_base( Condition_list_base* parent_P )
+ : Condition( parent_P ), QPtrList< Condition >()
+ {
+ }
+
+inline
+Condition_list_base::Condition_list_base( const QPtrList< Condition >& children_P,
+ Condition_list_base* parent_P )
+ : Condition( parent_P ), QPtrList< Condition >( children_P )
+ {
+ }
+
+// Condition_list
+
+inline
+Condition_list::Condition_list( const QString& comment_P, Action_data_base* data_P )
+ : Condition_list_base( NULL ), _comment( comment_P ), data( data_P )
+ {
+ }
+
+inline
+const QString& Condition_list::comment() const
+ {
+ return _comment;
+ }
+
+// Active_window_condition
+
+inline
+Active_window_condition::Active_window_condition( Windowdef_list* window_P,
+ Condition_list_base* parent_P )
+ : Condition( parent_P ), _window( window_P )
+ {
+ init();
+ set_match();
+ }
+
+inline
+const Windowdef_list* Active_window_condition::window() const
+ {
+ return _window;
+ }
+
+// Existing_window_condition
+
+inline
+Existing_window_condition::Existing_window_condition( Windowdef_list* window_P,
+ Condition_list_base* parent_P )
+ : Condition( parent_P ), _window( window_P ), is_match( false )
+ {
+ init();
+ set_match();
+ }
+
+inline
+const Windowdef_list* Existing_window_condition::window() const
+ {
+ return _window;
+ }
+
+// Not_condition
+
+inline
+Not_condition::Not_condition( Condition_list_base* parent_P )
+ : Condition_list_base( parent_P )
+ {
+ }
+
+inline
+const Condition* Not_condition::condition() const
+ {
+ return getFirst();
+ }
+
+// And_condition
+
+inline
+And_condition::And_condition( Condition_list_base* parent_P )
+ : Condition_list_base( parent_P )
+ {
+ }
+
+// Or_condition
+
+inline
+Or_condition::Or_condition( Condition_list_base* parent_P )
+ : Condition_list_base( parent_P )
+ {
+ }
+
+} // namespace KHotKeys
+
+#endif