X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f56446a61aec0b8aababd4a306bdb2305b282c29..ed0df8dc1fc9576e36c920882e7f4b00a2811113:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index 7fd51f76a..8fda67df6 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -18,13 +18,14 @@ */ #include "dolphinpart.h" -#include #include "dolphinviewactionhandler.h" #include "dolphinsortfilterproxymodel.h" #include "dolphinview.h" #include "dolphinmodel.h" +#include "dolphinnewmenuobserver.h" +#include "dolphinremoteencoding.h" -#include +#include #include #include @@ -43,6 +44,8 @@ #include #include +#include "settings/dolphinsettings.h" + #include #include #include @@ -62,7 +65,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())); @@ -94,16 +99,14 @@ 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()), @@ -117,10 +120,16 @@ 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); + connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory())); + + m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler); + connect(this, SIGNAL(aboutToOpenURL()), + m_remoteEncoding, SLOT(slotAboutToOpenUrl())); QClipboard* clipboard = QApplication::clipboard(); connect(clipboard, SIGNAL(dataChanged()), @@ -134,10 +143,13 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL // (sort of spacial navigation) loadPlugins(this, this, componentData()); + } DolphinPart::~DolphinPart() { + DolphinSettings::instance().save(); + DolphinNewMenuObserver::instance().detach(m_newMenu); delete m_dirLister; } @@ -146,6 +158,7 @@ void DolphinPart::createActions() // Edit menu m_newMenu = new KNewMenu(actionCollection(), widget(), "new_menu"); + DolphinNewMenuObserver::instance().attach(m_newMenu); connect(m_newMenu->menu(), SIGNAL(aboutToShow()), this, SLOT(updateNewMenu())); @@ -228,7 +241,7 @@ void DolphinPart::slotSelectionChanged(const KFileItemList& selection) // TODO share this code with DolphinMainWindow::updateEditActions (and the desktop code) // in libkonq - KonqFileItemCapabilities capabilities(selection); + KFileItemListProperties capabilities(selection); const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving(); renameAction->setEnabled(capabilities.supportsMoving()); @@ -275,6 +288,7 @@ bool DolphinPart::openUrl(const KUrl& url) emit started(0); // get the wheel to spin m_dirLister->setNameFilter(m_nameFilter); m_view->setUrl(url); + updatePasteAction(); emit aboutToOpenURL(); if (reload) m_view->reload(); @@ -328,13 +342,12 @@ void DolphinPart::createNewWindow(const KUrl& url) { // TODO: Check issue N176832 for the missing QAIV signal; task 177399 - maybe this code // should be moved into DolphinPart::slotItemTriggered() - KFileItem item(S_IFDIR, (mode_t)-1, url); - KParts::OpenUrlArguments args; - args.setMimeType(item.mimetype()); - emit m_extension->createNewWindow(url, args); + emit m_extension->createNewWindow(url); } -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 @@ -352,6 +365,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; @@ -395,7 +410,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. @@ -405,6 +419,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() @@ -417,12 +433,6 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) actionGroups); } -// ########### not sure this is still called... seems not. -void DolphinPart::slotUrlChanged(const KUrl& newUrl) -{ - slotRedirection(url(), newUrl); -} - void DolphinPart::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl) { //kDebug() << oldUrl << newUrl << "currentUrl=" << url(); @@ -507,7 +517,7 @@ void DolphinPart::slotOpenTerminal() //If the URL is local after the above conversion, set the directory. if (u.isLocalFile()) { - dir = u.path(); + dir = u.toLocalFile(); } KToolInvocation::invokeTerminal(QString(), dir); @@ -531,4 +541,10 @@ void DolphinPart::updateProgress(int percent) m_extension->loadingProgress(percent); } +void DolphinPart::createDirectory() +{ + m_newMenu->setPopupFiles(url()); + m_newMenu->createDirectory(); +} + #include "dolphinpart.moc"