#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>
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");
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);
+ 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
// (sort of spacial navigation)
loadPlugins(this, this, componentData());
-
}
DolphinPart::~DolphinPart()
void DolphinPart::setFilesToSelect(const KUrl::List& files)
{
+ if (files.isEmpty()) {
+ return;
+ }
+
m_view->markUrlsAsSelected(files);
+ m_view->markUrlAsCurrent(files.at(0));
}
////
return list;
}
+DolphinPartListingFilterExtension::DolphinPartListingFilterExtension (DolphinPart* part)
+ : KParts::ListingFilterExtension(part)
+ , m_part(part)
+{
+}
+
+KParts::ListingFilterExtension::FilterModes DolphinPartListingFilterExtension::supportedFilterModes() const
+{
+ return (KParts::ListingFilterExtension::MimeType |
+ KParts::ListingFilterExtension::SubString |
+ KParts::ListingFilterExtension::WildCard);
+}
+
+bool DolphinPartListingFilterExtension::supportsMultipleFilters (KParts::ListingFilterExtension::FilterMode mode) const
+{
+ if (mode == KParts::ListingFilterExtension::MimeType)
+ return true;
+
+ return false;
+}
+
+QVariant DolphinPartListingFilterExtension::filter (KParts::ListingFilterExtension::FilterMode mode) const
+{
+ QVariant result;
+
+ switch (mode) {
+ case KParts::ListingFilterExtension::MimeType:
+ result = m_part->view()->mimeTypeFilters();
+ break;
+ case KParts::ListingFilterExtension::SubString:
+ case KParts::ListingFilterExtension::WildCard:
+ result = m_part->view()->nameFilter();
+ break;
+ default:
+ break;
+ }
+
+ return result;
+}
+
+void DolphinPartListingFilterExtension::setFilter (KParts::ListingFilterExtension::FilterMode mode, const QVariant& filter)
+{
+ switch (mode) {
+ case KParts::ListingFilterExtension::MimeType:
+ m_part->view()->setMimeTypeFilters(filter.toStringList());
+ break;
+ case KParts::ListingFilterExtension::SubString:
+ case KParts::ListingFilterExtension::WildCard:
+ m_part->view()->setNameFilter(filter.toString());
+ break;
+ default:
+ break;
+ }
+}
+
+////
+
+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"