]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinpart.cpp
Comment out assertion to fix a crash when filtering in Icons/Compat View
[dolphin.git] / src / dolphinpart.cpp
index fff7dc0e08b7e74f7039dd698527abc017cb7a9b..627ba79c56570e87e01d61c40288761aa8610294 100644 (file)
 #include <KMenu>
 #include <KInputDialog>
 #include <KProtocolInfo>
+#include <kdeversion.h>
+
+#if KDE_IS_VERSION(4, 9, 2)
+#include "dolphinpart_ext.h"
+#endif
 
 #include "views/dolphinview.h"
 #include "views/dolphinviewactionhandler.h"
 #include "views/dolphinnewfilemenuobserver.h"
 #include "views/dolphinremoteencoding.h"
+#include "kitemviews/kfileitemmodel.h"
+#include "kitemviews/private/kfileitemmodeldirlister.h"
 
 #include <QActionGroup>
 #include <QApplication>
@@ -61,7 +68,6 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
     Q_UNUSED(args)
     setComponentData(DolphinPartFactory::componentData(), false);
     m_extension = new DolphinPartBrowserExtension(this);
-    new DolphinPartFileInfoExtension(this);
 
     // make sure that other apps using this part find Dolphin's view-file-columns icons
     KIconLoader::global()->addAppDir("dolphin");
@@ -84,6 +90,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
             this, SLOT(slotErrorMessage(QString)));
     connect(m_view, SIGNAL(itemActivated(KFileItem)),
             this, SLOT(slotItemActivated(KFileItem)));
+    connect(m_view, SIGNAL(itemsActivated(KFileItemList)),
+            this, SLOT(slotItemsActivated(KFileItemList)));
     connect(m_view, SIGNAL(tabRequested(KUrl)),
             this, SLOT(createNewWindow(KUrl)));
     connect(m_view, SIGNAL(requestContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>)),
@@ -116,6 +124,23 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
     connect(clipboard, SIGNAL(dataChanged()),
             this, SLOT(updatePasteAction()));
 
+    // Create file info and listing filter extensions.
+    // NOTE: Listing filter needs to be instantiated after the creation of the view.
+    new DolphinPartFileInfoExtension(this);
+
+#if KDE_IS_VERSION(4, 9, 2)
+    new DolphinPartListingFilterExtension(this);
+
+    KDirLister* lister = m_view->m_model->m_dirLister;
+    if (lister) {
+        DolphinPartListingNotificationExtension* notifyExt = new DolphinPartListingNotificationExtension(this);
+        connect(lister, SIGNAL(newItems(KFileItemList)), notifyExt, SLOT(slotNewItems(KFileItemList)));
+        connect(lister, SIGNAL(itemsDeleted(KFileItemList)), notifyExt, SLOT(slotItemsDeleted(KFileItemList)));
+    } else {
+        kWarning() << "NULL KDirLister object! KParts::ListingNotificationExtension will NOT be supported";
+    }
+#endif
+
     createActions();
     m_actionHandler->updateViewActions();
     slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions
@@ -124,7 +149,6 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
     // (sort of spacial navigation)
 
     loadPlugins(this, this, componentData());
-
 }
 
 DolphinPart::~DolphinPart()
@@ -345,6 +369,13 @@ void DolphinPart::slotItemActivated(const KFileItem& item)
     emit m_extension->openUrlRequest(item.targetUrl(), args, browserArgs);
 }
 
+void DolphinPart::slotItemsActivated(const KFileItemList& items)
+{
+    foreach (const KFileItem& item, items) {
+        slotItemActivated(item);
+    }
+}
+
 void DolphinPart::createNewWindow(const KUrl& url)
 {
     // TODO: Check issue N176832 for the missing QAIV signal; task 177399 - maybe this code