X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/76fa5aec6b7af0740876db86c2eb0ef7f6270486..b1c9b5126d:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index 05bc2216a..882e2f1d3 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -18,6 +18,7 @@ */ #include "dolphinpart.h" +#include #include "dolphinviewactionhandler.h" #include "dolphinsortfilterproxymodel.h" #include "dolphinview.h" @@ -61,7 +62,9 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL m_dirLister = new KDirLister; m_dirLister->setAutoUpdate(true); - m_dirLister->setMainWindow(parentWidget->window()); + if (parentWidget) { + m_dirLister->setMainWindow(parentWidget->window()); + } m_dirLister->setDelayedMimeTypes(true); //connect(m_dirLister, SIGNAL(started(KUrl)), this, SLOT(slotStarted())); @@ -93,20 +96,20 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL this, SLOT(slotItemTriggered(KFileItem))); connect(m_view, SIGNAL(tabRequested(KUrl)), this, SLOT(createNewWindow(KUrl))); - connect(m_view, SIGNAL(requestContextMenu(KFileItem,KUrl)), - this, SLOT(slotOpenContextMenu(KFileItem,KUrl))); + connect(m_view, SIGNAL(requestContextMenu(KFileItem,KUrl,QList)), + this, SLOT(slotOpenContextMenu(KFileItem,KUrl,QList))); connect(m_view, SIGNAL(selectionChanged(KFileItemList)), m_extension, SIGNAL(selectionInfo(KFileItemList))); connect(m_view, SIGNAL(selectionChanged(KFileItemList)), this, SLOT(slotSelectionChanged(KFileItemList))); connect(m_view, SIGNAL(requestItemInfo(KFileItem)), this, SLOT(slotRequestItemInfo(KFileItem))); - connect(m_view, SIGNAL(urlChanged(KUrl)), - this, SLOT(slotUrlChanged(KUrl))); connect(m_view, SIGNAL(requestUrlChange(KUrl)), this, SLOT(slotRequestUrlChange(KUrl))); connect(m_view, SIGNAL(modeChanged()), this, SIGNAL(viewModeChanged())); // relay signal + connect(m_view, SIGNAL(redirection(KUrl, KUrl)), + this, SLOT(slotRedirection(KUrl, KUrl))); // Watch for changes that should result in updates to the // status bar text. @@ -114,7 +117,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL this, SLOT(updateStatusBar())); connect(m_dirLister, SIGNAL(clear()), this, SLOT(updateStatusBar())); - + connect(m_view, SIGNAL(selectionChanged(const KFileItemList)), + this, SLOT(updateStatusBar())); m_actionHandler = new DolphinViewActionHandler(actionCollection(), this); m_actionHandler->setCurrentView(m_view); @@ -331,7 +335,9 @@ void DolphinPart::createNewWindow(const KUrl& url) emit m_extension->createNewWindow(url, args); } -void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) +void DolphinPart::slotOpenContextMenu(const KFileItem& _item, + const KUrl&, + const QList& customActions) { KParts::BrowserExtension::PopupFlags popupFlags = KParts::BrowserExtension::DefaultPopupItems | KParts::BrowserExtension::ShowProperties @@ -349,6 +355,8 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) KParts::BrowserExtension::ActionGroupMap actionGroups; QList editActions; + editActions += customActions; + if (!_item.isNull()) { // only for context menu on one or more items bool sDeleting = true; bool sMoving = true; @@ -392,7 +400,6 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) editActions.append(actionCollection()->action("move_to_trash")); if (addDel) editActions.append(actionCollection()->action("delete")); - actionGroups.insert("editactions", editActions); // Normally KonqPopupMenu only shows the "Create new" subdir in the current view // since otherwise the created file would not be visible. @@ -402,6 +409,8 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) } + actionGroups.insert("editactions", editActions); + // 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() @@ -414,11 +423,14 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) actionGroups); } -void DolphinPart::slotUrlChanged(const KUrl& url) +void DolphinPart::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl) { - KParts::ReadOnlyPart::setUrl(url); - QString prettyUrl = url.pathOrUrl(); - emit m_extension->setLocationBarUrl(prettyUrl); + //kDebug() << oldUrl << newUrl << "currentUrl=" << url(); + if (oldUrl == url()) { + KParts::ReadOnlyPart::setUrl(newUrl); + const QString prettyUrl = newUrl.pathOrUrl(); + emit m_extension->setLocationBarUrl(prettyUrl); + } } void DolphinPart::slotRequestUrlChange(const KUrl& url)