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

List:       kde-commits
Subject:    playground/network/networkkio/ioslave
From:       Friedrich W. H. Kossebau <kossebau () kde ! org>
Date:       2009-02-24 23:59:27
Message-ID: 1235519967.651732.26522.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 931219 by kossebau:

changed: give mimetype() a proper implementation, turn nameids into static const \
symbols

 M  +63 -6     networkslave.cpp  


--- trunk/playground/network/networkkio/ioslave/networkslave.cpp #931218:931219
@@ -45,7 +45,10 @@
     "inode/vnd.kde.device.workstation"
 };
 
+static const char NetworkMimetype[] = "inode/vnd.kde.network";
+static const char NetworkIconName[] = "network-workgroup";
 
+
 NetworkSlave::NetworkSlave( const QByteArray& name, const QByteArray& poolSocket, \
const QByteArray& programSocket )  : SlaveBase( name, poolSocket, programSocket )
   , mNetworkThread( new NetworkThread() )
@@ -104,10 +107,66 @@
 {
     const NetworkUri networkUri( url );
 
-    mimeType( "inode/directory" );
-    finished();
+    mNetworkThread->pause();
+
+    Network* network = mNetworkThread->network();
+
+    bool successfulMimetyping = false;
+    NetworkUri::Type type = networkUri.type();
+kDebug()<<"type="<<networkUri.type()<<"host="<<networkUri.hostName()<<"service="<<networkUri.serviceName()<<"stype="<<networkUri.serviceType();
 +
+    if( type == NetworkUri::Domain )
+    {
+        mimeType( NetworkMimetype );
+        finished();
+        successfulMimetyping = true;
+    }
+    else
+    {
+        const QList<NetDevice> deviceList = network->deviceList();
+
+        const QString hostName = networkUri.hostName();
+        foreach( const NetDevice& device, deviceList )
+        {
+            if( device.hostName() == hostName )
+            {
+                if( type == NetworkUri::Device )
+                {
+                    mimeType( DeviceMimetype[device.type()] );
+                    finished();
+                    successfulMimetyping = true;
+                }
+                else if( type == NetworkUri::Service )
+
+                {
+                    const QList<NetService> serviceList = device.serviceList();
+
+                    const QString serviceName = networkUri.serviceName();
+                    const QString serviceType = networkUri.serviceType();
+                    foreach( const NetService& service, serviceList )
+                    {
+                        if( service.name() == serviceName && service.type() == \
serviceType ) +                        {
+                            const QString url = service.url();
+                            redirection( url );
+                            //mimeType( service.mimetype() );
+                            finished();
+                            successfulMimetyping = true;
+                            break;
+                        }
+                    }
+                }
+                break;
+            }
+        }
+    }
+    mNetworkThread->unpause();
+
+    if( !successfulMimetyping )
+        error( KIO::ERR_MALFORMED_URL, url.prettyUrl() );
 }
 
+
 void NetworkSlave::stat( const KUrl& url )
 {
     const NetworkUri networkUri( url );
@@ -257,11 +316,9 @@
 
 void NetworkSlave::feedEntryAsNetwork( KIO::UDSEntry* entry )
 {
-    entry->insert( KIO::UDSEntry::UDS_NAME,         "" );
-    entry->insert( KIO::UDSEntry::UDS_DISPLAY_NAME, "Network" );
     entry->insert( KIO::UDSEntry::UDS_FILE_TYPE,    S_IFDIR );
-    entry->insert( KIO::UDSEntry::UDS_ICON_NAME,    "network-workgroup" );
-    entry->insert( KIO::UDSEntry::UDS_MIME_TYPE,    "inode/vnd.kde.network" );
+    entry->insert( KIO::UDSEntry::UDS_ICON_NAME,    NetworkIconName );
+    entry->insert( KIO::UDSEntry::UDS_MIME_TYPE,    NetworkMimetype );
 
 }
 


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

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