00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _ACTIONS_H_
00012 #define _ACTIONS_H_
00013
00014
00015 #include <tqstring.h>
00016 #include <tqptrlist.h>
00017 #include <tqtimer.h>
00018
00019 #include <kservice.h>
00020
00021 class KConfig;
00022
00023 #include "khotkeysglobal.h"
00024
00025 namespace KHotKeys
00026 {
00027
00028 class Action_data;
00029 class Windowdef_list;
00030
00031
00032
00033 class KDE_EXPORT Action
00034 {
00035 public:
00036 Action( Action_data* data_P );
00037 Action( KConfig& cfg_P, Action_data* data_P );
00038 virtual ~Action();
00039 virtual void execute() = 0;
00040 virtual TQString description() const = 0;
00041 virtual void cfg_write( KConfig& cfg_P ) const;
00042 virtual Action* copy( Action_data* data_P ) const = 0;
00043 static Action* create_cfg_read( KConfig& cfg_P, Action_data* data_P );
00044 protected:
00045 Action_data* const data;
00046 KHOTKEYS_DISABLE_COPY( Action );
00047 };
00048
00049 class KDE_EXPORT Action_list
00050 : public TQPtrList< Action >
00051 {
00052 public:
00053 Action_list( const TQString& comment_P );
00054 Action_list( KConfig& cfg_P, Action_data* data_P );
00055 void cfg_write( KConfig& cfg_P ) const;
00056 typedef TQPtrListIterator< Action > Iterator;
00057 const TQString& comment() const;
00058 private:
00059 TQString _comment;
00060 KHOTKEYS_DISABLE_COPY( Action_list );
00061 };
00062
00063 class KDE_EXPORT Command_url_action
00064 : public Action
00065 {
00066 typedef Action base;
00067 public:
00068 Command_url_action( Action_data* data_P, const TQString& command_url_P );
00069 Command_url_action( KConfig& cfg_P, Action_data* data_P );
00070 virtual void cfg_write( KConfig& cfg_P ) const;
00071 virtual void execute();
00072 virtual TQString description() const;
00073 const TQString& command_url() const;
00074 virtual Action* copy( Action_data* data_P ) const;
00075 protected:
00076 TQTimer timeout;
00077 private:
00078 TQString _command_url;
00079 };
00080
00081 class KDE_EXPORT Menuentry_action
00082 : public Command_url_action
00083 {
00084 typedef Command_url_action base;
00085 public:
00086 Menuentry_action( Action_data* data_P, const TQString& menuentry_P );
00087 Menuentry_action( KConfig& cfg_P, Action_data* data_P );
00088 virtual void cfg_write( KConfig& cfg_P ) const;
00089 virtual void execute();
00090 virtual TQString description() const;
00091 virtual Action* copy( Action_data* data_P ) const;
00092 KService::Ptr service() const;
00093 private:
00094 KService::Ptr _service;
00095 };
00096
00097 class KDE_EXPORT Dcop_action
00098 : public Action
00099 {
00100 typedef Action base;
00101 public:
00102 Dcop_action( Action_data* data_P, const TQString& app_P, const TQString& obj_P,
00103 const TQString& call_P, const TQString& args_P );
00104 Dcop_action( KConfig& cfg_P, Action_data* data_P );
00105 virtual void cfg_write( KConfig& cfg_P ) const;
00106 virtual void execute();
00107 const TQString& remote_application() const;
00108 const TQString& remote_object() const;
00109 const TQString& called_function() const;
00110 const TQString& arguments() const;
00111 virtual TQString description() const;
00112 virtual Action* copy( Action_data* data_P ) const;
00113 private:
00114 TQString app;
00115 TQString obj;
00116 TQString call;
00117 TQString args;
00118 };
00119
00120 class KDE_EXPORT Keyboard_input_action
00121 : public Action
00122 {
00123 typedef Action base;
00124 public:
00125 Keyboard_input_action( Action_data* data_P, const TQString& input_P,
00126 const Windowdef_list* dest_window_P, bool active_window_P );
00127 Keyboard_input_action( KConfig& cfg_P, Action_data* data_P );
00128 virtual ~Keyboard_input_action();
00129 virtual void cfg_write( KConfig& cfg_P ) const;
00130 virtual void execute();
00131 const TQString& input() const;
00132
00133
00134
00135 const Windowdef_list* dest_window() const;
00136 bool activeWindow() const;
00137 virtual TQString description() const;
00138 virtual Action* copy( Action_data* data_P ) const;
00139 private:
00140 TQString _input;
00141 const Windowdef_list* _dest_window;
00142 bool _active_window;
00143 };
00144
00145 class KDE_EXPORT Activate_window_action
00146 : public Action
00147 {
00148 typedef Action base;
00149 public:
00150 Activate_window_action( Action_data* data_P, const Windowdef_list* window_P );
00151 Activate_window_action( KConfig& cfg_P, Action_data* data_P );
00152 virtual ~Activate_window_action();
00153 virtual void cfg_write( KConfig& cfg_P ) const;
00154 virtual void execute();
00155 const Windowdef_list* window() const;
00156 virtual TQString description() const;
00157 virtual Action* copy( Action_data* data_P ) const;
00158 private:
00159 const Windowdef_list* _window;
00160 };
00161
00162
00163
00164
00165
00166
00167
00168 inline
00169 Action::Action( Action_data* data_P )
00170 : data( data_P )
00171 {
00172 }
00173
00174 inline
00175 Action::Action( KConfig&, Action_data* data_P )
00176 : data( data_P )
00177 {
00178 }
00179
00180 inline
00181 Action::~Action()
00182 {
00183 }
00184
00185
00186
00187 inline
00188 Action_list::Action_list( const TQString& comment_P )
00189 : TQPtrList< Action >(), _comment( comment_P )
00190 {
00191 setAutoDelete( true );
00192 }
00193
00194 inline
00195 const TQString& Action_list::comment() const
00196 {
00197 return _comment;
00198 }
00199
00200
00201
00202 inline
00203 Command_url_action::Command_url_action( Action_data* data_P, const TQString& command_url_P )
00204 : Action( data_P ), _command_url( command_url_P )
00205 {
00206 }
00207
00208 inline
00209 const TQString& Command_url_action::command_url() const
00210 {
00211 return _command_url;
00212 }
00213
00214
00215
00216 inline
00217 Menuentry_action::Menuentry_action( Action_data* data_P, const TQString& menuentry_P )
00218 : Command_url_action( data_P, menuentry_P )
00219 {
00220 }
00221
00222 inline
00223 Menuentry_action::Menuentry_action( KConfig& cfg_P, Action_data* data_P )
00224 : Command_url_action( cfg_P, data_P )
00225 {
00226 }
00227
00228
00229
00230 inline
00231 Dcop_action::Dcop_action( Action_data* data_P, const TQString& app_P, const TQString& obj_P,
00232 const TQString& call_P, const TQString& args_P )
00233 : Action( data_P ), app( app_P ), obj( obj_P ), call( call_P ), args( args_P )
00234 {
00235 }
00236
00237 inline
00238 const TQString& Dcop_action::remote_application() const
00239 {
00240 return app;
00241 }
00242
00243 inline
00244 const TQString& Dcop_action::remote_object() const
00245 {
00246 return obj;
00247 }
00248
00249 inline
00250 const TQString& Dcop_action::called_function() const
00251 {
00252 return call;
00253 }
00254
00255 inline
00256 const TQString& Dcop_action::arguments() const
00257 {
00258 return args;
00259 }
00260
00261
00262
00263 inline
00264 Keyboard_input_action::Keyboard_input_action( Action_data* data_P, const TQString& input_P,
00265 const Windowdef_list* dest_window_P, bool active_window_P )
00266 : Action( data_P ), _input( input_P ), _dest_window( dest_window_P ), _active_window( active_window_P )
00267 {
00268 }
00269
00270 inline
00271 const TQString& Keyboard_input_action::input() const
00272 {
00273 return _input;
00274 }
00275
00276 inline
00277 const Windowdef_list* Keyboard_input_action::dest_window() const
00278 {
00279 return _dest_window;
00280 }
00281
00282 inline
00283 bool Keyboard_input_action::activeWindow() const
00284 {
00285 return _active_window;
00286 }
00287
00288
00289
00290 inline
00291 Activate_window_action::Activate_window_action( Action_data* data_P,
00292 const Windowdef_list* window_P )
00293 : Action( data_P ), _window( window_P )
00294 {
00295 }
00296
00297 inline
00298 const Windowdef_list* Activate_window_action::window() const
00299 {
00300 return _window;
00301 }
00302
00303 }
00304
00305 #endif