***************************************************************************/
#include "dolphinviewcontainer.h"
+#include <kprotocolmanager.h>
#include <QtGui/QApplication>
#include <QtGui/QClipboard>
m_proxyModel(0)
{
hide();
- setFocusPolicy(Qt::StrongFocus);
+
m_topLayout = new QVBoxLayout(this);
m_topLayout->setSpacing(0);
m_topLayout->setMargin(0);
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);
m_proxyModel = new DolphinSortFilterProxyModel(this);
m_proxyModel->setSourceModel(m_dolphinModel);
+ m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
connect(m_dirLister, SIGNAL(clear()),
this, SLOT(updateStatusBar()));
m_urlNavigator, SLOT(setUrl(const KUrl&)));
connect(m_view, SIGNAL(requestContextMenu(KFileItem, const KUrl&)),
this, SLOT(openContextMenu(KFileItem, const KUrl&)));
- connect(m_view, SIGNAL(urlsDropped(const KUrl::List&, const KUrl&)),
- m_mainWindow, SLOT(dropUrls(const KUrl::List&, const KUrl&)));
connect(m_view, SIGNAL(contentsMoved(int, int)),
this, SLOT(saveContentsPos(int, int)));
connect(m_view, SIGNAL(requestItemInfo(KFileItem)),
DolphinViewContainer::~DolphinViewContainer()
{
+ m_dirLister->disconnect();
+
+ delete m_proxyModel;
+ m_proxyModel = 0;
delete m_dolphinModel;
m_dolphinModel = 0;
m_dirLister = 0; // deleted by m_dolphinModel
}
-void DolphinViewContainer::setUrl(const KUrl& url)
+void DolphinViewContainer::setUrl(const KUrl& newUrl)
{
- m_urlNavigator->setUrl(url);
+ m_urlNavigator->setUrl(newUrl);
}
const KUrl& DolphinViewContainer::url() const
return m_urlNavigator->isUrlEditable();
}
-KFileItem DolphinViewContainer::fileItem(const QModelIndex& index) const
-{
- const QModelIndex dolphinModelIndex = m_proxyModel->mapToSource(index);
- return m_dolphinModel->itemForIndex(dolphinModelIndex);
-}
-
void DolphinViewContainer::updateProgress(int percent)
{
if (!m_showProgress) {
}
updateStatusBar();
-
QTimer::singleShot(100, this, SLOT(restoreContentsPos()));
}
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()) {
- // allow to browse through ZIP and tar files
- KMimeType::Ptr mime = item.mimeTypePtr();
- if (mime->is("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");
+ return;
+ }
+
+ const GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ const bool browseThroughArchives = settings->browseThroughArchives();
+ if (browseThroughArchives && item.isFile() && url.isLocalFile()) {
+ // Generic mechanism for redirecting to tar:/<path>/ when clicking on a tar file,
+ // zip:/<path>/ 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"