diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinview.cpp | 51 | ||||
| -rw-r--r-- | src/urlnavigator.cpp | 8 |
2 files changed, 38 insertions, 21 deletions
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(); diff --git a/src/urlnavigator.cpp b/src/urlnavigator.cpp index 72a3a9c49..f1b39fb32 100644 --- a/src/urlnavigator.cpp +++ b/src/urlnavigator.cpp @@ -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 |
