X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d088d8dc322a824ff789492b148d8a1f6ee92f5d..16b56261a8ead7b9862dd3908424b990a419f978:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 6898d059a..3927d9c6d 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -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();