X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e70c2f8aa472c01433f9416c363c698677c5b45f..305ecd86f9cdfd7d4e3e96fb5b7f3daab72c6ba5:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index c9af2248a..78fd56d50 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -20,6 +20,8 @@ #include "dolphinview.h" +#include + #include #include #include @@ -70,6 +72,10 @@ #include "views/tooltips/tooltipmanager.h" #include "zoomlevelinfo.h" +#ifdef HAVE_NEPOMUK + #include +#endif + namespace { const int MaxModeEnum = DolphinView::CompactView; }; @@ -784,6 +790,16 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) KItemListView* view = m_container->controller()->view(); const QSet visibleRolesSet = view->visibleRoles().toSet(); + bool nepomukRunning = false; + bool indexingEnabled = false; +#ifdef HAVE_NEPOMUK + nepomukRunning = (Nepomuk::ResourceManager::instance()->init() == 0); + if (nepomukRunning) { + KConfig config("nepomukserverrc"); + indexingEnabled = config.group("Service-nepomukfileindexer").readEntry("autostart", false); + } +#endif + QString groupName; QMenu* groupMenu = 0; @@ -811,6 +827,11 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) action->setCheckable(true); action->setChecked(visibleRolesSet.contains(info.role)); action->setData(info.role); + + const bool enable = (!info.requiresNepomuk && !info.requiresIndexer) || + (info.requiresNepomuk && nepomukRunning) || + (info.requiresIndexer && indexingEnabled); + action->setEnabled(enable); } menu->addSeparator(); @@ -861,8 +882,10 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos) props.setVisibleRoles(visibleRoles); QList columnWidths; - foreach (const QByteArray& role, view->visibleRoles()) { - columnWidths.append(header->columnWidth(role)); + if (!header->automaticColumnResizing()) { + foreach (const QByteArray& role, view->visibleRoles()) { + columnWidths.append(header->columnWidth(role)); + } } props.setHeaderColumnWidths(columnWidths); } @@ -942,6 +965,11 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even if (!error.isEmpty()) { emit errorMessage(error); } + + if (destUrl == url()) { + // Mark the dropped urls as selected. + markPastedUrlsAsSelected(event->mimeData()); + } } void DolphinView::slotModelChanged(KItemModelBase* current, KItemModelBase* previous) @@ -1146,6 +1174,8 @@ void DolphinView::updateViewState() } if (!m_selectedUrls.isEmpty()) { + clearSelection(); + KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); QSet selectedItems = selectionManager->selectedItems(); const KFileItemModel* model = fileItemModel(); @@ -1417,8 +1447,13 @@ QMimeData* DolphinView::selectionMimeData() const void DolphinView::markPastedUrlsAsSelected(const QMimeData* mimeData) { - const KUrl::List urls = KUrl::List::fromMimeData(mimeData); - markUrlsAsSelected(urls); + const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData); + KUrl::List destUrls; + foreach (const KUrl& source, sourceUrls) { + KUrl destination(url().url() + "/" + source.fileName()); + destUrls << destination; + } + markUrlsAsSelected(destUrls); } void DolphinView::updateWritableState()