X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/2df2d4ea7ee63a43a327b4ffb1c5cddd176aff91..ebba84fbdd1effc828f88e08966dad5982371ecc:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index b8a39cffc..fbaa6fe49 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -70,7 +71,6 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL } m_dirLister->setDelayedMimeTypes(true); - //connect(m_dirLister, SIGNAL(started(KUrl)), this, SLOT(slotStarted())); 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))); @@ -81,18 +81,16 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL m_proxyModel = new DolphinSortFilterProxyModel(this); m_proxyModel->setSourceModel(m_dolphinModel); - m_view = new DolphinView(parentWidget, - KUrl(), - m_dirLister, - m_dolphinModel, - m_proxyModel); + m_view = new DolphinView(parentWidget, KUrl(), m_proxyModel); m_view->setTabsForFilesEnabled(true); setWidget(m_view); setXMLFile("dolphinpart.rc"); connect(m_view, SIGNAL(infoMessage(QString)), - this, SLOT(slotInfoMessage(QString))); + this, SLOT(slotMessage(QString))); + connect(m_view, SIGNAL(operationCompletedMessage(QString)), + this, SLOT(slotMessage(QString))); connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(slotErrorMessage(QString))); connect(m_view, SIGNAL(itemTriggered(KFileItem)), @@ -306,7 +304,7 @@ void DolphinPart::slotCanceled(const KUrl& url) slotCompleted(url); } -void DolphinPart::slotInfoMessage(const QString& msg) +void DolphinPart::slotMessage(const QString& msg) { emit setStatusBarText(msg); } @@ -362,36 +360,32 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, item = KFileItem( S_IFDIR, (mode_t)-1, url() ); } + // TODO: We should change the signature of the slots (and signals) for being able + // to tell for which items we want a popup. + const KFileItemList items = (m_view->selectedItems().count() ? m_view->selectedItems() + : KFileItemList() << item); + KFileItemListProperties capabilities(items); + 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; + bool supportsDeleting = capabilities.supportsDeleting(); + bool supportsMoving = capabilities.supportsMoving(); - // If the parent directory of the selected item is writable, moving - // and deleting are possible. - KFileItem parentDir = m_dirLister->rootItem(); - if (!parentDir.isNull() && !parentDir.isWritable()) { + if (!supportsDeleting) { popupFlags |= KParts::BrowserExtension::NoDeletion; - sDeleting = false; - sMoving = false; } - if ( sMoving ) + if (supportsMoving) { editActions.append(actionCollection()->action("rename")); + } - bool addTrash = false; + bool addTrash = capabilities.isLocal() && supportsMoving; bool addDel = false; - - bool isIntoTrash = _item.url().protocol() == "trash"; - - if ( sMoving && !isIntoTrash && item.isLocalFile() ) - addTrash = true; - - if ( sDeleting ) { + if (supportsDeleting) { if ( !item.isLocalFile() ) addDel = true; else if (QApplication::keyboardModifiers() & Qt::ShiftModifier) { @@ -401,8 +395,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, else { KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals); KConfigGroup configGroup(globalConfig, "KDE"); - if ( configGroup.readEntry("ShowDeleteCommand", false) ) - addDel = true; + addDel = configGroup.readEntry("ShowDeleteCommand", false); } } @@ -411,7 +404,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, if (addDel) editActions.append(actionCollection()->action("delete")); - // Normally KonqPopupMenu only shows the "Create new" subdir in the current view + // Normally KonqPopupMenu only shows the "Create new" submenu in the current view // since otherwise the created file would not be visible. // But in treeview mode we should allow it. if (m_view->itemsExpandable()) @@ -421,10 +414,6 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, 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() - : KFileItemList() << item); emit m_extension->popupMenu(QCursor::pos(), items, KParts::OpenUrlArguments(), @@ -436,7 +425,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, void DolphinPart::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl) { //kDebug() << oldUrl << newUrl << "currentUrl=" << url(); - if (oldUrl == url()) { + if (oldUrl.equals(url(), KUrl::CompareWithoutTrailingSlash /* #207572 */)) { KParts::ReadOnlyPart::setUrl(newUrl); const QString prettyUrl = newUrl.pathOrUrl(); emit m_extension->setLocationBarUrl(prettyUrl); @@ -470,6 +459,11 @@ void DolphinPartBrowserExtension::paste() m_part->view()->paste(); } +void DolphinPartBrowserExtension::pasteTo(const KUrl&) +{ + m_part->view()->pasteIntoFolder(); +} + void DolphinPartBrowserExtension::reparseConfiguration() { m_part->view()->refresh();