X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c00478bbc1001d10dcfc04e9b0ea251620837e85..8cb8b519099e2d8bc86a574e014fc3cd780acfa8:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index a1846dc75..6fcdb7dec 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -18,6 +18,7 @@ ***************************************************************************/ #include "dolphinviewcontainer.h" +#include #include #include @@ -87,7 +88,7 @@ DolphinViewContainer::DolphinViewContainer(DolphinMainWindow* mainWindow, m_dirLister = new DolphinDirLister(); m_dirLister->setAutoUpdate(true); - m_dirLister->setMainWindow(this); + m_dirLister->setMainWindow(window()); m_dirLister->setDelayedMimeTypes(true); m_dolphinModel = new DolphinModel(this); @@ -392,36 +393,30 @@ void DolphinViewContainer::saveRootUrl(const KUrl& url) void DolphinViewContainer::slotItemTriggered(const KFileItem& item) { - // Prefer the local path over the URL. - bool isLocal; - KUrl url = item.mostLocalUrl(isLocal); + KUrl url = item.targetUrl(); if (item.isDir()) { m_view->setUrl(url); - } else if (item.isFile() && url.isLocalFile()) { - // allow to browse through ZIP and tar files - // TODO: make this configurable for Dolphin in KDE 4.1 - - KMimeType::Ptr mime = item.mimeTypePtr(); + return; + } - // Don't use mime->is("application/zip"), as this would - // also browse through Open Office files: - if (mime->name() == "application/zip") { - url.setProtocol("zip"); - m_view->setUrl(url); - } else if (mime->is("application/x-tar") || - mime->is("application/x-tarz") || - mime->is("application/x-bzip-compressed-tar") || - mime->is("application/x-compressed-tar") || - mime->is("application/x-tzo")) { - url.setProtocol("tar"); + const GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + const bool browseThroughArchives = settings->browseThroughArchives(); + if (browseThroughArchives && item.isFile() && url.isLocalFile()) { + // Generic mechanism for redirecting to tar:// when clicking on a tar file, + // zip:// when clicking on a zip file, etc. + // The .protocol file specifies the mimetype that the kioslave handles. + // Note that we don't use mimetype inheritance since we don't want to + // open OpenDocument files as zip folders... + const QString protocol = KProtocolManager::protocolForArchiveMimetype(item.mimetype()); + if (!protocol.isEmpty()) { + url.setProtocol(protocol); m_view->setUrl(url); - } else { - item.run(); + return; } - } else { - item.run(); } + + item.run(); } #include "dolphinviewcontainer.moc"