summaryrefslogtreecommitdiffstats
path: root/khotkeys/shared/actions.h
diff options
context:
space:
mode:
Diffstat (limited to 'khotkeys/shared/actions.h')
-rw-r--r--khotkeys/shared/actions.h305
1 files changed, 305 insertions, 0 deletions
diff --git a/khotkeys/shared/actions.h b/khotkeys/shared/actions.h
new file mode 100644
index 000000000..5295d5be9
--- /dev/null
+++ b/khotkeys/shared/actions.h
@@ -0,0 +1,305 @@
+/****************************************************************************
+
+ KHotKeys
+
+ Copyright (C) 1999-2001 Lubos Lunak <[email protected]>
+
+ Distributed under the terms of the GNU General Public License version 2.
+
+****************************************************************************/
+
+#ifndef _ACTIONS_H_
+#define _ACTIONS_H_
+
+
+#include <qstring.h>
+#include <qptrlist.h>
+#include <qtimer.h>
+
+#include <kservice.h>
+
+class KConfig;
+
+#include "khotkeysglobal.h"
+
+namespace KHotKeys
+{
+
+class Action_data;
+class Windowdef_list;
+
+// this one is a base for all "real" resulting actions, e.g. running a command,
+// Action_data instances usually contain at least one Action
+class KDE_EXPORT Action
+ {
+ public:
+ Action( Action_data* data_P );
+ Action( KConfig& cfg_P, Action_data* data_P );
+ virtual ~Action();
+ virtual void execute() = 0;
+ virtual QString description() const = 0;
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual Action* copy( Action_data* data_P ) const = 0;
+ static Action* create_cfg_read( KConfig& cfg_P, Action_data* data_P );
+ protected:
+ Action_data* const data;
+ KHOTKEYS_DISABLE_COPY( Action );
+ };
+
+class KDE_EXPORT Action_list
+ : public QPtrList< Action >
+ {
+ public:
+ Action_list( const QString& comment_P ); // CHECKME nebo i data ?
+ Action_list( KConfig& cfg_P, Action_data* data_P );
+ void cfg_write( KConfig& cfg_P ) const;
+ typedef QPtrListIterator< Action > Iterator;
+ const QString& comment() const;
+ private:
+ QString _comment;
+ KHOTKEYS_DISABLE_COPY( Action_list );
+ };
+
+class KDE_EXPORT Command_url_action
+ : public Action
+ {
+ typedef Action base;
+ public:
+ Command_url_action( Action_data* data_P, const QString& command_url_P );
+ Command_url_action( KConfig& cfg_P, Action_data* data_P );
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual void execute();
+ virtual QString description() const;
+ const QString& command_url() const;
+ virtual Action* copy( Action_data* data_P ) const;
+ protected:
+ QTimer timeout;
+ private:
+ QString _command_url;
+ };
+
+class KDE_EXPORT Menuentry_action
+ : public Command_url_action
+ {
+ typedef Command_url_action base;
+ public:
+ Menuentry_action( Action_data* data_P, const QString& menuentry_P );
+ Menuentry_action( KConfig& cfg_P, Action_data* data_P );
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual void execute();
+ virtual QString description() const;
+ virtual Action* copy( Action_data* data_P ) const;
+ KService::Ptr service() const;
+ private:
+ KService::Ptr _service;
+ };
+
+class KDE_EXPORT Dcop_action
+ : public Action
+ {
+ typedef Action base;
+ public:
+ Dcop_action( Action_data* data_P, const QString& app_P, const QString& obj_P,
+ const QString& call_P, const QString& args_P );
+ Dcop_action( KConfig& cfg_P, Action_data* data_P );
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual void execute();
+ const QString& remote_application() const;
+ const QString& remote_object() const;
+ const QString& called_function() const;
+ const QString& arguments() const;
+ virtual QString description() const;
+ virtual Action* copy( Action_data* data_P ) const;
+ private:
+ QString app; // CHECKME QCString ?
+ QString obj;
+ QString call;
+ QString args;
+ };
+
+class KDE_EXPORT Keyboard_input_action
+ : public Action
+ {
+ typedef Action base;
+ public:
+ Keyboard_input_action( Action_data* data_P, const QString& input_P,
+ const Windowdef_list* dest_window_P, bool active_window_P );
+ Keyboard_input_action( KConfig& cfg_P, Action_data* data_P );
+ virtual ~Keyboard_input_action();
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual void execute();
+ const QString& input() const;
+ // send to specific window: dest_window != NULL
+ // send to active window: dest_window == NULL && activeWindow() == true
+ // send to action window: dest_window == NULL && activeWindow() == false
+ const Windowdef_list* dest_window() const;
+ bool activeWindow() const;
+ virtual QString description() const;
+ virtual Action* copy( Action_data* data_P ) const;
+ private:
+ QString _input;
+ const Windowdef_list* _dest_window;
+ bool _active_window;
+ };
+
+class KDE_EXPORT Activate_window_action
+ : public Action
+ {
+ typedef Action base;
+ public:
+ Activate_window_action( Action_data* data_P, const Windowdef_list* window_P );
+ Activate_window_action( KConfig& cfg_P, Action_data* data_P );
+ virtual ~Activate_window_action();
+ virtual void cfg_write( KConfig& cfg_P ) const;
+ virtual void execute();
+ const Windowdef_list* window() const;
+ virtual QString description() const;
+ virtual Action* copy( Action_data* data_P ) const;
+ private:
+ const Windowdef_list* _window;
+ };
+
+//***************************************************************************
+// Inline
+//***************************************************************************
+
+// Action
+
+inline
+Action::Action( Action_data* data_P )
+ : data( data_P )
+ {
+ }
+
+inline
+Action::Action( KConfig&, Action_data* data_P )
+ : data( data_P )
+ {
+ }
+
+inline
+Action::~Action()
+ {
+ }
+
+// Action_list
+
+inline
+Action_list::Action_list( const QString& comment_P )
+ : QPtrList< Action >(), _comment( comment_P )
+ {
+ setAutoDelete( true );
+ }
+
+inline
+const QString& Action_list::comment() const
+ {
+ return _comment;
+ }
+
+// Command_url_action
+
+inline
+Command_url_action::Command_url_action( Action_data* data_P, const QString& command_url_P )
+ : Action( data_P ), _command_url( command_url_P )
+ {
+ }
+
+inline
+const QString& Command_url_action::command_url() const
+ {
+ return _command_url;
+ }
+
+// Menuentry_action
+
+inline
+Menuentry_action::Menuentry_action( Action_data* data_P, const QString& menuentry_P )
+ : Command_url_action( data_P, menuentry_P )
+ {
+ }
+
+inline
+Menuentry_action::Menuentry_action( KConfig& cfg_P, Action_data* data_P )
+ : Command_url_action( cfg_P, data_P )
+ {
+ }
+
+// DCOP_action
+
+inline
+Dcop_action::Dcop_action( Action_data* data_P, const QString& app_P, const QString& obj_P,
+ const QString& call_P, const QString& args_P )
+ : Action( data_P ), app( app_P ), obj( obj_P ), call( call_P ), args( args_P )
+ {
+ }
+
+inline
+const QString& Dcop_action::remote_application() const
+ {
+ return app;
+ }
+
+inline
+const QString& Dcop_action::remote_object() const
+ {
+ return obj;
+ }
+
+inline
+const QString& Dcop_action::called_function() const
+ {
+ return call;
+ }
+
+inline
+const QString& Dcop_action::arguments() const
+ {
+ return args;
+ }
+
+// Keyboard_input_action
+
+inline
+Keyboard_input_action::Keyboard_input_action( Action_data* data_P, const QString& input_P,
+ const Windowdef_list* dest_window_P, bool active_window_P )
+ : Action( data_P ), _input( input_P ), _dest_window( dest_window_P ), _active_window( active_window_P )
+ {
+ }
+
+inline
+const QString& Keyboard_input_action::input() const
+ {
+ return _input;
+ }
+
+inline
+const Windowdef_list* Keyboard_input_action::dest_window() const
+ {
+ return _dest_window;
+ }
+
+inline
+bool Keyboard_input_action::activeWindow() const
+ {
+ return _active_window;
+ }
+
+// Activate_window_action
+
+inline
+Activate_window_action::Activate_window_action( Action_data* data_P,
+ const Windowdef_list* window_P )
+ : Action( data_P ), _window( window_P )
+ {
+ }
+
+inline
+const Windowdef_list* Activate_window_action::window() const
+ {
+ return _window;
+ }
+
+} // namespace KHotKeys
+
+#endif