From 2da3823b747d0eda7ddb28e2c1c7a492e26d5743 Mon Sep 17 00:00:00 2001 From: Dawit Alemayehu Date: Tue, 4 Sep 2012 22:26:28 -0400 Subject: [PATCH] Implemented the new KParts extension, KParts::ListingiNotificationExtension. REVIEW: 106333 (cherry picked from commit acef4b1c287a315b42550c27fc18ac4b9f49746c) --- src/dolphinpart.cpp | 35 ++++++++++++++++++++++++++++++++- src/dolphinpart.h | 13 ++++++++++++ src/kitemviews/kfileitemmodel.h | 1 + src/views/dolphinview.h | 1 + 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index bf3d2a54f..a957fa665 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -45,6 +45,8 @@ #include "views/dolphinviewactionhandler.h" #include "views/dolphinnewfilemenuobserver.h" #include "views/dolphinremoteencoding.h" +#include "kitemviews/kfileitemmodel.h" +#include "kitemviews/private/kfileitemmodeldirlister.h" #include #include @@ -120,6 +122,15 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL new DolphinPartFileInfoExtension(this); 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"; + } + createActions(); m_actionHandler->updateViewActions(); slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions @@ -128,7 +139,6 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL // (sort of spacial navigation) loadPlugins(this, this, componentData()); - } DolphinPart::~DolphinPart() @@ -706,4 +716,27 @@ void DolphinPartListingFilterExtension::setFilter (KParts::ListingFilterExtensio } } +//// + +DolphinPartListingNotificationExtension::DolphinPartListingNotificationExtension(DolphinPart* part) + :KParts::ListingNotificationExtension(part) +{ +} + +KParts::ListingNotificationExtension::NotificationEventTypes DolphinPartListingNotificationExtension::supportedNotificationEventTypes() const +{ + return (KParts::ListingNotificationExtension::ItemsAdded | + KParts::ListingNotificationExtension::ItemsDeleted); +} + +void DolphinPartListingNotificationExtension::slotNewItems(const KFileItemList& items) +{ + emit listingEvent(KParts::ListingNotificationExtension::ItemsAdded, items); +} + +void DolphinPartListingNotificationExtension::slotItemsDeleted(const KFileItemList& items) +{ + emit listingEvent(KParts::ListingNotificationExtension::ItemsDeleted, items); +} + #include "dolphinpart.moc" diff --git a/src/dolphinpart.h b/src/dolphinpart.h index f9c0bbf62..6cf9fe324 100644 --- a/src/dolphinpart.h +++ b/src/dolphinpart.h @@ -297,4 +297,17 @@ private: DolphinPart* m_part; }; +class DolphinPartListingNotificationExtension : public KParts::ListingNotificationExtension +{ + Q_OBJECT + +public: + DolphinPartListingNotificationExtension(DolphinPart* part); + virtual NotificationEventTypes supportedNotificationEventTypes() const; + +public Q_SLOTS: + void slotNewItems(const KFileItemList&); + void slotItemsDeleted(const KFileItemList&); +}; + #endif /* DOLPHINPART_H */ diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index 958fa104b..5bcebce24 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -475,6 +475,7 @@ private: friend class KFileItemModelRolesUpdater; // Accesses emitSortProgress() method friend class KFileItemModelTest; // For unit testing friend class KFileItemListViewTest; // For unit testing + friend class DolphinPart; // Accesses m_dirLister }; inline bool KFileItemModel::isChildItem(int index) const diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 3f08c4480..3f71fdc54 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -764,6 +764,7 @@ private: // For unit tests friend class TestBase; friend class DolphinDetailsViewTest; + friend class DolphinPart; // Accesses m_model }; /// Allow using DolphinView::Mode in QVariant -- 2.47.3