]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinpart.cpp
differ between pasting one folder, pasting one file and pasting n items
[dolphin.git] / src / dolphinpart.cpp
index b6f2698c3df018e96313a4537ffa3b536113c9a1..0ea761d2d1ede3e5758f1c90c0330d89dbcc6de6 100644 (file)
@@ -54,7 +54,7 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi
 
     m_dirLister = new KDirLister;
     m_dirLister->setAutoUpdate(true);
-    m_dirLister->setMainWindow(parentWidget->topLevelWidget());
+    m_dirLister->setMainWindow(parentWidget->window());
     m_dirLister->setDelayedMimeTypes(true);
 
     //connect(m_dirLister, SIGNAL(started(KUrl)), this, SLOT(slotStarted()));
@@ -93,8 +93,7 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi
     connect(m_view, SIGNAL(urlChanged(KUrl)),
             this, SLOT(slotUrlChanged(KUrl)));
     connect(m_view, SIGNAL(modeChanged()),
-            this, SLOT(updateViewActions()));
-    // TODO slotSortingChanged
+            this, SIGNAL(viewModeChanged())); // relay signal
 
     m_actionHandler = new DolphinViewActionHandler(actionCollection(), this);
     m_actionHandler->setCurrentView(m_view);
@@ -104,12 +103,9 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi
             this, SLOT(updatePasteAction()));
 
     createActions();
-    updateViewActions();
+    m_actionHandler->updateViewActions();
     slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions
 
-    // TODO provide the viewmode actions in the menu, merged with the existing view-mode-actions somehow
-    // [Q_PROPERTY introspection?]
-
     // TODO sort_by_* actions
 
     // TODO there was a "always open a new window" (when clicking on a directory) setting in konqueror
@@ -123,12 +119,6 @@ DolphinPart::~DolphinPart()
 
 void DolphinPart::createActions()
 {
-    QActionGroup* viewModeActions = new QActionGroup(this);
-    viewModeActions->addAction(DolphinView::iconsModeAction(actionCollection()));
-    viewModeActions->addAction(DolphinView::detailsModeAction(actionCollection()));
-    viewModeActions->addAction(DolphinView::columnsModeAction(actionCollection()));
-    connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*)));
-
     KAction *editMimeTypeAction = actionCollection()->addAction( "editMimeType" );
     editMimeTypeAction->setText( i18nc("@action:inmenu Edit", "&Edit File Type..." ) );
     connect(editMimeTypeAction, SIGNAL(triggered()), SLOT(slotEditMimeType()));
@@ -210,15 +200,6 @@ void DolphinPart::updatePasteAction()
     emit m_extension->setActionText( "paste", pasteInfo.second );
 }
 
-void DolphinPart::updateViewActions()
-{
-    m_actionHandler->updateViewActions();
-    QAction* action = actionCollection()->action(m_view->currentViewModeActionName());
-    if (action != 0) {
-        action->setChecked(true);
-    }
-}
-
 KAboutData* DolphinPart::createAboutData()
 {
     return new KAboutData("dolphinpart", "dolphin", ki18nc("@title", "Dolphin Part"), "0.1");
@@ -292,7 +273,7 @@ void DolphinPart::slotItemTriggered(const KFileItem& item)
     } else {
         // Left button. [Right button goes to slotOpenContextMenu before triggered can be emitted]
         kDebug() << "LMB";
-        emit m_extension->openUrlRequest(item.url(), args, browserArgs);
+        emit m_extension->openUrlRequest(item.targetUrl(), args, browserArgs);
     }
 }
 
@@ -346,7 +327,10 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)
             editActions.append(actionCollection()->action("delete"));
         actionGroups.insert("editactions", editActions);
 
-        KFileItemList items; items.append(item);
+        // TODO: We should change the signature of the slots (and signals) for being able
+        //       to tell for which items we want a popup.
+        KFileItemList items = (m_view->selectedItems().count() ? m_view->selectedItems()
+                                                               : KFileItemList() << item);
         emit m_extension->popupMenu(QCursor::pos(),
                                     items,
                                     KParts::OpenUrlArguments(),
@@ -356,12 +340,6 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)
     }
 }
 
-void DolphinPart::slotViewModeActionTriggered(QAction* action)
-{
-    const DolphinView::Mode mode = action->data().value<DolphinView::Mode>();
-    m_view->setMode(mode);
-}
-
 void DolphinPart::slotUrlChanged(const KUrl& url)
 {
     if (m_view->url() != url) {
@@ -408,4 +386,16 @@ void DolphinPart::slotProperties()
     }
 }
 
+void DolphinPart::setCurrentViewMode(const QString& viewModeName)
+{
+    QAction* action = actionCollection()->action(viewModeName);
+    Q_ASSERT(action);
+    action->trigger();
+}
+
+QString DolphinPart::currentViewMode() const
+{
+    return m_actionHandler->currentViewModeActionName();
+}
+
 #include "dolphinpart.moc"