]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/viewextensionsfactory.cpp
Show icon overlays in the Informationen Panel.
[dolphin.git] / src / views / viewextensionsfactory.cpp
index e5638c03e23405133711509160c4d2d1abe7f8c7..a52871ff447afe1d62c2a1cdc10eed9a51bc82dc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at>                  *
+ *   Copyright (C) 2009 by Peter Penz <peter.penz19@gmail.com>             *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
 
 #include "dolphin_generalsettings.h"
 
-#include <kdirlister.h>
-#include <kdirmodel.h>
-#include <kfilepreviewgenerator.h>
+#include <KDirLister>
+#include <KDirModel>
+#include <KFilePreviewGenerator>
 #include <QAbstractItemView>
+#include <QApplication>
 
 ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
                                              DolphinViewController* dolphinViewController,
@@ -50,7 +51,7 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
     m_autoScroller(0),
     m_fileItemDelegate(0),
     m_versionControlObserver(0)
-{   
+{
     view->setSelectionMode(QAbstractItemView::ExtendedSelection);
 
     GeneralSettings* settings = DolphinSettings::instance().generalSettings();
@@ -61,7 +62,7 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
         m_toolTipManager = new ToolTipManager(view, proxyModel);
 
         connect(dolphinViewController, SIGNAL(hideToolTip()),
-                m_toolTipManager, SLOT(hideTip()));
+                m_toolTipManager, SLOT(hideToolTip()));
     }
 
     // initialize preview generator
@@ -72,17 +73,21 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
             this, SLOT(slotZoomLevelChanged()));
     connect(viewModeController, SIGNAL(cancelPreviews()),
             this, SLOT(cancelPreviews()));
+
+    // slotPreviewChanged() is connected as Qt::QueuedConnection to prevent performance
+    // issues when the directory lister changes its URL after the preview-changes have
+    // been applied. Usecase: Switch from directory A having no previews to
+    // directory B with previews (see sequence in DolphinView::setUrl()).
     connect(dolphinViewController->view(), SIGNAL(showPreviewChanged()),
-            this, SLOT(slotShowPreviewChanged()));
+            this, SLOT(slotShowPreviewChanged()),
+            Qt::QueuedConnection);
 
     // initialize selection manager
-    if (settings->showSelectionToggle()) {
-        m_selectionManager = new SelectionManager(view);
-        connect(m_selectionManager, SIGNAL(selectionChanged()),
-                this, SLOT(requestActivation()));
-        connect(viewModeController, SIGNAL(urlChanged(const KUrl&)),
-                m_selectionManager, SLOT(reset()));
-    }
+    m_selectionManager = new SelectionManager(view);
+    connect(m_selectionManager, SIGNAL(selectionChanged()),
+            this, SLOT(requestActivation()));
+    connect(viewModeController, SIGNAL(urlChanged(const KUrl&)),
+            m_selectionManager, SLOT(reset()));
 
     // initialize auto scroller
     m_autoScroller = new DolphinViewAutoScroller(view);
@@ -156,7 +161,7 @@ bool ViewExtensionsFactory::autoFolderExpandingEnabled() const
 bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event)
 {
     Q_UNUSED(watched);
-    if ((event->type() == QEvent::Wheel) && (m_selectionManager != 0)) {
+    if ((event->type() == QEvent::Wheel) && m_selectionManager) {
         m_selectionManager->reset();
     }
     return false;
@@ -165,7 +170,7 @@ bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event)
 void ViewExtensionsFactory::slotZoomLevelChanged()
 {
     m_previewGenerator->updateIcons();
-    if (m_selectionManager != 0) {
+    if (m_selectionManager) {
         m_selectionManager->reset();
     }
 }