[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kioslave/media
From:       Kévin Ottens <ervin () ipsquad ! net>
Date:       2004-10-18 16:41:59
Message-ID: 20041018164159.51A6216C37 () office ! kde ! org
[Download RAW message or body]

CVS commit by ervin: 

Add the support for launching .desktop files to ioslaves using
ForwardingSlaveBase. If the .desktop file is accessible through
file:/ we give it the corresponding UDS_URL.


  M +43 -8     forwardingslavebase.cpp   1.3
  M +1 -0      forwardingslavebase.h   1.3


--- kdebase/kioslave/media/forwardingslavebase.cpp  #1.2:1.3
@@ -21,4 +21,5 @@
 #include <kio/job.h>
 #include <kmimetype.h>
+#include <kprotocolinfo.h>
 
 #include <qapplication.h>
@@ -55,4 +56,5 @@ bool ForwardingSlaveBase::internalRewrit
 
     m_processedURL = newURL;
+    m_requestedURL = url;
     return result;
 }
@@ -60,8 +62,11 @@ bool ForwardingSlaveBase::internalRewrit
 void ForwardingSlaveBase::prepareUDSEntry(KIO::UDSEntry &entry, bool listing)
 {
+    kdDebug() << "ForwardingSlaveBase::prepareUDSEntry: listing=="
+              << listing << endl;
+
     bool mimetype_found = false;
     bool name_found = false;
     bool url_found = false;
-    QString name;
+    QString name, mimetype;
     KURL url;
     
@@ -78,4 +83,5 @@ void ForwardingSlaveBase::prepareUDSEntr
             name_found = true;
             name = (*it).m_str;
+            kdDebug() << "Name = " << name << endl;
             break;
         case KIO::UDS_URL:
@@ -87,7 +93,11 @@ void ForwardingSlaveBase::prepareUDSEntr
             }
             (*it).m_str = new_url.url();
+            kdDebug() << "URL = " << url << endl;
+            kdDebug() << "New URL = " << (*it).m_str << endl;
             break;
         case KIO::UDS_MIME_TYPE:
             mimetype_found = true;
+            mimetype = (*it).m_str;
+            kdDebug() << "Mimetype = " << (*it).m_str << endl;
             break;
         }
@@ -97,19 +107,44 @@ void ForwardingSlaveBase::prepareUDSEntr
     {
         KURL new_url = m_processedURL;
-        if (name_found && listing)
+        if (url_found && listing)
         {
-            new_url.addPath(name);
+            new_url.addPath( url.fileName() );
         }
-        else if (url_found && listing)
+        else if (name_found && listing)
         {
-            new_url.addPath( url.fileName() );
+            new_url.addPath( name );
         }
 
         KMimeType::Ptr mime = KMimeType::findByURL(new_url);
+        mimetype = mime->name();
+
         KIO::UDSAtom atom;
         atom.m_uds = KIO::UDS_MIME_TYPE;
         atom.m_long = 0;
-        atom.m_str = mime->name();
+        atom.m_str = mimetype;
         entry.append(atom);
+
+        kdDebug() << "New Mimetype = " << mime->name() << endl;
+    }
+
+    if ( mimetype=="application/x-desktop" && name_found
+      && m_processedURL.isLocalFile() )
+    {
+        QString prot_class = KProtocolInfo::protocolClass( mProtocol );
+
+        if ( prot_class==":local" )
+        {
+            KURL new_url = m_processedURL;
+            if (listing)
+            {
+                new_url.addPath( name );
+            }
+            
+            KIO::UDSAtom atom;
+            atom.m_uds = KIO::UDS_URL;
+            atom.m_long = 0;
+            atom.m_str = new_url.url();
+            entry.append(atom);
+        }
     }
 }

--- kdebase/kioslave/media/forwardingslavebase.h  #1.2:1.3
@@ -76,4 +76,5 @@ protected:
 private:
     KURL m_processedURL;
+    KURL m_requestedURL;
     
     bool internalRewriteURL(const KURL &url, KURL &newURL);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic