--- kdebase-3.2/kioslave/settings/kio_settings.cc-- 2004-02-18 16:01:45.000000000 +0100 +++ kdebase-3.2/kioslave/settings/kio_settings.cc 2004-02-18 16:14:37.000000000 +0100 @@ -48,6 +48,7 @@ private: DCOPClient *m_dcopClient; RunMode m_runMode; + QString mdkMenu; }; extern "C" { @@ -71,7 +72,7 @@ SettingsProtocol::SettingsProtocol( cons // Adjusts which part of the K Menu to virtualize. if( protocol == "programs" ) m_runMode = ProgramsMode; else m_runMode = SettingsMode; - + mdkMenu = KStandardDirs::menu_type_by_version(); m_dcopClient=new DCOPClient(); if (!m_dcopClient->attach()) { @@ -89,16 +90,44 @@ KServiceGroup::Ptr SettingsProtocol::fin QString nextPart="";; QStringList rest; kdDebug()<<"Trying harder to find group "<<relPath<<endl; - if (relPath.startsWith("Settings/")) { - alreadyFound="Settings/"; - rest=QStringList::split("/",relPath.right(relPath.length()-9)); - kdDebug()<<"Supported root Settings detected"<<endl; - for (int i=0;i<rest.count();i++) - kdDebug()<<"Item ("<<*rest.at(i)<<")"<<endl; - } else { - - return 0; - } + if( mdkMenu == "mdk" ) + { + if (relPath.startsWith("System/Configuration/KDE/")) { + alreadyFound="System/Configuration/KDE/"; + rest=QStringList::split("/",relPath.right(relPath.length()-25)); + kdDebug()<<"Supported root Settings detected"<<endl; + for (int i=0;i<rest.count();i++) + kdDebug()<<"Item ("<<*rest.at(i)<<")"<<endl; + } else { + + return 0; + } + } + else if( mdkMenu == "mdk-simplified" ) + { + if (relPath.startsWith("mdk/System/Configuration/KDE/")) { + alreadyFound="mdk/System/Configuration/KDE/"; + rest=QStringList::split("/",relPath.right(relPath.length()-29)); + kdDebug()<<"Supported root Settings detected"<<endl; + for (int i=0;i<rest.count();i++) + kdDebug()<<"Item ("<<*rest.at(i)<<")"<<endl; + } else { + return 0; + } + } + else + { + if (relPath.startsWith("Settings/")) { + alreadyFound="Settings/"; + rest=QStringList::split("/",relPath.right(relPath.length()-9)); + kdDebug()<<"Supported root Settings detected"<<endl; + for (int i=0;i<rest.count();i++) + kdDebug()<<"Item ("<<*rest.at(i)<<")"<<endl; + } else { + + return 0; + } + } while (!rest.isEmpty()) { KServiceGroup::Ptr tmp=KServiceGroup::group(alreadyFound); if (!tmp || !tmp->isValid()) return 0; @@ -148,7 +177,13 @@ void SettingsProtocol::stat(const KURL& switch( m_runMode ) { case( SettingsMode ): - if (!relPath.startsWith("/Settings")) relPath="Settings"+relPath; + if (mdkMenu == "kde" && !relPath.startsWith("/Settings")) + relPath="Settings"+relPath; + else if (mdkMenu == "mdk" && !relPath.startsWith("/System/Configuration/KDE")) + relPath="System/Configuration/KDE"+relPath; + else if (mdkMenu == "mdk-simplified" && !relPath.startsWith("/mdk/System/Configuration/KDE")) + relPath="mdk/System/Configuration/KDE"+relPath; + else relPath=relPath.right(relPath.length()-1); break; @@ -199,7 +234,13 @@ void SettingsProtocol::listDir(const KUR switch( m_runMode ) { case( SettingsMode ): - if (!relPath.startsWith("/Settings")) relPath="Settings"+relPath; + if (mdkMenu == "kde" && !relPath.startsWith("/Settings")) + relPath="Settings"+relPath; + else if (mdkMenu == "mdk" && !relPath.startsWith("/System/Configuration/KDE")) + relPath="System/Configuration/KDE"+relPath; + else if (mdkMenu == "mdk-simplified" && !relPath.startsWith("/mdk/System/Configuration/KDE")) + relPath="mdk/System/Configuration/KDE"+relPath; + else relPath=relPath.right(relPath.length()-1); break; @@ -250,7 +291,7 @@ void SettingsProtocol::listDir(const KUR QString relPath=g->relPath(); // Do not display the "Settings" menu group in Programs Mode. - if( (m_runMode == ProgramsMode) && relPath.startsWith( "Settings" ) ) + if( (m_runMode == ProgramsMode) && (relPath.startsWith( "Settings" ) || relPath.startsWith( "System/Configuration/KDE" ) || relPath.startsWith( "mdk/System/Configuration/KDE" ))) { kdDebug() << "SettingsProtocol: SKIPPING entry programs:/" << relPath << endl; continue; @@ -259,7 +300,13 @@ void SettingsProtocol::listDir(const KUR switch( m_runMode ) { case( SettingsMode ): + if(mdkMenu == "kde" ) relPath=relPath.right(relPath.length()-9); //Settings/ ==9 + else if(mdkMenu == "mdk" ) + relPath=relPath.right(relPath.length()-25); //Settings/ ==9 + else if(mdkMenu == "mdk-simplied" ) + relPath=relPath.right(relPath.length()-29); //Settings/ ==9 + kdDebug() << "SettingsProtocol: adding entry settings:/" << relPath << endl; createDirEntry(entry, groupCaption, "settings:/"+relPath, "inode/directory",g->icon()); break;