@ -1,5 +1,6 @@
/***************************************************************************
* Copyright ( C ) 2019 by Kai Uwe Broulik < kde @ broulik . de > *
* Copyright ( C ) 2020 David Redondo < kde @ david - redondo . de > *
* *
* 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 *
@ -32,53 +33,49 @@ int main(int argc, char **argv)
{
QCoreApplication app ( argc , argv ) ;
const auto oldRunCommand = KGlobalAccel : : self ( ) - > globalShortcut ( QStringLiteral ( " krunner " ) , QStringLiteral ( " run command " ) ) ;
const auto oldRunClipboard = KGlobalAccel : : self ( ) - > globalShortcut ( QStringLiteral ( " krunner " ) , QStringLiteral ( " run command on clipboard contents " ) ) ;
const QString oldCompomentName = QStringLiteral ( " krunner " ) ;
const QString oldDesktopFile = QStringLiteral ( " krunner.desktop " ) ;
const QString newDesktopFile = QStringLiteral ( " org.kde.krunner.desktop " ) ;
// Fake krunner and remove the old shortcuts
{
KActionCollection oldCollection ( static_cast < QObject * > ( nullptr ) ) ;
oldCollection . setComponentName ( QStringLiteral ( " krunner " ) ) ;
QAction * oldAction = new QAction ( ) ;
oldCollection . addAction ( QStringLiteral ( " run command " ) , oldAction ) ;
KGlobalAccel : : self ( ) - > setDefaultShortcut ( oldAction , { } ) ;
KGlobalAccel : : self ( ) - > removeAllShortcuts ( oldAction ) ;
QAction * oldClipboard = new QAction ( ) ;
oldCollection . addAction ( QStringLiteral ( " run command on clipboard contents " ) , oldClipboard ) ;
KGlobalAccel : : self ( ) - > setDefaultShortcut ( oldClipboard , { } ) ;
KGlobalAccel : : self ( ) - > removeAllShortcuts ( oldClipboard ) ;
// Since we need to fake those actions, read the translated names from the desktop file
KDesktopFile df ( QStandardPaths : : GenericDataLocation , QStringLiteral ( " kglobalaccel/ " ) + newDesktopFile ) ;
QString displayName = QStringLiteral ( " KRunner " ) ;
if ( ! df . readName ( ) . isEmpty ( ) ) {
displayName = df . readName ( ) ;
}
const QString clipboardActionName = df . actionGroup ( QStringLiteral ( " RunClipboard " ) ) . readEntry ( QStringLiteral ( " Name " ) , QStringLiteral ( " Run command on clipboard contents " ) ) ;
// Fake krunner.desktop launcher and transfer the shortcuts over
{
// Since we need to fake those actions, read the translated names from the desktop file
KDesktopFile df ( QStandardPaths : : GenericDataLocation , QStringLiteral ( " kglobalaccel/krunner.desktop " ) ) ;
QString displayName = QStringLiteral ( " KRunner " ) ;
if ( ! df . readName ( ) . isEmpty ( ) ) {
displayName = df . readName ( ) ;
}
KActionCollection shortCutActions ( nullptr , oldDesktopFile ) ;
shortCutActions . setComponentDisplayName ( displayName ) ;
QAction runCommandAction ( displayName ) ;
shortCutActions . addAction ( QStringLiteral ( " _launch " ) , & runCommandAction ) ;
QAction runClipboardAction ( clipboardActionName ) ;
shortCutActions . addAction ( QStringLiteral ( " RunClipboard " ) , & runClipboardAction ) ;
const QString clipboardActionName =
df . actionGroup ( QStringLiteral ( " RunClipboard " ) ) . readEntry ( QStringLiteral ( " Name " ) , QStringLiteral ( " Run command on clipboard contents " ) ) ;
KActionCollection shortCutActions ( static_cast < QObject * > ( nullptr ) ) ;
shortCutActions . setComponentName ( QStringLiteral ( " krunner.desktop " ) ) ;
shortCutActions . setComponentDisplayName ( displayName ) ;
QList < QKeySequence > oldRunCommand ;
QList < QKeySequence > oldRunClipboard ;
if ( KGlobalAccel : : isComponentActive ( oldCompomentName ) ) {
oldRunCommand = KGlobalAccel : : self ( ) - > globalShortcut ( oldCompomentName , QStringLiteral ( " run command " ) ) ;
oldRunClipboard = KGlobalAccel : : self ( ) - > globalShortcut ( oldCompomentName , QStringLiteral ( " run command on clipboard contents " ) ) ;
KGlobalAccel : : self ( ) - > cleanComponent ( oldCompomentName ) ;
} else if ( KGlobalAccel : : isComponentActive ( oldDesktopFile ) ) {
oldRunCommand = KGlobalAccel : : self ( ) - > globalShortcut ( oldDesktopFile , runCommandAction . objectName ( ) ) ;
oldRunClipboard = KGlobalAccel : : self ( ) - > globalShortcut ( oldDesktopFile , runClipboardAction . objectName ( ) ) ;
KGlobalAccel : : self ( ) - > cleanComponent ( oldDesktopFile ) ;
} else {
return 0 ;
}
if ( ! oldRunCommand . isEmpty ( ) ) {
QAction * runCommandAction = new QAction ( displayName ) ;
shortCutActions . addAction ( QStringLiteral ( " _launch " ) , runCommandAction ) ;
KGlobalAccel : : self ( ) - > setShortcut ( runCommandAction , oldRunCommand , KGlobalAccel : : NoAutoloading ) ;
}
shortCutActions . takeAction ( & runCommandAction ) ;
shortCutActions . takeAction ( & runClipboardAction ) ;
shortCutActions . setComponentName ( newDesktopFile ) ;
shortCutActions . addActions ( { & runCommandAction , & runClipboardAction } ) ;
if ( ! oldRunClipboar d . isEmpty ( ) ) {
QAction * runClipboardAction = new QAction ( clipboardActionName ) ;
shortCutActions . addAction ( QStringLiteral ( " RunClipboard " ) , runClipboardAction ) ;
KGlobalAccel : : self ( ) - > setShortcut ( runClipboardAction , oldRunClipboard , KGlobalAccel : : NoAutoloading ) ;
}
if ( ! oldRunComman d . isEmpty ( ) ) {
KGlobalAccel : : self ( ) - > setShortcut ( & runCommandAction , oldRunCommand , KGlobalAccel : : NoAutoloading ) ;
}
if ( ! oldRunClipboard . isEmpty ( ) ) {
KGlobalAccel : : self ( ) - > setShortcut ( & runClipboardAction , oldRunClipboard , KGlobalAccel : : NoAutoloading ) ;
}
return 0 ;