LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File kde4-applications.diff of Package kdelibs3 (Project KDE:KDE3)

Index: kio/kio/kservice.cpp
===================================================================
--- kio/kio/kservice.cpp.orig
+++ kio/kio/kservice.cpp
@@ -97,6 +97,7 @@ KService::init( KDesktopFile *config )
   m_bValid = true;
 
   bool absPath = !QDir::isRelativePath(entryPath());
+  bool kde4application = config->fileName().startsWith("/usr/share/applications/kde4/");
 
   config->setDesktopGroup();
 
@@ -133,6 +134,8 @@ KService::init( KDesktopFile *config )
     if (i != -1)
        m_strName = m_strName.left(i);
   }
+  if (kde4application)
+    m_strName += "/KDE4";
 
   m_strType = config->readType();
   entryMap.remove("Type");
@@ -196,6 +199,18 @@ KService::init( KDesktopFile *config )
      name = name.left(pos);
 
   m_strExec = config->readPathEntry( "Exec" );
+  if (kde4application && !m_strExec.startsWith("/"))
+    m_strExec = "/usr/bin/"+m_strExec;
+  else if (config->readBoolEntry("X-KDE-SubstituteUID")) {
+    int space = m_strExec.find(" ");
+    if (space==-1)
+      m_strExec = KStandardDirs::findExe(m_strExec);
+    else {
+      const QString command = m_strExec.left(space);
+      m_strExec.replace(command,KStandardDirs::findExe(command));
+    }
+  }
+
   entryMap.remove("Exec");
 
   m_strIcon = config->readEntry( "Icon", "unknown" );
@@ -245,6 +260,8 @@ KService::init( KDesktopFile *config )
      m_DCOPServiceType = DCOP_None;
 
   m_strDesktopEntryName = name.lower();
+  if (kde4application)
+     m_strDesktopEntryName = "kde4-" + m_strDesktopEntryName;
 
   m_bAllowAsDefault = config->readBoolEntry( "AllowDefault", true );
   entryMap.remove("AllowDefault");
@@ -254,6 +271,8 @@ KService::init( KDesktopFile *config )
   if ( m_initialPreference == 1 )
      m_initialPreference = config->readNumEntry( "InitialPreference", 1 );
   entryMap.remove("InitialPreference");
+  if (kde4application)
+     m_initialPreference = 1;
 
   // Store all additional entries in the property map.
   // A QMap<QString,QString> would be easier for this but we can't
@@ -263,7 +282,10 @@ KService::init( KDesktopFile *config )
   for( ; it != entryMap.end();++it)
   {
      //qDebug("   Key = %s Data = %s", it.key().latin1(), it.data().latin1());
-     m_mapProps.insert( it.key(), QVariant( it.data()));
+     QString key = it.key();
+     if (kde4application && key=="OnlyShowIn" && it.data()=="KDE;")
+        key = "NotShowIn";
+     m_mapProps.insert( key, QVariant( it.data()));
   }
 }