]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Update of the patch from Filip Brcic for browsing through ZIP and TAR files. One...
authorPeter Penz <peter.penz19@gmail.com>
Sat, 10 Mar 2007 20:30:17 +0000 (20:30 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 10 Mar 2007 20:30:17 +0000 (20:30 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=641297

src/dolphinview.cpp
src/urlnavigator.cpp

index 6898d059ab1f6f4d3ae5def331f4ab15d0918988..3927d9c6d10749177b8e6a281889ed669b1265fd 100644 (file)
@@ -638,32 +638,41 @@ void DolphinView::triggerItem(const QModelIndex& index)
         return;
     }
 
+    // Prefer the local path over the URL. This assures that the
+    // volume space information is correct. Assuming that the URL is media:/sda1,
+    // and the local path is /windows/C: For the URL the space info is related
+    // to the root partition (and hence wrong) and for the local path the space
+    // info is related to the windows partition (-> correct).
+    const QString localPath(item->localPath());
+    KUrl url;
+    if (localPath.isEmpty()) {
+        url = item->url();
+    }
+    else {
+        url = localPath;
+    }
+
     if (item->isDir()) {
-        // Prefer the local path over the URL. This assures that the
-        // volume space information is correct. Assuming that the URL is media:/sda1,
-        // and the local path is /windows/C: For the URL the space info is related
-        // to the root partition (and hence wrong) and for the local path the space
-        // info is related to the windows partition (-> correct).
-        const QString localPath(item->localPath());
-        if (localPath.isEmpty()) {
-            setUrl(item->url());
-        }
-        else {
-            setUrl(KUrl(localPath));
-        }
+        setUrl(url);
     }
-    else if (item->isFile() && item->mimeTypePtr()->is("application/x-zip")) {
-        // allow to browse through ZIP files
-        const QString localPath(item->localPath());
-        KUrl url;
-        if (localPath.isEmpty()) {
-            url = item->url();
+    else if (item->isFile()) {
+        // allow to browse through ZIP and tar files
+        KMimeType::Ptr mime = item->mimeTypePtr();
+        if (mime->is("application/x-zip")) {
+            url.setProtocol("zip");
+            setUrl(url);
+        }
+        else if (mime->is("application/x-tar") ||
+                 mime->is("application/x-tarz") ||
+                 mime->is("application/x-tbz") ||
+                 mime->is("application/x-tgz") ||
+                 mime->is("application/x-tzo")) {
+            url.setProtocol("tar");
+            setUrl(url);
         }
         else {
-            url = localPath;
+            item->run();
         }
-        url.setProtocol("zip");
-        setUrl(url);
     }
     else {
         item->run();
index 72a3a9c491548b23cde42094e38f9a45c522e006..f1b39fb32f22593a7d048f71d72db8bb4e739ee1 100644 (file)
@@ -246,6 +246,14 @@ void UrlNavigator::dropUrls(const KUrl::List& urls,
 void UrlNavigator::setUrl(const KUrl& url)
 {
     QString urlStr(url.pathOrUrl());
+
+    // TODO: a patch has been submitted by Filip Brcic which adjusts
+    // the URL for tar and zip files. See https://bugs.kde.org/show_bug.cgi?id=142781
+    // for details. The URL navigator part of the patch has not been committed yet,
+    // as the URL navigator will be subject of change and
+    // we might think of a more generic approach to check the protocol + MIME type for
+    // this use case.
+
     //kDebug() << "setUrl(" << url << ")" << endl;
     if ( urlStr.length() > 0 && urlStr.at(0) == '~') {
         // replace '~' by the home directory