#include <kaboutdata.h>
#include <kactioncollection.h>
#include <kconfiggroup.h>
+#include <kdebug.h>
#include <kdirlister.h>
#include <kglobalsettings.h>
#include <kiconloader.h>
}
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)));
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)),
// Watch for changes that should result in updates to the
// status bar text.
- connect(m_dirLister, SIGNAL(deleteItem(const KFileItem&)),
+ connect(m_dirLister, SIGNAL(itemsDeleted(const KFileItemList&)),
this, SLOT(updateStatusBar()));
connect(m_dirLister, SIGNAL(clear()),
this, SLOT(updateStatusBar()));
slotCompleted(url);
}
-void DolphinPart::slotInfoMessage(const QString& msg)
+void DolphinPart::slotMessage(const QString& msg)
{
emit setStatusBarText(msg);
}
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<QAction *> 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) {
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);
}
}
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())
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(),
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);
m_part->view()->paste();
}
+void DolphinPartBrowserExtension::pasteTo(const KUrl&)
+{
+ m_part->view()->pasteIntoFolder();
+}
+
void DolphinPartBrowserExtension::reparseConfiguration()
{
m_part->view()->refresh();