]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinpart.cpp
Added implementation of the FileInfoExtension to allow KPart plugins to obtain such...
[dolphin.git] / src / dolphinpart.cpp
index 3309f4b38dc339b7d3ac567358576fb29b71e26e..0691791a504bbc8562eae638320db59b19e37a3a 100644 (file)
@@ -26,7 +26,6 @@
 #include <kactioncollection.h>
 #include <kconfiggroup.h>
 #include <kdebug.h>
-#include <kdirlister.h>
 #include <kglobalsettings.h>
 #include <kiconloader.h>
 #include <klocale.h>
@@ -39,6 +38,7 @@
 #include <knewfilemenu.h>
 #include <kmenu.h>
 #include <kinputdialog.h>
+#include <kprotocolinfo.h>
 
 #include "settings/dolphinsettings.h"
 #include "views/dolphinview.h"
@@ -47,6 +47,7 @@
 #include "views/dolphinmodel.h"
 #include "views/dolphinnewfilemenuobserver.h"
 #include "views/dolphinremoteencoding.h"
+#include "views/dolphindirlister.h"
 
 #include <QActionGroup>
 #include <QApplication>
@@ -61,11 +62,12 @@ 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");
 
-    m_dirLister = new KDirLister;
+    m_dirLister = new DolphinDirLister;
     m_dirLister->setAutoUpdate(true);
     if (parentWidget) {
         m_dirLister->setMainWindow(parentWidget->window());
@@ -75,9 +77,10 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
     connect(m_dirLister, SIGNAL(completed(KUrl)), this, SLOT(slotCompleted(KUrl)));
     connect(m_dirLister, SIGNAL(canceled(KUrl)), this, SLOT(slotCanceled(KUrl)));
     connect(m_dirLister, SIGNAL(percent(int)), this, SLOT(updateProgress(int)));
+    connect(m_dirLister, SIGNAL(errorMessage(QString)), this, SLOT(slotErrorMessage(QString)));
 
     m_dolphinModel = new DolphinModel(this);
-    m_dolphinModel->setDirLister(m_dirLister);
+    m_dolphinModel->setDirLister(m_dirLister); // m_dolphinModel takes ownership of m_dirLister
 
     m_proxyModel = new DolphinSortFilterProxyModel(this);
     m_proxyModel->setSourceModel(m_dolphinModel);
@@ -147,7 +150,6 @@ DolphinPart::~DolphinPart()
 {
     DolphinSettings::instance().save();
     DolphinNewFileMenuObserver::instance().detach(m_newFileMenu);
-    delete m_dirLister;
 }
 
 void DolphinPart::createActions()
@@ -331,7 +333,9 @@ void DolphinPart::slotMessage(const QString& msg)
 
 void DolphinPart::slotErrorMessage(const QString& msg)
 {
-    KMessageBox::error(m_view, msg);
+    kDebug() << msg;
+    emit canceled(msg);
+    //KMessageBox::error(m_view, msg);
 }
 
 void DolphinPart::slotRequestItemInfo(const KFileItem& item)
@@ -463,46 +467,6 @@ void DolphinPart::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl)
     }
 }
 
-////
-
-void DolphinPartBrowserExtension::restoreState(QDataStream &stream)
-{
-    KParts::BrowserExtension::restoreState(stream);
-    m_part->view()->restoreState(stream);
-}
-
-void DolphinPartBrowserExtension::saveState(QDataStream &stream)
-{
-    KParts::BrowserExtension::saveState(stream);
-    m_part->view()->saveState(stream);
-}
-
-void DolphinPartBrowserExtension::cut()
-{
-    m_part->view()->cutSelectedItems();
-}
-
-void DolphinPartBrowserExtension::copy()
-{
-    m_part->view()->copySelectedItems();
-}
-
-void DolphinPartBrowserExtension::paste()
-{
-    m_part->view()->paste();
-}
-
-void DolphinPartBrowserExtension::pasteTo(const KUrl&)
-{
-    m_part->view()->pasteIntoFolder();
-}
-
-void DolphinPartBrowserExtension::reparseConfiguration()
-{
-    m_part->view()->refresh();
-}
-
-////
 
 void DolphinPart::slotEditMimeType()
 {
@@ -628,4 +592,89 @@ void DolphinPart::setFilesToSelect(const KUrl::List& files)
     m_view->markUrlsAsSelected(files);
 }
 
+////
+
+void DolphinPartBrowserExtension::restoreState(QDataStream &stream)
+{
+    KParts::BrowserExtension::restoreState(stream);
+    m_part->view()->restoreState(stream);
+}
+
+void DolphinPartBrowserExtension::saveState(QDataStream &stream)
+{
+    KParts::BrowserExtension::saveState(stream);
+    m_part->view()->saveState(stream);
+}
+
+void DolphinPartBrowserExtension::cut()
+{
+    m_part->view()->cutSelectedItems();
+}
+
+void DolphinPartBrowserExtension::copy()
+{
+    m_part->view()->copySelectedItems();
+}
+
+void DolphinPartBrowserExtension::paste()
+{
+    m_part->view()->paste();
+}
+
+void DolphinPartBrowserExtension::pasteTo(const KUrl&)
+{
+    m_part->view()->pasteIntoFolder();
+}
+
+void DolphinPartBrowserExtension::reparseConfiguration()
+{
+    m_part->view()->refresh();
+}
+
+////
+
+DolphinPartFileInfoExtension::DolphinPartFileInfoExtension(DolphinPart* part)
+                             : KParts::FileInfoExtension(part)
+{
+}
+
+DolphinPart* DolphinPartFileInfoExtension::part() const
+{
+    return static_cast<DolphinPart*>(parent());
+}
+
+bool DolphinPartFileInfoExtension::hasSelection() const
+{
+    return part()->view()->hasSelection();
+}
+
+KParts::FileInfoExtension::QueryModes DolphinPartFileInfoExtension::supportedQueryModes() const
+{
+    return (KParts::FileInfoExtension::AllItems | KParts::FileInfoExtension::SelectedItems);
+}
+
+KFileItemList DolphinPartFileInfoExtension::queryFor(KParts::FileInfoExtension::QueryMode mode) const
+{
+    KFileItemList list;
+
+    if (mode == KParts::FileInfoExtension::None)
+      return list;
+
+    if (!(supportedQueryModes() & mode))
+      return list;
+
+    switch (mode) {
+      case KParts::FileInfoExtension::SelectedItems:
+          if (hasSelection())
+              return part()->view()->selectedItems();
+          break;
+      case KParts::FileInfoExtension::AllItems:
+          return part()->view()->allItems();
+      default:
+          break;
+    }
+
+    return list;
+}
+
 #include "dolphinpart.moc"