]>
Commit | Line | Data |
---|---|---|
c4a53c80 | 1 | diff -ur kdebase-workspace-4.4.90/systemsettings/core/ModuleView.cpp kdebase-workspace-4.4.90-rootprivs/systemsettings/core/ModuleView.cpp |
2 | --- kdebase-workspace-4.4.90/systemsettings/core/ModuleView.cpp 2010-06-24 18:28:10.000000000 +0200 | |
3 | +++ kdebase-workspace-4.4.90-rootprivs/systemsettings/core/ModuleView.cpp 2010-06-26 00:47:30.000000000 +0200 | |
4 | @@ -41,6 +41,7 @@ | |
c94993dd | 5 | #include <KCModuleProxy> |
6 | #include <KStandardGuiItem> | |
7 | #include <KDialogButtonBox> | |
df33dfbd | 8 | +#include <KStandardDirs> |
25db84ad | 9 | #include <kauthaction.h> |
df33dfbd | 10 | |
c94993dd | 11 | #include "MenuItem.h" |
c4a53c80 | 12 | @@ -131,6 +132,35 @@ |
25db84ad | 13 | return; |
c94993dd | 14 | } |
15 | ||
c4a53c80 | 16 | + { |
17 | + MenuItem *menuItemPtr = menuItem.data( Qt::UserRole ).value<MenuItem*>(); | |
18 | + if ( menuItemPtr->service()->property( "X-KDE-RootOnly", QVariant::Bool ).toBool() ) { | |
19 | + QString kdesu = KStandardDirs::findExe( "kdesu" ); | |
20 | + QString cmd = menuItemPtr->service()->exec().trimmed(); | |
df33dfbd | 21 | + |
c4a53c80 | 22 | + /* Prepare the process to run the kcmshell */ |
23 | + if ( cmd.left(5) == "kdesu" ) | |
24 | + { | |
25 | + cmd = cmd.remove(0,5).trimmed(); | |
df33dfbd | 26 | + |
c4a53c80 | 27 | + /* Remove all kdesu switches */ |
28 | + while ( cmd.length() > 1 && cmd[ 0 ] == '-' ) | |
29 | + cmd = cmd.remove( 0, cmd.indexOf( ' ' ) ).trimmed(); | |
30 | + } | |
df33dfbd | 31 | + |
c4a53c80 | 32 | + if ( cmd.left(9) == "kcmshell4" ) |
33 | + cmd = cmd.remove(0,9).trimmed(); | |
df33dfbd | 34 | + |
c4a53c80 | 35 | + QStringList args; |
36 | + args << "-i" << QString( menuItemPtr->service()->icon() ) << "-c" << QString( "%1 %2 --lang %3" ).arg( KStandardDirs::locate("exe", "kcmshell4") ).arg( cmd ).arg( KGlobal::locale()->language() ); | |
df33dfbd | 37 | + |
c4a53c80 | 38 | + kDebug() << "Starting root module: " << args; |
39 | + QProcess::startDetached( kdesu, args ); | |
df33dfbd | 40 | + |
c4a53c80 | 41 | + return; |
42 | + } | |
df33dfbd | 43 | + } |
25db84ad | 44 | + |
c4a53c80 | 45 | QList<QModelIndex> indexes; |
46 | for ( int done = 0; menuItem.model()->rowCount( menuItem ) > done; done = 1 + done ) { | |
47 | indexes << menuItem.model()->index( done, 0, menuItem ); |