summaryrefslogtreecommitdiffstats
path: root/opensuse/core/tdebase/khotkeys-multimedia-action2.diff
diff options
context:
space:
mode:
Diffstat (limited to 'opensuse/core/tdebase/khotkeys-multimedia-action2.diff')
-rw-r--r--opensuse/core/tdebase/khotkeys-multimedia-action2.diff81
1 files changed, 81 insertions, 0 deletions
diff --git a/opensuse/core/tdebase/khotkeys-multimedia-action2.diff b/opensuse/core/tdebase/khotkeys-multimedia-action2.diff
new file mode 100644
index 000000000..9f995b1ab
--- /dev/null
+++ b/opensuse/core/tdebase/khotkeys-multimedia-action2.diff
@@ -0,0 +1,81 @@
+Index: khotkeys/shared/actions.cpp
+===================================================================
+--- khotkeys/shared/actions.cpp.orig
++++ khotkeys/shared/actions.cpp
+@@ -29,6 +29,7 @@
+ #include <kaccel.h>
+ #include <kservice.h>
+ #include <kprocess.h>
++#include <qregexp.h>
+
+ #include "windows.h"
+ #include "action_data.h"
+@@ -116,7 +117,6 @@ void Command_url_action::execute()
+ {
+ if( command_url().isEmpty())
+ return;
+- KURIFilterData uri;
+ QString cmd = command_url();
+ static bool sm_ready = false;
+ if( !sm_ready )
+@@ -124,6 +124,9 @@ void Command_url_action::execute()
+ kapp->propagateSessionManager();
+ sm_ready = true;
+ }
++ if( substituteAndHandleSpecial( cmd ))
++ return;
++ KURIFilterData uri;
+ // int space_pos = command_url().find( ' ' );
+ // if( command_url()[ 0 ] != '\'' && command_url()[ 0 ] != '"' && space_pos > -1
+ // && command_url()[ space_pos - 1 ] != '\\' )
+@@ -176,6 +179,38 @@ void Command_url_action::execute()
+ timeout.start( 1000, true ); // 1sec timeout
+ }
+
++// do special command substitutions, return true if also already handled
++bool Command_url_action::substituteAndHandleSpecial( QString& cmd )
++ {
++ if( cmd.contains( "KHOTKEYS_BROWSER" ))
++ { // the default browser
++ KConfig config( QString::fromLatin1("kfmclientrc")); // see KRun
++ config.setGroup("General");
++ QString browser = config.readEntry("BrowserApplication");
++ if( browser.startsWith( QString::fromLatin1( "!" )))
++ browser = browser.mid( 1 );
++ else
++ {
++ KService::Ptr service = KService::serviceByStorageId( browser );
++ if( service )
++ {
++ browser = service->exec();
++ browser.replace( QRegExp( " %.?" ), "" ); // remove " %u" and others
++ }
++ }
++ if( browser.isEmpty())
++ browser = QString::fromLatin1( "konqueror" ); // opens in webbrowsing profile by default
++ cmd = cmd.replace( "KHOTKEYS_BROWSER", browser );
++ }
++ if( cmd.contains( "KHOTKEYS_TERMINAL" ))
++ { // the default terminal application
++ KConfigGroup config( KGlobal::config(), "General" );
++ QString terminal = config.readPathEntry( "TerminalApplication", "konsole" );
++ cmd = cmd.replace( "KHOTKEYS_TERMINAL", terminal );
++ }
++ return false;
++ }
++
+ QString Command_url_action::description() const
+ {
+ return i18n( "Command/URL : " ) + command_url();
+Index: khotkeys/shared/actions.h
+===================================================================
+--- khotkeys/shared/actions.h.orig
++++ khotkeys/shared/actions.h
+@@ -75,6 +75,7 @@ class KDE_EXPORT Command_url_action
+ protected:
+ QTimer timeout;
+ private:
++ bool substituteAndHandleSpecial( QString& cmd );
+ QString _command_url;
+ };
+